Web Hosting

Self-Host Immich on a VPS: A Complete Zero-Cloud Google Photos Alternative for 2026

Migrating away from Google Photos doesn’t mean sacrificing convenience. In 2026, self-hosting Immich on a Linux VPS has become a realistic, production-ready alternative for anyone tired of recurring cloud subscription fees, storage caps, and handing over personal media to third-party data centers. Immich is an open-source photo and video management platform that replicates the core Google Photos experience—automatic mobile backups, facial recognition, map views, shared albums, and fast search—but runs entirely on infrastructure you control. Whether you’re a homelab enthusiast, a small agency managing client assets, or simply a privacy-conscious website owner looking to consolidate services onto an existing VPS, this guide walks through what Immich delivers, the hardware you’ll need, the deployment workflow, and the operational tradeoffs you should evaluate before committing.

Why Immich Replaces Google Photos Without Compromising Usability

Immich was built from the ground up to mirror the workflow that made Google Photos sticky: install the mobile app, enable automatic background uploads, and never think about manual backups again. The platform ships with native Android and iOS clients that handle incremental uploads efficiently, meaning only new or modified files traverse the network after the initial sync.

Beyond basic storage, Immich includes machine learning-powered features that historically required cloud-scale compute. Face detection and recognition run locally on your server, as does object detection for search queries. You can search for “beach,” “birthday,” or specific people without sending image metadata to an external API. The platform also supports location-based photo mapping, a “Memories” feature that surfaces past events on their anniversary, RAW photo handling, and Live Photo playback. Multi-user accounts and shared album functionality make it viable for families or small teams.

The critical distinction is ownership. With Google Photos, your library lives on infrastructure governed by terms of service that allow scanning for training purposes, and you pay monthly for every tier above the free allowance. With Immich on a VPS, the disks are yours, the ML models run locally, and the only ongoing cost is your server bill plus electricity. Storage scales with whatever block storage or NVMe you attach to the instance, removing the artificial ceilings that push cloud users into expensive upgrades.

There is one caveat worth stating upfront: Immich remains under very active development and carries a beta designation. The core feature set is stable enough for daily use, but updates can introduce breaking changes. Each release on the project’s GitHub repository includes detailed upgrade guides, and disciplined operators test migrations on a staging clone before touching production. If you need a set-and-forget appliance with guaranteed backward compatibility, a managed cloud service still holds an edge. If you value control and are comfortable with periodic maintenance, Immich is the strongest self-hosted contender available today.

VPS Sizing, OS Selection, and Pre-Deployment Checklist

Running Immich on a VPS requires matching resources to your expected workload. The platform operates via Docker Compose, spinning up multiple containers for the web application, machine learning microservices, PostgreSQL database, and Redis cache. Under-provisioning leads to slow thumbnail generation, failed face recognition jobs, and a degraded browsing experience.

Minimum viable configuration:

  • 2 CPU cores
  • 4 GB RAM
  • 40 GB NVMe or SSD for the OS, Docker images, and PostgreSQL data
  • Ubuntu 22.04 LTS or Debian 12 (both are well-tested in the Immich documentation)

Recommended for active households or small teams:

  • 4 CPU cores
  • 6–8 GB RAM
  • 100 GB+ primary storage, with additional block storage mounted for the photo library
  • Swap space enabled (2–4 GB) to absorb ML processing spikes

If your VPS provider offers attachable block storage volumes, mount the Immich library directory (./library in the default compose structure) to that volume. This separates your media from the OS disk, simplifies snapshots, and lets you scale storage independently. Providers like RamNode, Hetzner, and ServerSpan all support this pattern, and pairing a modest compute instance with a larger storage box is a cost-effective architecture commonly discussed in the self-hosting community.

Before running any Docker commands, ensure your system is patched and Docker Engine plus Docker Compose are installed. Create a dedicated directory structure:

mkdir -p /opt/immich
cd /opt/immich
mkdir -p ./library ./postgres

If you plan to migrate an existing Google Photos library, download your Google Takeout export beforehand. The community-recommended immich-go CLI tool handles the conversion and import process, preserving timestamps and album structures far more reliably than manual uploads.

Finally, decide on your access model. If the VPS is publicly reachable, you’ll need a reverse proxy (Caddy or Nginx) with TLS certificates to serve Immich over HTTPS. If you prefer keeping ports closed, Tailscale or Cloudflare Tunnels provide encrypted remote access without exposing services to the open internet. Choose based on your threat model and whether multiple users outside your home network need access.

Deployment Workflow and Post-Install Hardening

The actual Immich deployment is straightforward because the project maintains an official docker-compose.yml file. After cloning the repository or downloading the compose file into /opt/immich, you configure environment variables for the database password, upload location, and ML service endpoints, then run:

docker compose up -d

Docker pulls the required images, initializes PostgreSQL, starts the Redis cache, and launches the Immich server and machine learning containers. Within a few minutes, the web interface becomes accessible at http://your-server-ip:2283 (or your configured domain if a reverse proxy is in place).

From there, the setup flow mirrors any modern SaaS onboarding: create an admin account, configure storage paths, and adjust transcoding settings. If your VPS has limited CPU headroom, consider disabling or scheduling ML jobs during off-peak hours. Face recognition and object detection are computationally intensive; on a 2-core instance, processing thousands of existing photos can take hours and temporarily impact web responsiveness.

Security hardening should follow immediately:

  • Enforce HTTPS via Caddy (which handles automatic certificate provisioning) or Nginx with Let’s Encrypt
  • Restrict database access to localhost only; never expose PostgreSQL to the public interface
  • Enable fail2ban or your VPS provider’s firewall rules to limit SSH brute-force attempts
  • Configure automated backups of both the PostgreSQL dump and the ./library directory to a separate volume or offsite location
  • Set up monitoring (even a lightweight Uptime Kuma instance) to alert you if the Immich containers crash or disk usage exceeds 85 percent

For mobile integration, install the Immich app from the App Store or Google Play, point it to your server URL, and enable background uploads. You can restrict automatic backups to Wi-Fi only to conserve mobile data, or allow cellular uploads if your VPS connection and data cap permit. External libraries are also supported: if you have an existing folder of curated albums on the server, you can link it as a read-only external library within Immich, making those files browsable without duplicating them into the primary upload directory.

Operational Tradeoffs, Backup Strategy, and Long-Term Viability

Self-hosting Immich shifts responsibility from a cloud vendor to you. That tradeoff brings genuine benefits—no storage caps, no algorithmic scanning, predictable costs—but it also introduces operational obligations that deserve honest assessment.

Update discipline matters. Because Immich is in beta, skipping releases can lead to compatibility gaps between the database schema and newer container versions. Subscribe to the project’s GitHub releases or Discord announcements, test updates on a cloned instance when possible, and always run a PostgreSQL backup before applying upgrades. The upgrade guides published with each release are thorough, but they assume you have a recent snapshot to roll back to if something fails.

Backup redundancy is non-negotiable. A single VPS disk failure can wipe years of irreplaceable photos. The prudent approach combines three layers: automated PostgreSQL dumps stored on a separate volume, periodic rsync or rclone copies of the ./library directory to offsite storage (Backblaze B2, Wasabi, or even a secondary VPS), and a low-tech fallback like a nightly script that copies new uploads to a labeled USB drive kept in a physical safe. One community operator described this last layer as solving the “bus factor”—ensuring a non-technical partner can still access raw files even if the server is unreachable.

Performance scales with storage architecture. If your photo library grows beyond 500 GB, serving thumbnails and running search queries from a single NVMe drive remains smooth. However, if you opt for cheaper HDD-backed block storage for capacity, expect slower initial load times and longer ML processing windows. A hybrid approach—fast NVMe for the database and recent uploads, large HDD or object storage for cold archives—mirrors how professional hosting providers tier storage for performance and cost efficiency.

Cost comparison favors self-hosting at scale. Google Photos’ 2 TB plan runs approximately $100/year. A comparable VPS with 4 cores, 8 GB RAM, and 2 TB of attached block storage typically costs $20–$40/month depending on the provider, but that same server can host Immich alongside other workloads like a WordPress site, a Git server, or a monitoring stack. The break-even point arrives quickly if you’re already paying for cloud storage, and the marginal cost of adding family members or collaborators is zero.

Immich is not a turnkey appliance, and it shouldn’t be sold as one. It is a capable, rapidly evolving platform that rewards operators who treat their VPS like production infrastructure: monitored, backed up, and updated deliberately. For hosting buyers who already manage Linux servers, adding Immich to the roster is a logical extension of that skillset. For newcomers, the learning curve is manageable if you follow the documented compose workflow and resist the temptation to skip backups.

Key Takeaways: Pre-Launch Checklist

  • Verify your VPS meets minimum specs: 2 cores, 4 GB RAM, 40 GB+ SSD; 4 cores and 6–8 GB RAM recommended for multi-user setups
  • Install Docker Engine and Docker Compose on Ubuntu 22.04 LTS or Debian 12
  • Mount additional block storage for the ./library directory if your photo collection exceeds 100 GB
  • Deploy via the official docker-compose.yml, then immediately configure HTTPS through Caddy or Nginx
  • Import existing libraries using immich-go from a Google Takeout export; do not attempt manual bulk uploads
  • Enable automated PostgreSQL backups and offsite replication of the photo library before inviting other users
  • Schedule ML processing during low-traffic hours on smaller instances to avoid web interface slowdowns
  • Subscribe to Immich release notes and test updates on a staging clone before applying to production

Conclusion

Immich on a VPS delivers what the cloud used to promise: seamless photo backup, intelligent search, and cross-device access without surrendering your data to a corporate data lake. The platform’s feature set now genuinely competes with Google Photos, and the self-hosting model eliminates arbitrary storage limits while keeping monthly costs predictable. The tradeoff is operational responsibility—you manage updates, backups, and security hardening yourself. For anyone already running a Linux VPS for web hosting, WordPress, or application workloads, adding Immich is a practical consolidation move. Size your instance correctly, enforce a disciplined backup routine, and treat updates with the same care you’d apply to any production service. Do that, and you’ll have a private, performant photo management system that scales with your needs instead of your subscription tier.

Leave a Reply

Your email address will not be published. Required fields are marked *