# Docker: one container per component The homeserver (`warp`), the admin panel (`warp-admin`) and the web client (`warp-web`) as separate images, built from `Dockerfile`, `apps/admin/Dockerfile` and `apps/web/Dockerfile`. | File | Database | Images | | --- | --- | --- | | `docker-compose.sqlite.yml` | SQLite, in the `warp-data` volume | built here | | `docker-compose.pocketbase.yml` | PocketBase, embedded in the homeserver, in `warp-data` | built here | | `docker-compose.postgresql.yml` | PostgreSQL 17, its own container | built here | | `docker-compose.*.prod.yml` | as above | pulled, never built | ```sh cd Docker WARP_SERVER_NAME=matrix.example.org docker compose -f docker-compose.sqlite.yml up -d --build docker compose -f docker-compose.sqlite.yml exec warp warp create-account --username admin --admin ``` Homeserver on `:8008`, admin panel on `:8009`, web client on `:8080` (`WARP_PORT`, `WARP_ADMIN_PORT`, `WARP_WEB_PORT` move them). Put a TLS-terminating reverse proxy in front before exposing them; see [docs/deployment.md](../docs/deployment.md). PocketBase is a database driver inside the homeserver, not a separate server, so the PocketBase files have no PocketBase container. ## Prod files The `.prod.yml` files pull `$WARP_REGISTRY/warp`, `warp-admin` and `warp-web` at tag `$WARP_VERSION` (defaults `ghcr.io/dariuszjaniak` and `latest`). Push the images there first: ```sh docker compose -f docker-compose.sqlite.yml build for i in warp warp-admin warp-web; do docker tag $i:latest $WARP_REGISTRY/$i:$WARP_VERSION docker push $WARP_REGISTRY/$i:$WARP_VERSION done ``` `docker-compose.postgresql.prod.yml` refuses to start without `WARP_POSTGRES_PASSWORD`. ## Settings | Variable | Default | | --- | --- | | `WARP_SERVER_NAME` | `localhost` | | `WARP_PUBLIC_BASEURL` | `http://localhost:8008` | | `WARP_REGISTRATION_ENABLED` | `false` | | `WARP_FEDERATION_ENABLED` | `false` | | `WARP_POSTGRES_PASSWORD` | `warp` (required in prod) | | `WARP_PB_S3_*` | S3 media for PocketBase, off | Any other setting from [docs/configuration.md](../docs/configuration.md) can be added to the `warp` service's environment.