# Warp on PocketBase: the homeserver, the admin panel and the web client, # each in its own container, built from this checkout. # # cd Docker # WARP_SERVER_NAME=matrix.example.org docker compose -f docker-compose.pocketbase.yml up -d --build # # PocketBase is embedded in the homeserver (the pocketbase database driver), # so it is not a container of its own: its data directory, with media in # its storage, is /data/pb_data in the warp-data volume. Set the WARP_PB_S3_* # variables to keep media in an S3 bucket instead (docs/configuration.md). # # Homeserver http://localhost:8008, admin panel http://localhost:8009, web # client http://localhost:8080. # # Create the first administrator once the server is up: # # docker compose -f docker-compose.pocketbase.yml exec warp warp create-account --username admin --admin name: warp-pocketbase services: warp: build: context: .. dockerfile: Dockerfile image: warp:latest restart: unless-stopped # The signing key is created on first start and kept in the volume: # losing it means other servers no longer recognise this one. entrypoint: ["/bin/sh", "-c"] command: - test -f /data/signing.key || warp generate-keys --output /data/signing.key; exec warp serve environment: WARP_SERVER_NAME: ${WARP_SERVER_NAME:-localhost} WARP_WELL_KNOWN_CLIENT_BASE_URL: ${WARP_PUBLIC_BASEURL:-http://localhost:8008} WARP_DB_DRIVER: pocketbase WARP_DB_CONNECTION_STRING: /data/pb_data WARP_PB_S3_ENABLED: ${WARP_PB_S3_ENABLED:-false} WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-} WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-} WARP_PB_S3_ENDPOINT: ${WARP_PB_S3_ENDPOINT:-} WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:-} WARP_PB_S3_SECRET: ${WARP_PB_S3_SECRET:-} WARP_PB_S3_FORCE_PATH_STYLE: ${WARP_PB_S3_FORCE_PATH_STYLE:-false} WARP_REGISTRATION_ENABLED: ${WARP_REGISTRATION_ENABLED:-false} WARP_FEDERATION_ENABLED: ${WARP_FEDERATION_ENABLED:-false} volumes: - warp-data:/data ports: - "${WARP_PORT:-8008}:8008" admin: build: context: .. dockerfile: apps/admin/Dockerfile image: warp-admin:latest restart: unless-stopped depends_on: - warp environment: WARP_ADMIN_HOMESERVER: http://warp:8008 ports: - "${WARP_ADMIN_PORT:-8009}:8009" web: build: context: .. dockerfile: apps/web/Dockerfile image: warp-web:latest restart: unless-stopped depends_on: - warp environment: WARP_WEB_HOMESERVER: http://warp:8008 ports: - "${WARP_WEB_PORT:-8080}:8080" volumes: warp-data: