67 lines
2.5 KiB
YAML
67 lines
2.5 KiB
YAML
services:
|
|
SnapOtter:
|
|
image: snapotter/snapotter:latest # or ghcr.io/snapotter-hq/snapotter:latest
|
|
volumes:
|
|
- /mnt/appdata/snapotter/data:/data
|
|
networks:
|
|
- proxy-net
|
|
environment:
|
|
# 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"
|
|
- "traefik.http.routers.snapotter.entrypoints=websecure"
|
|
- "traefik.http.routers.snapotter.rule=Host(`snapotter.castaldifamily.com`)"
|
|
- "traefik.http.routers.snapotter.tls=true"
|
|
- "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:
|
|
external: true |