Tropic Host

Immich di VPS: Siapkan Cloud Sendiri untuk Foto dan Video

6 min dibaca
Tropic
Immich di VPS: Siapkan Cloud Sendiri untuk Foto dan Video

Immich: Menyiapkan Cloud Sendiri untuk Foto dan Video di VPS

Immich adalah layanan self-hosted untuk menyimpan dan mengunggah foto serta video secara otomatis. Layanan ini menyediakan aplikasi seluler, antarmuka web, album, pencarian cerdas, dan pengenalan wajah, sementara perpustakaan tetap berada di server pilihan Anda.

Di bawah ini, kita akan membahas persyaratan Immich, pemasangan di Ubuntu dengan Docker Compose, penyiapan HTTPS, koneksi ponsel, dan cadangan eksternal.

Immich dalam Enam Langkah

  1. Buat Linux VPS dengan RAM dan ruang disk yang cukup.
  2. Arahkan subdomain, seperti photos.example.com, ke alamat IP server.
  3. Pasang Docker dan unduh konfigurasi resmi Immich.
  4. Tentukan jalur perpustakaan media dan database, lalu jalankan container.
  5. Tutup port internal dan aktifkan HTTPS.
  6. Pasang aplikasi seluler dan konfigurasikan cadangan eksternal.

Apa Itu Immich?

Immich adalah aplikasi sumber terbuka untuk mengelola perpustakaan foto dan video sendiri. Foto muncul di linimasa, dapat dikelompokkan ke dalam album, ditemukan melalui pencarian, dan diunggah otomatis dari ponsel ke server.

Perbedaan utama dari layanan cloud foto biasa adalah kendali atas sisi server. File disimpan di VPS atau server rumah Anda, tetapi pemilik bertanggung jawab atas ruang kosong, pembaruan, keamanan, dan cadangan.

ParameterLayanan foto cloudImmich
Lokasi penyimpanan fileDi infrastruktur penyediaDi server Anda
PemeliharaanDitangani penyediaDitangani pemilik
BiayaPaket berdasarkan penyimpananVPS, ruang disk, dan cadangan

Immich bukan cadangan dengan sendirinya. Jika foto hanya ada di satu VPS, kerusakan disk atau penghapusan tidak sengaja tetap dapat menghancurkan arsip.

Fitur Utama Immich

  • Unggahan otomatis. Aplikasi Android dan iOS mengunggah foto serta video dari album yang dipilih. Wi-Fi digunakan secara default, dan file yang sudah ada dilewati berdasarkan checksum.
  • Pencarian cerdas. Layanan dapat mencari berdasarkan orang, lokasi, tanggal, kamera, teks dalam gambar, dan deskripsi konten. Wajah dikelompokkan dan kemudian dapat diberi nama.
  • Album dan berbagi. Immich mendukung banyak pengguna, album bersama, berbagi dengan pasangan, serta tautan publik dengan kata sandi dan tanggal kedaluwarsa.
  • Peta dan metadata. Immich membaca data EXIF, menampilkan tempat foto diambil, membuat memories, serta mendukung favorit, arsip, dan perpustakaan eksternal.

Machine learning memberikan beban terbesar pada CPU dan RAM selama impor awal. Setelah thumbnail dan indeks dibuat, penggunaan sumber daya sehari-hari biasanya lebih rendah.

Persyaratan Server Immich

Persyaratan resmi untuk versi saat ini adalah:

  • sistem Linux atau Unix-like 64-bit;
  • minimal 2 core CPU, dengan 4 core sebagai rekomendasi;
  • minimal 6 GB RAM, dengan 8 GB sebagai rekomendasi;
  • Docker Engine dengan plugin docker compose;
  • SSD lokal untuk database PostgreSQL;
  • ruang untuk file asli, thumbnail, dan video hasil transkode.

Immich dapat berjalan di server dengan RAM 4 GB jika fitur machine learning dinonaktifkan. Untuk pengenalan wajah dan pencarian cerdas, lebih baik memilih 8 GB sejak awal.

Thumbnail dan file hasil transkode menambah ukuran perpustakaan media rata-rata 10–20%. Untuk arsip 200 GB, sediakan setidaknya 240–260 GB. Direktori database DB_DATA_LOCATION sebaiknya disimpan di SSD lokal, bukan drive jaringan.

Konfigurasi awal yang praktis adalah 4 vCPU, RAM 8 GB, Ubuntu 24.04 LTS, dan SSD dengan kapasitas 20–30% lebih besar daripada perpustakaan sumber. Kartu grafis khusus tidak diperlukan, meskipun dapat mempercepat pemrosesan arsip besar.

Cara Memasang Immich di VPS

Contoh ini menggunakan Ubuntu 24.04 dan subdomain photos.example.com.

1. Konfigurasikan DNS dan Siapkan Ubuntu

Buat catatan DNS A yang mengarah ke alamat IPv4 VPS. Kemudian hubungkan melalui SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Jangan menutup sesi SSH saat ini sampai Anda memastikan koneksi baru dapat digunakan.

2. Pasang Docker dan Docker Compose

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

Gunakan perintah docker compose secara khusus: perintah docker-compose yang sudah usang tidak lagi didukung proyek.

3. Unduh dan Konfigurasikan Immich

mkdir -p /opt/immich /srv/immich-data
cd /opt/immich

curl -L -o docker-compose.yml \
  https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
  https://github.com/immich-app/immich/releases/latest/download/example.env

Buka file tersebut:

nano /opt/immich/.env

Ubah parameter utama:

UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORD

Masukkan zona waktu Anda sendiri. Kata sandi PostgreSQL harus berisi huruf Latin dan angka; perintah openssl rand -hex 24 akan menghasilkan nilai acak. Biarkan baris lainnya seperti pada file example.env saat ini.

4. Tutup Port Internal dan Jalankan Container

Di docker-compose.yml, cari port untuk layanan immich-server:

ports:
  - '2283:2283'

Ganti menjadi:

ports:
  - '127.0.0.1:2283:2283'

Kini port hanya dapat diakses dari VPS itu sendiri. Jalankan layanan:

cd /opt/immich
docker compose up -d
docker compose ps

Untuk diagnostik, gunakan docker compose logs --tail=200.

5. Aktifkan HTTPS dengan Caddy

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
    reverse_proxy 127.0.0.1:2283
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

Caddy akan meminta sertifikat secara otomatis jika DNS mengarah ke VPS dan port 80 serta 443 dapat diakses. Immich harus berjalan di root domain atau subdomain; alamat seperti example.com/immich tidak didukung.

6. Buat Administrator dan Hubungkan Ponsel

Buka https://photos.example.com. Pengguna pertama yang mendaftar menjadi administrator dan dapat membuat akun tambahan.

Pasang Immich dari App Store atau Google Play. Pada layar masuk, masukkan alamat tanpa /api:

https://photos.example.com

Pilih album dan aktifkan cadangan. Impor pertama mungkin membutuhkan waktu: server membuat thumbnail, mengenali wajah, mengindeks data pencarian, dan memproses video.

Memperbarui Immich

Sebelum memperbarui, baca catatan rilis, terutama saat berpindah ke versi mayor baru:

cd /opt/immich
docker compose pull
docker compose up -d
docker image prune

Perbarui aplikasi seluler terlebih dahulu, kemudian server. Mengembalikan database ke versi yang lebih lama mungkin tidak didukung kecuali ada instruksi terpisah.

Mencadangkan Immich

Immich otomatis membuat dump PostgreSQL, tetapi dump tersebut hanya berisi database dan metadata, bukan foto serta video. Untuk pemulihan lengkap, simpan:

  • seluruh direktori /srv/immich-data;
  • /opt/immich/.env dan docker-compose.yml;
  • konfigurasi Caddy.

Salinan di VPS yang sama tidak melindungi dari kerusakan disk atau penghapusan server. Kirim data ke server, NAS, atau object storage terpisah dan ikuti strategi cadangan 3-2-1. Uji pemulihan secara berkala, bukan hanya memeriksa bahwa file cadangan ada.

VPS Mana yang Dipilih untuk Immich

Untuk fungsionalitas penuh dengan pengenalan wajah dan pencarian cerdas, sebaiknya pilih VPS dengan setidaknya 4 vCPU dan RAM 8 GB. Hitung ukuran disk berdasarkan perpustakaan media, dengan kapasitas tambahan untuk thumbnail, video, dan pertumbuhan arsip.

Linux VPS dari tropic.host dengan alamat IP statis dan penyimpanan SSD cocok untuk tugas ini. Anda dapat memulai dengan konfigurasi RAM 8 GB dan meningkatkan sumber daya seiring pertumbuhan perpustakaan. Simpan database PostgreSQL di disk lokal yang cepat dan cadangan di luar VPS ini.

VPS nyaman untuk akses sepanjang waktu dari jaringan mana pun. Untuk arsip beberapa terabyte, server rumah mungkin lebih murah, tetapi Anda harus menyediakan listrik, akses eksternal, dan redundansi sendiri.

Keterbatasan Immich

Self-hosting tidak menjamin keandalan. Kata sandi yang lemah, port 2283 yang terbuka, container usang, atau tidak adanya cadangan eksternal menciptakan risiko kehilangan data.

Immich juga bukan salinan persis Google Photos atau iCloud: kemampuan pengeditan dan sinkronisasi latar belakang berbeda, sedangkan kecepatan analisis bergantung pada perangkat keras. Sebelum memindahkan satu-satunya arsip, uji layanan dengan perpustakaan kecil.

Kesimpulan

Immich memungkinkan Anda membuat galeri foto sendiri dengan unggahan seluler, album, pengenalan wajah, pencarian, dan berbagi. Untuk versi terbaru, sebaiknya siapkan Linux VPS dengan 4 core, RAM 8 GB, dan SSD dengan kapasitas cadangan minimal 20–30%.

Setelah instalasi, konfigurasikan HTTPS, pembaruan, dan cadangan eksternal direktori media bersama database. Cadanganlah—bukan self-hosting itu sendiri—yang melindungi foto dari kehilangan.

FAQ

Apakah Immich gratis?

Server Immich bersumber terbuka dan dapat berjalan tanpa langganan wajib. Anda tetap perlu membayar VPS, domain, ruang disk, dan cadangan.

Berapa banyak RAM yang dibutuhkan Immich?

Minimum resmi adalah RAM 6 GB, sementara 8 GB direkomendasikan. Dengan RAM 4 GB, Anda harus menonaktifkan machine learning.

Apakah Immich dapat dipasang tanpa domain?

Secara teknis, ya, tetapi untuk akses permanen dari ponsel, sebaiknya gunakan domain dan HTTPS. Ini melindungi autentikasi dan transfer file.

Apakah Immich menggantikan cadangan foto?

Tidak. Salin perpustakaan media dan database secara terpisah ke perangkat atau lokasi lain.

Bisakah saya memigrasikan arsip foto yang sudah ada?

Ya. File dapat diunggah melalui antarmuka web atau CLI, atau direktori dapat dihubungkan sebagai perpustakaan eksternal. Buat salinan data sumber sebelum melakukan impor berskala besar.