Rust (axum + sqlx) API and worker sharing a Postgres-backed job queue (SKIP LOCKED, heartbeat, reaper, typed statuses), S3 storage with derived keys and a fully private bucket, OIDC photographer login with per-request allowlist checks, client share links with argon2 passwords and lockout, cookie-based image authorization with sliding expiry, hand-rolled spec-compliant streaming ZIP downloads with exact Content-Length, React + Vite gallery frontend, single Docker image, Helm chart for external S3 + Postgres, and Gitea CI. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# Copy to .env and `set -a; source .env; set +a` (or use direnv) for local dev.
|
||||
|
||||
DATABASE_URL=postgres://photos:photos@localhost:5432/photos
|
||||
BIND_ADDR=127.0.0.1:8080
|
||||
# For local dev this is the Vite dev server; OIDC redirect URI must match <PUBLIC_URL>/api/auth/callback
|
||||
PUBLIC_URL=http://localhost:5173
|
||||
SESSION_SECRET=change-me-to-a-long-random-string-min-32-chars
|
||||
|
||||
S3_BUCKET=photos
|
||||
S3_ENDPOINT=http://localhost:9000
|
||||
S3_REGION=us-east-1
|
||||
S3_ACCESS_KEY=minioadmin
|
||||
S3_SECRET_KEY=minioadmin
|
||||
S3_FORCE_PATH_STYLE=true
|
||||
|
||||
OIDC_ISSUER=https://auth.example.com
|
||||
OIDC_CLIENT_ID=photos
|
||||
OIDC_CLIENT_SECRET=change-me
|
||||
ALLOWED_EMAILS=you@example.com
|
||||
|
||||
# DEV ONLY: skip OIDC and sign straight in as this email. Never set in production.
|
||||
# DEV_AUTOLOGIN_EMAIL=you@example.com
|
||||
|
||||
WORKER_CONCURRENCY=2
|
||||
RUST_LOG=info,sqlx=warn
|
||||
Reference in New Issue
Block a user