SSD Nodes Learn 8GB RAM — $66/rok
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-01

PhotoPrism czy Immich: który serwer zdjęć wybrać?

Porównanie PhotoPrism i Immich obejmuje minimalne wymagania RAM, aplikacje mobilne, mapy oraz dokładne komendy backupu dla każdego serwera na VPS.

PhotoPrism a Immich: krótka odpowiedź

PhotoPrism i Immich służą do różnych zadań. Nie są dwiema wersjami tego samego produktu. Immich zastępuje Google Photos. Aplikacja na telefonie automatycznie tworzy kopie zapasowe rolki aparatu. Oś czasu przypomina rozwiązania znane osobom korzystającym wcześniej z galerii telefonu. PhotoPrism organizuje istniejącą bibliotekę zdjęć. Indeksuje foldery z plikami na dysku, odczytuje ich metadane, umieszcza je na mapie i pozostawia pliki dokładnie w dotychczasowych lokalizacjach.

Należy wybrać Immich, jeśli problem polega na tym, że telefon jest pełny i potrzebne jest odejście od Google Photos. Należy wybrać PhotoPrism, jeśli problem polega na tym, że na dysku znajduje się 400 GB zdjęć i nie można niczego w nich znaleźć. Oba projekty są open source. Oba działają jako kontenery Docker na zwykłym VPS. Oba indeksują bibliotekę i umożliwiają jej przeszukiwanie bez wysyłania danych do podmiotu zewnętrznego.

Podział filozofii i jego decydujące znaczenie

Immich zarządza plikami. Wskazuje się lokalizację przesyłania, a aplikacja na telefonie lub moduł przesyłania w interfejsie webowym przesyła oryginały. Następnie Immich przechowuje je we własnej ścieżce i nadaje im własne nazwy. Baza danych zawiera informacje o albumach, twarzach i wyszukiwaniu. Taka konstrukcja zapewnia dobrą obsługę na telefonie, ponieważ serwer zawsze zna pełny stan każdego zasobu.

PhotoPrism odczytuje pliki. Montuje się folder originals, nad którym ma się już kontrolę, a PhotoPrism tworzy jego indeks. Struktura katalogów pozostaje własnością użytkownika. Jeśli PhotoPrism zostanie usunięty następnego dnia, zdjęcia pozostaną w tych samych folderach i pod tymi samymi nazwami. PhotoPrism zapisze obok nich pliki dodatkowe YAML opisujące zebrane informacje.

Ta jedna różnica wyjaśnia większość pozostałych kwestii. Immich zapewnia dobre wsparcie urządzeń mobilnych, ponieważ kontroluje proces importowania plików. PhotoPrism lepiej sprawdza się przy porządkowaniu biblioteki, ponieważ nie ingeruje w istniejącą strukturę. Immich jest lepszym rozwiązaniem dla rodziny, której zdjęcia znajdują się na telefonach. PhotoPrism jest lepszym rozwiązaniem dla archiwum przechowywanego na dysku.

Wymagania sprzętowe: Immich wymaga więcej

Udokumentowane minimalne wymagania dotyczące pamięci znacznie się różnią. Na małym VPS jest to zwykle czynnik decydujący.

ChartDocumented memory requirement, as of July 2026
The data behind this chart
[
  {
    "label": "Immich",
    "min_ram_gb": 6,
    "recommended_ram_gb": 8
  },
  {
    "label": "PhotoPrism",
    "min_ram_gb": 3,
    "recommended_ram_gb": 4
  }
]

Immich określa 6 GB pamięci RAM jako minimum i 8 GB jako wartość zalecaną. Dokumentacja zawiera również informację, że na maszynie z 4 GB pamięci można uruchomić aplikację wyłącznie po wyłączeniu uczenia maszynowego. PhotoPrism wymaga 3 GB pamięci fizycznej i dwóch rdzeni procesora. Wskazuje także, że ilość pamięci RAM powinna odpowiadać liczbie rdzeni.

Różnica jest rzeczywista i wynika z kontenera uczenia maszynowego. Immich uruchamia modele w osobnej usłudze immich-machine-learning, która ładuje do pamięci modele CLIP (contrastive language image pretraining) i wykrywania twarzy. Na maszynie z 2 GB pamięci jądro systemu kończy działanie tego kontenera. W Dockerze jest to widoczne jako zakończenie kodem 137, co oznacza zakończenie procesu z powodu braku pamięci. Modele TensorFlow używane przez PhotoPrism są mniejsze, a aplikacja ogranicza funkcje zamiast kończyć działanie. Na maszynach z 1 GB pamięci lub mniejszą ilością pamięci wyłącza konwersję RAW i TensorFlow, zamiast ulegać awarii.

Oba projekty wymagają pamięci swap. Dokumentacja PhotoPrism wyraźnie zaleca co najmniej 4 GB pamięci swap na serwerze. Należy ją dodać przed instalacją dowolnej z tych aplikacji.

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

free -h powinno teraz wyświetlić wiersz Swap: zawierający 4.0Gi. Jeśli zostanie wyświetlony komunikat 0B, oznacza to, że swapon zakończyło się niepowodzeniem, zwykle dlatego, że system plików nie obsługuje fallocate. W takim przypadku mechanizmem awaryjnym jest sudo dd if=/dev/zero of=/swapfile bs=1M count=4096. Limity pamięci kontenerów również mają tutaj znaczenie. Ustawianie limitów pamięci w Docker Compose pozwala zapobiec przejęciu całej dostępnej pamięci przez jedną usługę o dużym zapotrzebowaniu.

Istnieje jeszcze jedno wymaganie, które często jest pomijane. Baza danych Postgres używana przez Immich musi znajdować się na standardowym systemie plików Unix z rzeczywistymi właścicielami i uprawnieniami, na lokalnej pamięci masowej. Nie wolno umieszczać jej na udziale sieciowym. PhotoPrism określa takie samo wymaganie dla swoich plików bazy danych. Żadnej z tych aplikacji nie należy uruchamiać z bazą danych znajdującą się na zamontowanym magazynie obiektowym.

Jak zainstalować każdy z nich

Obie instalacje wymagają pliku Compose dostarczonego przez producenta oraz jednego polecenia. Najpierw skonfiguruj Docker Engine i wtyczkę Compose, zgodnie z opisem w naszym przewodniku po Docker Compose na VPS.

Immich publikuje swój plik Compose oraz przykładowy plik środowiskowy z każdym wydaniem.

sudo mkdir -p /opt/immich && cd /opt/immich
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Przed uruchomieniem czegokolwiek zmodyfikuj .env. UPLOAD_LOCATION to lokalizacja, w której będą przechowywane oryginały, a DB_PASSWORD należy zmienić z wartości domyślnej, używając wyłącznie znaków A-Za-z0-9, ponieważ znaki specjalne powodują błędy w parametrze połączenia. Następnie uruchom aplikację.

docker compose up -d
docker compose ps

Interfejs internetowy jest dostępny na porcie 2283. Pierwsze konto zarejestrowane za pośrednictwem tej strony otrzymuje uprawnienia administratora. Należy więc od razu otworzyć stronę i przeprowadzić rejestrację, zamiast pozostawiać niezabezpieczoną instancję dostępną w Internecie.

PhotoPrism dostarcza jeden plik Compose, który zawiera już MariaDB.

sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yaml

Otwórz compose.yaml i przed pierwszym uruchomieniem zmień PHOTOPRISM_ADMIN_PASSWORD. Dokumentacja wyraźnie to wskazuje: aplikacja uruchamia się z początkowym hasłem znajdującym się w tym pliku, minimalna długość hasła wynosi 8 znaków, a wartości domyślnej nie wolno używać na publicznym serwerze. Jednocześnie ustaw wolumin originals na folder zawierający zdjęcia.

docker compose up -d
docker compose logs -f photoprism

PhotoPrism jest dostępny na porcie 2342 przy użyciu użytkownika admin. Żadna z aplikacji nie powinna być udostępniana bezpośrednio. Przed aplikacją należy umieścić reverse proxy z TLS (bezpieczeństwem warstwy transportowej), tak jak w konfiguracji opisanej w przewodniku po samodzielnie hostowanym Nextcloud z Docker, TLS i kopiami zapasowymi.

Która aplikacja mobilna jest lepsza

W tym obszarze oba projekty najbardziej się różnią. Z tego powodu większość osób ostatecznie wybiera Immich.

Immich udostępnia oficjalne aplikacje na Androida i iOS. Aplikacje wykonują kopię zapasową rolki aparatu w tle. Oznacza to, że nowe zdjęcia są przesyłane z telefonu bez konieczności ręcznego uruchamiania aplikacji. Aplikacja wymaga punktu końcowego HTTPS. Jeśli ma być używana poza siecią domową, reverse proxy jest więc niezbędne.

PhotoPrism nie ma oficjalnej aplikacji natywnej. Udostępnia progresywną aplikację internetową, którą można dodać do ekranu głównego z poziomu przeglądarki. Dokumentacja wskazuje WebDAV (web distributed authoring and versioning) jako sposób synchronizacji z telefonu. Projekt zaleca w tym celu aplikację innej firmy o nazwie PhotoSync, skonfigurowaną dla katalogu /import/ lub /originals/ przez WebDAV. Rozwiązanie działa, ale wymaga płatnej aplikacji innej firmy, która wykonuje zadanie realizowane przez Immich w ramach własnego klienta.

Jeśli wymagana jest automatyczna kopia zapasowa zdjęć z telefonów kilku członków rodziny, rozstrzyga to wybór. Immich.

Co faktycznie zapewnia uczenie maszynowe

Immich wykonuje wyszukiwanie semantyczne w bibliotece za pomocą CLIP. Dzięki temu zapytanie takie jak „czerwony rower na śniegu” znajduje zdjęcia, których wcześniej nikt nie oznaczył. Program wykrywa i grupuje także twarze oraz identyfikuje duplikaty. Indeksowanie dużego importu na CPU działa w tle przez wiele godzin. Jest to normalne i nie wymaga GPU (jednostki przetwarzania grafiki).

PhotoPrism klasyfikuje obrazy za pomocą TensorFlow i przypisuje im etykiety. Wykrywa twarze i grupuje je według osób. Odczytuje także metadane lokalizacji i na ich podstawie tworzy mapę miejsc. To właśnie mapa jest funkcją, dla której użytkownicy pozostają przy tym rozwiązaniu: biblioteka uporządkowana według miejsc wykonania zdjęć zapewnia zupełnie inny sposób przeglądania fotografii z dwudziestu lat. Rozpoznawanie twarzy jest dostępne w bezpłatnej edycji Community. Płatne członkostwa Essentials i Plus dodają między innymi bardziej rozbudowane warstwy map, większą liczbę ról użytkowników oraz interfejs zarządzania użytkownikami. W lipcu 2026 ich ceny zaczynają się od kilku euro miesięcznie.

Immich jest całkowicie bezpłatny i nie ma płatnego planu. Podstawowe funkcje PhotoPrism są bezpłatne, a dodatkowe opcje są dostępne odpłatnie.

Kopie zapasowe decydują o zachowaniu danych

Serwer zdjęć bez kopii zapasowej może utracić wszystkie dane rodziny po jednej awarii dysku. Obie aplikacje wymagają dwóch kopii zapasowych: bazy danych i plików.

W przypadku Immich należy zrzucić bazę danych z kontenera Postgres i skopiować lokalizację przesyłania plików.

docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gz

Następnie należy wykonać kopię zapasową UPLOAD_LOCATION. Foldery zawierające dane, których nie można zastąpić, to upload, library i profile. Foldery thumbs i encoded-video można odtworzyć, poświęcając na to wiele godzin czasu procesora. Sam zrzut bazy danych nie pozwala niczego odtworzyć, ponieważ zawiera wyłącznie metadane.

W przypadku PhotoPrism indeks ma własne polecenie.

docker compose exec photoprism photoprism backup -i -f

Spowoduje ono zapisanie zrzutu SQL w folderze storage/backup/. Następnie należy skopiować folder originals oraz folder storage. PhotoPrism zapisuje również pliki YAML sidecar opisujące poszczególne zdjęcia. Dzięki temu utracony indeks można odbudować wyłącznie na podstawie plików. Jest to istotna zaleta w przypadku archiwum przeznaczonego do przechowywania przez dziesięciolecia.

Niezależnie od wyboru aplikacji należy zgodnie z harmonogramem wysyłać kopie zapasowe poza serwer, korzystając z szyfrowanych, deduplikowanych kopii restic w zdalnej lokalizacji. Kopia zapasowa przechowywana na tym samym dysku co biblioteka nie jest kopią zapasową.

Które rozwiązanie należy uruchomić

Należy uruchomić Immich, jeśli zdjęcia znajdują się na telefonach, więcej niż jedna osoba musi tworzyć kopię zapasową zawartości aparatu oraz można przeznaczyć na serwer co najmniej 6 GB pamięci RAM. Jest to rozwiązanie najbardziej zbliżone do Google Photos, które można hostować samodzielnie. Najważniejsze jest korzystanie z aplikacji mobilnej. Szczegółowy przewodnik instalacji Immich krok po kroku opisuje dokładnie problemy związane z zabijaniem procesów z powodu braku pamięci oraz pułapki podczas aktualizacji.

Należy uruchomić PhotoPrism, jeśli archiwum zdjęć znajduje się już na dysku, istotne są mapy i metadane oraz zachowanie własnej struktury katalogów, albo jeśli VPS ma 4 GB pamięci RAM i preferowana jest działająca biblioteka zamiast systemu korzystającego z pamięci wymiany. Jest to lepsze narzędzie do porządkowania kolekcji i mniej obciąża słabszy sprzęt.

Uruchomienie obu rozwiązań również jest uzasadnione. Immich obsługuje codzienne importowanie zdjęć z telefonów. Raz w roku można wybrać zdjęcia przeznaczone do zachowania, przenieść je do archiwum i zlecić ich indeksowanie przez PhotoPrism. Rozwiązania te nie kolidują ze sobą, ponieważ PhotoPrism odczytuje katalogi, a Immich zarządza własnym magazynem.

FAQ

Czy PhotoPrism i Immich mogą korzystać z tego samego folderu ze zdjęciami?

Nie jest to bezpieczne w obu kierunkach. PhotoPrism odczytuje folder originals i zapisuje obok obrazów pliki YAML sidecar, natomiast Immich zakłada, że będzie zarządzać zawartością swojej lokalizacji przesyłania. Można wskazać PhotoPrism kopię folderu library Immich z dostępem tylko do odczytu, aby ją przeglądać, ale nie należy zezwalać obu aplikacjom na zarządzanie tymi samymi plikami, ponieważ podczas indeksowania szablon pamięci masowej Immich może przenosić zasoby lub zmieniać ich nazwy w sposób wpływający na PhotoPrism.

Czy Immich jest wystarczająco stabilny, aby przechowywać jedyną kopię zdjęć?

Żadna aplikacja hostowana samodzielnie nie powinna przechowywać jedynej kopii jakichkolwiek danych. Immich często wprowadza zmiany powodujące niezgodność, a nieostrożna operacja docker compose pull może uniemożliwić uruchomienie bazy danych. Należy przypiąć wersję i przed aktualizacją przeczytać informacje o wydaniu. Oryginalne pliki należy przechowywać w kopii zapasowej poza serwerem. Wtedy ryzyko pozostaje niewielkie.

Dlaczego kontener uczenia maszynowego Immich ciągle się restartuje?

Jest on kończony z powodu nadmiernego użycia pamięci. Należy uruchomić docker compose ps i sprawdzić, czy usługa uczenia maszynowego kończy działanie z kodem 137. Oznacza to zadziałanie jądrowego mechanizmu zabijania procesów z powodu braku pamięci. Można dodać przestrzeń wymiany albo ustawić limit pamięci kontenera, aby był ograniczany zamiast kończony. Na maszynie z 4 GB można też całkowicie wyłączyć uczenie maszynowe. Bez niego wyszukiwanie przestaje działać, ale pozostała część Immich działa prawidłowo.

Czy PhotoPrism wymaga MariaDB, czy wystarczy SQLite?

SQLite działa poprawnie i wystarcza w przypadku osobistej biblioteki, ale podczas korzystania z niego PhotoPrism ogranicza się do czterech procesów roboczych. Dokumentacja zaleca przejście na MariaDB, ponieważ lepiej obsługuje dużą współbieżność. Dostarczany przez projekt plik compose już zawiera MariaDB, więc zalecane rozwiązanie jest również domyślne.

Ile miejsca na dysku należy zaplanować ponad rozmiar biblioteki?

Należy dodać od 10 do 20 procent do rozmiaru oryginalnych plików, niezależnie od wybranej aplikacji. Obejmuje to wygenerowane miniatury i transkodowane podglądy wideo. Kolekcja o rozmiarze 200 GB wymaga w przybliżeniu woluminu o rozmiarze 300 GB, aby pozostało miejsce na bazę danych, lokalną kopię zapasową i dalszy przyrost danych.