# ============================================================================= # Aperture - Unraid Docker Compose # ============================================================================= # Use this for deployment on Unraid servers. # This uses pre-built images from GitHub Container Registry. # # Quick start: # docker-compose -f docker-compose.unraid.yml up -d # # Update to latest version: # docker-compose -f docker-compose.unraid.yml pull # docker-compose -f docker-compose.unraid.yml up -d # # ============================================================================= # VOLUME SETUP - READ THIS FIRST! # ============================================================================= # Aperture needs volume mounts. The recommended setup is to create the # ApertureLibraries folder INSIDE your existing media share. This way your # media server (Emby/Jellyfin) can already see it without any extra config! # # Example folder structure on your Unraid server: # # /mnt/user/Media/ <- Your media share # ├── Movies/ <- Your movies # ├── TV/ <- Your TV shows # └── ApertureLibraries/ <- Create this folder HERE # # If your Emby has /mnt/user/Media mounted at /mnt, then: # - Emby sees movies at: /mnt/Movies/... # - Emby sees Aperture libraries at: /mnt/ApertureLibraries/ (automatically!) # # ============================================================================= services: db: image: pgvector/pgvector:pg16 container_name: aperture-db environment: POSTGRES_USER: app POSTGRES_PASSWORD: app POSTGRES_DB: aperture volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -U app -d aperture'] interval: 5s timeout: 5s retries: 5 restart: unless-stopped app: image: ghcr.io/dgruhin-hrizn/aperture:latest container_name: aperture # Run as root to avoid permission issues with bind mounts on Unraid user: root environment: NODE_ENV: production PORT: 3456 DATABASE_URL: postgres://app:app@db:5432/aperture RUN_MIGRATIONS_ON_START: 'true' # Timezone for scheduled jobs (IANA format) TZ: America/New_York # ========================================================================= # REQUIRED: Set these before starting! # ========================================================================= # Your Unraid server's IP address or hostname APP_BASE_URL: http://YOUR_UNRAID_IP:3456 # Session secret - MUST be a random string at least 32 characters # Generate one at: https://randomkeygen.com/ (use "Fort Knox Passwords") # ⚠️ IMPORTANT: Keep the quotes! Special characters like # break YAML without them. SESSION_SECRET: 'PASTE_YOUR_RANDOM_KEY_HERE' ports: - '3456:3456' depends_on: db: condition: service_healthy volumes: # ───────────────────────────────────────────────────────────────────────── # VOLUME 1: Aperture Libraries Output # ───────────────────────────────────────────────────────────────────────── # IMPORTANT: Create this folder INSIDE your media share! # # Why inside? Because your media server already has your media share # mounted, so it will automatically see this folder too. No need to add # another mount to Emby/Jellyfin! # # Unraid paths use /mnt/user/ for the user share: # - Host folder: /mnt/user/Media/ApertureLibraries # - Emby sees it at: /mnt/ApertureLibraries (if Media is mounted at /mnt) # - /mnt/user/Media/ApertureLibraries:/aperture-libraries # ───────────────────────────────────────────────────────────────────────── # VOLUME 2: Database Backups # ───────────────────────────────────────────────────────────────────────── # Automatic database backups are stored here. Daily backups run at 1 AM. # Keep this on a reliable storage location, ideally separate from the # database volume for disaster recovery. # - /mnt/user/appdata/aperture/backups:/backups # ───────────────────────────────────────────────────────────────────────── # VOLUME 3: Your Media Library (read-only access) # ───────────────────────────────────────────────────────────────────────── # Aperture needs to read your media files to create symlinks. # Mount the SAME media folder that your media server uses. # Read-only (:ro) is fine - Aperture only reads, never writes here. # - /mnt/user/Media:/media:ro restart: unless-stopped # ============================================================================= # SETUP WIZARD # ============================================================================= # After starting Aperture, visit http://YOUR_UNRAID_IP:3456 to complete setup. # The wizard will ask for two paths: # # 1. Media Server Path Prefix: /mnt/ # (How Emby sees your files - check Media Info on any movie) # # 2. Aperture Libraries Path: /mnt/ApertureLibraries/ # (Just your prefix + the folder name you created) # # ============================================================================= volumes: pgdata: