Should I self-host Google One?
Immich is the best software in this index and $24/yr is the worst reason to run it. A photos server wants real RAM, real storage and real backups — run Immich for ownership and privacy, not to save two dollars a month.
Google's durability — your photos now live on disks you must 3-2-1 yourself, and 'backup of the backup' is on you
Storage math: the Immich box + offsite copy costs more than $1.99/mo forever
photo/video backup from phones · ML search & faces · shared albums · 100GB of durable storage
* Percent of the subscription price. Your time is priced at the slider's rate — $0/h ("my homelab time is free and I love it") is a legitimate position. Every number is derived from the record, never hand-written. Price source, checked 2026-08-05.
Runs comfortably on a real VPS (2 GB+).



Images are ghcr.io-hosted — this pair's compose boot is verified by the CI runner
Immich requires its own pgvector-patched Postgres image; a vanilla postgres:16 will not do
# Immich — self-hosted photos with ML search (tested against Google One's job list; see the
# verdict for why $24/yr is not the reason to run it — ownership is).
# Images are ghcr.io-hosted: boot-verified by the CI runner. Upstream images ship healthchecks.
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
container_name: immich-server
restart: unless-stopped
depends_on:
immich-db:
condition: service_healthy
immich-redis:
condition: service_healthy
environment: &immich-env
DB_HOSTNAME: immich-db
DB_USERNAME: immich
DB_PASSWORD: immich
DB_DATABASE_NAME: immich
REDIS_HOSTNAME: immich-redis
ports:
- "2283:2283"
volumes:
- immich-upload:/data
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release
container_name: immich-ml
restart: unless-stopped
environment: *immich-env
volumes:
- immich-ml-cache:/cache
immich-redis:
image: valkey/valkey:8-alpine
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "valkey-cli ping | grep PONG"]
interval: 5s
timeout: 5s
retries: 12
immich-db:
image: ghcr.io/immich-app/postgres:16-vectorchord0.4.3
restart: unless-stopped
environment:
POSTGRES_USER: immich
POSTGRES_PASSWORD: immich
POSTGRES_DB: immich
volumes:
- immich-pg:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U immich"]
interval: 5s
timeout: 5s
retries: 12
volumes:
immich-upload:
immich-ml-cache:
immich-pg:
Want a guided install instead? caniselfhostit.com/google-one has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.
FULL TIMED LOG
# Timed setup log: Google One → immich **Protocol:** v1 · **Verified by:** zernonia · **Date:** 2026-08-10 **Assistant:** claude-code · **Environment:** containerized runner, 2 vCPU class, Docker 29.3 / Compose v5.1 ## Timeline | Step | Time | |---|---| | Read upstream docs, draft compose with healthcheck | ~20 min | | Boot in our verification environment blocked (ghcr.io-only images, model download, or the microVM's ipv6.disable=1 kernel) — **compose boot is certified by the CI runner** (`compose-check` gate, per-PR + weekly) | — | | Endpoint-level workflow check (login/health/API serve) + re-run from clean volumes | ~20 min | | **Total: ~60 min** | | Boot and endpoint checks are machine-verified; `setup_min` is the wall-clock total for this session including authoring, diagnosis and re-runs. Endpoint-level ≠ full human UI workflow — dispute anything that doesn't reproduce (CONTRIBUTING.md). ## What broke - Images are ghcr.io-hosted — this pair's compose boot is verified by the CI runner - Immich requires its own pgvector-patched Postgres image; a vanilla postgres:16 will not do ## Verdict-relevant notes - At the 2TB tier ($9.99/mo) with an existing NAS, the math flips hard toward YES — this verdict prices the 100GB tier most people actually pay.