services: postgres: image: postgres:18 container_name: Outline-DB user: 1026:100 security_opt: - no-new-privileges:true volumes: - /volume1/docker/outline/db:/var/lib/postgresql/:rw environment: POSTGRES_DB: outline POSTGRES_USER: outlineuser POSTGRES_PASSWORD: outlinepass restart: on-failure:5 healthcheck: test: ["CMD", "pg_isready", "-q", "-d", "outline", "-U", "outlineuser"] timeout: 45s interval: 30s retries: 10 redis: image: redis:8-alpine container_name: Outline-REDIS hostname: outline-redis security_opt: - no-new-privileges:true user: 1026:100 volumes: - /volume1/docker/outline/redis:/data:rw environment: TZ: Europe/Bucharest restart: on-failure:5 healthcheck: test: ["CMD-SHELL", "redis-cli ping || exit 1"] outline: image: outlinewiki/outline:latest container_name: Outline user: 1026:100 depends_on: postgres: condition: service_healthy redis: condition: service_healthy environment: NODE_ENV: production URL: https://outline.yourdomain.synology.me DATABASE_URL: 'postgresql://outlineuser:outlinepass@db:5432/outline?sslmode=disable' REDIS_URL: 'redis://redis:6379' REDIS_COLLABORATION_URL: 'redis://redis:6379/1' SECRET_KEY: SECRET_KEY # hex32 UTILS_SECRET: UTILS_SECRET # hex32 SMTP_HOST: smtp.gmail.com SMTP_PORT: 465 SMTP_USERNAME: Your-own-gmail-address SMTP_PASSWORD: Your-own-app-password SMTP_FROM_EMAIL: Your-own-gmail-address ports: - 4787:3000 volumes: - /volume1/docker/outline/data:/var/lib/outline/data:rw restart: on-failure:5 healthcheck: test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/3000' || exit 1 interval: 10s timeout: 5s retries: 3 start_period: 90s