Immich na VPS: własna chmura na zdjęcia i filmy

6 min czytania
Tropic
Immich na VPS: własna chmura na zdjęcia i filmy

Language: pl

Immich: własna chmura na zdjęcia i filmy na VPS

Immich to self-hosted usługa do przechowywania i automatycznego przesyłania zdjęć oraz filmów. Oferuje aplikacje mobilne, interfejs webowy, albumy, inteligentne wyszukiwanie i rozpoznawanie twarzy, a biblioteka pozostaje na wybranym przez Ciebie serwerze.

Poniżej omawiamy wymagania Immich, instalację na Ubuntu z Docker Compose, konfigurację HTTPS, połączenie telefonu i zewnętrzne kopie zapasowe.

Immich w sześciu krokach

  1. Utwórz Linux VPS z wystarczającą ilością RAM-u i miejsca na dysku.
  2. Skieruj subdomenę, na przykład photos.example.com, na adres IP serwera.
  3. Zainstaluj Docker i pobierz oficjalną konfigurację Immich.
  4. Określ ścieżki biblioteki multimediów i bazy danych, a następnie uruchom kontenery.
  5. Zamknij wewnętrzny port i włącz HTTPS.
  6. Zainstaluj aplikację mobilną i skonfiguruj zewnętrzną kopię zapasową.

Czym jest Immich?

Immich to open-source aplikacja do zarządzania własną biblioteką zdjęć i filmów. Zdjęcia pojawiają się na osi czasu, można je grupować w albumy, znajdować przez wyszukiwarkę i automatycznie przesyłać z telefonu na serwer.

Główna różnica w porównaniu ze zwykłą chmurą zdjęć to kontrola nad stroną serwerową. Pliki są przechowywane na VPS-ie lub domowym serwerze, ale właściciel odpowiada za wolne miejsce, aktualizacje, bezpieczeństwo i kopie zapasowe.

ParametrUsługa zdjęć w chmurzeImmich
Gdzie są przechowywane plikiW infrastrukturze dostawcyNa Twoim serwerze
UtrzymanieZajmuje się nim dostawcaZajmuje się nim właściciel
KosztyPlan zależny od przestrzeniVPS, miejsce na dysku i kopie zapasowe

Immich sam w sobie nie jest kopią zapasową. Jeśli zdjęcia istnieją tylko na jednym VPS-ie, awaria dysku lub przypadkowe usunięcie może zniszczyć całe archiwum.

Najważniejsze funkcje Immich

  • Automatyczne przesyłanie. Aplikacje na Androida i iOS przesyłają zdjęcia oraz filmy z wybranych albumów. Domyślnie używane jest Wi-Fi, a pliki, które już istnieją, są pomijane na podstawie sumy kontrolnej.
  • Inteligentne wyszukiwanie. Usługa potrafi wyszukiwać osoby, lokalizacje, daty, aparaty, tekst na obrazie i opis zawartości. Twarze są grupowane, a następnie można przypisać im imiona.
  • Albumy i udostępnianie. Immich obsługuje wielu użytkowników, udostępniane albumy, udostępnianie partnerowi oraz publiczne linki z hasłem i datą wygaśnięcia.
  • Mapa i metadane. Immich odczytuje dane EXIF, pokazuje miejsce wykonania zdjęcia, tworzy wspomnienia oraz obsługuje ulubione elementy, archiwum i biblioteki zewnętrzne.

Uczenie maszynowe najbardziej obciąża CPU i RAM podczas pierwszego importu. Po wygenerowaniu miniatur i indeksów codzienne zużycie zasobów zwykle jest mniejsze.

Wymagania serwera Immich

Oficjalne wymagania dla aktualnych wersji to:

  • system Linux lub Unix-like 64-bit;
  • co najmniej 2 rdzenie CPU, zalecane 4;
  • co najmniej 6 GB RAM-u, zalecane 8 GB;
  • Docker Engine z wtyczką docker compose;
  • lokalny dysk SSD na bazę PostgreSQL;
  • miejsce na oryginalne pliki, miniatury i transkodowane filmy.

Immich może działać na serwerze z 4 GB RAM-u, jeśli funkcje machine learning zostaną wyłączone. Do rozpoznawania twarzy i inteligentnego wyszukiwania lepiej od początku wybrać 8 GB.

Miniatury i transkodowane pliki zwiększają rozmiar biblioteki multimediów średnio o 10–20%. Dla archiwum 200 GB przeznacz co najmniej 240–260 GB. Katalog bazy danych DB_DATA_LOCATION powinien znajdować się na lokalnym SSD, a nie na dysku sieciowym.

Praktyczna konfiguracja początkowa to 4 vCPU, 8 GB RAM-u, Ubuntu 24.04 LTS i SSD o pojemności o 20–30% większej niż biblioteka źródłowa. Dedykowana karta graficzna nie jest wymagana, choć może przyspieszyć przetwarzanie dużego archiwum.

Jak zainstalować Immich na VPS

W przykładzie używamy Ubuntu 24.04 i subdomeny photos.example.com.

1. Skonfiguruj DNS i przygotuj Ubuntu

Utwórz rekord DNS typu A wskazujący na adres IPv4 VPS-a. Następnie połącz się przez SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Nie zamykaj bieżącej sesji SSH, dopóki nie sprawdzisz, że nowe połączenie działa.

2. Zainstaluj Docker i Docker Compose

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

Używaj konkretnie polecenia docker compose: przestarzałe polecenie docker-compose nie jest już obsługiwane przez projekt.

3. Pobierz i skonfiguruj Immich

mkdir -p /opt/immich /srv/immich-data
cd /opt/immich

curl -L -o docker-compose.yml \
  https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
  https://github.com/immich-app/immich/releases/latest/download/example.env

Otwórz plik:

nano /opt/immich/.env

Zmień główne parametry:

UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORD

Wpisz własną strefę czasową. Hasło PostgreSQL powinno zawierać litery łacińskie i cyfry; polecenie openssl rand -hex 24 wygeneruje losową wartość. Pozostałe wiersze pozostaw tak, jak występują w aktualnym pliku example.env.

4. Zamknij wewnętrzny port i uruchom kontenery

W pliku docker-compose.yml znajdź port usługi immich-server:

ports:
  - '2283:2283'

Zastąp go:

ports:
  - '127.0.0.1:2283:2283'

Port będzie teraz dostępny tylko z samego VPS-a. Uruchom usługę:

cd /opt/immich
docker compose up -d
docker compose ps

Do diagnostyki użyj docker compose logs --tail=200.

5. Włącz HTTPS za pomocą Caddy

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
    reverse_proxy 127.0.0.1:2283
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

Caddy automatycznie zamówi certyfikat, jeśli DNS wskazuje na VPS, a porty 80 i 443 są dostępne. Immich musi działać w katalogu głównym domeny lub subdomeny; adres taki jak example.com/immich nie jest obsługiwany.

6. Utwórz administratora i połącz telefon

Otwórz https://photos.example.com. Pierwszy zarejestrowany użytkownik zostaje administratorem i może tworzyć dodatkowe konta.

Zainstaluj Immich z App Store lub Google Play. Na ekranie logowania wpisz adres bez /api:

https://photos.example.com

Wybierz albumy i włącz backup. Pierwszy import może potrwać: serwer generuje miniatury, rozpoznaje twarze, indeksuje dane wyszukiwania i przetwarza filmy.

Aktualizacja Immich

Przed aktualizacją przeczytaj informacje o wydaniu, szczególnie przy przejściu na nową główną wersję:

cd /opt/immich
docker compose pull
docker compose up -d
docker image prune

Najpierw zaktualizuj aplikacje mobilne, a dopiero potem serwer. Powrót z bazą danych do starszej wersji może nie być obsługiwany, chyba że udostępniono osobne instrukcje.

Kopie zapasowe Immich

Immich automatycznie tworzy zrzuty PostgreSQL, ale zawierają one tylko bazę danych i metadane, a nie zdjęcia ani filmy. Aby możliwe było pełne odtworzenie, zachowaj:

  • cały katalog /srv/immich-data;
  • /opt/immich/.env i docker-compose.yml;
  • konfigurację Caddy.

Kopia na tym samym VPS-ie nie chroni przed awarią dysku ani usunięciem serwera. Przesyłaj dane na oddzielny serwer, NAS lub do storage obiektowego i stosuj strategię backupu 3-2-1. Okresowo testuj odtworzenie, zamiast sprawdzać tylko, czy pliki kopii istnieją.

Jaki VPS wybrać dla Immich

Do pełnej funkcjonalności z rozpoznawaniem twarzy i inteligentnym wyszukiwaniem rozsądnie jest wybrać VPS z co najmniej 4 vCPU i 8 GB RAM-u. Oblicz rozmiar dysku na podstawie biblioteki multimediów, zostawiając dodatkowe miejsce na miniatury, filmy i wzrost archiwum.

Linux VPS od tropic.host ze statycznym adresem IP i pamięcią SSD nadaje się do tego zadania. Możesz zacząć od konfiguracji z 8 GB RAM-u i zwiększać zasoby wraz z rozrostem biblioteki. Bazę PostgreSQL trzymaj na szybkim lokalnym dysku, a backup poza tym VPS-em.

VPS zapewnia wygodny całodobowy dostęp z każdej sieci. W przypadku archiwum o rozmiarze kilku terabajtów serwer domowy może być tańszy, ale samodzielnie musisz zapewnić zasilanie, dostęp z zewnątrz i nadmiarowość.

Ograniczenia Immich

Self-hosting nie gwarantuje niezawodności. Słabe hasło, otwarty port 2283, nieaktualne kontenery lub brak zewnętrznej kopii zapasowej zwiększają ryzyko utraty danych.

Immich nie jest też dokładną kopią Google Photos ani iCloud: możliwości edycji i synchronizacji w tle są inne, a szybkość analizy zależy od sprzętu. Przed przeniesieniem jedynego archiwum przetestuj usługę na małej bibliotece.

Podsumowanie

Immich pozwala utworzyć własną galerię zdjęć z mobilnym przesyłaniem, albumami, rozpoznawaniem twarzy, wyszukiwaniem i udostępnianiem. Dla aktualnej wersji najlepiej przygotować Linux VPS z 4 rdzeniami, 8 GB RAM-u i SSD-em z co najmniej 20–30% wolnej pojemności.

Po instalacji skonfiguruj HTTPS, aktualizacje oraz zewnętrzną kopię katalogu multimediów razem z bazą danych. To backup, a nie sam self-hosting, chroni zdjęcia przed utratą.

FAQ

Czy Immich jest darmowy?

Serwer Immich jest open source i może działać bez obowiązkowej subskrypcji. Nadal płacisz za VPS, domenę, miejsce na dysku i backupy.

Ile RAM-u potrzebuje Immich?

Oficjalne minimum to 6 GB RAM-u, a zalecane jest 8 GB. Przy 4 GB trzeba wyłączyć machine learning.

Czy Immich można zainstalować bez domeny?

Technicznie tak, ale przy stałym dostępie z telefonu lepiej użyć domeny i HTTPS. Chroni to uwierzytelnianie i przesyłanie plików.

Czy Immich zastępuje kopię zapasową zdjęć?

Nie. Bibliotekę multimediów i bazę danych kopiuj oddzielnie na inne urządzenie lub do innej lokalizacji.

Czy można przenieść istniejące archiwum zdjęć?

Tak. Pliki można przesłać przez interfejs webowy lub CLI albo podłączyć katalog jako bibliotekę zewnętrzną. Przed dużym importem wykonaj kopię danych źródłowych.