SSD Nodes Learn 🎉 VPS od $4.99/mies.
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-07

PhotoPrism czy Immich: co wybrać do zdjęć?

Porównanie serwerów PhotoPrism i Immich. Analiza zużycia pamięci RAM, funkcji aplikacji mobilnych oraz niezbędnych komend backupu dla kontenerów Docker na serwerze VPS.

PhotoPrism a Immich: krótka odpowiedź

Wybór między PhotoPrism a Immich to wybór między dwoma różnymi zastosowaniami, a nie dwiema wersjami tego samego produktu. Immich zastępuje Google Photos: aplikacja mobilna automatycznie tworzy kopię zapasową zdjęć z telefonu, a oś czasu wygląda znajomo dla każdego, kto rezygnuje z galerii systemowej. PhotoPrism porządkuje bibliotekę zdjęć, którą już posiadasz: indeksuje foldery z plikami na dysku, odczytuje ich metadane, nanosi je na mapę i pozostawia pliki dokładnie tam, gdzie się znajdowały.

Wybierz Immich, jeśli problemem jest „mój telefon jest pełny i chcę zrezygnować z Google Photos”. Wybierz PhotoPrism, jeśli problemem jest „mam 400 GB zdjęć na dysku i nie mogę w nich niczego znaleźć”. Oba rozwiązania są open source, oba działają jako kontenery Docker na standardowym VPS, a oba indeksują i przeszukują bibliotekę bez przesyłania jakichkolwiek danych podmiotom trzecim.

Podział filozofii i dlaczego determinuje on wszystko

Immich przejmuje kontrolę nad plikami. Wskazuje się mu lokalizację przesyłania, aplikacja mobilna lub interfejs webowy przesyłają oryginały, a Immich przechowuje je we własnej ściele, stosując własne nazewnictwo. Baza danych stanowi źródło prawdy o albumach, twarzach i wyszukiwaniu. Taka konstrukcja zapewnia wysoką jakość obsługi urządzeń mobilnych, ponieważ serwer zawsze zna pełny stan każdego zasobu.

PhotoPrism odczytuje pliki. Montuje się folder originals, nad którym użytkownik sprawuje kontrolę, a PhotoPrism buduje na jego podstawie indeks. Struktura katalogów pozostaje własnością użytkownika. Jeśli usunięcie PhotoPrism nastąpi w przyszłości, zdjęcia pozostaną w tych samych folderach pod tymi samymi nazwami, a PhotoPrism pozostawi obok nich pliki sidecar w formacie YAML, zawierające informacje o przetworzonych danych.

Ta jedna różnica wyjaśnia większość pozostałych kwestii. Immich oferuje zaawansowaną obsługę urządzeń mobilnych, ponieważ kontroluje proces pozyskiwania danych. PhotoPrism oferuje zaawansowane zarządzanie biblioteką, ponieważ nie ingeruje w istniejącą strukturę plików. 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.

Zapotrzebowanie sprzętowe: Immich wymaga więcej

Dokumentowane progi pamięci RAM znacząco się różnią, co na małych serwerach VPS jest zazwyczaj czynnikiem decydującym.

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 dokumentuje 6 GB pamięci RAM jako minimum oraz 8 GB jako wartość zalecaną, z zastrzeżeniem, że maszyna z 4 GB RAM może uruchomić usługę tylko przy wyłączonym uczeniu maszynowym. PhotoPrism dokumentuje 3 GB pamięci fizycznej oraz dwa rdzenie procesora, wskazując, że ilość pamięci RAM powinna odpowiadać liczbie rdzeni.

Różnica jest realna i wynika z kontenera uczenia maszynowego. Immich uruchamia swoje modele w osobnej usłudze immich-machine-learning, która ładuje do pamięci modele CLIP (contrastive language image pretraining) oraz modele detekcji twarzy. Na maszynie z 2 GB RAM jądro systemu zabija ten kontener, co objawia się wyjściem z kodem 137; jest to standardowy sygnał OOM (out of memory) zgłaszany przez Docker. Modele TensorFlow w PhotoPrism są mniejsze, a aplikacja wykazuje degradację zamiast awarii: na maszynach z 1 GB RAM lub mniej wyłącza konwersję RAW oraz TensorFlow, zamiast ulegać awarii.

Oba projekty wymagają partycji wymiany (swap). Dokumentacja PhotoPrism wyraźnie zaleca posiadanie co najmniej 4 GB swap na serwerze. Należy go skonfigurować przed instalacją którejkolwiek 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ć linię Swap: wskazującą na 4.0Gi. Jeśli wyświetli 0B, oznacza to, że swapon nie powiodło się, zazwyczaj dlatego, że system plików nie obsługuje fallocate, a sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 stanowi rozwiązanie zastępcze. Limity pamięci kontenerów mają tutaj znaczenie, a ustawienie limitów pamięci w Docker Compose jest sposobem na zapobieżenie sytuacji, w której jedna zasobożerna usługa powoduje zawieszenie całego serwera.

Jeszcze jeden wymóg często sprawia użytkownikom trudności. Baza danych Postgres dla Immich musi znajdować się na standardowym systemie plików Unix z poprawnymi uprawnieniami i własnością, na lokalnym nośniku, nigdy na udziale sieciowym. PhotoPrism stawia ten sam wymóg odnośnie plików swojej bazy danych. Uruchamianie którejkolwiek z tych aplikacji z bazą danych na zamontowanym magazynie obiektowym (object store) nie jest bezpieczne.

Jak zainstalować poszczególne rozwiązania

Obie instalacje wymagają pliku compose dostarczonego przez producenta oraz jednego polecenia. Najpierw należy skonfigurować Docker Engine oraz wtyczkę Compose, zgodnie z opisem w naszym przewodniku po Docker Compose na VPS.

Immich publikuje swój plik compose oraz przykładowy plik środowiskowy przy każdym wydaniu.

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 rozpoczęciem jakichkolwiek działań należy edytować .env. W UPLOAD_LOCATION będą przechowywane pliki źródłowe, natomiast DB_PASSWORD musi zostać zmienione względem wartości domyślnej przy użyciu wyłącznie znaków A-Za-z0-9, ponieważ znaki specjalne powodują błędy w ciągu połączeniowym. Następnie należy uruchomić usługę.

docker compose up -d
docker compose ps

Interfejs webowy odpowiada na porcie 2283. Pierwsze konto zarejestrowane za pośrednictwem tej strony staje się administratorem, dlatego należy uzyskać do niej dostęp i dokonać rejestracji niezwłocznie, zamiast pozostawiać otwartą 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

Należy otworzyć compose.yaml i zmienić PHOTOPRISM_ADMIN_PASSWORD przed pierwszym uruchomieniem. Dokumentacja jasno wskazuje: aplikacja uruchamia się z hasłem początkowym zdefiniowanym w tym pliku, minimalna długość to 8 znaków, a wartości domyślnej nigdy nie wolno używać na serwerze publicznym. W tym samym czasie należy ustawić wolumen originals na folder zawierający zdjęcia.

docker compose up -d
docker compose logs -f photoprism

PhotoPrism odpowiada na porcie 2342 z użytkownikiem admin. Żadna z aplikacji nie powinna być wystawiona bezpośrednio. Należy umieścić przed nimi reverse proxy z TLS (transport layer security), stosując taką samą konfigurację, jak w przypadku własnej instancji Nextcloud z Docker, TLS i kopiami zapasowymi.

Która aplikacja mobilna jest lepsza

W tym aspekcie oba projekty różnią się najbardziej i jest to powód, dla którego większość użytkowników wybiera Immich.

Immich udostępnia oficjalne aplikacje na systemy Android oraz iOS. Wykonują one automatyczną kopię zapasową zdjęć w tle, co oznacza, że nowe pliki są przesyłane z telefonu bez konieczności ręcznego uruchamiania aplikacji. Aplikacja wymaga punktu końcowego HTTPS, więc reverse proxy jest niezbędne, jeśli planuje się korzystanie z niej poza domem.

PhotoPrism nie posiada oficjalnej aplikacji natywnej. Projekt dostarcza aplikację typu progressive web app, którą dodaje się do ekranu głównego z poziomu przeglądarki, a synchronizację z telefonu dokumentuje poprzez WebDAV (web distributed authoring and versioning). Projekt zaleca w tym celu zewnętrzną aplikację o nazwie PhotoSync, wskazującą na katalog /import/ lub /originals/ za pośrednictwem WebDAV. Rozwiązanie to działa, jednak jest to płatna aplikacja zewnętrzna wykonująca zadanie, które Immich realizuje wewnątrz własnego klienta.

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

Co w praktyce daje uczenie maszynowe

Immich wykonuje wyszukiwanie semantyczne w bibliotece przy użyciu modelu CLIP, dzięki czemu zapytanie typu „czerwony rower w śniegu” pozwala odnaleźć zdjęcia, których nikt nigdy nie otagował. Narzędzie realizuje również detekcję i klastrowanie twarzy oraz wykrywanie duplikatów. Indeksowanie dużego importu na procesorze (CPU) trwa godzinami w tle, co jest zachowaniem normalnym i nie wymaga użycia GPU (graphics processing unit).

PhotoPrism klasyfikuje obrazy za pomocą TensorFlow, przypisując im etykiety, wykrywa twarze i grupuje je w osoby, a także odczytuje metadane lokalizacji w celu budowy mapy miejsc. Mapa jest funkcją, dla której użytkownicy wybierają to rozwiązanie: biblioteka indeksowana według miejsca zdarzenia to zupełnie inny sposób przeglądania dwudziestoletnich archiwów zdjęć. Rozpoznawanie twarzy jest zawarte w darmowej edycji Community. Płatne członkostwa Essentials oraz Plus dodają dodatki, takie jak bogatsze warstwy map, więcej ról użytkowników oraz interfejs zarządzania użytkownikami, w cenie zaczynającej się od kilku euro miesięcznie według stanu na lipiec 2026.

Immich jest w pełni darmowy i nie posiada płatnych planów. Rdzeń PhotoPrism jest darmowy, z opcjonalnymi płatnymi dodatkami.

Kopie zapasowe decydują o trwałości danych

Serwer zdjęć bez kopii zapasowej straci wszystkie dane rodzinne w przypadku awarii pojedynczego dysku. Obie aplikacje wymagają dwóch rodzajów kopii: bazy danych oraz plików.

W przypadku Immich należy wykonać zrzut bazy danych z kontenera Postgres oraz skopiować lokalizację przesłanych 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 niezastąpione dane to upload, library oraz profile. Foldery thumbs oraz encoded-video mogą zostać wygenerowane ponownie, kosztem wielu godzin pracy procesora. Sam zrzut bazy danych nie pozwala na odtworzenie całości, ponieważ zawiera jedynie metadane.

W przypadku PhotoPrism indeks posiada własne polecenie.

docker compose exec photoprism photoprism backup -i -f

Zapisuje ono zrzut SQL w lokalizacji storage/backup/. Następnie należy skopiować folder originals oraz folder storage. Ponieważ PhotoPrism zapisuje również pliki pomocnicze YAML opisujące każde zdjęcie, utracony indeks można odtworzyć na podstawie samych plików, co stanowi istotną zaletę w przypadku archiwum planowanego na dekady.

Niezależnie od wyboru, kopie zapasowe należy przesyłać poza serwer zgodnie z harmonogramem, korzystając z szyfrowanych, deduplikowanych kopii zapasowych restic do zdalnej pamięci masowej. Kopia zapasowa znajdująca się na tym samym dysku co biblioteka nie jest kopią zapasową.

Które rozwiązanie wybrać

Uruchom Immich, jeśli zdjęcia znajdują się na telefonach, jeśli więcej niż jedna osoba musi tworzyć kopię zapasową rolki aparatu oraz jeśli możesz przydzielić serwerowi 6 GB pamięci RAM lub więcej. Jest to rozwiązanie najbardziej zbliżone do Google Photos, które można hostować samodzielnie, a obsługa urządzeń mobilnych jest jego głównym atutem. Nasz przewodnik instalacji Immich krok po kroku szczegółowo omawia kwestie związane z wyczerpaniem pamięci oraz pułapki podczas aktualizacji.

Uruchom PhotoPrism, jeśli posiadasz już archiwum zdjęć na dysku, jeśli zależy Ci na mapach, metadanych i zachowaniu własnej struktury folderów lub jeśli Twój VPS dysponuje 4 GB pamięci RAM i wolisz działającą bibliotekę od ciągłego korzystania z partycji wymiany (swap). Jest to lepsze narzędzie do porządkowania zbiorów, które jest mniej wymagające dla słabszego sprzętu.

Uruchomienie obu rozwiązań jednocześnie jest również rozsądnym podejściem. Immich obsługuje codzienne przesyłanie zdjęć z telefonów, a raz w roku możesz przenieść wybrane fotografie do swojego archiwum i pozwolić PhotoPrism na ich indeksowanie. Aplikacje te nie wchodzą ze sobą w konflikt, ponieważ PhotoPrism odczytuje foldery, podczas gdy Immich zarządza własną strukturą danych.

FAQ

Czy PhotoPrism i Immich mogą współdzielić ten sam folder ze zdjęciami?

Nie w sposób bezpieczny w obu kierunkach. PhotoPrism odczytuje folder originals i zapisuje pliki sidecar YAML obok obrazów, podczas gdy Immich zakłada, że zarządza zawartością swojej lokalizacji przesyłania. Można wskazać PhotoPrism folder library należący do Immich w trybie tylko do odczytu, aby przeglądać zdjęcia, ale nie należy pozwalać obu aplikacjom na zarządzanie tymi samymi plikami. Szablon przechowywania Immich może przenosić lub zmieniać nazwy zasobów w trakcie indeksowania przez PhotoPrism.

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

Żadna aplikacja self-hosted nie powinna być jedynym miejscem przechowywania danych. Immich często wprowadza zmiany powodujące niekompatybilność, a nieostrożna aktualizacja docker compose pull może uniemożliwić uruchomienie bazy danych. Należy przypinać wersje i czytać informacje o wydaniu przed aktualizacją. Przechowuj oryginalne pliki w kopii zapasowej poza serwerem, aby zminimalizować ryzyko.

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

Jest on wyłączany z powodu zbyt dużego zużycia pamięci. Uruchom docker compose ps i sprawdź, czy usługa uczenia maszynowego kończy działanie z kodem 137, co oznacza działanie mechanizmu OOM (Out of Memory) jądra systemu. Dodaj swap, ustaw limit pamięci dla kontenera, aby był ograniczany zamiast wyłączany, lub całkowicie wyłącz uczenie maszynowe na maszynie z 4 GB pamięci RAM. Bez tego funkcja wyszukiwania przestanie działać, ale reszta Immich będzie funkcjonować poprawnie.

Czy PhotoPrism wymaga MariaDB, czy wystarczy SQLite?

SQLite działa i jest wystarczający dla biblioteki osobistej, jednak PhotoPrism ogranicza się do czterech procesów roboczych przy jego użyciu. Dokumentacja zaleca przejście na MariaDB, ponieważ lepiej radzi sobie z wysoką współbieżnością. Plik compose dostarczany z projektem zawiera już MariaDB, więc zalecana ścieżka jest jednocześnie ustawieniem domyślnym.

Ile miejsca na dysku należy zaplanować powyżej rozmiaru biblioteki?

Dla obu aplikacji należy dodać od 10 do 20 procent ponad rozmiar oryginalnych plików. Pokryje to zapotrzebowanie na wygenerowane miniatury i transkodowane podglądy wideo. Kolekcja o rozmiarze 200 GB wymaga około 300 GB wolnego miejsca, uwzględniając przestrzeń na bazę danych, lokalną kopię zapasową oraz przyszły przyrost danych.