PhotoPrism vs Immich: Which One Fit You?
Compare PhotoPrism and Immich for self-hosting: see the real RAM floor, phone backup apps, maps, storage design, and exact VPS backup commands.
PhotoPrism vs Immich: di short answer
PhotoPrism vs Immich na choice between two different jobs, no be two versions of the same product. Immich dey replace Google Photos: phone app dey back up your camera roll automatically, and the timeline wey you get dey look familiar to anybody wey dey leave phone gallery. PhotoPrism dey organise photo library wey you don already get: e dey index folders of files for disk, read their metadata, put dem for map, and leave the files exactly where dem dey.
Choose Immich if the problem na "my phone full and I want comot from Google Photos". Choose PhotoPrism if the problem na "I get 400 GB of photos for one drive and I no fit find anything inside dem". Both na open source, both dey run as Docker containers for normal VPS, and both dey index and search your library without sending anything go third party.
The philosophy split, and why e decide everything
Immich na im dey own the files. You point am to an upload location, the phone app or the web uploader sends the original files enter, and Immich stores dem under im own path with im own naming. The database na the correct source for information about albums, faces and search. Na this design make the phone experience good, because the server always know the complete state of every asset.
PhotoPrism reads the files. You mount one originals folder wey you already dey control, and PhotoPrism builds an index on top am. Your directory tree still remain your own. If you remove PhotoPrism tomorrow, the photos go still dey there for the same folders with the same names, and PhotoPrism go don write sidecar YAML files beside dem to describe wetin e learn.
Na this one difference explain most of the remaining points. Immich get strong mobile support because e dey control ingestion. PhotoPrism get strong library curation because e never dey conflict with your existing structure. Immich na the better answer for family wey their photos dey for phones. PhotoPrism na the better answer for archive wey dey on disk.
Hardware appetite: Immich need more
The documented memory floors far apart, and for small VPS, na na this one dey usually decide.
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 document 6 GB RAM as the minimum and 8 GB as recommended. E also note say 4 GB machine fit run am only when machine learning dey off. PhotoPrism document 3 GB physical memory and two CPU cores. E say RAM amount suppose match the number of cores.
The difference dey real, and na the machine learning container cause am. Immich dey run its models inside separate immich-machine-learning service wey dey load CLIP (contrastive language image pretraining) and face detection models into memory. For 2 GB machine, kernel dey kill that container. You go see say e exit with code 137, and na so Docker dey show out of memory kill. PhotoPrism TensorFlow models smaller, and e dey reduce features instead of dying. For machines wey get 1 GB or less, e dey disable RAW conversion and TensorFlow instead of crashing.
Both projects ask for swap. PhotoPrism docs clearly say server need at least 4 GB swap. Add swap before you install either one.
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 suppose now print a Swap: line wey show 4.0Gi. If e print 0B, den swapon fail, usually because filesystem no support fallocate, and sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 na the fallback. Container memory ceilings matter here too. setting memory limits in Docker Compose na how you go stop one service wey dey use plenty memory from bringing the whole machine down.
One more requirement dey catch people. Immich Postgres database must dey on normal Unix filesystem with real ownership and permissions, for local storage. E must never dey on network share. PhotoPrism talk the same thing about its database files. Neither app safe to run when its database dey on mounted object store.
How to install each one
Both installs na vendor compose file plus one command. First set up Docker Engine and the Compose plugin, as we explain for our guide to Docker Compose on a VPS.
Immich dey publish im compose file and one example environment file for every release.
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.envEdit .env before you start anything. UPLOAD_LOCATION na where your original files go stay, and you must change DB_PASSWORD from the default. Use only these characters: A-Za-z0-9, because special characters go break the connection string. Then start am.
docker compose up -d
docker compose psThe web interface dey answer for port 2283. The first account wey person register through that page becomes the administrator. So reach the page and register immediately. No leave the instance open on the internet.
PhotoPrism ships one compose file wey already include MariaDB.
sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yamlOpen compose.yaml and change PHOTOPRISM_ADMIN_PASSWORD before the first start. The docs talk am clearly: the app starts with the initial password wey dey inside that file. The minimum length na 8 characters, and you must never use the default value for a public server. At the same time, set the originals volume to the folder wey hold your photos.
docker compose up -d
docker compose logs -f photoprismPhotoPrism dey answer for port 2342 with user admin. You no suppose expose either app directly. Put a reverse proxy with TLS (transport layer security) in front, using the same setup pattern as a self-hosted Nextcloud with Docker, TLS and backups.
Which one get better phone app
Na this area the two projects different pass well, and na why most people end up with Immich.
Immich releases official apps for Android and iOS. Dem dey back up camera roll for background, meaning new photos fit comot from the phone without anybody opening anything. The app needs an HTTPS endpoint, so reverse proxy no be optional if you plan to use am when you dey outside your house.
PhotoPrism no get official native app. E releases progressive web app, wey you fit add to your home screen from the browser. E also documents WebDAV (web distributed authoring and versioning) as the way to sync from phone. The project recommends third party app wey dem call PhotoSync for this, pointing am to the /import/ or /originals/ directory through WebDAV. E dey work, but na paid third party app dey do work wey Immich does inside im own client.
If automatic phone backup for several family members na the requirement, this one don settle am. Immich.
Wetin machine learning really dey give you
Immich dey do semantic search for your library with CLIP, so query like "red bicycle in snow" fit find photos wey nobody ever tag. E still dey detect faces and group dem, and e dey detect duplicates. Indexing big import for CPU fit run for hours for background. Na normal thing, and e no need GPU (graphics processing unit).
PhotoPrism dey classify images with TensorFlow into labels, dey detect faces and group dem into people, and dey read location metadata to build places map. Na the map be the feature wey make people continue to use am: library wey index photos by where dem happen na genuinely different way to browse twenty years of photos. Face recognition dey included for free Community edition. The paid Essentials and Plus memberships add extras like richer map layers, more user roles and user management interface. As of July 2026, dem start from few euros per month.
Immich dey completely free, with no paid tier. PhotoPrism core dey free, with optional paid extras.
Backups na decide whether you go keep am
Photo server wey no get backup dey one disk failure away from losing everything wey family get. Both apps need two backups: database, and files.
For Immich, dump database from Postgres container and copy upload location.
docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gzThen back up UPLOAD_LOCATION. Folders wey hold data wey no fit replace na upload, library and profile. You fit regenerate thumbs and encoded-video folders, but e go cost hours of CPU time. Database dump alone no restore anything, because e only hold metadata.
For PhotoPrism, index get im own command.
docker compose exec photoprism photoprism backup -i -fThat one write SQL dump under storage/backup/. Then copy originals folder and storage folder. Because PhotoPrism still dey write sidecar YAML files wey describe each photo, you fit rebuild lost index from the files alone. This na real advantage for archive wey you plan to keep for decades.
Any one wey you choose, send those backups comot from the server on schedule with encrypted, deduplicated restic backups to remote storage. Backup wey dey the same disk with the library no be backup.
Which one you suppose run
Run Immich if your photos dey for phones, if more than one person need back up camera roll, and if you fit give the server 6 GB RAM or more. Na the closest thing to Google Photos wey you fit host by yourself, and na the mobile experience be the main point. Our step-by-step Immich install guide dey explain memory kills and upgrade traps well-well.
Run PhotoPrism if you already get photo archive for disk, if maps and metadata matter to you and you wan keep your own folder structure, or if your VPS get 4 GB RAM and you prefer working library instead of one wey dey swap. E better for arranging and managing photos, and e no dey put too much load on small hardware.
You fit run both too. Immich go handle daily phone uploads, and once every year you fit sort the photos wey you wan keep into your archive, then make PhotoPrism index them. Dem no dey conflict because PhotoPrism dey read folders, while Immich dey manage im own files.
FAQ
PhotoPrism na Immich fit share the same photo folder?
No be safe for both directions. PhotoPrism dey read originals folder and dey write sidecar YAML files beside your images, while Immich expect say na e go control wetin dey inside e upload location. You fit point PhotoPrism to read-only copy of Immich library folder make e browse am, but no let both apps manage the same files, because Immich storage template fit move or rename assets under PhotoPrism while e dey index.
Immich stable reach make e hold the only copy of my photos?
No self-hosted app suppose ever hold the only copy of anything. Immich dey release breaking changes often, and careless docker compose pull fit make database unable to start, so pin your version and read release notes before you upgrade. Keep the original files backed up outside the server, and the risk go remain small.
Why Immich machine learning container dey restart anyhow?
Na because e dey get killed for using too much memory. Run docker compose ps and check for the machine learning service wey dey exit with code 137, wey be the kernel out of memory killer. Add swap, or give the container memory limit make e throttle instead of killing am, or disable machine learning completely for 4 GB machine. Search go stop working without am, but the rest of Immich go run fine.
PhotoPrism need MariaDB, or SQLite go work?
SQLite dey work and e good for personal library, but PhotoPrism limit itself to four workers when e dey use am, and the docs recommend say make you switch to MariaDB because e handle high concurrency better. The compose file wey the project release already include MariaDB, so the recommended path na also the default one.
How much disk space I suppose plan above my library size?
Add 10 to 20 percent on top of the size of your originals, for either app. This one cover generated thumbnails and transcoded video previews. 200 GB collection need roughly 300 GB volume once you leave room for database, local backup copy and growth.