38 lines
1.7 KiB
YAML
38 lines
1.7 KiB
YAML
services:
|
|
yuvomi:
|
|
image: ghcr.io/ulsklyc/yuvomi:latest
|
|
build: . # optional: use --build to build locally instead
|
|
container_name: yuvomi
|
|
restart: unless-stopped
|
|
ports:
|
|
# Host-Port aus .env (OIKOS_HTTP_PORT); App im Container bleibt auf 3000.
|
|
- "0.0.0.0:${OIKOS_HTTP_PORT:-3000}:3000"
|
|
volumes:
|
|
- ${DATA_DIR:-./data}:/data
|
|
- ${BACKUP_DIR:-./backups}:/backups
|
|
# Drop Yuvomi modules into ./modules, or set MODULES_DIR=/path/to/modules.
|
|
- ${MODULES_DIR:-./modules}:/app/modules
|
|
# Optional local documents folder: mount a host directory to /documents inside the container
|
|
- ${DOCUMENT_STORAGE_LOCAL_DIR:-./documents}:/documents
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
- NODE_ENV=production
|
|
- DB_PATH=${DB_PATH:-/data/yuvomi.db}
|
|
- BACKUP_DIR=/backups
|
|
# Local document storage (optional): set to true to store uploaded documents on the mounted /documents folder.
|
|
- DOCUMENT_STORAGE_LOCAL_ENABLED=${DOCUMENT_STORAGE_LOCAL_ENABLED:-false}
|
|
- DOCUMENT_STORAGE_LOCAL_PATH=${DOCUMENT_STORAGE_LOCAL_PATH:-/documents}
|
|
# Secure cookies come from .env (the installer sets them):
|
|
# - Reverse proxy + HTTPS → SESSION_SECURE=true, TRUST_PROXY=1
|
|
# - Direct HTTP access → SESSION_SECURE=false, TRUST_PROXY=loopback
|
|
# Default when unset (e.g. bare `docker compose up` without .env): false,
|
|
# so direct HTTP login keeps working out of the box.
|
|
- SESSION_SECURE=${SESSION_SECURE:-false}
|
|
healthcheck:
|
|
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', r => process.exit(r.statusCode === 200 ? 0 : 1))"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 10s
|