SSD Nodes Learn 🎉 VPS dari $4.99/bln
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-08-07

PhotoPrism vs Immich: Mana Pilihan Terbaik?

Bandingkan dua pelayan foto kendiri ini. Ketahui perbezaan penggunaan RAM, fungsi aplikasi telefon, sokongan peta, serta arahan sandaran Docker yang tepat untuk VPS anda.

PhotoPrism berbanding Immich: jawapan ringkas

Pemilihan antara PhotoPrism dan Immich adalah pilihan antara dua fungsi yang berbeza, bukan dua versi produk yang sama. Immich menggantikan Google Photos: aplikasi telefon akan menyandarkan gulungan kamera anda secara automatik, dan garis masa yang dipaparkan akan kelihatan biasa bagi sesiapa yang beralih daripada galeri telefon. PhotoPrism pula menyusun pustaka foto yang sedia ada: ia mengindeks folder fail pada cakera, membaca metadata fail tersebut, meletakkannya pada peta, dan membiarkan fail tersebut kekal di lokasi asalnya.

Pilih Immich jika masalah anda ialah "telefon saya penuh dan saya mahu berhenti menggunakan Google Photos". Pilih PhotoPrism jika masalah anda ialah "saya mempunyai 400 GB foto pada pemacu dan saya tidak dapat mencari apa-apa di dalamnya". Kedua-duanya adalah sumber terbuka, kedua-duanya berjalan sebagai bekas Docker pada VPS biasa, dan kedua-duanya mengindeks serta mencari pustaka anda tanpa menghantar apa-apa maklumat kepada pihak ketiga.

Perbezaan falsafah, dan sebab ia menentukan segala-galanya

Immich memiliki fail-fail tersebut. Anda menghalakannya ke lokasi muat naik, aplikasi telefon atau pemuat naik web menghantar fail asal masuk, dan Immich menyimpannya di bawah laluan sendiri dengan penamaan tersendiri. Pangkalan data memegang kebenaran tentang album, wajah dan carian. Reka bentuk itu yang menjadikan pengalaman telefon bagus, kerana pelayan sentiasa mengetahui status penuh setiap aset.

PhotoPrism membaca fail-fail tersebut. Anda melekapkan folder originals yang sudah anda kawal, dan PhotoPrism membina indeks di atasnya. Struktur direktori anda kekal milik anda. Jika anda membuang PhotoPrism esok, foto-foto tersebut kekal di sana dalam folder yang sama dengan nama yang sama, dan PhotoPrism akan menulis fail YAML sidecar di sebelahnya untuk menerangkan apa yang telah dipelajarinya.

Perbezaan tunggal itu menjelaskan kebanyakan perkara lain. Immich mempunyai sokongan mudah alih yang kukuh kerana ia mengawal proses pengambilan data. PhotoPrism mempunyai penyusunan pustaka yang kukuh kerana ia tidak pernah bercanggah dengan struktur sedia ada anda. Immich ialah jawapan yang lebih baik untuk keluarga yang foto-fotonya berada dalam telefon. PhotoPrism ialah jawapan yang lebih baik untuk arkib yang berada dalam cakera.

Keperluan perkakasan: Immich memerlukan lebih banyak sumber

Had memori minimum yang didokumentasikan mempunyai perbezaan yang ketara, dan pada VPS kecil, ini biasanya menjadi faktor penentu.

ChartDocumented memory requirement, as of July 2026
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 saranan, dengan nota bahawa mesin 4 GB hanya boleh menjalankannya jika pembelajaran mesin (machine learning) dimatikan. PhotoPrism mendokumentasikan 3 GB memori fizikal dan dua teras CPU, serta menyatakan jumlah RAM harus sepadan dengan bilangan teras.

Jurang ini adalah nyata, dan ia berpunca daripada kontena pembelajaran mesin. Immich menjalankan modelnya dalam servis immich-machine-learning berasingan yang memuatkan model CLIP (contrastive language image pretraining) dan pengesanan wajah ke dalam memori. Pada mesin 2 GB, kernel akan mematikan kontena tersebut, dan anda akan melihat ia keluar dengan kod 137, iaitu rupa proses yang dimatikan oleh Docker kerana kehabisan memori (out of memory). Model TensorFlow PhotoPrism adalah lebih kecil dan ia akan merosot prestasinya dan bukannya mati: pada mesin dengan 1 GB atau kurang, ia akan melumpuhkan penukaran RAW dan TensorFlow dan bukannya terhempas.

Kedua-dua projek memerlukan swap. Dokumentasi PhotoPrism menyatakan dengan jelas keperluan sekurang-kurangnya 4 GB swap pada pelayan. Tambahkannya sebelum anda memasang mana-mana 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 kini sepatutnya mencetak baris Swap: yang menunjukkan 4.0Gi. Jika ia mencetak 0B, maka swapon telah gagal, biasanya kerana sistem fail tidak menyokong fallocate, dan sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 menjadi pilihan sandaran. Had memori kontena juga penting di sini, dan menetapkan had memori dalam Docker Compose adalah cara untuk menghalang satu servis yang gelojak daripada menjatuhkan keseluruhan mesin.

Satu lagi keperluan yang sering memerangkap pengguna. Pangkalan data Postgres Immich mesti berada pada sistem fail Unix biasa dengan pemilikan dan keizinan yang sebenar, pada storan tempatan, dan tidak boleh berada pada perkongsian rangkaian (network share). PhotoPrism menyatakan perkara yang sama mengenai fail pangkalan datanya. Kedua-dua aplikasi tidak selamat untuk dijalankan jika pangkalan datanya berada pada storan objek yang dilekapkan (mounted object store).

Cara memasang setiap satu

Kedua-dua pemasangan menggunakan fail compose daripada vendor berserta satu arahan. Sediakan Docker Engine dan pemalam Compose terlebih dahulu, seperti yang diterangkan dalam panduan kami tentang Docker Compose pada VPS.

Immich menerbitkan fail compose dan contoh fail environment bagi setiap release.

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

Sunting .env sebelum memulakan apa-apa. UPLOAD_LOCATION ialah lokasi asal fail anda akan disimpan, dan DB_PASSWORD mesti ditukar daripada nilai lalai menggunakan hanya aksara A-Za-z0-9, kerana aksara khas akan merosakkan connection string. Kemudian, mulakan servis tersebut.

docker compose up -d
docker compose ps

Antara muka web bertindak balas pada port 2283. Akaun pertama yang didaftarkan melalui halaman tersebut akan menjadi pentadbir, jadi akses halaman itu dan daftar dengan segera dan jangan biarkan instans yang terbuka terdedah di internet.

PhotoPrism membekalkan satu fail 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 tukar PHOTOPRISM_ADMIN_PASSWORD sebelum permulaan pertama. Dokumentasi menyatakan dengan jelas: aplikasi akan bermula dengan apa jua kata laluan awal yang terdapat dalam fail tersebut, panjang minimum ialah 8 aksara, dan nilai lalai tidak boleh digunakan pada pelayan awam. Tetapkan volume originals ke folder yang menyimpan foto anda pada masa yang sama.

docker compose up -d
docker compose logs -f photoprism

PhotoPrism bertindak balas pada port 2342 dengan pengguna admin. Tiada satu pun aplikasi ini harus didedahkan secara terus. Letakkan reverse proxy dengan TLS (transport layer security) di hadapan, menggunakan bentuk persediaan yang sama seperti yang digunakan untuk Nextcloud yang dihoskan sendiri dengan Docker, TLS dan sandaran.

Antara kedua-duanya, yang manakah mempunyai aplikasi telefon yang lebih baik

Ini adalah aspek di mana kedua-dua projek ini paling berbeza, dan ia merupakan sebab utama kebanyakan pengguna memilih Immich.

Immich menyediakan aplikasi rasmi untuk Android dan iOS. Aplikasi ini melakukan sandaran latar belakang untuk gulungan kamera, yang bermaksud foto baharu akan dipindahkan dari telefon tanpa perlu membuka sebarang aplikasi. Aplikasi ini memerlukan endpoint HTTPS, jadi reverse proxy adalah wajib jika anda bercadang untuk menggunakannya di luar rumah.

PhotoPrism tidak mempunyai aplikasi natif rasmi. Ia menyediakan progressive web app, yang boleh ditambah ke skrin utama melalui pelayar web, dan ia mendokumentasikan WebDAV (web distributed authoring and versioning) sebagai cara untuk menyegerakkan data dari telefon. Projek ini mengesyorkan aplikasi pihak ketiga bernama PhotoSync untuk tujuan ini, yang dihalakan ke direktori /import/ atau /originals/ melalui WebDAV. Ia berfungsi, namun ia merupakan aplikasi pihak ketiga berbayar yang melakukan tugas yang dilakukan oleh Immich di dalam kliennya sendiri.

Jika keperluan utamanya adalah sandaran telefon automatik untuk beberapa ahli keluarga, maka jawapannya sudah jelas. Immich.

Apa yang sebenarnya diberikan oleh pembelajaran mesin kepada anda

Immich melakukan carian semantik ke atas pustaka anda menggunakan CLIP, jadi pertanyaan seperti "basikal merah dalam salji" akan menemui foto yang tidak pernah ditanda oleh sesiapa pun. Ia juga melakukan pengesanan dan pengelompokan wajah, serta pengesanan pendua. Pengindeksan import yang besar pada CPU berjalan selama berjam-jam di latar belakang, yang merupakan perkara biasa dan tidak memerlukan GPU (unit pemprosesan grafik).

PhotoPrism mengelaskan imej dengan TensorFlow kepada label, mengesan wajah dan mengumpulkan wajah tersebut kepada individu, serta membaca metadata lokasi untuk membina peta tempat. Peta tersebut merupakan ciri yang membuatkan pengguna terus menggunakannya: pustaka yang diindeks mengikut lokasi kejadian merupakan cara yang benar-benar berbeza untuk menyemak imbas foto selama dua puluh tahun. Pengecaman wajah disertakan dalam edisi Community yang percuma. Keahlian Essentials dan Plus yang berbayar menambah ciri tambahan seperti lapisan peta yang lebih kaya, lebih banyak peranan pengguna dan antara muka pengurusan pengguna, bermula daripada beberapa euro sebulan setakat Julai 2026.

Immich adalah percuma sepenuhnya tanpa peringkat berbayar. Teras PhotoPrism adalah percuma, dengan tambahan berbayar pilihan.

Sandaran menentukan sama ada anda menyimpannya

Pelayan foto tanpa sandaran hanya menunggu satu kegagalan cakera untuk kehilangan segala-galanya yang dimiliki oleh sesebuah keluarga. Kedua-dua aplikasi memerlukan dua sandaran: pangkalan data dan fail.

Bagi Immich, lakukan dump pangkalan data daripada kontena Postgres dan salin lokasi muat naik.

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

Kemudian sandarkan UPLOAD_LOCATION. Folder yang menyimpan data yang tidak boleh diganti ialah upload, library dan profile. Folder thumbs dan encoded-video boleh dijana semula, dengan kos masa CPU selama berjam-jam. Dump pangkalan data sahaja tidak memulihkan apa-apa, kerana ia hanya menyimpan metadata.

Bagi PhotoPrism, indeks mempunyai arahannya sendiri.

docker compose exec photoprism photoprism backup -i -f

Perintah itu menulis dump SQL di bawah storage/backup/. Kemudian salin folder originals dan folder storage. Oleh kerana PhotoPrism juga menulis fail YAML sidecar yang menerangkan setiap foto, indeks yang hilang boleh dibina semula daripada fail sahaja, yang merupakan kelebihan sebenar untuk arkib yang anda rancang untuk simpan selama beberapa dekad.

Walau apa pun pilihan anda, hantar sandaran tersebut keluar dari pelayan mengikut jadual dengan sandaran restic yang disulitkan dan dinyahduplikasi ke storan jauh. Sandaran yang berada pada cakera yang sama dengan pustaka bukanlah satu sandaran.

Yang mana satu patut anda jalankan

Jalankan Immich jika foto anda berada dalam telefon, jika lebih daripada seorang perlu membuat sandaran (backup) roll kamera, dan jika anda boleh memperuntukkan 6 GB RAM atau lebih kepada pelayan. Ia merupakan alternatif Google Photos yang paling hampir untuk dihoskan sendiri, dan pengalaman penggunaan mudah alih adalah fokus utamanya. Panduan pemasangan Immich langkah demi langkah kami merangkumi isu kehabisan memori dan perangkap naik taraf secara terperinci.

Jalankan PhotoPrism jika anda sudah mempunyai arkib foto pada cakera, jika anda mementingkan peta dan metadata serta ingin mengekalkan struktur folder sendiri, atau jika VPS anda mempunyai 4 GB RAM dan anda lebih mengutamakan pustaka yang berfungsi berbanding sistem yang kerap melakukan swapping. Ia merupakan alat penyusunan yang lebih baik dan lebih ringan untuk perkakasan berspesifikasi rendah.

Menjalankan kedua-duanya juga adalah munasabah. Immich mengendalikan kemasukan foto harian daripada telefon, dan sekali setahun anda mengasingkan foto pilihan ke dalam arkib anda dan membiarkan PhotoPrism mengindeks arkib tersebut. Kedua-duanya tidak bercanggah, kerana PhotoPrism membaca folder manakala Immich menguruskan storannya sendiri.

FAQ

Bolehkah PhotoPrism dan Immich berkongsi folder foto yang sama?

Tidak selamat jika kedua-duanya mempunyai akses tulis. PhotoPrism membaca folder originals dan menulis fail sidecar YAML bersebelahan dengan imej anda, manakala Immich menjangkakan ia mempunyai kawalan penuh ke atas kandungan lokasi muat naiknya. Anda boleh menghalakan PhotoPrism ke salinan baca-sahaja (read-only) folder library milik Immich untuk melihatnya, tetapi jangan benarkan kedua-dua aplikasi mengurus fail yang sama. Ini kerana templat storan Immich boleh mengalih atau menamakan semula aset semasa PhotoPrism sedang melakukan pengindeksan.

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

Tiada aplikasi yang dihoskan sendiri (self-hosted) harus menjadi satu-satunya tempat simpanan bagi sebarang data. Immich kerap mengeluarkan perubahan yang memecahkan keserasian (breaking changes), dan docker compose pull yang cuai boleh menyebabkan pangkalan data gagal bermula. Oleh itu, tetapkan versi anda dan baca nota keluaran sebelum melakukan naik taraf. Pastikan fail asal disandarkan di luar pelayan supaya risiko kekal rendah.

Mengapa kontena pembelajaran mesin (machine learning) Immich kerap dimulakan semula?

Ia ditamatkan kerana menggunakan terlalu banyak memori. Jalankan docker compose ps dan cari servis pembelajaran mesin yang keluar dengan kod 137, iaitu penamat memori (out of memory killer) oleh kernel. Tambah swap, atau berikan had memori kepada kontena tersebut supaya ia dihadkan (throttled) dan bukannya ditamatkan, atau matikan pembelajaran mesin sepenuhnya jika menggunakan mesin dengan 4 GB RAM. Carian akan berhenti berfungsi tanpanya, tetapi fungsi Immich yang lain akan berjalan dengan lancar.

Adakah PhotoPrism memerlukan MariaDB, atau adakah SQLite mencukupi?

SQLite berfungsi dan memadai untuk pustaka peribadi, tetapi PhotoPrism mengehadkan dirinya kepada empat pekerja (workers) apabila menggunakannya. Dokumentasi mencadangkan pertukaran kepada MariaDB kerana ia mengendalikan konkurensi tinggi dengan lebih baik. Fail compose yang dibekalkan oleh projek tersebut sudah pun menyertakan MariaDB, jadi laluan yang disyorkan juga merupakan laluan lalai.

Berapa banyak ruang cakera yang perlu saya sediakan melebihi saiz pustaka saya?

Tambah 10 hingga 20 peratus daripada saiz asal fail anda untuk kedua-dua aplikasi. Ini merangkumi lakaran kenit (thumbnails) yang dijana dan pratonton video yang ditranskod. Koleksi bersaiz 200 GB memerlukan volum sekitar 300 GB setelah mengambil kira ruang untuk pangkalan data, salinan sandaran tempatan dan pertumbuhan data masa hadapan.