PhotoPrism versus Immich: welke fotoserver kiest u?
Vergelijk PhotoPrism en Immich op RAM, telefoonapps, kaarten en back-ups. Ontdek welk systeem past bij nieuwe uploads of een bestaande fotobibliotheek.
PhotoPrism versus Immich: het korte antwoord
De keuze tussen PhotoPrism en Immich is een keuze tussen twee verschillende taken, niet tussen twee versies van hetzelfde product. Immich vervangt Google Photos: een app op uw telefoon maakt automatisch een back-up van uw filmrol en de tijdlijn ziet er vertrouwd uit voor iedereen die overstapt van een standaard telefoongalerij. PhotoPrism organiseert een fotobibliotheek die u al bezit: het indexeert mappen met bestanden op schijf, leest de metadata, plaatst ze op een kaart en laat de bestanden exact staan waar ze stonden.
Kies voor Immich als het probleem is: "mijn telefoon zit vol en ik wil weg bij Google Photos". Kies voor PhotoPrism als het probleem is: "ik heb 400 GB aan foto's op een schijf staan en ik kan niets terugvinden". Beide zijn open source, beide draaien als Docker-containers op een normale VPS, en beide indexeren en doorzoeken uw bibliotheek zonder gegevens naar een derde partij te sturen.
De filosofische scheidslijn en waarom die alles bepaalt
Immich beheert de bestanden. U wijst het aan een uploadlocatie toe. De telefoonapp of de webuploader verstuurt de originelen daarheen. Immich slaat ze op onder zijn eigen pad en met zijn eigen naamgeving. De database bevat de bron van waarheid voor albums, gezichten en zoekopdrachten. Dankzij dit ontwerp werkt de mobiele ervaring goed, omdat de server altijd de volledige status van elk item kent.
PhotoPrism leest de bestanden. U koppelt een originals-map die u al beheert. PhotoPrism bouwt daarover een index op. Uw mappenstructuur blijft van u. Als u PhotoPrism morgen verwijdert, blijven de foto's in dezelfde mappen met dezelfde namen staan. De sidecar-YAML-bestanden die PhotoPrism schrijft met informatie over wat het heeft vastgesteld, staan in de eigen opslagmap van PhotoPrism. Daar bewaart het deze bestanden standaard.
Dat ene verschil verklaart het grootste deel van de rest. Immich biedt sterke ondersteuning voor mobiele apparaten, omdat het de import beheert. PhotoPrism biedt sterke mogelijkheden voor het beheren van een bibliotheek, omdat het uw bestaande structuur niet wijzigt. Immich is de betere keuze voor een gezin waarvan de foto's op telefoons staan. PhotoPrism is de betere keuze voor een archief dat op een schijf staat.
Hardwarebehoefte: Immich vraagt meer
De gedocumenteerde minimale hoeveelheden geheugen lopen sterk uiteen. Op een kleine VPS is dit meestal de doorslaggevende factor.
De gegevens achter deze grafiek
[
{
"label": "Immich",
"min_ram_gb": 6
},
{
"label": "PhotoPrism",
"min_ram_gb": 3
}
]Immich documenteert 6 GB RAM als minimum en 8 GB als aanbevolen hoeveelheid. Daarbij vermeldt het project dat een machine met 4 GB alleen kan worden gebruikt als machine learning is uitgeschakeld. PhotoPrism documenteert 3 GB fysiek geheugen en twee CPU-cores. Volgens de documentatie moet de hoeveelheid RAM boven dat minimum overeenkomen met het aantal cores.
Het verschil is reëel en wordt veroorzaakt door de machine-learningcontainer. Immich voert zijn modellen uit in een afzonderlijke immich-machine-learning-service. Deze laadt CLIP-modellen (contrastive language image pretraining) en modellen voor gezichtsdetectie in het geheugen. Op een machine met 2 GB beëindigt de kernel deze container. U ziet dan exitcode 137. Dit is de status voor een proces dat met signaal 9 is beëindigd. Zo ziet een out-of-memory-beëindiging eruit in Docker. De ingebouwde modellen van PhotoPrism draaien op ONNX. Volgens de documentatie presteren deze over het algemeen goed op alle typen hardware. PhotoPrism heeft ook een gedocumenteerde fallback voor krap geheugen: op machines met 1 GB of minder worden RAW-conversie en gezichtsherkenning uitgeschakeld. Dit is echter geen garantie voor stabiliteit. Onder het minimum van 3 GB waarschuwt het project voor instabiliteit en prestatieproblemen. Beschouw deze waarde daarom als een ondergrens.
De documentatie van PhotoPrism vermeldt expliciet dat er minimaal 4 GB swap op de server beschikbaar moet zijn. Op de pagina met vereisten van Immich wordt swap niet genoemd. Swap geeft de machine-learningcontainer echter extra ruimte op een kleine machine. Voeg swap toe voordat u een van beide applicaties installeert.
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 -hfree -h moet nu een Swap:-regel tonen met 4.0Gi. Als 0B wordt weergegeven, is swapon mislukt. Dit komt meestal doordat het bestandssysteem fallocate niet ondersteunt. sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 is dan de fallback. Ook limieten voor het containergeheugen zijn hier van belang. geheugenlimieten instellen in Docker Compose voorkomt dat één geheugenintensieve service de hele machine laat vastlopen. PhotoPrism zelf vormt hierop een uitzondering. De documentatie raadt een harde geheugenlimiet voor de container af, omdat het indexeren van grote bestanden tijdelijk extra geheugen vereist. Een limiet kan onverwachte herstarts veroorzaken.
Er is nog een vereiste die vaak over het hoofd wordt gezien. De Postgres-database van Immich moet op een normaal Unix-bestandssysteem met echte eigenaars en rechten staan, op lokale opslag en nooit op een netwerkshare. PhotoPrism waarschuwt eveneens om de databasebestanden nooit op een gedeelde netwerkmap op te slaan. Lokale SSD-opslag is volgens het project de beste locatie. Geen van beide applicaties is veilig wanneer de database op een gekoppelde object store staat.
Hoe u elk pakket installeert
Beide installaties bestaan uit een compose-bestand van de leverancier en één commando. Installeer eerst Docker Engine en de Compose-plugin, zoals beschreven in onze handleiding voor Docker Compose op een VPS.
Immich publiceert bij elke release een compose-bestand en een voorbeeld-omgevingsbestand.
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.envBewerk .env voordat u begint. UPLOAD_LOCATION is de locatie waar uw originelen worden opgeslagen. DB_PASSWORD bevat standaard een werkende configuratie; Immich adviseert om dit te wijzigen naar een willekeurig wachtwoord, hoewel dit niet verplicht is. Postgres wordt niet publiekelijk blootgesteld, dus het wachtwoord wordt alleen gebruikt voor lokale authenticatie, maar een willekeurig wachtwoord instellen kost geen moeite. Gebruik alleen de tekens A-Za-z0-9, omdat de documentatie van Immich aangeeft dat andere tekens problemen kunnen veroorzaken wanneer Docker de waarde parseert. Start het daarna.
docker compose up -d
docker compose psDe webinterface reageert op poort 2283. Het eerste account dat via die pagina wordt geregistreerd, wordt de beheerder. Open de pagina en registreer direct, in plaats van een open instantie onbeheerd op het internet achter te laten.
PhotoPrism levert één compose-bestand dat al MariaDB bevat.
sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yamlOpen compose.yaml en wijzig PHOTOPRISM_ADMIN_PASSWORD vóór de eerste start. De documentatie is hier duidelijk over: de applicatie start met het initiële wachtwoord dat in dat bestand staat, de minimale lengte is 8 tekens en de standaardwaarde mag nooit op een publieke server worden gebruikt. Stel tegelijkertijd het originals-volume in op de map die uw foto's bevat.
docker compose up -d
docker compose logs -f photoprismPhotoPrism reageert op poort 2342 met de gebruiker admin. Geen van beide applicaties mag direct worden blootgesteld. Plaats een reverse proxy met TLS (transport layer security) ervoor, volgens dezelfde opzet als gebruikt voor een zelfgehoste Nextcloud met Docker, TLS en backups, of houd de server privé en benader deze via een VPN. Als deze VPS uiteindelijk meer dan alleen foto's bevat, pas dan dezelfde terughoudendheid toe op elke service die u toevoegt, aangezien een zelfgehoste RustDesk relay alleen zijn eigen twee poorten bereikbaar hoeft te hebben en niets anders.
Welke heeft de betere telefoonapp
Op dit punt lopen de twee projecten het verst uiteen. Dit is de reden waarom de meeste mensen uiteindelijk voor Immich kiezen.
Immich levert officiële apps voor Android en iOS. Deze maken op de achtergrond een back-up van de camerarol. Nieuwe foto's worden daardoor van de telefoon verzonden zonder dat iemand een app hoeft te openen. Voor gebruik buitenshuis documenteert Immich drie opties: een VPN zoals WireGuard of OpenVPN, Tailscale of een reverse proxy die HTTPS aanbiedt. Met een reverse proxy kunnen de telefoonapps verbinding maken zonder dat op elke telefoon een VPN-app nodig is. Immich waarschuwt om poort 2283 nooit rechtstreeks naar internet door te sturen zonder aanvullende configuratie.
PhotoPrism heeft geen officiële native app. Het levert een progressive web app die u vanuit de browser aan het startscherm toevoegt. Voor synchronisatie vanaf een telefoon documenteert het project WebDAV (web distributed authoring and versioning). Het project beveelt hiervoor een app van derden aan met de naam PhotoSync. Configureer deze voor de /import/- of /originals/-directory via WebDAV. Dit werkt, maar de betaalde app van derden voert een taak uit die Immich in de eigen client afhandelt.
Als automatische back-up van telefoons van meerdere gezinsleden vereist is, geeft dat de doorslag. Immich.
Wat machine learning u daadwerkelijk oplevert
Immich voert met CLIP semantische zoekopdrachten uit in uw bibliotheek. Met een zoekopdracht zoals "red bicycle in snow" vindt u foto's die nooit door iemand zijn getagd. Immich detecteert en groepeert ook gezichten en detecteert duplicaten. Het indexeren van een grote import op de CPU kan op de achtergrond uren duren. Dat is normaal en vereist geen GPU (graphics processing unit).
PhotoPrism deelt afbeeldingen met een ingebouwd ONNX-model in op basis van labels, detecteert gezichten en groepeert deze met ONNX-gezichtsmodellen in personen. Ook leest het locatiegegevens uit metadata om een plaatsenkaart op te bouwen. Met een vision.yml-bestand in de configuratiemap kunt u Ollama of OpenAI gebruiken voor labels en bijschriften als u dat wilt. De kaart is de functie waarvoor gebruikers blijven: een bibliotheek die is geïndexeerd op basis van waar iets gebeurde, biedt een wezenlijk andere manier om twintig jaar aan foto's te doorzoeken. Hetzelfde idee werkt voor andere mediacollecties. Halcyons videotheekinterface uit de jaren 90 voor Jellyfin is de filmversie hiervan, waarbij u op schap in plaats van op lijst door de collectie bladert. Gezichtsherkenning is inbegrepen in de gratis Community-editie. De betaalde Essentials- en Plus-lidmaatschappen voegen extra's toe, zoals uitgebreidere kaartlagen, meer gebruikersrollen en een interface voor gebruikersbeheer. De prijzen beginnen vanaf enkele euro's per maand en worden jaarlijks gefactureerd, volgens de stand van oktober 2026.
Immich heeft geen functies waarvoor u moet betalen, en het project zegt dat dit nooit zal veranderen. Het verkoopt wel optionele permanente productkeys: $25 voor één gebruiker of $100 voor een volledige server, volgens de prijzen die Immich in juli 2024 bekendmaakte. Aanschaf van zo'n key ontgrendelt niets. Immich werkt zonder beperkingen als u nooit betaalt. De kern van PhotoPrism is gratis, met optionele betaalde extra's.
Backups bepalen of u uw data behoudt
Een fotoserver zonder back-up is slechts één defecte schijf verwijderd van het verlies van alle familieherinneringen. Beide applicaties vereisen twee back-ups: de database en de bestanden.
Voor Immich dumpt u de database vanuit de Postgres-container en kopieert u de uploadlocatie.
docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gzMaak vervolgens een back-up van UPLOAD_LOCATION. De mappen met onvervangbare data zijn upload, library en profile. De mappen thumbs en encoded-video kunnen opnieuw worden gegenereerd, ten koste van uren aan CPU-tijd. Een database-dump op zichzelf herstelt niets, omdat deze alleen metadata bevat.
Voor PhotoPrism heeft de index een eigen commando.
docker compose exec photoprism photoprism backup -i -fDit schrijft een SQL-dump naar storage/backup/. Kopieer daarna de map originals en de map storage. Omdat PhotoPrism ook sidecar YAML-bestanden schrijft die elke foto beschrijven, kan een verloren index worden herbouwd op basis van alleen de bestanden. Dit is een groot voordeel voor een archief dat u decennialang wilt bewaren.
Welke optie u ook kiest, stuur die back-ups volgens een schema van de server naar een externe locatie met versleutelde, gededupliceerde restic-back-ups naar externe opslag. Een back-up op dezelfde schijf als de bibliotheek is geen back-up. Laat de taak een melding sturen wanneer deze mislukt. Een back-up die in maart stilzwijgend is gestopt, ziet er tot de dag waarop u deze nodig hebt precies hetzelfde uit als een back-up die gisteravond nog is uitgevoerd. Met een zelfgehoste ntfy-server ontvangt u die foutmelding diezelfde avond op uw telefoon.
Welke moet u draaien
Draai Immich als uw foto's op telefoons staan, als meer dan één persoon een camerarol moet back-uppen en als u de server 6 GB RAM of meer kunt toewijzen. Het is het meest vergelijkbare alternatief voor Google Photos dat u zelf kunt hosten, en de mobiele ervaring is het voornaamste doel. Onze stapsgewijze installatiehandleiding voor Immich behandelt de geheugenproblemen en de valkuilen bij upgrades in detail.
Draai PhotoPrism als u al een fotoarchief op schijf heeft, als u waarde hecht aan kaarten en metadata en het behoud van uw eigen mappenstructuur, of als uw VPS 4 GB RAM heeft en u liever een werkende bibliotheek heeft dan een systeem dat constant naar swap schrijft. Het is de betere tool voor curatie en het is minder belastend voor lichtere hardware.
Beide draaien is ook een redelijke optie. Immich verwerkt de dagelijkse import vanaf telefoons, en eenmaal per jaar sorteert u de beste foto's naar uw archief en laat u PhotoPrism dat indexeren. Ze conflicteren niet, omdat PhotoPrism mappen leest terwijl Immich zijn eigen opslag beheert.
FAQ
Kunnen PhotoPrism en Immich dezelfde fotomap delen?
Niet veilig in beide richtingen. PhotoPrism indexeert een originals-map en heeft functies die daarin schrijven, tenzij het in alleen-lezenmodus draait. Immich verwacht daarentegen eigenaar te zijn van de inhoud van zijn uploadlocatie. U kunt PhotoPrism naar een alleen-lezenkopie van de library-map van Immich laten verwijzen om deze te bekijken, maar laat beide apps niet dezelfde bestanden beheren. De opslagtemplate van Immich kan bestanden namelijk verplaatsen of hernoemen terwijl PhotoPrism ze indexeert.
Is Immich stabiel genoeg om de enige kopie van mijn foto's te bevatten?
Geen enkele zelfgehoste app mag ooit de enige kopie van iets bevatten. Immich volgt nu semantic versioning en geeft aan dat incompatibele wijzigingen beperkt blijven tot major releases. Pin daarom IMMICH_VERSION op een major version-tag zoals v3, lees de release notes en voer daarna de upgrade uit met docker compose pull && docker compose up -d. Downgraden wordt niet ondersteund, ook niet binnen dezelfde minor version. Maak daarom vóór elke upgrade een database-dump. Houd de originele bestanden buiten de server geback-upt; dan blijft het risico klein.
Waarom wordt de machine-learningcontainer van Immich steeds opnieuw gestart?
Meestal wordt deze beëindigd omdat hij te veel geheugen gebruikt. Voer docker compose ps --all uit, omdat een gestopte container zonder die flag niet zichtbaar is, en controleer of de machine-learningservice eindigt met code 137. Die code betekent dat het proces met signal 9 is beëindigd. De out-of-memory-killer van de kernel is meestal de oorzaak, maar niet de enige mogelijke oorzaak. Bevestig dit daarom met sudo dmesg | grep -i 'out of memory'. Voeg swap toe of schakel machine learning volledig uit op een machine met 4 GB. Een geheugenlimiet voor de container beperkt het geheugengebruik niet geleidelijk. Bij het bereiken van de limiet wordt de container nog steeds beëindigd, maar hij verhindert niet langer dat de rest van de server geheugen krijgt. Smart search en face recognition werken zonder machine learning niet. De rest van Immich blijft wel werken.
Heeft PhotoPrism MariaDB nodig, of volstaat SQLite?
SQLite werkt en is geschikt voor een persoonlijke bibliotheek. PhotoPrism beperkt zich bij gebruik van SQLite echter tot vier workers. De documentatie adviseert daarom over te schakelen op MariaDB, omdat die beter met hoge gelijktijdigheid omgaat. Het compose-bestand dat het project levert, bevat MariaDB al. De aanbevolen configuratie is daarmee ook de standaardconfiguratie.
Hoeveel schijfruimte moet ik boven op de grootte van mijn bibliotheek reserveren?
Reserveer voor beide apps 10 tot 20 procent boven op de grootte van uw originelen. Daarmee dekt u gegenereerde thumbnails en getranscodeerde videovoorbeelden. Voor een collectie van 200 GB is voor de bibliotheek zelf ongeveer 220 tot 240 GB nodig, naast ruimte voor de database en groei. Als u ook een volledige lokale back-upkopie op hetzelfde volume bewaart, hebben de originelen en die kopie samen minimaal 400 GB nodig voordat andere gegevens worden meegerekend. Reserveer daarom ongeveer 450 GB of plaats de kopie op een afzonderlijk volume.