services: minio: image: minio/minio:latest container_name: refboard-minio command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ACCESS_KEY:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY:-minioadmin} ports: - "9000:9000" # S3 API - "9001:9001" # Web console volumes: - ./.docker-data/minio:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped refboard: image: ${REFBOARD_IMAGE:-ghcr.io/metalfinger/refboard:latest} build: . container_name: refboard depends_on: minio: condition: service_healthy environment: PORT: 8000 NODE_ENV: ${NODE_ENV:-production} JWT_SECRET: ${JWT_SECRET:?JWT_SECRET must be set in .env} JWT_EXPIRES_IN: ${JWT_EXPIRES_IN:-7d} DB_PATH: /app/data/refboard.db MINIO_ENDPOINT: minio MINIO_PORT: 9000 MINIO_USE_SSL: "false" MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} MINIO_BUCKET: ${MINIO_BUCKET:-refboard} STORAGE_BACKEND: ${STORAGE_BACKEND:-minio} STORAGE_DATA_DIR: ${STORAGE_DATA_DIR:-/app/data/storage} PUBLIC_URL: ${PUBLIC_URL:-} MAX_FILE_SIZE_MB: ${MAX_FILE_SIZE_MB:-200} CORS_ORIGIN: ${CORS_ORIGIN:-*} SEED_ADMIN_EMAIL: ${SEED_ADMIN_EMAIL:-} SEED_ADMIN_PASSWORD: ${SEED_ADMIN_PASSWORD:-} SEED_ADMIN_USERNAME: ${SEED_ADMIN_USERNAME:-} SEED_ADMIN_DISPLAY_NAME: ${SEED_ADMIN_DISPLAY_NAME:-} ALLOW_SELF_REGISTRATION: ${ALLOW_SELF_REGISTRATION:-false} # initial seed only; toggle lives in /admin REFBOARD_API_KEY: ${REFBOARD_API_KEY:-} ports: - "8000:8000" volumes: - ./.docker-data/refboard:/app/data restart: unless-stopped