Immich — inštalácia na Synology NAS, Linux a Windows

Kompletný návod na inštaláciu Immich cez Docker a Portainer. Vlastná náhrada Google Photos na tvojom NAS alebo serveri — bez cloudu, bez predplatného, so zálohou priamo z mobilu.

Immich je self-hosted správca fotiek a videí — rozhranie podobné Google Photos, automatická záloha z mobilu cez Android aj iOS appku, rozpoznávanie tvárí, mapa a časová os. Všetko beží na tvojom hardvéri, dáta zostávajú u teba. Tu je postup ako to celé rozbehnúť.

Čo potrebuješ

Predpoklady

Docker a Portainer nainštalované na tvojom zariadení — Synology NAS, Linux server alebo Windows PC s Docker Desktop. Na Synology: UID a GID tvojho DSM používateľa (zistíš v Portainer → Users, alebo cez SSH príkazom id [username]). Dostatok miesta na disku — samotné Docker obrazy zaberajú ~4 GB.

1. Vytvor priečinky

Synology NAS (File Station) — v /volume1/docker/ vytvor priečinok immich, v ňom šesť podpriečinkov: cache, db, matplotlib, micro, redis, upload.

Linux (SSH):

mkdir -p ~/docker/immich/{cache,db,matplotlib,micro,redis,upload}

Windows (Prieskumník) — vytvor C:\docker\immich\ a v ňom podpriečinky: cache, db, matplotlib, micro, redis, upload.

2. Docker Compose stack

V Portainer: Stacks → Add stack → Web editor. Vyber svoju platformu a skopíruj stack:

services:
  immich-redis:
    image: redis
    container_name: Immich-REDIS
    hostname: immich-redis
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping || exit 1"]
    user: 1026:100
    environment:
      - TZ=Europe/Bratislava
    volumes:
      - /volume1/docker/immich/redis:/data:rw
    restart: on-failure:5

  immich-db:
    image: ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0
    container_name: Immich-DB
    hostname: immich-db
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "immich", "-U", "immichuser"]
      interval: 10s
      timeout: 5s
      retries: 5
    shm_size: 128mb
    volumes:
      - /volume1/docker/immich/db:/var/lib/postgresql/data:rw
    environment:
      - TZ=Europe/Bratislava
      - POSTGRES_DB=immich
      - POSTGRES_USER=immichuser
      - POSTGRES_PASSWORD=zmenHeslo123
    restart: on-failure:5

  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: Immich-SERVER
    hostname: immich-server
    user: 1026:100
    security_opt:
      - no-new-privileges:true
    environment:
      - TZ=Europe/Bratislava
      - DB_HOSTNAME=immich-db
      - DB_USERNAME=immichuser
      - DB_PASSWORD=zmenHeslo123
      - DB_DATABASE_NAME=immich
      - REDIS_HOSTNAME=immich-redis
      - JWT_SECRET=zmenNaVlastnyToken
    ports:
      - 8212:2283
    volumes:
      - /volume1/docker/immich/upload:/usr/src/app/upload:rw
    restart: on-failure:5
    depends_on:
      immich-redis:
        condition: service_healthy
      immich-db:
        condition: service_started

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:release
    container_name: Immich-LEARNING
    hostname: immich-machine-learning
    user: 1026:100
    security_opt:
      - no-new-privileges:true
    environment:
      - TZ=Europe/Bratislava
      - DB_HOSTNAME=immich-db
      - DB_USERNAME=immichuser
      - DB_PASSWORD=zmenHeslo123
      - DB_DATABASE_NAME=immich
      - REDIS_HOSTNAME=immich-redis
      - MPLCONFIGDIR=/matplotlib
    volumes:
      - /volume1/docker/immich/upload:/usr/src/app/upload:rw
      - /volume1/docker/immich/cache:/cache:rw
      - /volume1/docker/immich/matplotlib:/matplotlib:rw
    restart: on-failure:5
    depends_on:
      immich-db:
        condition: service_started
⚠️ UID a GID na Synology NAS

V stacku je nastavené user: 1026:100 — toto sú príklady. Zmeň ich na svoje skutočné hodnoty. UID a GID svojho DSM používateľa zistíš v Portainer → Users, alebo cez SSH príkazom id [meno_používateľa]. Na Windows a Linux variantoch nie je user: potrebný.

Windows — prečo pgdata volume

PostgreSQL databáza na Windows vyžaduje Docker named volume (pgdata) namiesto bind mount — bind mount na Windows spôsobuje problémy s oprávneniami súborového systému. Named volume je deklarovaný v sekcii volumes: na konci stacku.

Zmeň heslo v DB_PASSWORD a POSTGRES_PASSWORD na vlastné. Klikni Deploy the stack a počkaj na správu "Success Stack successfully deployed".

3. JWT Secret

Pred nasadením stacku nahraď hodnotu zmenNaVlastnyToken pri JWT_SECRET vlastným bezpečným tokenom. Použi náš Token Generator — nastav dĺžku na 128 znakov.

Prečo JWT Secret

JWT Secret slúži na podpisovanie prihlasovacích tokenov. Ak použiješ predvolený alebo slabý secret, útočník môže sfalšovať session. Vygeneruj unikátny náhodný reťazec — raz nastavený sa nemení (zmena odhlási všetkých používateľov).

4. Prvé spustenie

Po úspešnom deploy počkaj 2 minúty — Immich sa inicializuje a sťahuje ML modely. Potom otvor v prehliadači http://[IP-tvojho-servera]:8212 a klikni Getting Started.

Ak chceš mať Immich dostupný aj z internetu, nastav FQDN (plne kvalifikované doménové meno) v Administration → System Settings → Server → Server external domain — napr. https://photos.tvojadomena.sk. Odporúčaný spôsob ako doménu bezpečne sprístupniť bez otvárania portov na routeri je cez Cloudflare Tunnel.

⚠️ Prázdna stránka alebo chyba pripojenia

Immich sa ešte inicializuje — prvé spustenie trvá 1–3 minúty. Obnoví stránku po chvíli. Ak problém pretrváva, skontroluj logy kontajnera Immich-SERVER v Portainer.

5. Setup Wizard krok za krokom

Vytvor admin účet — zadaj email a heslo, klikni Sign Up. Potom sa prihlás a prejdi úvodným wizardom:

Wizard — odporúčané nastavenia

Theme — vyber farebnú tému rozhrania

Language — vyber jazyk rozhrania

Server Privacy — zapni Map (zobrazenie fotiek na mape podľa GPS) a Version Check (upozornenia na nové verzie)

User Privacy — nastav predvolené súkromie pre nových používateľov

Storage Template — definuje ako budú fotky ukladané na disk (voliteľné, predvolené nastavenie je funkčné)

Backups — nastav automatické zálohy databázy

Mobile App — zobrazia sa inštrukcie na prepojenie s mobilnou appkou

6. Mobilná appka

Stiahni Immich z Google Play alebo App Store. Po inštalácii zadaj adresu svojho servera — http://[IP]:8212 — a prihlasovacie údaje. V nastaveniach appky zapni automatickú zálohu (Backup) a vyber ktoré albumy zo zariadenia sa majú synchronizovať.

Tip — prístup z internetu

Ak chceš zálohovať fotky aj mimo domácej siete, spáruj Immich s Cloudflare Tunnel. Appka bude fungovať cez vlastnú doménu kdekoľvek — bez otvárania portov na routeri.

Troubleshooting

⚠️ Chyba oprávnení na Synology NAS

Fotky sa nevedia uložiť alebo kontajner padá — skontroluj user: UID:GID v stacku. Hodnoty musia zodpovedať skutočnému DSM používateľovi ktorý vlastní priečinok /volume1/docker/immich/.

⚠️ Machine learning kontajner sa nespúšťa

Immich-LEARNING vyžaduje viac RAM — odporúčané minimum je 4 GB voľnej pamäte. Na slabšom NAS môže byť pomalý alebo nestabilný. Logy skontroluj v Portainer → Containers → Immich-LEARNING → Logs.