Halo Sobat Online! Pernah tidak, saat sedang asyik memotret, tiba-tiba Google Photos mengabari kuota penyimpanan sudah penuh dan menawarkan langganan bulanan? Kalau iya, kamu tidak sendiri. Kabar baiknya, sekarang ada jalan yang jauh lebih tenang: self-host Immich di VPS. Immich adalah aplikasi open-source peniru pengalaman Google Photos — backup otomatis dari HP, album, pencarian wajah, sampai peta lokasi foto — tetapi seluruh file tersimpan di server milikmu sendiri. Tidak ada kuota bulanan, tidak ada tagihan langganan, dan tidak ada pihak lain yang memegang kenangan keluargamu.
Di artikel ini kita akan memasang Immich v3 di VPS memakai Docker Compose, menaikkannya ke HTTPS, mengaktifkan backup otomatis dari HP, sampai menyiapkan backup database yang sering dilupakan orang. Semua langkahnya bisa dikerjakan sambil ngopi.
Apa Itu Immich, dan Kenapa Banyak Orang Pindah ke Sana?
Immich adalah server foto dan video self-hosted yang dikembangkan komunitas dan didanai lembaga nirlaba FUTO. Proyek ini sudah melewati masa beta: versi v3.0.0 dirilis Juli 2026, dan saat artikel ini ditulis versi stabil terakhirnya adalah v3.2.4. Yang kamu dapat kurang lebih seperti ini:
- Backup otomatis dari aplikasi Android dan iOS, layaknya Google Photos.
- Deteksi wajah dan pengelompokan orang, plus pencarian pintar berbasis teks (“foto pantai bulan lalu”).
- Album bersama, peta lokasi, arsip, hingga editor non-destruktif.
- Semua tersimpan di server sendiri, jadi tidak ada file yang “dititipkan” ke perusahaan lain.
Bedanya dengan Nextcloud? Nextcloud itu lemari arsip serba bisa (dokumen, kalender, kontak), sedangkan Immich khusus galeri. Kalau kebutuhanmu memang mengurus ribuan foto dan video keluarga, Immich jauh lebih rapi dan cepat.
Spesifikasi VPS: Ini Bagian yang Sering Diremehkan
Sebelum menyewa VPS, cek dulu kebutuhan resminya. Immich bukan aplikasi ringan, karena di dalamnya ada database Postgres, Redis, dan layanan machine learning:
- RAM minimum 6 GB, rekomendasi 8 GB. Kalau VPS-mu hanya 4 GB, Immich masih bisa jalan dengan fitur machine learning dimatikan.
- CPU minimum 2 core, rekomendasi 4 core.
- Penyimpanan: pembuatan thumbnail dan transcoding video menambah ukuran galeri sekitar 10-20%, dan database Postgres sendiri biasanya makan 1-3 GB. Database wajib di SSD lokal, jangan ditaruh di network share (NFS/SMB) karena bisa membuat koneksi tidak stabil.
- Docker Compose v2 (
docker compose, pakai spasi). Versi lawasdocker-composesudah tidak didukung. - Catatan penting bagi pengguna Proxmox: menjalankan Docker di dalam LXC tidak direkomendasikan oleh tim Immich. Pakai VM penuh kalau bisa.
Langkah 1 — Siapkan Docker dan Docker Compose
Kalau VPS-mu belum punya Docker, pasang dengan skrip resmi Docker:
curl -fsSL https://get.docker.com | sh
docker compose version
Kalau perintah terakhir menampilkan versi (misalnya v2.x), berarti siap lanjut. Kalau muncul error, biasanya Docker belum terpasang atau kamu masih memakai Compose v1.
Langkah 2 — Unduh File Resmi Immich
Sesuai dokumentasi resmi, Immich tidak diinstal lewat paket, melainkan lewat dua file: docker-compose.yml dan .env.
mkdir ~/immich-app && cd ~/immich-app
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
sudo mkdir -p /srv/immich/files /srv/immich/postgres
Dua perintah wget itu selalu mengambil berkas dari rilis terbaru, jadi kamu tidak perlu mengejar versi satu per satu.
Langkah 3 — Sunting File .env
Buka .env dengan editor favoritmu (nano .env) dan sesuaikan lima baris berikut:
UPLOAD_LOCATION=/srv/immich/files
DB_DATA_LOCATION=/srv/immich/postgres
TZ=Asia/Jakarta
IMMICH_VERSION=v3
DB_PASSWORD=KataSandiAcak123
Arti tiap barisnya:
- UPLOAD_LOCATION — folder tempat foto dan video disimpan. Ini yang paling cepat membengkak, jadi arahkan ke disk dengan ruang paling lega.
- DB_DATA_LOCATION — folder database Postgres. Wajib disk lokal.
- TZ — timezone, supaya tanggal dan jam foto benar. Untuk Indonesia pakai
Asia/Jakarta. - IMMICH_VERSION — biarkan
v3. Dengan tag mayor seperti ini kamu otomatis mendapat patch keamanan terbaru di seri v3 tanpa harus mengejar nomor versi. - DB_PASSWORD — ganti dengan password acak. Gunakan hanya huruf dan angka (
A-Za-z0-9), tanpa spasi atau karakter khusus, supaya Docker tidak salah membaca. Butuh generator cepat?apt install pwgenlalu jalankanpwgen -s 24 1.
Langkah 4 — Jalankan Immich Pertama Kali
docker compose up -d
docker compose ps
Proses pertama biasanya butuh beberapa menit karena harus mengunduh image. Setelah semua layanan berstatus running, buka http://IP-VPS:2283 di browser. Layar pertama akan meminta kamu membuat akun, dan akun pertama otomatis jadi admin.
Sampai titik ini Immich sudah hidup, tetapi masih diakses lewat IP dan tanpa enkripsi. Jangan biarkan begini kalau VPS-nya tersambung internet — lanjut ke langkah berikutnya.
Langkah 5 — Pasang HTTPS dengan Nginx Reverse Proxy
Immich berjalan di port 2283. Tugas reverse proxy adalah meneruskan domain HTTPS kamu ke port itu. Contoh konfigurasi resmi Immich untuk Nginx:
server {
server_name foto.domainmu.com;
client_max_body_size 50000M;
proxy_request_buffering off;
client_body_buffer_size 1024k;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_redirect off;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
send_timeout 600s;
location / {
proxy_pass http://127.0.0.1:2283;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Empat hal yang jangan sampai salah:
client_max_body_sizeharus besar. Tanpa ini, upload video akan ditolak Nginx.proxy_request_buffering offmembuat upload tidak ditahan dulu di Nginx — lebih cepat dan menghindari kehabisan memori.- Timeout 600s perlu karena upload video besar butuh waktu lama.
- Upgrade websocket wajib, karena Immich memakai websocket untuk notifikasi realtime.
Sertifikat gratisnya bisa dipasang dengan Certbot — langkah lengkapnya ada di artikel Yuk, Pasang Nginx Reverse Proxy di VPS Plus HTTPS Gratis Pakai Certbot. Kalau memakai challenge HTTP-01 dari Let’s Encrypt, pastikan alamat /.well-known/immich juga diarahkan ke Immich. Kalau tidak, aplikasi mobile sering gagal terhubung meski webnya normal.
Setelah HTTPS berjalan, tutup akses langsung ke port 2283 dari internet (misalnya hapus aturan ufw allow 2283) dan sisakan hanya port 80 dan 443.
Langkah 6 — Aktifkan Backup Otomatis dari HP
Inilah bagian yang bikin Immich terasa seperti Google Photos:
- Unduh aplikasi Immich dari Play Store, App Store, atau F-Droid.
- Masukkan URL server (domain HTTPS tadi) lalu login dengan akun yang tadi dibuat.
- Buka Settings → Backup, aktifkan Backup, pilih album yang mau diunggah, dan batasi agar hanya berjalan lewat Wi-Fi.
- Beri izin akses foto/video, lalu tekan Start backup.
Satu catatan kompatibilitas dari dokumentasi resmi: aplikasi mobile biasanya cocok dengan versi mayor saat ini dan sebelumnya, tetapi server hanya cocok dengan versi mayor yang sama. Jadi saat mau update, naikkan versi aplikasi dulu, baru servernya.
Langkah 7 — Backup: Bagian yang Paling Sering Dilupakan
Ini fakta penting yang membuat banyak orang kehilangan koleksi: Immich tidak memindai folder library-mu. Ia menyimpan daftar path file dan seluruh metadata di database Postgres. Artinya, kalau databasenya hilang, galeri bisa dianggap kosong walau file fisiknya masih ada di disk.
- Immich otomatis membuat dump database tiap hari pukul 02.00 dengan retensi 14 backup, tersimpan di
UPLOAD_LOCATION/backups. Jadwal dan retensinya bisa diubah di Administration → Settings → Backup. - Ingin memicu manual? Buka Administration → Job Queues, klik Create job, pilih Create Database Dump, lalu Confirm.
- Yang wajib ikut dicadangkan: seluruh isi
UPLOAD_LOCATION(folderupload/,profile/, danlibrary/) plus database diDB_DATA_LOCATION. - Cara paling aman: hentikan dulu container
immich-server, baru ambil backup. Kalau harus jalan terus, urutannya database dulu, file menyusul — supaya skenario terburuknya hanya ada file yang belum terdaftar, bukan database yang menunjuk file yang tidak ada.
Untuk dump manual dari terminal:
docker exec -t immich_postgres pg_dump --clean --if-exists \
--dbname=immich --username=postgres | gzip > ~/immich-backup.sql.gz
Simpan hasil backup di luar VPS (misalnya kirim ke object storage atau cloud lewat rclone). Backup yang menempel di server yang sama bukan backup, melainkan sekadar harapan.
Cara Update Immich dengan Aman
cd ~/immich-app
docker compose pull && docker compose up -d
docker image prune
Tiga pengingat: baca release notes dulu, terutama kalau naik versi mayor — v3 misalnya menghapus dukungan ekstensi lama pgvecto.rs dan menggantinya dengan VectorChord. Jangan pernah downgrade ke versi lebih lama, karena tidak didukung. Dan karena kita memakai tag v3, patch keamanan terbaru akan langsung ikut tertarik — contoh nyatanya, bug kontrol akses pada album sharing ditambal beberapa hari setelah rilis mayor.
Tips: VPS 4 GB Juga Bisa, Asal Mau Berkompromi
Kalau RAM VPS-mu cuma 4 GB, matikan layanan machine learning dengan menambahkan baris berikut di .env lalu jalankan docker compose up -d:
IMMICH_MACHINE_LEARNING_ENABLED=false
Yang hilang cuma pencarian pintar dan pengelompokan wajah; upload, album, dan backup otomatis tetap jalan normal. Lumayan, kan?
Kesimpulan
Dengan satu VPS dan satu file docker-compose.yml, Sobat Online sekarang punya Google Photos pribadi yang tidak menagih bulanan: backup otomatis dari HP, album keluarga, sampai pencarian pintar, semuanya di server sendiri. Kuncinya cuma tiga — siapkan RAM yang cukup, jangan lewatkan backup database, dan selalu rajin update supaya patch keamanannya masuk. Selamat mencoba, dan semoga koleksi fotomu makin aman di rumah sendiri!

