SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-10-28

PhotoPrism vs Immich: Mana Server Foto yang Tepat?

Bandingkan PhotoPrism dan Immich berdasarkan kebutuhan RAM, aplikasi ponsel, peta, serta perintah backup Docker yang diperlukan di VPS.

PhotoPrism vs Immich: jawaban singkat

PhotoPrism vs Immich adalah pilihan antara dua kebutuhan yang berbeda, bukan dua versi dari produk yang sama. Immich menggantikan Google Photos: aplikasi ponsel mencadangkan rol kamera secara otomatis, dan linimasa yang dihasilkan akan terasa familiar bagi siapa pun yang beralih dari galeri ponsel. PhotoPrism mengatur pustaka foto yang sudah Anda miliki: aplikasi ini mengindeks folder berisi file pada disk, membaca metadatanya, menempatkannya di peta, dan membiarkan file tetap berada di lokasi semula.

Pilih Immich jika masalahnya adalah "penyimpanan ponsel saya penuh dan saya ingin berhenti menggunakan Google Photos". Pilih PhotoPrism jika masalahnya adalah "Saya memiliki 400 GB foto di sebuah drive dan tidak dapat menemukan apa pun di dalamnya". Keduanya merupakan perangkat lunak open source, dapat dijalankan sebagai container Docker pada VPS biasa, serta dapat mengindeks dan mencari pustaka Anda tanpa mengirimkan data apa pun kepada pihak ketiga.

Perbedaan filosofi, dan mengapa hal ini menentukan semuanya

Immich mengelola file. Anda mengarahkannya ke lokasi upload, lalu aplikasi ponsel atau pengunggah web mengirimkan file asli ke sana. Immich menyimpannya di bawah path dan dengan penamaan miliknya sendiri. Database menyimpan informasi utama tentang album, wajah, dan pencarian. Desain ini membuat pengalaman di ponsel menjadi baik karena server selalu mengetahui status lengkap setiap aset.

PhotoPrism membaca file. Anda memasang folder originals yang sudah Anda kelola, lalu PhotoPrism membuat indeks atas folder tersebut. Struktur direktori tetap menjadi milik Anda. Jika besok Anda menghapus PhotoPrism, foto-foto tetap berada di folder yang sama dengan nama yang sama. File YAML pendamping yang ditulis PhotoPrism untuk menjelaskan hasil analisisnya disimpan di folder penyimpanannya sendiri. Secara default, PhotoPrism menyimpan file tersebut di sana.

Perbedaan tunggal ini menjelaskan sebagian besar perbedaan lainnya. Immich memiliki dukungan seluler yang kuat karena mengendalikan proses pemasukan file. PhotoPrism memiliki kemampuan kurasi pustaka yang kuat karena tidak mengubah struktur yang sudah Anda miliki. Immich lebih tepat untuk keluarga yang menyimpan foto di ponsel. PhotoPrism lebih tepat untuk arsip yang disimpan di disk.

Kebutuhan perangkat keras: Immich membutuhkan lebih banyak sumber daya

Batas minimum memori yang didokumentasikan berbeda jauh, dan pada VPS kecil faktor ini biasanya menjadi penentu.

GrafikDocumented minimum memory, as of October 2026
Data di balik grafik ini
[
  {
    "label": "Immich",
    "min_ram_gb": 6
  },
  {
    "label": "PhotoPrism",
    "min_ram_gb": 3
  }
]

Immich mendokumentasikan RAM sebesar 6 GB sebagai minimum dan 8 GB sebagai jumlah yang direkomendasikan. Dokumentasinya juga mencatat bahwa mesin dengan RAM 4 GB hanya dapat menjalankannya jika machine learning dinonaktifkan. PhotoPrism mendokumentasikan 3 GB memori fisik dan dua core CPU. Di atas batas minimum tersebut, jumlah RAM sebaiknya disesuaikan dengan jumlah core.

Perbedaannya nyata, dan penyebabnya adalah container machine learning. Immich menjalankan modelnya dalam service immich-machine-learning terpisah yang memuat CLIP (contrastive language image pretraining) dan model deteksi wajah ke dalam memori. Pada mesin dengan RAM 2 GB, kernel menghentikan container tersebut. Anda akan melihat container keluar dengan kode 137, yaitu status untuk proses yang dihentikan dengan signal 9. Inilah cara out-of-memory kill ditampilkan di Docker. Model bawaan PhotoPrism berjalan pada ONNX. Dokumentasinya menyatakan bahwa model tersebut umumnya bekerja baik pada semua jenis perangkat keras. PhotoPrism juga memiliki fallback terdokumentasi untuk kondisi memori terbatas: pada mesin dengan RAM 1 GB atau kurang, PhotoPrism menonaktifkan konversi RAW dan pengenalan wajah. Namun, hal itu bukan jaminan stabilitas. Di bawah minimum 3 GB, proyek ini memperingatkan adanya ketidakstabilan dan masalah performa. Karena itu, perlakukan batas tersebut sebagai batas minimum yang sebenarnya.

Dokumentasi PhotoPrism secara eksplisit menyarankan setidaknya 4 GB swap pada server. Halaman persyaratan Immich tidak menyebut swap, tetapi swap memberi ruang tambahan bagi container machine learning pada mesin kecil. Tambahkan swap sebelum menginstal salah satu aplikasi tersebut.

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

free -h seharusnya sekarang menampilkan baris Swap: yang menunjukkan 4.0Gi. Jika yang ditampilkan adalah 0B, berarti swapon gagal, biasanya karena filesystem tidak mendukung fallocate, dan sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 digunakan sebagai fallback. Batas memori container juga penting di sini. Menetapkan batas memori di Docker Compose adalah cara untuk mencegah satu service yang boros sumber daya membuat seluruh mesin berhenti berfungsi. Pengecualiannya adalah PhotoPrism itu sendiri: dokumentasinya menyarankan agar container PhotoPrism tidak diberi batas memori yang ketat. Pengindeksan file berukuran besar memerlukan memori tambahan untuk sementara waktu, dan batas memori dapat menyebabkan restart yang tidak terduga.

Ada satu persyaratan lain yang sering terlewat. Database Postgres Immich harus berada pada filesystem Unix biasa dengan kepemilikan dan permission yang sebenarnya, serta pada storage lokal. Database tersebut tidak boleh berada pada network share. PhotoPrism juga memperingatkan agar file databasenya tidak pernah disimpan pada folder jaringan bersama dan menyebut storage SSD lokal sebagai tempat terbaik. Kedua aplikasi ini tidak aman jika databasenya berada pada object store yang di-mount.

Cara menginstal masing-masing aplikasi

Kedua instalasi menggunakan file compose dari vendor dan satu perintah. Siapkan Docker Engine dan plugin Compose terlebih dahulu, seperti dijelaskan dalam panduan Docker Compose kami pada VPS.

Immich menerbitkan file compose dan file environment contoh pada setiap rilis.

sudo mkdir -p /opt/immich && cd /opt/immich
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

Edit .env sebelum memulai apa pun. UPLOAD_LOCATION adalah lokasi penyimpanan file asli Anda. DB_PASSWORD sudah memiliki nilai default yang berfungsi, dan Immich menyarankan agar Anda menggantinya dengan password acak, meskipun hal itu tidak diwajibkan. Postgres tidak diekspos ke publik, sehingga password hanya digunakan untuk autentikasi lokal. Namun, tidak ada kerugian menggunakan password acak. Gunakan hanya karakter A-Za-z0-9, karena dokumentasi Immich menyebutkan bahwa karakter lain dapat menyebabkan masalah saat Docker mem-parsing nilainya. Setelah itu, jalankan aplikasinya.

docker compose up -d
docker compose ps

Antarmuka web tersedia pada port 2283. Account pertama yang didaftarkan melalui halaman tersebut menjadi administrator. Buka halaman itu dan segera lakukan pendaftaran. Jangan biarkan instance yang terbuka tanpa pengamanan di Internet.

PhotoPrism menyediakan satu file compose yang sudah menyertakan MariaDB.

sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yaml

Buka compose.yaml dan ubah PHOTOPRISM_ADMIN_PASSWORD sebelum menjalankan aplikasi untuk pertama kali. Dokumentasinya menjelaskan hal ini secara tegas: aplikasi dimulai dengan initial password yang tercantum dalam file tersebut, panjang minimumnya adalah 8 karakter, dan nilai default tidak boleh digunakan pada server publik. Pada saat yang sama, atur volume originals ke folder yang berisi foto Anda.

docker compose up -d
docker compose logs -f photoprism

PhotoPrism tersedia pada port 2342 dengan user admin. Kedua aplikasi tersebut tidak boleh diekspos secara langsung. Tempatkan reverse proxy dengan TLS (transport layer security) di depannya, menggunakan pola konfigurasi yang sama seperti Nextcloud self-hosted dengan Docker, TLS, dan backup, atau jaga agar server tetap privat dan akses melalui VPN. Jika VPS tersebut nantinya menjalankan layanan selain foto, terapkan pembatasan yang sama pada setiap service yang Anda tambahkan. Relay RustDesk self-hosted hanya memerlukan dua portnya sendiri agar dapat dijangkau, dan tidak memerlukan akses lainnya.

Aplikasi ponsel mana yang lebih baik

Di sinilah perbedaan kedua proyek paling besar, dan ini menjadi alasan sebagian besar orang akhirnya memilih Immich.

Immich merilis aplikasi resmi untuk Android dan iOS. Aplikasi ini mencadangkan camera roll di latar belakang. Artinya, foto baru dikirim dari ponsel tanpa perlu membuka aplikasi secara manual. Untuk menggunakannya dari luar rumah, Immich mendokumentasikan tiga cara: VPN seperti WireGuard atau OpenVPN, Tailscale, atau reverse proxy yang menyediakan HTTPS. Reverse proxy memungkinkan aplikasi ponsel terhubung tanpa aplikasi VPN pada setiap ponsel. Immich memperingatkan agar port 2283 tidak pernah diteruskan langsung ke Internet tanpa konfigurasi tambahan.

PhotoPrism tidak memiliki aplikasi native resmi. PhotoPrism menyediakan progressive web app yang dapat ditambahkan ke home screen dari browser. PhotoPrism juga mendokumentasikan WebDAV (web distributed authoring and versioning) sebagai cara untuk menyinkronkan foto dari ponsel. Proyek ini merekomendasikan aplikasi pihak ketiga bernama PhotoSync untuk keperluan tersebut, yang diarahkan ke direktori /import/ atau /originals/ melalui WebDAV. Cara ini berfungsi, tetapi tugas yang ditangani langsung oleh client Immich harus dilakukan oleh aplikasi pihak ketiga berbayar.

Jika pencadangan ponsel otomatis untuk beberapa anggota keluarga merupakan persyaratan, pilihannya sudah jelas. Immich.

Manfaat nyata machine learning

Immich melakukan pencarian semantik pada pustaka Anda menggunakan CLIP. Karena itu, kueri seperti "red bicycle in snow" dapat menemukan foto yang tidak pernah diberi tag oleh siapa pun. Immich juga mendeteksi dan mengelompokkan wajah, serta mendeteksi duplikat. Pengindeksan impor besar pada CPU berjalan selama berjam-jam di latar belakang. Hal ini normal dan tidak memerlukan GPU (graphics processing unit).

PhotoPrism mengklasifikasikan gambar ke dalam label menggunakan model ONNX bawaan, mendeteksi wajah dan mengelompokkannya berdasarkan orang menggunakan model wajah ONNX, serta membaca metadata lokasi untuk membuat peta tempat. File vision.yml di folder konfigurasinya dapat digunakan untuk mengganti model tersebut dengan Ollama atau OpenAI untuk membuat label dan keterangan, jika diperlukan. Peta adalah fitur yang membuat pengguna tetap menggunakannya: pustaka yang diindeks berdasarkan lokasi pengambilan foto menawarkan cara yang benar-benar berbeda untuk menelusuri foto selama dua puluh tahun. Gagasan yang sama dapat diterapkan pada koleksi media lain. Antarmuka toko video tahun 90-an milik Halcyon untuk Jellyfin adalah versi filmnya, dengan penelusuran berdasarkan rak, bukan daftar. Pengenalan wajah termasuk dalam edisi Community gratis. Keanggotaan Essentials dan Plus berbayar menambahkan fitur seperti lapisan peta yang lebih lengkap, lebih banyak peran pengguna, dan antarmuka manajemen pengguna. Harganya mulai dari beberapa euro per bulan dan ditagihkan setiap tahun, per Oktober 2026.

Immich tidak memiliki fitur yang dikunci di balik pembayaran, dan proyek tersebut menyatakan bahwa hal itu tidak akan pernah berubah. Immich memang menjual product key opsional dengan masa berlaku seumur hidup: $25 untuk satu pengguna atau $100 untuk satu server, berdasarkan harga yang diumumkan Immich pada July 2024. Namun, pembelian tersebut tidak membuka fitur apa pun. Immich tetap dapat digunakan tanpa batasan jika Anda tidak pernah membayar. Fitur inti PhotoPrism gratis, dengan tambahan berbayar yang bersifat opsional.

Cadangan menentukan apakah data tetap aman

Server foto tanpa cadangan hanya berjarak satu kerusakan disk dari kehilangan seluruh data keluarga. Kedua aplikasi memerlukan dua jenis cadangan: database dan file.

Untuk Immich, buat dump database dari container Postgres, lalu salin lokasi upload.

docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gz

Selanjutnya, cadangkan UPLOAD_LOCATION. Folder yang berisi data yang tidak dapat digantikan adalah upload, library, dan profile. Folder thumbs dan encoded-video dapat dibuat ulang, tetapi prosesnya memerlukan waktu CPU berjam-jam. Dump database saja tidak dapat memulihkan apa pun karena hanya berisi metadata.

Untuk PhotoPrism, index memiliki perintahnya sendiri.

docker compose exec photoprism photoprism backup -i -f

Perintah tersebut menulis dump SQL di bawah storage/backup/. Selanjutnya, salin folder originals dan folder storage. PhotoPrism juga menulis file YAML sidecar yang menjelaskan setiap foto. Karena itu, index yang hilang dapat dibuat ulang hanya dari file. Ini merupakan keunggulan penting untuk arsip yang akan disimpan selama puluhan tahun.

Apa pun yang Anda pilih, kirim backup tersebut keluar dari server secara terjadwal dengan backup restic terenkripsi dan dideduplikasi ke penyimpanan jarak jauh. Backup yang tersimpan pada disk yang sama dengan pustaka bukanlah backup. Konfigurasikan job agar mengirim notifikasi saat gagal, karena backup yang diam-diam berhenti berjalan pada Maret terlihat sama seperti backup yang berjalan tadi malam hingga saat Anda membutuhkannya. Server ntfy yang di-host sendiri akan mengirimkan kegagalan tersebut ke ponsel Anda pada malam yang sama.

Mana yang sebaiknya Anda jalankan

Jalankan Immich jika foto Anda tersimpan di ponsel, jika lebih dari satu orang perlu mencadangkan foto dari kamera, dan jika server memiliki RAM 6 GB atau lebih. Immich adalah pilihan yang paling mendekati Google Photos yang dapat Anda host sendiri, dan pengalaman penggunaan pada perangkat seluler merupakan keunggulan utamanya. Panduan instalasi Immich langkah demi langkah kami menjelaskan secara rinci masalah penghentian proses karena kehabisan memori dan kendala saat upgrade.

Jalankan PhotoPrism jika Anda sudah memiliki arsip foto di disk, jika Anda memerlukan peta dan metadata serta ingin mempertahankan struktur folder sendiri, atau jika VPS memiliki RAM 4 GB dan Anda lebih memilih library yang dapat digunakan daripada library yang terus menggunakan swap. PhotoPrism adalah alat kurasi yang lebih baik dan lebih ringan untuk hardware dengan sumber daya terbatas.

Menjalankan keduanya juga merupakan pilihan yang wajar. Immich menangani pengimporan foto harian dari ponsel. Setahun sekali, Anda memilah foto yang ingin disimpan ke dalam arsip, lalu membiarkan PhotoPrism mengindeksnya. Keduanya tidak saling bertentangan karena PhotoPrism membaca folder, sedangkan Immich mengelola penyimpanannya sendiri.

FAQ

Dapatkah PhotoPrism dan Immich menggunakan folder foto yang sama?

Tidak aman jika dilakukan pada kedua arah. PhotoPrism mengindeks folder originals dan memiliki fitur yang menulis ke folder tersebut kecuali dijalankan dalam mode hanya-baca, sedangkan Immich mengharapkan dirinya mengelola isi lokasi upload. Anda dapat mengarahkan PhotoPrism ke salinan hanya-baca dari folder library milik Immich untuk menelusurinya, tetapi jangan biarkan kedua aplikasi mengelola file yang sama karena template penyimpanan Immich dapat memindahkan atau mengganti nama aset saat PhotoPrism sedang mengindeksnya.

Apakah Immich cukup stabil untuk menyimpan satu-satunya salinan foto saya?

Tidak ada aplikasi yang di-host sendiri yang boleh menyimpan satu-satunya salinan apa pun. Immich kini mengikuti versioning semantik dan menyatakan bahwa perubahan yang merusak kompatibilitas dibatasi pada rilis mayor. Karena itu, pin IMMICH_VERSION ke tag versi mayor seperti v3, baca catatan rilis, lalu lakukan upgrade dengan docker compose pull && docker compose up -d. Downgrade tidak didukung, bahkan dalam versi minor yang sama, jadi buat dump database sebelum setiap upgrade. Simpan file asli dalam backup di luar server agar risikonya tetap kecil.

Mengapa container machine learning Immich terus melakukan restart?

Biasanya container tersebut dihentikan karena menggunakan terlalu banyak memori. Jalankan docker compose ps --all karena container yang sudah berhenti tidak akan terlihat tanpa flag tersebut, lalu cari service machine learning yang berhenti dengan kode 137. Kode tersebut berarti proses dihentikan dengan signal 9. Kernel out of memory killer adalah penyebab yang umum, tetapi bukan satu-satunya, jadi konfirmasikan dengan sudo dmesg | grep -i 'out of memory'. Tambahkan swap, atau nonaktifkan machine learning sepenuhnya pada mesin dengan RAM 4 GB. Batas memori pada container tidak membatasi penggunaannya secara bertahap. Saat mencapai batas, container tetap dihentikan, tetapi tidak terus menghabiskan memori server lainnya. Smart search dan face recognition tidak berfungsi tanpa machine learning, sedangkan bagian Immich lainnya tetap berjalan dengan baik.

Apakah PhotoPrism memerlukan MariaDB, atau SQLite sudah cukup?

SQLite dapat digunakan dan sesuai untuk pustaka pribadi, tetapi PhotoPrism membatasi dirinya hingga empat worker saat menggunakannya. Dokumentasi merekomendasikan peralihan ke MariaDB karena MariaDB menangani konkurensi tinggi dengan lebih baik. File compose yang dirilis oleh proyek tersebut sudah menyertakan MariaDB, sehingga pilihan yang direkomendasikan juga menjadi pilihan default.

Berapa banyak ruang disk yang perlu disediakan di atas ukuran pustaka?

Tambahkan 10 hingga 20 persen di atas ukuran file asli Anda untuk aplikasi mana pun. Ruang tersebut mencakup thumbnail yang dibuat dan pratinjau video yang ditranskode. Koleksi berukuran 200 GB memerlukan sekitar 220 hingga 240 GB hanya untuk pustaka, ditambah ruang untuk database dan pertumbuhan data. Jika Anda juga menyimpan salinan backup lokal lengkap pada volume yang sama, file asli dan salinan tersebut memerlukan sedikitnya 400 GB sebelum kebutuhan lain dihitung. Karena itu, sediakan sekitar 450 GB atau simpan salinan tersebut pada volume terpisah.

Apakah artikel ini bermanfaat?