Skip to content

πŸ“Έ Project: Immich Deployment (Operation Snapshot)

Status: πŸ—οΈ Planned
Target: risa-mediacore (192.168.1.21)
Objective: Deploy a hardware-accelerated Immich instance for photo management, consolidating legacy data into the Unified Vault.


πŸ—ΊοΈ Architecture

1. Storage Strategy (Standardized)

We will adhere to the "One App, One Folder" standard within the Unified Vault. * Path: /mnt/vault/media/photos * Role: Master Library (Immich has read/write ownership). * Sub-folders: * library/ (Originals) * thumbs/ (Generated assets) * upload/ (Mobile upload target) * profile/ (User avatars/profile data) * video/ (Transcoded videos)

2. Compute Node (Risa)

  • Host: risa-mediacore (i5-8500T).
  • Acceleration: Intel QuickSync (/dev/dri) for video transcoding and ML tasks.
  • Network: Behind Gateway (Caddy).
  • Domain: photos.the-lal.net (Cloudflare DNS Challenge).

3. Data Migration (Consolidation)

  • Source: Legacy Dataset TheWarpCore/immich_photos (on TrueNAS).
  • Action: Move content to /mnt/vault/media/photos.
  • Cleanup: Delete TheWarpCore/immich_photos dataset after verification.

πŸ“… Execution Plan & Checkpoints

βœ… Phase 1: Storage Prep

  • Action: Create directory structure /mnt/vault/media/photos on TrueNAS (via Risa mount).
  • Action: Migrate data from legacy immich_photos (~170MB) to new location.
  • Action: Set Permissions (GID 3000).
  • Checkpoint: πŸ›‘ Verify data exists in new path and Permissions are correct.

βœ… Phase 2: Deployment Config

  • Action: Create docker-compose.yml in /opt/docker_data/immich.
    • Includes: Server, Microservices, Machine Learning, Redis, Postgres.
  • Action: Create .env file with secure secrets (DB Password).
  • Action: Configure Hardware Acceleration (Map /dev/dri).
  • Checkpoint: πŸ›‘ Verify docker-compose config passes.

βœ… Phase 3: Launch & Initialize

  • Action: Start the stack.
  • Action: Verify logs for "Server listening".
  • Checkpoint: πŸ›‘ Access via Local IP (http://192.168.1.21:2283).

βœ… Phase 4: Gateway Integration

  • Action: Update Caddyfile on Risa.
  • Config: caddy photos.the-lal.net { tls { dns cloudflare {env.CLOUDFLARE_API_TOKEN} } reverse_proxy 192.168.1.21:2283 }
  • Checkpoint: πŸ›‘ Verify external access via https://photos.the-lal.net.

🧠 Sanity Check (Pre-Flight)

  1. Port Conflict? Immich uses 2283. Check if Risa has 2283 free.
  2. Hardware Access? Verify /dev/dri exists on Risa.
  3. Legacy Data? Confirm TheWarpCore/immich_photos is accessible for migration.
  4. Database? Do we need a fresh DB or is there an old dump? (Plan assumes Fresh DB, importing files as "External" or "Upload"). Correction: If migrating files, we treat them as a "Library Import" or "External Library" to re-index.