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 menunjuknya ke lokasi unggahan, aplikasi ponsel atau pengunggah web mengirimkan file asli, lalu Immich menyimpannya dalam path dan dengan penamaan miliknya sendiri. Database menyimpan informasi utama tentang album, wajah, dan pencarian. Desain ini membuat pengalaman pada 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 tetap berada di folder yang sama dengan nama yang sama, dan PhotoPrism akan menulis file YAML pendamping di sampingnya untuk menjelaskan informasi yang telah dipelajarinya.
Perbedaan tunggal ini menjelaskan sebagian besar perbedaan lainnya. Immich memiliki dukungan seluler yang kuat karena mengendalikan proses impor. PhotoPrism unggul dalam kurasi pustaka karena tidak pernah mengubah struktur yang sudah ada. Immich lebih tepat untuk keluarga yang menyimpan foto di ponsel. PhotoPrism lebih tepat untuk arsip yang tersimpan di disk.
Hardware: Immich membutuhkan lebih banyak sumber daya
Batas minimum memori yang didokumentasikan berbeda jauh, dan pada VPS kecil faktor ini biasanya menjadi penentu.
The data behind this chart
[
{
"label": "Immich",
"min_ram_gb": 6,
"recommended_ram_gb": 8
},
{
"label": "PhotoPrism",
"min_ram_gb": 3,
"recommended_ram_gb": 4
}
]Immich mendokumentasikan 6 GB RAM sebagai minimum dan 8 GB sebagai rekomendasi. Dokumentasi tersebut juga menyebutkan bahwa mesin dengan RAM 4 GB hanya dapat menjalankannya jika machine learning dinonaktifkan. PhotoPrism mendokumentasikan 3 GB memori fisik dan dua core CPU, serta menyatakan bahwa jumlah RAM harus sesuai dengan jumlah core.
Perbedaan ini nyata dan disebabkan oleh container machine learning. Immich menjalankan modelnya dalam service immich-machine-learning terpisah yang memuat model CLIP (contrastive language image pretraining) dan deteksi wajah ke dalam memori. Pada mesin dengan RAM 2 GB, kernel menghentikan container tersebut. Docker menampilkan proses itu keluar dengan kode 137, yang menunjukkan penghentian karena kehabisan memori. Model TensorFlow milik PhotoPrism lebih kecil, dan aplikasi tersebut menurunkan fungsionalitasnya alih-alih berhenti: pada mesin dengan RAM 1 GB atau kurang, aplikasi menonaktifkan konversi RAW dan TensorFlow, bukan mengalami crash.
Kedua proyek tersebut memerlukan swap. Dokumentasi PhotoPrism secara jelas menyarankan swap minimal 4 GB pada server. Tambahkan swap sebelum menginstal salah satunya.
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 -hfree -h kini seharusnya 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. Mengatur batas memori di Docker Compose adalah cara untuk mencegah satu service yang menggunakan terlalu banyak sumber daya menyebabkan seluruh mesin berhenti.
Ada satu persyaratan lain yang sering terlewat. Database Postgres milik Immich harus berada pada filesystem Unix biasa dengan ownership dan permission yang sebenarnya, pada penyimpanan lokal, bukan pada network share. PhotoPrism menyatakan hal yang sama untuk file databasenya. Kedua aplikasi tersebut 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 di 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.envEdit .env sebelum memulai apa pun. UPLOAD_LOCATION adalah lokasi penyimpanan file asli Anda, dan DB_PASSWORD harus diubah dari nilai default dengan hanya menggunakan karakter A-Za-z0-9, karena karakter khusus dapat merusak connection string. Kemudian jalankan aplikasi.
docker compose up -d
docker compose psAntarmuka web tersedia pada port 2283. Akun pertama yang didaftarkan melalui halaman tersebut menjadi administrator. Karena itu, akses halaman tersebut dan segera lakukan pendaftaran. Jangan biarkan instance terbuka 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.yamlBuka compose.yaml dan ubah PHOTOPRISM_ADMIN_PASSWORD sebelum memulai untuk pertama kali. Dokumentasinya menjelaskan hal ini secara tegas: aplikasi dimulai dengan initial password yang terdapat dalam file tersebut, panjang minimumnya adalah 8 karakter, dan nilai default tidak boleh digunakan di server publik. Pada saat yang sama, atur volume originals ke folder yang menyimpan foto Anda.
docker compose up -d
docker compose logs -f photoprismPhotoPrism tersedia pada port 2342 dengan pengguna admin. Jangan mengekspos kedua aplikasi secara langsung. Tempatkan reverse proxy dengan TLS (transport layer security) di depannya, menggunakan pola konfigurasi yang sama seperti pada Nextcloud yang di-host sendiri dengan Docker, TLS, dan pencadangan.
Mana yang memiliki aplikasi ponsel yang lebih baik
Di sinilah perbedaan kedua proyek paling besar, dan inilah 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 keluar dari ponsel tanpa pengguna perlu membuka aplikasi. Aplikasi ini memerlukan endpoint HTTPS. Karena itu, reverse proxy tidak opsional jika Anda berencana menggunakannya dari luar rumah.
PhotoPrism tidak memiliki aplikasi native resmi. PhotoPrism merilis progressive web app yang dapat ditambahkan ke layar utama melalui browser. PhotoPrism 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. Aplikasi itu diarahkan ke direktori /import/ atau /originals/ melalui WebDAV. Cara ini berfungsi, tetapi Anda harus menggunakan aplikasi pihak ketiga berbayar untuk melakukan pekerjaan yang ditangani Immich di dalam client-nya sendiri.
Jika pencadangan ponsel otomatis untuk beberapa anggota keluarga merupakan persyaratan, pilihannya sudah jelas. Immich.
Fungsi machine learning yang sebenarnya
Immich melakukan pencarian semantik di seluruh pustaka Anda menggunakan CLIP. Jadi, 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 berukuran besar pada CPU dapat berjalan selama berjam-jam di latar belakang. Hal ini normal dan tidak memerlukan GPU (graphics processing unit).
PhotoPrism mengklasifikasikan gambar dengan TensorFlow menjadi label, mendeteksi wajah dan mengelompokkannya berdasarkan orang, serta membaca metadata lokasi untuk membuat peta tempat. Peta tersebut adalah fitur yang membuat pengguna tetap menggunakannya. Pustaka yang diindeks berdasarkan lokasi pengambilan foto memberikan cara yang benar-benar berbeda untuk menelusuri foto selama dua puluh tahun. Pengenalan wajah tersedia 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, dengan harga mulai dari beberapa euro per bulan per Juli 2026.
Immich sepenuhnya gratis tanpa tingkat berbayar. Fitur inti PhotoPrism gratis, dengan fitur tambahan berbayar 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.gzSelanjutnya, 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 -fPerintah 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 pilihan Anda, kirim cadangan tersebut ke luar server secara terjadwal menggunakan cadangan restic terenkripsi dan dideduplikasi ke penyimpanan jarak jauh. Cadangan yang berada pada disk yang sama dengan pustaka bukanlah cadangan.
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
Apakah PhotoPrism dan Immich dapat menggunakan folder foto yang sama?
Tidak dengan aman untuk kedua arah. PhotoPrism membaca folder originals dan menulis file YAML pendamping di samping gambar Anda, sedangkan Immich mengharapkan dirinya memiliki isi lokasi unggahnya. Anda dapat mengarahkan PhotoPrism ke salinan hanya-baca dari folder library milik Immich untuk menjelajahinya, tetapi jangan biarkan kedua aplikasi mengelola file yang sama karena template penyimpanan Immich dapat memindahkan atau mengganti nama aset saat PhotoPrism mengindeksnya.
Apakah Immich cukup stabil untuk menyimpan satu-satunya salinan foto saya?
Tidak ada aplikasi self-hosted yang boleh menyimpan satu-satunya salinan apa pun. Immich sering merilis perubahan yang menyebabkan inkompatibilitas, dan docker compose pull yang dilakukan tanpa hati-hati dapat membuat database tidak dapat dijalankan. Karena itu, tetapkan versi dan baca catatan rilis sebelum melakukan upgrade. Simpan file asli dalam cadangan di luar server agar risikonya tetap kecil.
Mengapa container machine learning Immich terus melakukan restart?
Container tersebut dihentikan karena menggunakan terlalu banyak memori. Jalankan docker compose ps dan cari service machine learning yang berhenti dengan kode 137. Kode ini menunjukkan bahwa kernel menjalankan out-of-memory killer. Tambahkan swap, atau tetapkan batas memori pada container agar penggunaannya dibatasi, bukan dihentikan. Anda juga dapat menonaktifkan machine learning sepenuhnya pada mesin dengan RAM 4 GB. Pencarian tidak akan berfungsi tanpa fitur ini, tetapi bagian Immich lainnya tetap berjalan dengan baik.
Apakah PhotoPrism memerlukan MariaDB, atau SQLite sudah cukup?
SQLite dapat digunakan dan memadai untuk pustaka pribadi, tetapi PhotoPrism membatasi dirinya hingga empat worker saat menggunakannya. Dokumentasi merekomendasikan perpindahan 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 saya siapkan di atas ukuran pustaka?
Tambahkan 10 hingga 20 persen di atas ukuran file asli Anda untuk salah satu aplikasi. Ruang tersebut mencakup thumbnail yang dibuat dan pratinjau video hasil transcoding. Koleksi berukuran 200 GB memerlukan volume sekitar 300 GB setelah Anda menyediakan ruang untuk database, salinan cadangan lokal, dan pertumbuhan data.