
# Deploy Sovrium with Docker

You want to run a Sovrium app on any host that has Docker, with nothing to install but the image.

## Run the container

Mount your config and a data volume, and pass the two required secrets. On the SQLite default, the whole database lives in the mounted `/data` volume:

```bash
docker run -d --name my-app -p 3000:3000 \
  -v "$PWD/app.ts:/app/app.ts:ro" \
  -v my-app-data:/data \
  -e SOVRIUM_DATA_DIR=/data \
  -e AUTH_SECRET="$(openssl rand -hex 32)" \
  -e SOVRIUM_ENCRYPTION_KEY="$(openssl rand -hex 32)" \
  -e BASE_URL=https://app.example.com \
  ghcr.io/sovrium/sovrium:latest start /app/app.ts
```

## Verify

```bash
curl -fsS http://localhost:3000/ >/dev/null && echo "up"
```

The container serves your app on port 3000; the SQLite database and uploaded files persist in the `my-app-data` volume across restarts and upgrades.

## Next

- [Environment Variables](/en/docs/env-vars) — every secret and toggle you can pass with `-e`.
- [Database Infrastructure](/en/docs/database-infrastructure) — stay on SQLite or point `DATABASE_URL` at Postgres.
- [Security Hardening](/en/docs/security-hardening) — the production checklist before you expose the port.
