# Warp all-in-one on PocketBase with SeaweedFS: the homeserver, the admin # panel, the web client and SeaweedFS (one `weed server -s3` process) in one # container built from this checkout (Dockerfile.PocketBase.SeaweedFS). # # cd Docker-AIO # cp .env.pocketbase.seaweedfs.example .env # then edit it # docker compose -f docker-compose.pocketbase.seaweedfs.yml up -d --build # # PocketBase runs in the container, its database in /data/pb_data # (warp-data), admin UI on loopback at http://localhost:8070/_/; media goes to the bucket # WARP_PB_S3_BUCKET in SeaweedFS (seaweed-data), whose gateway has exactly # one identity: the homeserver's. 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) is published on # loopback, for aws-cli and the like; SEAWEED_S3_BIND=0.0.0.0 exposes it. # # This and docker-compose.pocketbase.seaweedfs.split.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.yml exec warp warp create-account --username admin --admin name: warp-aio-pocketbase-seaweedfs services: warp: build: context: .. dockerfile: Docker-AIO/Dockerfile.PocketBase.SeaweedFS args: # Passed only when set, so the Dockerfile's pin stays otherwise. - SEAWEED_VERSION image: warp-aio-pocketbase-seaweedfs: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: us-east-1 # SeaweedFS ignores it; the client wants one WARP_PB_S3_FORCE_PATH_STYLE: "true" # The gateway's only identity, and what the homeserver 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} volumes: - ${WARP_DATA_VOLUME:-warp-data}:/data - ${SEAWEED_DATA_VOLUME:-seaweed-data}:/seaweed/data ports: - "${WARP_PORT:-8008}:8008" - "${WARP_ADMIN_PORT:-8009}:8009" - "${WARP_WEB_PORT:-8080}:8080" - "${WARP_PB_BIND:-127.0.0.1}:${WARP_PB_PORT:-8070}:8070" - "${SEAWEED_S3_BIND:-127.0.0.1}:${SEAWEED_S3_PORT:-8333}:8333" volumes: warp-data: seaweed-data: