Taking Control: Self-Hosting My Photo Library with Immich

After years of relying on Google Photos, I've finally made the leap to self-hosting my entire photo collection. Today, I successfully deployed Immich on my home server, and I wanted to share why I made this decision and what the process involved.
Why Self-Host?
The motivation is simple: independence from big tech. While Google Photos has been convenient, I've grown increasingly eager to have full ownership over my media.
Earlier this year, I built a home server and installed Jellyfin - a media server that I now use to host all of my films and family videos. As mentioned in a previous blog post, it was the start of an endeavour to become self-reliant whilst still maintaining cloud backups of my data.
With robust cloud backups already in place, disaster recovery isn't a concern. All my raw photos from camera SD cards are meticulously organised into structured folders. It made sense to leverage this existing infrastructure rather than continue depending on external services.
Enter Immich
Immich is an open-source, self-hosted photo and video management solution that aims to be a true alternative to Google Photos. What immediately impressed me about the project:
Active Development: Immich has a continuous roadmap with regular updates and new features being added constantly. The development team is responsive and the community is growing rapidly.
Feature-Rich: It includes facial recognition, smart search, mobile apps, automatic backups from phones, and a modern interface that rivals commercial offerings.
Open Source: Being open source means transparency, community contributions, and no vendor lock-in. If something doesn't work the way I want, I can potentially contribute a fix or feature myself.
The Setup Process
Getting Immich running on my TrueNAS server was straightforward using Docker Compose. The key components include:
- PostgreSQL database for metadata storage
- Redis for caching
- Machine learning services for facial recognition and smart search
- Main server and microservices for the core functionality
I configured external libraries pointing to my existing photo directories on the server. This meant Immich could index my existing collection without moving or duplicating thousands of photos.
The main challenge was getting ACL permissions correct for various directories on TrueNAS, though I won't bore you with those details.
Current Limitations and Future Hopes
While Immich is impressive, it's not without growing pains. One feature I'd love to see is automatic album generation from external library folder structures.
Currently, when you point Immich at an existing organised photo collection, it doesn't automatically create albums based on the folder structure. For someone like me who has carefully organised photos into folders, having these automatically translate into albums would be perfect.
I've found a Python script that can potentially solve this problem as a one-off solution. However, Immich has an upcoming roadmap feature to "automatically create albums based on rules", so I think I'll wait to see what that brings.
Next Steps: Google Takeout
My next major task is using Google Takeout to download my entire Google Photos library. Years of phone uploads, shared albums, and automatically backed-up photos currently live in Google's ecosystem. Extracting this data and importing it into my self-hosted instance will complete my migration away from Google's services.
The beauty of this approach is that once it's done, I'm in complete control. My photos are on hardware I own, with backups I manage, organised how I want them.
As an iPhone owner, most of my photos exist in both Google Photos and Apple Photos, and there's quite a bit of accumulated junk over the years - screenshots, receipts, photos people have sent me on WhatsApp. You know how it is.
Owning a home server is a project that constantly exposes new micro-projects, this being one of them:
- Uploading photos from Google Takeout
- Organisation, user management, and clearing out unwanted pictures
- Ongoing maintenance and ensuring the server becomes the source of truth
Final Thoughts
Self-hosting isn't for everyone. It requires some technical knowledge, hardware investment, and ongoing maintenance. But for those who value data ownership, privacy, and independence from big tech, projects like Immich make it increasingly viable.
If you're considering a similar move, I highly recommend giving Immich a try. The project is mature enough to be usable daily, yet active enough that rough edges are being smoothed out constantly.
Here's to owning our own data.