−25%

on annual Windows plans, until 31 Oct. See plans

EQVPS
Get started

Self-host Immich on a VPS: your own private Google Photos

Sep 3, 2026 · 2 min read · EQVPS Team

Phone galleries fill up, and the easy fix — a cloud that auto-backs-up everything — means a third party now holds every photo you've ever taken and quietly runs AI over them. Immich gives you the same experience — auto-backup, timeline, albums, face and object search — on a server you control. Run it on a VPS with Docker and pay for the server in crypto, no KYC.

What Immich needs

  • A dedicated IPv4, a domain and HTTPS. The mobile app connects to https://photos.yourdomain.com, so you need a domain, valid TLS and inbound 443 — a dedicated-IP plan. NAT plans don't take inbound. A Medium plan is a sensible start.
  • Disk for the library. Photos and videos add up fast — pick a plan whose NVMe fits your collection with headroom.
  • RAM for machine-learning. Face/object recognition and smart search want memory; more RAM = faster indexing on big libraries.

Set it up (Ubuntu 24.04, Docker)

# docker-compose.yml — Immich (server + machine-learning + Redis + Postgres/pgvecto)
services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    restart: always
    ports: ["127.0.0.1:2283:2283"]
    volumes: ["/srv/immich/library:/usr/src/app/upload"]
    env_file: [.env]
    depends_on: [redis, database]
  immich-ml:
    image: ghcr.io/immich-app/immich-machine-learning:release
    restart: always
    volumes: ["ml-cache:/cache"]
    env_file: [.env]
  redis:
    image: redis:alpine
    restart: always
  database:
    image: tensorchord/pgvecto-rs:pg16-v0.2.0
    restart: always
    environment:
      POSTGRES_USER: immich
      POSTGRES_PASSWORD: change-me-strong
      POSTGRES_DB: immich
    volumes: ["/srv/immich/db:/var/lib/postgresql/data"]
volumes: { ml-cache: {} }

Put a TLS reverse proxy in front:

# TLS + reverse proxy (dedicated IPv4 + domain + inbound 443)
apt install -y caddy
echo 'photos.yourdomain.com { reverse_proxy 127.0.0.1:2283 }' > /etc/caddy/Caddyfile
systemctl restart caddy && ufw allow 80,443/tcp

Open https://photos.yourdomain.com, create the admin user, install the mobile app and point it at your server — your camera roll now backs up to storage you own.

Make it yours

  • Local AI: face and object recognition run in the ML container on your VPS — nothing leaves the box.
  • Auto-backup from iOS/Android, background upload, and originals kept byte-for-byte.
  • Albums, sharing links, timeline and map — the features you expect, self-hosted.
  • Keep Postgres and Redis on localhost; expose only 443.

Why EQVPS for Immich

  • Dedicated IPv4 from $8/mo, domain + HTTPS friendly, all ports, self-service rDNS.
  • EU locations (Germany, Finland) — clean routes, real data-protection law.
  • No KYC, crypto payment. Email to register, USDC/USDT to pay — fitting for a photo library you actually own.
  • Root in ~60 seconds, NVMe. Bring up the stack, add Caddy, and your private photo cloud is live.

Self-host Nextcloud (files, calendar) → · Anonymous VPS hosting explained →

FAQ

Why self-host Immich instead of Google Photos?

Immich gives you phone auto-backup, timeline, albums and AI face/object search — but the photos and the machine-learning run on a server you control, not a cloud that scans your library or changes its free tier. You set the storage, keep originals untouched, and can pay for the server in crypto without ID.

What plan and resources does Immich need?

Two things matter: disk for the photo/video library, and RAM for the machine-learning (face and object recognition). A Medium plan with a dedicated IPv4 is a good start; scale disk to your library and add RAM if you enable smart search on a large collection. You need a dedicated IP because the mobile app reaches it over inbound HTTPS on 443.

Do I need a dedicated IP and a domain?

Yes. The Immich mobile app connects to https://photos.yourdomain.com, which needs a domain, valid TLS and inbound 443 — so a dedicated-IPv4 plan. Our NAT plans don't accept inbound web traffic. A reverse proxy (Caddy) gives you automatic HTTPS.

Does the AI search send my photos anywhere?

No. Immich's machine-learning runs locally in its own container on your VPS — face and object recognition happen on your server, nothing is sent to a third-party API. TLS protects uploads in transit and you hold the data.

Do you ask for ID or a card?

No. Register with an email, pay in USDC or USDT. No documents, no card, no KYC.

Comments

No comments yet. Be the first.

Leave a comment

Comments are moderated before they appear.