Each folder gets a .env.example listing every homeserver, admin panel and web client setting with its default (empty means the default). Compose reads .env for ports, registry and the PostgreSQL password, and passes it to the containers through env_file; the compose files keep only the database driver, connection string and internal addresses. .env is git-ignored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Docker-AIO: everything in one image
warp-aio holds the homeserver, the admin panel, the web client and
PostgreSQL 17 in one image, built from Dockerfile.
entrypoint.sh starts them in one container; if one
exits, the rest are stopped and the container's restart policy brings the
set back.
| File | Database | Image |
|---|---|---|
docker-compose.sqlite.yml |
SQLite, /data/warp.db |
built here |
docker-compose.pocketbase.yml |
PocketBase (embedded driver), /data/pb_data |
built here |
docker-compose.postgresql.yml |
PostgreSQL in the container, /data/postgres |
built here |
docker-compose.*.prod.yml |
as above | pulled, never built |
Everything lives in the warp-data volume, mounted on /data.
cd Docker-AIO
cp .env.example .env # then edit it
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.
The embedded PostgreSQL listens only on a Unix socket inside the container, so it needs no password and is not reachable from outside.
Settings
Every setting is in .env, copied from .env.example,
which lists them all with their defaults; an empty value means the
default. .env is not committed. On top of the settings of
Docker/, it has:
| Variable | Default | |
|---|---|---|
WARP_AIO_ADMIN |
true |
false runs no admin panel |
WARP_AIO_WEB |
true |
false runs no web client |
WARP_AIO_EMBEDDED_POSTGRES, which starts the bundled PostgreSQL, is set
by docker-compose.postgresql*.yml.
Prod files
The .prod.yml files pull $WARP_REGISTRY/warp-aio:$WARP_VERSION
(defaults ghcr.io/dariuszjaniak and latest). Push the image first:
docker build -t $WARP_REGISTRY/warp-aio:$WARP_VERSION -f Docker-AIO/Dockerfile .
docker push $WARP_REGISTRY/warp-aio:$WARP_VERSION