# Silent Mode

This is a guide to using silent mode during FusionAuth install and updates.

> For the index of this section of the site, see [llms.txt](https://fusionauth.io/docs/llms.txt)

Silent Mode automatically:

*   performs database migrations when updating FusionAuth
*   configures schemas for new databases when installing FusionAuth

## Activate Silent Mode

To put an instance into Silent Mode, complete the following steps:

1.  Open your FusionAuth configuration file, located at `\$(brew --prefix)/etc/fusionauth/fusionauth.properties`.
    
2.  Find the existing `search.type` property and change it from `database` to `elasticsearch`:
    
    fusionauth.properties
    
    ```properties
    search.type=elasticsearch
    ```
    
3.  Append the following lines for the Kickstart, Silent Mode, and Search Server configurations (be sure to replace `/path/to/your/kickstart/kickstart.json` with your actual file path):
    
    fusionauth.properties
    
    ```properties
    fusionauth-app.kickstart.file=/path/to/your/kickstart/kickstart.json
    fusionauth-app.silent-mode=true
    search.servers=http://localhost:9200
    ```
    

## Behavior

Silent mode automatically creates everything in the database that FusionAuth needs without prompts in the browser. When enabled, silent mode will perform the following steps:

1.  Open a raw socket to the database on the correct port to ensure it is reachable.
2.  If the configuration contains super user credentials, connect to the FusionAuth database using the super user (i.e. the `fusionauth` database and not the `mysql` or `postgres` database).
3.  If the database doesn't exist in either case, silent mode will connect to the root database (i.e. `mysql` or `postgres` depending on the database server type) again using the super user credentials and create the database.
4.  Connect to the root database (i.e. `mysql` or `postgres` depending on the database server type) using the super user credentials and check if the ordinary user exists.
5.  If the ordinary user doesn't exist, attempt to create it and grant it all the necessary privileges to connect and use the FusionAuth database. This might also change the owner of the FusionAuth database to the ordinary user if you are using PostgreSQL.
6.  Silent mode connects to the FusionAuth database as the ordinary user and creates the FusionAuth schema.

Silent mode will try each of the steps above and if any of them fail, it will exit and put FusionAuth into maintenance mode. This will then require you to remedy the situation and possibly restart FusionAuth to get it back into silent mode. When silent mode does fail, it will present an error message for you to try and figure out what happened. The error might look like this:

![Example of silent mode failure screen.](https://fusionauth.io/img/docs/get-started/download-and-install/failure.png)

All of the silent mode steps ensure that at the end of silent mode FusionAuth can connect to the database and function properly. This also prevents FusionAuth from entering the interactive maintenance mode.

## Configuration

### Production mode

In order to configure FusionAuth to take these steps, you must specify a number of configuration properties. You can specify configuration properties with environment variables, command line properties, or the `fusionauth.properties` file. You can also mix and match these strategies. Here is an example configuration file that defines the necessary properties to enable silent mode and instruct it to install FusionAuth using the steps above:

fusionauth.properties

```properties
database.url=jdbc:postgresql://localhost:5432/fusionauth
database.username=fusionauth
database.password=ordinary-user-password
database.root.username=postgres
database.root.password=super-user-password

fusionauth-app.runtime-mode=production
```

FusionAuth enables silent mode automatically because `database.url`, `database.username`, and `database.root.username` are set.

### Development mode

Silent mode can also be used in development mode. The following configuration will use silent mode. `fusionauth-app.runtime-mode` can be omitted because its default value is `development`.

fusionauth.properties

```properties
database.url=jdbc:postgresql://localhost:5432/fusionauth
database.username=fusionauth
database.password=ordinary-user-password
database.root.username=postgres
database.root.password=super-user-password
```

### Managed databases

Some cloud providers don't provide access to a super user account and also don't allow you to connect to the "root" databases (i.e. `mysql` or `postgres`). Instead, they provision an ordinary user account and create an empty database for you to use. Often you can name this database to anything you want.

For these types of situations, FusionAuth can still connect to the managed database and create all of the necessary tables it requires to run. The only difference is that you must not specify the root credentials in the configuration. Here's an example configuration that will allow silent mode to function without access to any super user information or database. Note that the `fusionauth-app.silent-mode` property is explicitly set in this case:

fusionauth.properties

```properties
database.url=jdbc:postgresql://localhost:5432/fusionauth
database.username=fusionauth
database.password=ordinary-user-password

fusionauth-app.runtime-mode=production
fusionauth-app.silent-mode=true
```

## Updates

You can use Silent Mode to update a FusionAuth deployment using the configuration files above. Always back up your FusionAuth database before performing a Silent Mode update.

The only additional step that you need to take is to [update the version of FusionAuth itself](https://fusionauth.io/docs/update.md). When the new version of FusionAuth starts up, it checks the database to determine if there are any database migrations that need to be run. If there are, FusionAuth will run the migrations in order and then resume the startup process.

Related

[Update FusionAuth Database Migrations Learn how FusionAuth migrates your database schema during an update, and how to run the migrations yourself. silent mode](https://fusionauth.io/docs/update/database-migrations.md)
---

## Other pages in Install

> For the full index of this section, see [Deploy](https://fusionauth.io/docs/llms-deploy.txt).

- [Air-gapping](https://fusionauth.io/docs/deploy/production/install/air-gapping.md): Run FusionAuth with no network access (air-gapped).
- [Install a Database](https://fusionauth.io/docs/deploy/production/install/database.md): Learn how to install the database that FusionAuth will use to store user data.
- [Customize Docker Images](https://fusionauth.io/docs/deploy/production/install/docker-configuration.md): Learn how to configure a Docker image containing FusionAuth to meet the needs of your application.
- [Install FusionAuth App](https://fusionauth.io/docs/deploy/production/install/fusionauth-app.md): Learn how to install FusionAuth App on a production server with Docker or from a package.
- [Packages](https://fusionauth.io/docs/deploy/production/install/packages.md): Learn how to determine which installation packages you need.
- [Install a Search Engine](https://fusionauth.io/docs/deploy/production/install/search.md): Learn how to install a search engine for your FusionAuth instance.
