Files
oikos/docker-compose.yml
Ulas Kalayci b545d83f64 fix: modal onClose callback, calendar popup truncation, datetime validation
- modal.js: add onClose callback to openModal(), fix _initialFormTimeout
  cleanup, deduplicate escape/overlay-click handlers in confirmModal,
  promptModal, selectModal using the new callback
- calendar.js: replace popup.innerHTML with insertAdjacentHTML (constraint),
  add truncateDescription() to cap long event descriptions at 500 chars
- validate.js: extend DATETIME_RE to cover ISO 8601 with ms/timezone,
  normalise datetime values to YYYY-MM-DDTHH:MM on input
- index.js: include app version in startup log message
- docker-compose.yml / .env.example: switch from named volume to
  host-mounted DATA_DIR/BACKUP_DIR with sane defaults
- docs/installation.md: document host-mount data paths

Co-Authored-By: Rafael Foster <rafaelfoster@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:00:07 +02:00

29 lines
980 B
YAML

services:
oikos:
image: ghcr.io/ulsklyc/oikos:latest
build: . # optional: use --build to build locally instead
container_name: oikos
restart: unless-stopped
ports:
- "0.0.0.0:3000:3000"
volumes:
- ${DATA_DIR:-./data}:/data
- ${BACKUP_DIR:-./backups}:/backups
env_file:
- .env
environment:
- NODE_ENV=production
- DB_PATH=${DB_PATH:-/data/oikos.db}
- BACKUP_DIR=${BACKUP_DIR:-/backups}
# Reverse proxy setup (Caddy, nginx, Traefik):
# - Remove SESSION_SECURE=false (default is true)
# - TRUST_PROXY is automatically set to 1 (trust one proxy hop)
# Direct HTTP access (no reverse proxy):
- 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