Skip to main content
The repository’s docker-compose.yml runs everything: Postgres, SeaweedFS (S3-compatible storage) and the app, from the published image.
In .env, set at least:
Then:
The app migrates its database when it starts, and creates the bucket, its CORS rule and its lifecycle rules. Make the first account at APP_URL: it is the admin of everything.

Two addresses for storage

Browsers upload straight to storage, so storage needs an address a browser can reach. Inside Compose the app reaches it at http://s3:9000; the file sets that as S3_ENDPOINT and uses S3_PUBLIC_ENDPOINT (default http://localhost:9000) for the uploads it signs. On a server, put both behind your reverse proxy with TLS:
Caddyfile

Pinning a version

ARTBUCKET_VERSION=0.9 in the environment pins the image tag (the default is latest). See Upgrading.

Using other storage

Any S3-compatible service works. Set the S3_* variables in .env, remove the S3_ENDPOINT and S3_PUBLIC_ENDPOINT lines from the app service, and drop the s3 service. See Storage.

Backups

Back up the .pgdata directory (or pg_dump) and the .s3-data directory, or your storage provider’s bucket. Originals live under assets/ and are never overwritten; renditions/ and staging/ are disposable.