# Warp on PocketBase: the homeserver, the admin panel and the web client, # each in its own container, built from this checkout. # # cd Docker # cp .env.pocketbase.example .env # then edit it # 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 WARP_PB_S3_* # in .env 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 env_file: .env environment: WARP_DB_DRIVER: pocketbase WARP_DB_CONNECTION_STRING: /data/pb_data 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 env_file: .env 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 env_file: .env environment: WARP_WEB_HOMESERVER: http://warp:8008 ports: - "${WARP_WEB_PORT:-8080}:8080" volumes: warp-data: