CI / Test (ubuntu-latest) (push) Canceled after 0s
CI / Test (windows-latest) (push) Canceled after 0s
CI / Storage tests on PostgreSQL (push) Canceled after 0s
CI / Complement (federation off) (push) Canceled after 0s
CI / golangci-lint (push) Canceled after 0s
CI / Smoke test the binary (push) Canceled after 0s
CI / Admin panel (push) Canceled after 0s
CI / Web client (push) Canceled after 0s
CI / Desktop client (ubuntu-24.04) (push) Canceled after 0s
CI / Desktop client (windows-latest) (push) Canceled after 0s
Docker/ runs the homeserver, admin panel and web client as separate containers built from the existing Dockerfiles; Docker-AIO/ runs all three (and optionally PostgreSQL) in one warp-aio image, supervised by a small entrypoint. Each has a build file and a .prod.yml that only pulls images from WARP_REGISTRY at WARP_VERSION. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
58 lines
2.1 KiB
Markdown
58 lines
2.1 KiB
Markdown
# 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.
|