24 Agustus 2026
Immich: Mengelola Foto Tanpa Menyerah ke Cloud
Mengelola perpustakaan foto keluarga di server sendiri ala galeri cloud modern: pencadangan otomatis dari HP, pencarian AI lokal, plus kelebihan, keterbatasan nyata, dan strategi backup database yang perlu disiapkan.
Foto keluarga menumpuk di HP lalu masuk galeri cloud: kuota gratis makin sempit, langganan makin mahal, semua foto dan metadata tersimpan di server pihak ketiga. Immich menjawab dua hal sekaligus — perpustakaan di mesin sendiri dengan fitur mendekati galeri cloud modern. Ini catatan evaluasi jujur.
Mengapa Menjauh dari Galeri Cloud
Masalah utama galeri cloud bukan hanya biaya, tapi ke mana data pergi. Immich open source berlisensi AGPL-3.0, aktif dikembangkan, dan resmi dijuluki high performance self-hosted photo and video management solution:
- Pencarian AI & wajah: Foto dikelompokkan otomatis berdasarkan pengenalan wajah dan kata kunci objek, diproses di server lokal.
- Auto-backup mobile: Aplikasi iOS dan Android mencadangkan foto dari album terpilih secara otomatis di latar belakang.
- Performa tinggi: Arsitektur microservice dirancang menangani puluhan ribu berkas media tanpa lag.
- Tanpa langganan: Biaya pindah ke storage sendiri; tidak ada kuota bulanan yang menyusut.
Arsitektur Empat Container
Immich berjalan sebagai empat container yang saling melengkapi:
immich-server: Core API server dan antarmuka web (port2283).immich-machine-learning: Service Python untuk ekstraksi fitur AI, pencarian vektor, dan pengenalan wajah; model disimpan di volumemodel-cache.immich_postgres: PostgreSQL dengan ekstensi pgvector dan VectorChord untuk metadata foto dan pencarian kontekstual berbasis model CLIP.immich_redis: Queue dan cache (Valkey/Redis) untuk antrean pemrosesan.
Alur: upload ditulis ke direktori library, job masuk antrean Redis, hasil ekstraksi disimpan ke PostgreSQL. Immich tidak men-scan folder library, jadi metadata database adalah sumber kebenaran utama.
Deployment dengan Docker Compose
Compose di bawah cukup untuk mulai; image database resmi berisi PostgreSQL 14 dengan VectorChord dan pgvector. Template resmi memakai berkas .env untuk UPLOAD_LOCATION, DB_DATA_LOCATION, dan DB_PASSWORD; versi ringkas ini memuat nilainya langsung:
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:release
volumes:
- ./library:/data
ports:
- "2283:2283"
depends_on:
- redis
- database
restart: always
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:release
volumes:
- model-cache:/cache
restart: always
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
environment:
POSTGRES_PASSWORD: ganti_password_db
POSTGRES_USER: postgres
POSTGRES_DB: immich
volumes:
- ./postgres:/var/lib/postgresql/data
restart: always
volumes:
model-cache:
Simpan compose, ganti password placeholder, jalankan docker compose up -d, buka port 2283, buat akun admin pertama. Rilis cepat, jadi pin versi lewat IMMICH_VERSION di .env.
Keamanan dan Privasi
- Pengenalan wajah, pencarian AI, dan metadata lokasi diproses lokal di server sendiri; tidak ada foto dikirim ke API pihak ketiga.
- Port
2283sebaiknya tidak langsung terekspos ke internet; akses dari luar rumah lewat reverse proxy HTTPS atau Tailscale. - Ganti password PostgreSQL dari placeholder dan jangan pakai ulang credential service lain.
Kelebihan Spesifik yang Terasa
- Auto-backup HP: Foto baru dari album terpilih terunggah otomatis saat aplikasi dibuka dan berkala di latar belakang.
- Smart search tanpa tag manual: Pencarian CLIP menerima kata kunci bebas (“pantai saat sunset”) tanpa metadata.
- Pengelompokan wajah: Wajah dikelompokkan, diberi nama, dicari per orang, dan cluster yang salah bisa digabung.
- Open source: Kontrol penuh atas kode, tanpa lock-in penyedia.
Kontra dan Keterbatasan
- Pemrosesan AI makan resource: Embedding dan deteksi wajah jalan di background; indexing awal ribuan foto terasa di mesin kecil. Akselerasi GPU bisa lewat image tag khusus (
cuda,rocm,openvino, dst.) tapi butuh setup tambahan. - Database adalah titik rawan: Immich tidak men-scan folder library; metadata dan path tersimpan di PostgreSQL. Database hilang = galeri harus dibangun ulang; backup database wajib, bukan opsional.
- Storage lebih besar dari berkas asli: Di
UPLOAD_LOCATION, Immich membuat thumbnail, video hasil transcode, dan file profil di samping library. - Rilis cepat: Fitur baru datang cepat, tapi upgrade perlu diperhatikan; pin versi dan baca release notes.
- Satu mesin = satu failure domain: Salinan di mesin sama melindungi dari kehilangan file, bukan dari kehilangan seluruh mesin.
Backup dan Disaster Recovery
Dua aset dicadangkan bersamaan: folder media (UPLOAD_LOCATION) dan database PostgreSQL — penyimpan metadata album, path berkas, dan cluster wajah. Tanpa database, berkas utuh tapi struktur galeri hilang.
Immich punya backup database otomatis: dump .sql.gz di UPLOAD_LOCATION/backups, jadwal dan retensi diatur dari UI (default harian, retensi belasan backup), restore via web di bagian Maintenance atau saat onboarding. Dump hanya metadata, bukan foto atau video — salinan berkas media tetap dibuat sendiri. Idealnya kedua salinan off-host mengikuti pola 3-2-1.
Kesimpulan
Immich menutup dua celah galeri cloud: kendali data dan biaya. Di satu mesin dengan storage terbatas, siapkan diri untuk resource pemrosesan AI dan disiplin backup; tooling sudah disediakan, tapi salinan off-host tetap tanggung jawab pemilik. Jika siap, pengalamannya mendekati galeri cloud modern tanpa menyerahkan foto ke pihak ketiga.
