Set up a database for a scaled authenticated deployment#
When Tiled is configured to use authentication provider(s), it employs a SQL database to store authentication-related state, such as identities, sessions, and API keys. In single-process deployments, it creates a SQLite database automatically at startup. For scaled deployments, a proper scalable database should be used. Tiled supports any SQL dialect support by SQLAlchemy, but we recommend PostgreSQL for scaled deployments.
Create a database and user for tiled#
Invent a strong password, such as via:
openssl rand -hex 32
or
python -c "import secrets; print(secrets.token_hex(32))"
Create a user and a database in PostgreSQL. For example:
$ sudo su postgres
$ psql
postgres=# CREATE USER 'tiled' WITH SUPERUSER PASSWORD '...';
postgres=# CREATE DATABASE tiled ENCODING 'utf-8' OWNER tiled;
Configure and initialize the database#
Place the database URI in the configuration file, filling in the hostname
in place of ... below. Inject the password via an environment variable as shown;
do not hard-code it in the configuration file. Be sure to quote the URI.
database
uri: "postgresql://tiled:${TILED_DATABASE_PASSWORD}@.../tiled"
Initialize the database. Initialization only has to be done once ever. (If you run this on an existing database Tiled will notice and refuse to initialize it.)
$ tiled admin initialize-database postgresql://tiled:${TILED_DATABASE_PASSWORD}@.../tiled
The database is ready to use.
Reference#
See database in Service Configuration Reference for comprehensive
documentation of the options for tuning database performance and reliability.