The server reads `config.toml` from the working directory, or from the path given with `-c`. Use `config_sample.toml` as a template.
The file contains the database and SMTP passwords and the session key. Keep it outside the site directory (`target/site`): everything in there is served as static files. The server refuses to start when the config file is inside it.
Each instance opens database connections on demand, up to `max_connections` in the `[database]` section of the config (10 by default), and closes the ones that stay idle. When many instances share one PostgreSQL server, the sum of their limits must stay below the server's own `max_connections` (100 by default): lower the limit per instance, raise it on the server, or put PgBouncer in front of PostgreSQL.
On the first start, when the database has no admin account, the server creates the user `admin`. Its password must be given, at least 8 characters, in one of these ways:
- the `REZERVATOR_ADMIN_PASSWORD` environment variable, or
-`initial_password` in the `[admin]` section of the config.
Without it the server refuses to start. Once an admin account exists the value is not used any more and should be removed.
Older versions created `admin` with the password `admin`. The server logs a warning on start while that password is still in use.
Files created while the application runs (the uploaded banner and the styles generated for it) are stored in the data directory and served under `/data`. By default it is `data` in the working directory; change it with `data_dir` in the `[storage]` section of the config. Keep this directory when you upgrade the application and include it in backups. Never put the config file into it.
When upgrading from a version that kept these files in `target/site/data`, move the banner image to the data directory. The style for it is generated again on start.
Set `bind_ip = '0.0.0.0'` in the config so the server is reachable from outside the container.
Older versions of the image expected the config in `/app/target/site/data/config.toml`, where it could be downloaded from `/data/config.toml`. If you ran such a container, move the file and change the database password, the SMTP password and the session key.
`GET /health` returns 200 when the server can reach its database and 503 otherwise. `rezervator --healthcheck` asks the running server on this machine and exits with 0 or 1; the Docker image uses it as its health check.
## Hosting many customers
The application serves one company per instance. `deploy/` contains a Docker Compose setup and a script for running one container per customer behind a reverse proxy, including upgrades, backups and restores. See [deploy/README.md](deploy/README.md).