version: '3.8' services: outline-postgres: image: postgres:15-alpine container_name: outline-postgres restart: unless-stopped environment: POSTGRES_USER: outline POSTGRES_PASSWORD: ${OUTLINE_DB_PASSWORD:-outline123} POSTGRES_DB: outline volumes: - ./postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U outline"] interval: 10s timeout: 5s retries: 5 outline-redis: image: redis:7-alpine container_name: outline-redis restart: unless-stopped volumes: - ./redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 outline-minio: image: quay.io/minio/minio:latest container_name: outline-minio restart: unless-stopped command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-outline} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-outline123} volumes: - ./minio-data:/data healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 10s timeout: 5s retries: 5 outline-minio-init: image: quay.io/minio/mc:latest container_name: outline-minio-init depends_on: outline-minio: condition: service_healthy entrypoint: | /bin/sh -c " sleep 5; mc alias set myminio http://outline-minio:9000 $${MINIO_ROOT_USER} $${MINIO_ROOT_PASSWORD}; mc mb myminio/outline --ignore-existing; mc anonymous set download myminio/outline; exit 0; " outline: image: outlinewiki/outline:latest container_name: outline restart: unless-stopped ports: - "3001:3000" depends_on: outline-postgres: condition: service_healthy outline-redis: condition: service_healthy outline-minio: condition: service_healthy environment: DATABASE_URL: postgres://outline:${OUTLINE_DB_PASSWORD:-outline123}@outline-postgres:5432/outline REDIS_URL: redis://outline-redis:6379 MINIO_SERVER: http://outline-minio:9000 MINIO_ACCESS_KEY: ${MINIO_ROOT_USER:-outline} MINIO_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-outline123} SECRET_KEY: ${OUTLINE_SECRET_KEY:-change-me-in-production} URL: https://outline.hackerfortress.cc PORT: 3000 TZ: America/Sao_Paulo healthcheck: test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1"] interval: 30s timeout: 10s retries: 3 networks: default: name: homelab-network external: true