Media experimental 4 services 6.3 GiB RAM 120 GB disk

Immich

Self-hosted photos and video - a Google Photos alternative with real mobile apps, face and semantic search.

One-click deploy, from $49/mo on a Miget plan.

Immich is the self-hosted photo and video manager that finally feels like Google Photos: first-class iOS and Android apps, automatic phone backup, face recognition, smart and semantic search, albums, shared libraries, and a timeline - all on infrastructure you own.

It is a four-service stack: the server (port 5000), a machine-learning worker for face detection and CLIP search, a Postgres built with the VectorChord vector extension (Immich’s own image - this is why it does not use Miget’s managed Postgres), and Valkey for the job queue. Photos live on a filesystem volume, not object storage, because the library layout and thumbnails need a real filesystem.

It is flagged experimental for two honest reasons: it is heavy (~6-8 GB, the ML worker alone wants ~3 GB while loading models), and Immich ships fast-moving releases where major versions sometimes need a database migration. Pin upgrades and read the release notes. For a permanent home for your photos, that care is worth it.

#what you get

  • Native iOS and Android apps with automatic backup
  • Face recognition and CLIP-powered semantic search
  • Albums, shared libraries, timeline, map view
  • VectorChord Postgres + ML worker (self-contained, not managed pg)
  • Library on a filesystem volume - your photos, your disk
  • AGPL-3.0; four private/public services

#topology

ServiceRolePublic
immich-serverAPI + web app (:5000)yes
immich-machine-learningface + semantic search modelsno (private)
database / redisVectorChord Postgres / Valkeyno (private)

#miget sizing

// this stack needs

6.3 GiB RAM · 120 GB disk · 4 services

Give the stack at least 8 GB of RAM - the ML worker wants ~3 GB loading models, the server ~2 GB. The 100 GB library volume is the variable; resize it to your collection. Keep replicas at 1 (single-writer library).

Hobby - recommended fit

$49/mo

4 vCPU · 8 GiB · 160 GiB disk

Headroom for your own apps: 16 GiB at $97/mo

Professional - production

$337/mo

16 vCPU · 32 GiB · 200 GiB disk

Dedicated resources, production SLOs - plan details

One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.

#vs. the managed service

What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.

ServicePlanMonthlyWhat you get
Immich on Miget 8 GiB plan$49this whole stack, flat - no usage meters, and room left for your own apps
Google One2 TB~$10$9.99/mo - rented space, library mined
iCloud+2 TB~$10$9.99/mo - rented space

Cloud photo plans rent storage by the month; Immich is your photos on your own disk, exportable.

#vs. other PaaS

Estimated monthly cost of running this exact stack (6.3 GiB RAM, 120 GB disk, 4 containers) elsewhere, from published June 2026 rates.

PlatformEst. monthlyNotes
Miget $49 flat compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan
Heroku ~$313 no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown
Render ~$108 per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service
Railway ~$81 usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top
DO App Platform ~$80 no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here)
Fly.io ~$55 cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra

Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.

#deploy it

On Miget

  1. Create a Compose Stack in app.miget.com pointing at the templates repository
  2. Set the stack path to immich
  3. Set the required variable:
    • DB_PASSWORD, shared by the server and the database (random string)
  4. Deploy. Miget layers compose.miget.yaml (RAM, privacy, volumes, managed services) automatically

Locally first?

Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:

git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/immich
docker compose up -d

Same files, same behavior. The template README covers connection strings and scaling notes.

#faq

What does this save vs Google One or iCloud+?

Google One is $9.99/month for 2 TB and iCloud+ is $9.99 for 2 TB - both rent space and mine your library. Immich is one plan plus a volume sized to your photos, with your whole history entirely yours and exportable.

Why a special database instead of managed Postgres?

Immich requires Postgres with a vector extension (VectorChord) for face and semantic search, which is not a standard managed extension. So this template runs Immich’s own database image as a private sidecar with its own volume, rather than the managed Postgres other apps use.

Why is it experimental?

It is a heavy four-service stack and Immich releases move quickly - major versions can need a database migration. Everything is wired and validated, but you should pin versions and read release notes before upgrading, which is why it is not marked stable.

Ship Immich today

One compose stack, 6.3 GiB of RAM, from $49/month flat, and it runs on your laptop with the same files.