feat: enhance SnapOtter service configuration with additional environment variables and middleware

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
nathan 2026-04-29 10:21:07 -04:00
parent 443fbba7ad
commit 966efb5b20

View File

@ -6,12 +6,51 @@ services:
networks:
- proxy-net
environment:
# - AUTH_ENABLED=${AUTH_ENABLED}
# - DEFAULT_USERNAME=${DEFAULT_USERNAME}
# - DEFAULT_PASSWORD=${DEFAULT_PASSWORD}
- MAX_USERS=${MAX_USERS}
- SESSION_DURATION_HOURS=${SESSION_DURATION_HOURS}
- TRUST_PROXY=${TRUST_PROXY}
# Server
- PORT=${PORT:-1349}
- AUTH_ENABLED=${AUTH_ENABLED:-false}
#DEFAULT_USERNAME=admin
#DEFAULT_PASSWORD=admin
- STORAGE_MODE=${STORAGE_MODE:-local}
- TRUST_PROXY=${TRUST_PROXY:-true}
# Cleanup
- FILE_MAX_AGE_HOURS=${FILE_MAX_AGE_HOURS:-72}
- CLEANUP_INTERVAL_MINUTES=${CLEANUP_INTERVAL_MINUTES:-60}
# Upload & Batch (0 = unlimited)
- MAX_UPLOAD_SIZE_MB=${MAX_UPLOAD_SIZE_MB:-0}
- MAX_BATCH_SIZE=${MAX_BATCH_SIZE:-0}
- CONCURRENT_JOBS=${CONCURRENT_JOBS:-10}
- MAX_MEGAPIXELS=${MAX_MEGAPIXELS:-0}
# Rate limiting (0 = disabled)
- RATE_LIMIT_PER_MIN=${RATE_LIMIT_PER_MIN:-0}
# Users (0 = unlimited)
- MAX_USERS=${MAX_USERS:-0}
# Processing (0 = auto/unlimited)
- MAX_WORKER_THREADS=${MAX_WORKER_THREADS:-0}
- PROCESSING_TIMEOUT_S=${PROCESSING_TIMEOUT_S:-0}
- MAX_PIPELINE_STEPS=${MAX_PIPELINE_STEPS:-0}
- MAX_CANVAS_PIXELS=${MAX_CANVAS_PIXELS:-0}
- MAX_SVG_SIZE_MB=${MAX_SVG_SIZE_MB:-0}
- MAX_LOGO_SIZE_KB=${MAX_LOGO_SIZE_KB:-2048}
- MAX_SPLIT_GRID=${MAX_SPLIT_GRID:-100}
- MAX_PDF_PAGES=${MAX_PDF_PAGES:-0}
- SESSION_DURATION_HOURS=${SESSION_DURATION_HOURS:-168}
- LOGIN_ATTEMPT_LIMIT=${LOGIN_ATTEMPT_LIMIT:-10}
# Set to true in CI/dev to skip the forced password-change on the default admin
# SKIP_MUST_CHANGE_PASSWORD=false
- SKIP_MUST_CHANGE_PASSWORD=${SKIP_MUST_CHANGE_PASSWORD:-false}
- DB_PATH=${DB_PATH:-./data/snapotter.db}
- WORKSPACE_PATH=${WORKSPACE_PATH:-./tmp/workspace}
- FILES_STORAGE_PATH=${FILES_STORAGE_PATH:-./data/files}
- DEFAULT_THEME=${DEFAULT_THEME}
- DEFAULT_LOCALE=${DEFAULT_LOCALE:-en}
- APP_NAME=${APP_NAME:-snapotter}
restart: unless-stopped
labels:
- "traefik.enable=true"
@ -21,6 +60,7 @@ services:
- "traefik.http.routers.snapotter.tls.certresolver=cloudflare"
- "traefik.http.routers.snapotter.service=snapotter"
- "traefik.http.services.snapotter.loadbalancer.server.port=1349"
- "traefik.http.routers.snapotter.middlewares=authentik-auth@file"
networks:
proxy-net: