# Warp on SQLite: the homeserver, the admin panel and the web client, each # in its own container, built from this checkout. # # cd Docker # cp .env.sqlite.example .env # then edit it # docker compose -f docker-compose.sqlite.yml up -d --build # # Homeserver http://localhost:8008, admin panel http://localhost:8009, web # client http://localhost:8080. The database, signing key and media live # in the warp-data volume. # # Create the first administrator once the server is up: # # docker compose -f docker-compose.sqlite.yml exec warp warp create-account --username admin --admin name: warp-sqlite 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: sqlite 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: