# Warp all-in-one on PocketBase with SeaweedFS split into its roles: the # homeserver, the admin panel, the web client, and SeaweedFS's master, # volume, filer, S3 gateway and admin UI, all in one container built from # this checkout (Dockerfile.PocketBase.SeaweedFS.split). # # cd Docker-AIO # cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY, # # WARP_PB_S3_SECRET and SEAWEED_ADMIN_PASSWORD # docker compose -f docker-compose.pocketbase.seaweedfs.split.yml up -d --build # # The database stays in /data/pb_data (warp-data); media goes to the bucket # WARP_PB_S3_BUCKET in SeaweedFS (seaweed-data). The homeserver's S3 identity # is seeded into the filer's IAM store on every boot, beside any added in # the admin UI under Object Store → Users. Media stored before S3 was on is # not moved into the bucket. # # Homeserver http://localhost:8008, admin panel http://localhost:8009, web # client http://localhost:8080. The S3 gateway (8333) and the SeaweedFS admin # UI (23646) are published on loopback; SEAWEED_S3_BIND and # SEAWEED_ADMIN_BIND=0.0.0.0 expose them, the admin UI only behind a proxy. # # This and docker-compose.pocketbase.seaweedfs.yml share their project and # volumes: SeaweedFS's data has the same layout either way, so switching # between them needs no migration. # # Create the first administrator once the server is up: # # docker compose -f docker-compose.pocketbase.seaweedfs.split.yml exec warp warp create-account --username admin --admin name: warp-aio-pocketbase-seaweedfs services: warp: build: context: .. dockerfile: Docker-AIO/Dockerfile.PocketBase.SeaweedFS.split args: # Passed only when set, so the Dockerfile's pin stays otherwise. - SEAWEED_VERSION image: warp-aio-pocketbase-seaweedfs-split:latest restart: unless-stopped env_file: .env environment: # The gateway is in the container at a fixed address; these override # whatever .env says about S3. WARP_PB_S3_ENABLED: "true" WARP_PB_S3_ENDPOINT: http://127.0.0.1:8333 WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp} WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1} WARP_PB_S3_FORCE_PATH_STYLE: "true" # The homeserver's identity in SeaweedFS, and what it signs with. WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env} WARP_PB_S3_SECRET: ${WARP_PB_S3_SECRET:?set WARP_PB_S3_SECRET in .env} # The admin UI can mint bucket credentials, so it needs a password. WEED_ADMIN_USER: ${SEAWEED_ADMIN_USER:-admin} WEED_ADMIN_PASSWORD: ${SEAWEED_ADMIN_PASSWORD:?set SEAWEED_ADMIN_PASSWORD in .env} WEED_ADMIN_READONLY_USER: ${SEAWEED_ADMIN_READONLY_USER:-} WEED_ADMIN_READONLY_PASSWORD: ${SEAWEED_ADMIN_READONLY_PASSWORD:-} volumes: - warp-data:/data - seaweed-data:/seaweed/data - seaweed-admin:/seaweed/admin ports: - "${WARP_PORT:-8008}:8008" - "${WARP_ADMIN_PORT:-8009}:8009" - "${WARP_WEB_PORT:-8080}:8080" - "${SEAWEED_S3_BIND:-127.0.0.1}:${SEAWEED_S3_PORT:-8333}:8333" - "${SEAWEED_ADMIN_BIND:-127.0.0.1}:${SEAWEED_ADMIN_PORT:-23646}:23646" volumes: warp-data: # Master, volume and filer share it, as `weed server -dir` lays it out. seaweed-data: # The admin UI's session key and maintenance state; no object data. seaweed-admin: