# Storage for developing and testing donut-sync itself. It runs an S3 server # only, and the sync server is expected to run on the host beside it # (`pnpm start:dev`), which is why the port is published and matches the one # pinned in test/test-env.ts. # # This is NOT the self-hosting compose file. That one runs donut-sync in a # container too, and it must set S3_PUBLIC_ENDPOINT, because a server that signs # presigned URLs against a compose-internal host such as `http://minio:9000` # hands every device a URL it cannot open, while /health and /readyz stay green. # Take the self-hosting compose from https://donutbrowser.com/docs/self-hosting # rather than from here. services: s3: # rclone, not MinIO: MinIO withdrew its community images (quay.io now # answers 401 and Docker Hub denies the pull) as well as its binaries. # `rclone serve s3` is what scripts/sync-test-harness.mjs uses too. image: rclone/rclone:latest ports: - "8987:9000" command: - serve - s3 - /data - --addr - :9000 - --auth-key - minioadmin,minioadmin - --force-path-style - --vfs-cache-mode - writes healthcheck: test: ["CMD", "nc", "-z", "127.0.0.1", "9000"] interval: 2s timeout: 5s retries: 15 volumes: - s3_data:/data volumes: s3_data: