Google Wants $36/Year for Your Nostalgia. Pass.
Remember when Google Photos was the crown jewel of free cloud storage? Unlimited photos, decent AI, face recognition, and it was free. Then 2021 happened. Then 2023. Then 2025. Each year Google “reassesses” its pricing strategy, which is corporate speak for “we found another lever and we’re pulling it.”
At this point, Google Photos decided your storage is now $3/month and your memories are worth $36/year — minimum. And if you’ve been snapping away for the past decade like most of us, you’re probably already bumping against the 15GB free tier ceiling, staring down a $3-10/month bill just to keep your kid’s birthday photos alive.
There’s also the small matter of Google training its models on your data, keeping your location history, and generally treating your personal photo archive as a product feature rather than your private memories. But hey, maybe you’re fine with that. No judgment. (Mild judgment.)
If you’re not fine with it, welcome to the self-hosting rabbit hole. We’ve got two options worth your time: Immich and PhotoPrism. Both run on Docker. Both are free. Both will let you own your memories without a subscription. Let’s break them down.
Why Ditch Google Photos in the First Place?
Before we get into the weeds, let’s be real about the reasons:
Privacy: Your photos contain metadata — locations, timestamps, faces, relationships. That’s a behavioral profile. Google’s terms give them broad rights to use this data for product improvement. “Anonymous” aggregated data has a funny way of not staying anonymous.
Cost creep: Free tiers shrink, paid tiers grow. Google One plans will only go up. Locking yourself into a platform where the price changes at Google’s discretion is a bad long-term bet.
Vendor lock-in: Exporting from Google Photos is annoying. Google Takeout produces a mess of JSON sidecar files that no other software natively understands. Getting your photos out is deliberately painful.
You already have a NAS or a server: If you’re reading a blog called SumGuy’s Ramblings, there’s a decent chance you’ve got a spare machine or a Synology sitting in your office. Put it to work.
Immich: The New Kid Who Skipped Straight to Senior Engineer
Immich is what happens when a developer gets fed up with Google Photos and decides to build the replacement themselves. What started as a personal project has exploded into one of the most actively developed self-hosted projects in existence.
Tech stack: Go backend, Svelte frontend, PostgreSQL with pgvector for AI search, Redis for caching. It’s modern, it’s fast, and it shows.
What makes it special:
The mobile app is genuinely excellent — and that’s rare in self-hosted land, where mobile is usually an afterthought bolted on six months after the desktop version. Immich’s iOS and Android apps feel like using Google Photos. Automatic backup, memories view, shared albums, face recognition — it’s all there, and it actually works smoothly.
The timeline view is butter-smooth even with 50,000+ photos. This is thanks to smart thumbnail generation and lazy loading. You scroll, it loads. No spinners of death.
Face recognition works offline using machine learning models bundled with the server. It’s not Google-level accurate, but it’s genuinely useful — cluster faces, name them, search by person. For a free self-hosted tool, it’s impressive.
Docker Compose setup:
version: "3.8"
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
container_name: immich_server
volumes:
- /your/photo/path:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
environment:
DB_PASSWORD: yourpassword
DB_USERNAME: postgres
DB_DATABASE_NAME: immich
REDIS_HOSTNAME: immich_redis
ports:
- "2283:3001"
depends_on:
- redis
- database
restart: always
immich-microservices:
image: ghcr.io/immich-app/immich-server:release
container_name: immich_microservices
command: ["start.sh", "microservices"]
volumes:
- /your/photo/path:/usr/src/app/upload
environment:
DB_PASSWORD: yourpassword
DB_USERNAME: postgres
DB_DATABASE_NAME: immich
REDIS_HOSTNAME: immich_redis
depends_on:
- redis
- database
restart: always
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release
container_name: immich_machine_learning
volumes:
- model-cache:/cache
restart: always
redis:
container_name: immich_redis
image: redis:6.2-alpine
restart: always
database:
container_name: immich_postgres
image: tensorchord/pgvecto-rs:pg14-v0.2.0
environment:
POSTGRES_PASSWORD: yourpassword
POSTGRES_USER: postgres
POSTGRES_DB: immich
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
volumes:
model-cache:
pgdata:
Point your browser at port 2283, create your admin account, install the mobile app, and you’re done. The initial library scan takes a while depending on your collection size, but after that it’s snappy.
Migrating from Google Photos: Use Google Takeout to export your library. Immich has a built-in Google Takeout importer that handles the JSON metadata sidecars correctly — it reads timestamps, locations, and descriptions from those files. It’s not perfect, but it’s the best you’ll find anywhere.
The honest downsides: Immich is still pre-1.0 in spirit — they’ve shipped major versions quickly and there have been database migration issues in the past. Always back up before updating. Also, RAW format support is improving but not as mature as PhotoPrism.
PhotoPrism: The Wise Old Wizard of Self-Hosted Photos
PhotoPrism has been around longer, moves slower, and that’s entirely by design. It’s the opposite of Immich in many ways — more mature, more cautious, and loaded with AI features powered by TensorFlow.
What makes it special:
The AI tagging is legitimately impressive. PhotoPrism uses TensorFlow-based models to automatically tag your photos with labels — “beach”, “sunset”, “dog”, “hiking” — without you doing anything. It also does face recognition, color analysis, and can identify landmarks. Combined, this makes search genuinely powerful.
RAW format support is broad: Canon CR2/CR3, Nikon NEF, Sony ARW, Fuji RAF — if your camera shoots it, PhotoPrism probably handles it. It also handles video better than Immich in some edge cases.
The Places feature is beautiful — it plots your photos on a world map by GPS metadata. If you’ve been traveling and shooting, this turns your library into a geographic story.
Docker Compose setup:
version: '3.5'
services:
photoprism:
image: photoprism/photoprism:latest
container_name: photoprism
restart: unless-stopped
ports:
- "2342:2342"
environment:
PHOTOPRISM_ADMIN_PASSWORD: "yourpassword"
PHOTOPRISM_SITE_URL: "http://localhost:2342/"
PHOTOPRISM_ORIGINALS_LIMIT: 5000
PHOTOPRISM_HTTP_COMPRESSION: "gzip"
PHOTOPRISM_DATABASE_DRIVER: "mysql"
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"
PHOTOPRISM_DATABASE_NAME: "photoprism"
PHOTOPRISM_DATABASE_USER: "photoprism"
PHOTOPRISM_DATABASE_PASSWORD: "yourpassword"
PHOTOPRISM_FFMPEG_ENCODER: "software"
volumes:
- /your/photo/path:/photoprism/originals
- photoprism-storage:/photoprism/storage
depends_on:
- mariadb
mariadb:
image: mariadb:10.11
container_name: photoprism_mariadb
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: rootpassword
MARIADB_DATABASE: photoprism
MARIADB_USER: photoprism
MARIADB_PASSWORD: yourpassword
volumes:
- mariadb-data:/var/lib/mysql
volumes:
photoprism-storage:
mariadb-data:
First startup triggers an index of your library. On a large collection this can take hours — PhotoPrism is thorough. Get some coffee. Or sleep on it.
Migrating from Google Photos: PhotoPrism handles Takeout exports as well — drop the folders in your originals directory and run an index. It reads Exif data natively and can parse some Google metadata, though the sidecar handling is less automated than Immich’s dedicated importer.
The honest downsides: The mobile experience is a web app. It works, but it’s not a native app, and automatic background backup requires either the Immich app (some people proxy this) or third-party solutions. If mobile-first is important to you, this is a real limitation. Also, PhotoPrism is slower — it’s doing more work per photo, and on lower-powered hardware the difference is noticeable.
Head-to-Head Comparison
| Feature | Immich | PhotoPrism |
|---|---|---|
| Performance | Fast, optimized for large libraries | Slower initial index, thorough |
| Mobile App | Native iOS + Android, excellent | Web app only, no auto-backup |
| AI Tagging | CLIP semantic search, face recognition | TensorFlow auto-tags, landmarks, colors |
| RAW Support | Improving, not complete | Broad and mature |
| Resource Usage | Moderate (PostgreSQL + ML models) | Higher (TensorFlow indexing) |
| Storage Backend | Local filesystem | Local filesystem |
| Google Takeout Import | Dedicated importer, handles JSON sidecars | Manual, reads Exif |
| Video Support | Good | Good, handles more codecs |
| Map View | Yes | Yes, beautiful |
| Stability | Active dev, rapid versions | Mature, slower release cycle |
| Setup Complexity | Medium | Medium |
| Community | Huge, very active | Large, established |
Which One Should You Pick?
Choose Immich if:
- Mobile backup is important to you (it probably is)
- You want something that feels like Google Photos but on your server
- You’re on a NAS with moderate resources
- You want a smoother Google Photos migration experience
- You like living slightly on the edge of rapid development
Choose PhotoPrism if:
- You’re a photographer who shoots RAW
- You want rich automatic AI tagging without manual work
- Mobile backup isn’t a priority
- You value stability over features
- You have a beefy server that can handle TensorFlow indexing
The honest take: For most people in 2026, Immich wins. The mobile app alone is a dealbreaker for PhotoPrism in everyday use. If your photos live in your phone and you want seamless automatic backup the moment you take a shot, Immich delivers that. PhotoPrism is the better tool for a dedicated photography workflow — managing a camera library, handling RAW files, doing deep AI categorization.
The good news: they’re not mutually exclusive. Some people run both — Immich for the phone library and daily use, PhotoPrism for the serious camera work. Docker makes this trivially easy. Your server, your rules.
Hardware Recommendations
For either solution, you’ll want at minimum:
- CPU: 4 cores (more if you want faster indexing)
- RAM: 4GB minimum, 8GB comfortable
- Storage: Whatever you need for your photos plus 10-20% for thumbnails and metadata
- OS: Any Linux distro with Docker and Docker Compose
Both run fine on a Raspberry Pi 4 with 8GB RAM for smaller libraries, though indexing will be slow. A used mini PC or a Synology/QNAP NAS with Docker support is the sweet spot.
Final Thoughts
Google Photos is a great product that got progressively more expensive while the alternatives got progressively better. In 2026, there’s no compelling reason to keep paying for it unless you’re allergic to running your own server.
Immich is the recommendation for most people. It’s fast, the mobile experience is genuinely good, and the development velocity is remarkable. Just back up your database before every update — the team moves fast and database migrations have occasionally caused headaches.
PhotoPrism is for when you need the AI depth, the RAW support, and the mature feature set, and you can live without a great mobile app.
Either way, your photos stay yours. No price hikes. No terms-of-service updates at 11pm on a Friday. No one training a foundation model on your kid’s birthday party.
That’s worth a few hours of Docker setup.