PhotoPrism vs Immich: Server Foto Mana yang Tepat?
Bandingkan PhotoPrism dan Immich berdasarkan kebutuhan RAM, aplikasi ponsel, peta, serta perintah backup Docker yang diperlukan untuk 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 camera roll secara otomatis, dan timeline yang dihasilkan terasa familier bagi siapa pun yang beralih dari galeri ponsel. PhotoPrism mengatur pustaka foto yang sudah Anda miliki: aplikasi ini mengindeks folder berisi file di disk, membaca metadata, menempatkannya di peta, dan membiarkan file tetap persis di lokasi semula.
Pilih Immich jika masalahnya adalah "ponsel saya penuh dan saya ingin berhenti menggunakan Google Photos". Pilih PhotoPrism jika masalahnya adalah "Saya memiliki 400 GB foto di drive dan tidak dapat menemukan apa pun di dalamnya". Keduanya merupakan perangkat lunak sumber terbuka, dapat dijalankan sebagai container Docker di VPS biasa, serta dapat mengindeks dan menelusuri pustaka Anda tanpa mengirimkan apa pun kepada pihak ketiga.
Perbedaan filosofi, dan mengapa hal ini menentukan segalanya
Immich mengelola file. Anda mengarahkannya ke lokasi unggahan, aplikasi ponsel atau pengunggah web mengirimkan file asli, lalu 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 keadaan lengkap setiap aset.
PhotoPrism membaca file. Anda memasang folder originals yang sudah Anda kelola, lalu PhotoPrism membuat indeks di dalamnya. Struktur direktori tetap menjadi milik Anda. Jika besok Anda menghapus PhotoPrism, foto-foto tetap berada di folder yang sama dengan nama yang sama, dan PhotoPrism akan menulis file YAML pendamping di sebelahnya untuk menjelaskan informasi yang ditemukannya.
Perbedaan tunggal ini menjelaskan sebagian besar perbedaan lainnya. Immich memiliki dukungan seluler yang kuat karena mengendalikan proses pengambilan file. PhotoPrism unggul dalam kurasi pustaka karena tidak pernah bertentangan dengan 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. Pada VPS kecil, hal ini biasanya menjadi faktor 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. Dokumentasinya juga menyatakan bahwa mesin dengan 4 GB hanya dapat menjalankannya jika machine learning dinonaktifkan. PhotoPrism mendokumentasikan 3 GB memori fisik dan dua core CPU. PhotoPrism juga menyatakan bahwa jumlah RAM harus sesuai dengan jumlah core.
Perbedaannya nyata dan disebabkan oleh container machine learning. Immich menjalankan modelnya dalam service immich-machine-learning terpisah. Service ini memuat model CLIP (contrastive language image pretraining) dan deteksi wajah ke dalam memori. Pada mesin dengan 2 GB, kernel mematikan container tersebut. Anda akan melihat container keluar dengan kode 137. Inilah tampilan penghentian karena kehabisan memori dari Docker. Model TensorFlow milik PhotoPrism lebih kecil dan aplikasinya menurunkan fungsionalitas alih-alih berhenti. Pada mesin dengan RAM 1 GB atau kurang, PhotoPrism menonaktifkan konversi RAW dan TensorFlow, bukan mengalami crash.
Kedua proyek merekomendasikan swap. Dokumentasi PhotoPrism secara eksplisit menyatakan bahwa server memerlukan swap sedikitnya 4 GB. 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 sekarang seharusnya menampilkan baris Swap: yang menunjukkan 4.0Gi. Jika yang ditampilkan adalah 0B, berarti swapon gagal, biasanya karena sistem berkas tidak mendukung fallocate, dan sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 digunakan sebagai cadangan. Batas memori container juga penting di sini. menetapkan batas memori di Docker Compose adalah cara untuk mencegah satu service yang mengonsumsi banyak sumber daya mematikan seluruh mesin.
Ada satu persyaratan lain yang sering terlewat. Database Postgres Immich harus berada pada sistem berkas Unix biasa dengan kepemilikan dan izin akses yang sebenarnya, di penyimpanan lokal, dan tidak boleh berada pada network share. PhotoPrism menyatakan hal yang sama untuk file databasenya. Tidak satu pun aplikasi tersebut aman dijalankan jika databasenya berada pada object store yang di-mount.
Cara memasang masing-masing aplikasi
Kedua instalasi menggunakan file compose dari vendor dan satu perintah. Siapkan Docker Engine dan plugin Compose terlebih dahulu, seperti yang dijelaskan dalam panduan kami tentang Docker Compose di VPS.
Immich menyediakan 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 menjalankan apa pun. UPLOAD_LOCATION adalah lokasi penyimpanan file asli, dan DB_PASSWORD harus diubah dari nilai default dengan hanya menggunakan karakter A-Za-z0-9, karena karakter khusus dapat merusak string koneksi. Setelah itu, jalankan aplikasinya.
docker compose up -d
docker compose psAntarmuka web tersedia di port 2283. Akun pertama yang didaftarkan melalui halaman tersebut menjadi administrator. Buka halaman itu 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 menjalankan aplikasi untuk pertama kali. Dokumentasinya menyatakan hal ini dengan jelas: aplikasi akan dimulai menggunakan kata sandi awal 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 berisi foto Anda.
docker compose up -d
docker compose logs -f photoprismPhotoPrism tersedia di port 2342 menggunakan pengguna admin. Jangan mengekspos aplikasi mana pun secara langsung. Tempatkan reverse proxy dengan TLS (keamanan lapisan transportasi) di depannya, dengan pola konfigurasi yang sama seperti pada Nextcloud yang di-hosting sendiri dengan Docker, TLS, dan pencadangan.
Aplikasi ponsel mana yang lebih baik
Di sinilah perbedaan kedua proyek tersebut 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, sehingga foto baru dikirim dari ponsel tanpa perlu membuka aplikasi. Aplikasi ini memerlukan endpoint HTTPS, sehingga reverse proxy wajib digunakan jika Anda berencana mengaksesnya dari luar rumah.
PhotoPrism tidak memiliki aplikasi native resmi. PhotoPrism menyediakan progressive web app yang dapat ditambahkan ke layar utama melalui browser, serta mendokumentasikan WebDAV (web distributed authoring and versioning) sebagai cara 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 Anda perlu menggunakan aplikasi pihak ketiga berbayar untuk tugas yang ditangani Immich di dalam kliennya sendiri.
Jika pencadangan otomatis dari ponsel untuk beberapa anggota keluarga merupakan persyaratan, pilihannya jelas: Immich.
Hasil machine learning yang sebenarnya
Immich melakukan pencarian semantik pada pustaka Anda menggunakan CLIP. Dengan demikian, kueri seperti "sepeda merah di salju" dapat menemukan foto yang tidak pernah diberi tag oleh siapa pun. Immich juga mendeteksi dan mengelompokkan wajah serta mendeteksi duplikat. Pengindeksan impor besar menggunakan CPU dapat berjalan selama berjam-jam di latar belakang. Hal ini normal dan tidak memerlukan GPU (graphics processing unit).
PhotoPrism mengklasifikasikan gambar menggunakan TensorFlow menjadi berbagai label, mendeteksi wajah dan mengelompokkannya berdasarkan orang, serta membaca metadata lokasi untuk membuat peta tempat. Peta adalah fitur yang membuat pengguna tetap menggunakannya. Pustaka yang diindeks berdasarkan lokasi pengambilan foto menyediakan cara yang benar-benar berbeda untuk menelusuri foto selama dua puluh tahun. Pengenalan wajah disertakan 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 tingkatan berbayar. Fitur inti PhotoPrism gratis, dengan tambahan berbayar opsional.
Cadangan menentukan apakah data tetap tersimpan
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, lakukan 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 memerlukan waktu CPU berjam-jam. Dump database saja tidak dapat memulihkan apa pun karena hanya berisi metadata.
Untuk PhotoPrism, indeks memiliki perintah tersendiri.
docker compose exec photoprism photoprism backup -i -fPerintah tersebut menulis dump SQL di bawah storage/backup/. Selanjutnya, salin folder originals dan folder storage. Karena PhotoPrism juga menulis file YAML pendamping yang menjelaskan setiap foto, indeks 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 di 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 rol kamera, dan jika Anda dapat menyediakan RAM 6 GB atau lebih untuk server. Immich adalah pilihan yang paling mendekati Google Photos yang dapat Anda host sendiri, dan pengalaman pada perangkat seluler merupakan fokus utamanya. Panduan instalasi Immich langkah demi langkah kami menjelaskan secara terperinci penghentian proses karena kekurangan memori dan jebakan saat upgrade.
Jalankan PhotoPrism jika Anda sudah memiliki arsip foto di disk, jika Anda membutuhkan peta dan metadata serta ingin mempertahankan struktur folder sendiri, atau jika VPS Anda memiliki RAM 4 GB dan Anda lebih memilih pustaka yang berfungsi daripada pustaka yang terus menggunakan swap. PhotoPrism adalah alat kurasi yang lebih baik dan lebih ringan untuk perangkat keras dengan sumber daya terbatas.
Menjalankan keduanya juga merupakan pilihan yang wajar. Immich menangani pengunggahan foto harian dari ponsel. Setahun sekali, Anda dapat 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 dengan aman untuk kedua arah. PhotoPrism membaca folder originals dan menulis file YAML pendamping di sebelah 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 di bawah pengelolaan PhotoPrism saat melakukan pengindeksan.
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 sering merilis perubahan yang tidak kompatibel, dan docker compose pull yang ceroboh dapat menyebabkan database tidak dapat dimulai. 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 dimulai ulang?
Container tersebut dihentikan karena menggunakan terlalu banyak memori. Jalankan docker compose ps dan cari layanan machine learning yang keluar dengan kode 137. Kode ini menunjukkan bahwa kernel menjalankan out of memory killer. Tambahkan swap, atau tetapkan batas memori untuk container agar penggunaannya dibatasi, bukan dihentikan. Anda juga dapat menonaktifkan machine learning sepenuhnya pada mesin dengan memori 4 GB. Pencarian tidak akan berfungsi tanpa fitur tersebut, tetapi bagian Immich lainnya tetap berjalan normal.
Apakah PhotoPrism memerlukan MariaDB, atau SQLite sudah cukup?
SQLite berfungsi dan cukup 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 opsi yang direkomendasikan juga menjadi opsi default.
Berapa banyak ruang disk yang harus saya siapkan di atas ukuran pustaka?
Tambahkan 10 hingga 20 persen dari ukuran file asli Anda untuk aplikasi mana pun. Ruang tersebut mencakup thumbnail yang dibuat dan pratinjau video yang ditranskode. Koleksi berukuran 200 GB memerlukan volume sekitar 300 GB setelah menyediakan ruang untuk database, salinan cadangan lokal, dan pertumbuhan data.