Berapa RAM dan Disk yang Dibutuhkan Immich?
Immich menetapkan minimum 6 GB RAM. Pelajari kebutuhan server, Postgres, Redis, dan machine learning, serta cara menjalankannya pada RAM 4 GB.
Berapa RAM yang dibutuhkan Immich?
Immich membutuhkan RAM (random access memory) sebesar 6 GB sebagai minimum yang didokumentasikan dan merekomendasikan 8 GB, dengan 2 core CPU pada batas minimum dan 4 untuk instalasi yang nyaman. Angka tersebut mencakup seluruh stack karena Immich terdiri dari empat container, bukan satu aplikasi. Menelusuri library yang sudah diimpor tidak membutuhkan banyak sumber daya. Sebagian besar penggunaan memori terjadi saat proses impor, dan sebagian besar di antaranya digunakan oleh satu container yang dapat Anda nonaktifkan.
Data di balik grafik ini
[
{
"label": "Documented minimum",
"ram_gb": 6,
"cpu_cores": 2
},
{
"label": "Documented recommended",
"ram_gb": 8,
"cpu_cores": 4
}
]Angka tersebut adalah angka yang dipublikasikan pada halaman persyaratan Immich per Oktober 2026. Angka itu merupakan rekomendasi ukuran server, bukan pemeriksaan yang dilakukan software saat startup. Halaman yang sama mendokumentasikan satu konfigurasi yang lebih kecil, yaitu 4 GB dengan fitur machine learning dinonaktifkan, dan tidak mencantumkan konfigurasi di bawahnya. Pada server yang lebih kecil, yang berubah adalah background job yang dapat selesai dan perilaku proses impor saat memori habis.
Ada satu batasan nyata yang harus diperhatikan. Sejak versi 3, container machine learning pada host amd64 membutuhkan CPU x86-64-v2, yang mencakup sebagian besar prosesor yang dijual sejak sekitar 2012. Persyaratan tersebut berlaku untuk container itu, bukan untuk server, sehingga pada hardware yang lebih lama Anda dapat menonaktifkan machine learning, menjalankannya pada mesin lain seperti dijelaskan di bawah, atau tetap menggunakan v2.7.5, yang disebut dalam dokumentasi Immich sebagai versi terakhir yang kompatibel.
Jika instalasi belum dilakukan, mulai dengan panduan lengkap instalasi Immich pada VPS dengan Docker Compose, lalu kembali ke sini untuk menentukan ukuran server.
Ke mana memori digunakan: empat container
File Compose resmi menjalankan empat service. Masing-masing memiliki pola penggunaan memori yang berbeda, sehingga satu angka total menyembunyikan bagian yang penting.
immich-server menyediakan antarmuka web dan API, serta menjalankan worker untuk tugas latar belakang. Dua worker berjalan di dalam satu container tersebut. api menangani permintaan dari browser dan aplikasi mobile. microservices menjalankan queue, termasuk pembuatan thumbnail dan encoding video. Variabel IMMICH_WORKERS_INCLUDE dan IMMICH_WORKERS_EXCLUDE memisahkan keduanya ke dalam container terpisah. Dengan demikian, Anda dapat memberikan batas memori sendiri kepada bagian yang banyak menggunakan sumber daya tanpa membatasi bagian yang melayani foto.
database adalah image PostgreSQL 14 dengan ekstensi VectorChord yang sudah terpasang. Service ini menyimpan semua metadata dan satu vector pencarian untuk setiap aset. Dokumentasi Immich menetapkan batas minimum eksplisit satu-satunya dalam stack ini: jika Anda menerapkan batas sumber daya Docker, database memerlukan setidaknya 2 GB. Halaman yang sama menyatakan bahwa database idealnya ditempatkan pada penyimpanan SSD lokal dan tidak pernah pada network share dalam bentuk apa pun. Pencarian vector dan index terdiri atas pembacaan acak berukuran kecil, sehingga network volume mengubah setiap pembacaan menjadi perjalanan pulang-pergi. Jika pilihan paket bergantung pada hal ini, perbedaan antara penyimpanan NVMe dan SATA SSD pada VPS lebih penting di sini dibandingkan bagian lain dalam stack ini.
redis menjalankan image Valkey dan menyimpan queue tugas. Ukurannya jauh paling kecil di antara keempatnya karena service ini menyimpan record tugas, bukan data foto.
immich-machine-learning adalah service yang menentukan ukuran paket Anda. Service ini memuat model untuk pencarian cerdas, deteksi wajah, dan pengenalan teks. Model yang sudah dimuat tetap berada di memori. MACHINE_LEARNING_MODEL_TTL memiliki nilai default 300, sehingga model dikeluarkan setelah tidak ada permintaan selama lima menit dan dibaca kembali dari volume /cache saat ada permintaan berikutnya. Selama import massal, tidak pernah ada jeda lima menit. Karena itu, model tetap dimuat sejak aset pertama hingga aset terakhir.
Perubahan selama proses import
Immich yang sedang idle tidak banyak beraktivitas. Masalah pada server kecil biasanya terjadi saat import, karena pengunggahan satu aset memicu rangkaian job dan beberapa queue berjalan secara bersamaan.
Ekstraksi metadata membaca header file dan bebannya ringan. Pembuatan thumbnail membutuhkan lebih banyak sumber daya. Immich membuat tiga output thumbnail untuk setiap aset: placeholder thumbhash yang diburamkan, preview WebP, dan thumbnail JPEG, ditambah satu thumbnail untuk setiap wajah yang terdeteksi. Setiap job tersebut melakukan decoding gambar, dan konkurensi job menentukan jumlah gambar yang didekode secara bersamaan. Konkurensi adalah pengali yang mengubah beban kecil per job menjadi beban di seluruh server. Karena itu, FAQ Immich menyebutnya sebagai hal pertama yang perlu diturunkan pada mesin dengan sumber daya terbatas. Atur konkurensi untuk queue yang berat menjadi 1 melalui Administration, Settings, Job Settings.
Aset video menambahkan proses transcoding. Setiap job transcoding adalah proses FFmpeg terpisah dengan penggunaan memorinya sendiri, dan proses tersebut akan menggunakan setiap thread CPU yang Anda izinkan.
Smart search mengirim setiap aset baru ke container machine learning untuk menghitung satu vektor embedding. Deteksi wajah menjalankan model kedua pada gambar yang sama. Saat pertama kali mengimpor pustaka foto yang sudah ada, kedua queue tersebut memproses setiap aset yang Anda miliki selama berjam-jam. Inilah saat penggunaan memori mencapai titik tertinggi dalam seluruh instalasi, dan kondisi ini hanya terjadi sekali.
Mengapa pengenalan wajah dan objek membutuhkan RAM paling besar
Pemrosesan wajah terdiri dari dua pekerjaan. Deteksi wajah menjalankan model di dalam container machine learning dan menemukan kotak wajah. Pengenalan wajah kemudian mengelompokkan hasil deteksi tersebut berdasarkan orang, lalu langkah ini melakukan kueri ke indeks vektor di Postgres. Jadi, pustaka yang besar membebani kedua service secara bergantian: container model saat deteksi berjalan, lalu database saat pengelompokan berlangsung.
Empat pengaturan memengaruhi isi container machine learning.
- Model wajah. Immich menyertakan
buffalo_lsecara default, dan FAQ merekomendasikanbuffalo_spada server kecil. Model ini lebih kecil, sehingga menggunakan lebih sedikit memori dan berjalan lebih cepat, tetapi akurasinya pada wajah kecil atau tampak menyamping lebih rendah. - Jumlah worker.
MACHINE_LEARNING_WORKERSmemiliki nilai default 1. Setiap worker merupakan proses terpisah yang memuat salinan modelnya sendiri, sehingga menaikkannya menjadi 2 secara kasar menggandakan memori model resident. Biarkan pada 1 kecuali RAM Anda mencukupi. - Ukuran batch.
MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITIONmembatasi jumlah wajah yang diproses sekaligus. Batch disimpan bersama di memori, sehingga foto grup dengan empat puluh wajah menggunakan lebih banyak memori daripada foto potret. - Jenis model yang dijalankan. Smart search, deteksi wajah, dan pengenalan teks masing-masing memuat modelnya sendiri. Menonaktifkan fitur yang tidak digunakan melalui Administration, Settings, Machine Learning Settings akan menghapus penggunaan memorinya secara permanen, bukan hanya di antara proses import.
Ada juga MACHINE_LEARNING_MODEL_ARENA, yang didokumentasikan sebagai pengalokasian awal memori CPU untuk mencegah fragmentasi dan aktif secara default. Ubah pengaturan ini terakhir. Dampaknya bergantung pada memory allocator yang digunakan, sehingga satu-satunya cara yang dapat diandalkan untuk menilainya adalah memantau docker stats sebelum dan sesudah perubahan.
Tiga profil praktis: 2 GB, 4 GB, dan 8 GB
Data di balik grafik ini
[
{
"label": "2 GB VPS",
"server_limit_mb": 768,
"db_limit_mb": 768,
"ml_limit_mb": 0,
"redis_limit_mb": 128,
"notes": "below every documented configuration, machine learning container removed"
},
{
"label": "4 GB VPS",
"server_limit_mb": 1024,
"db_limit_mb": 2048,
"ml_limit_mb": 0,
"redis_limit_mb": 192,
"notes": "documented 4 GB setup: machine learning disabled or moved to another host, job concurrency 1"
},
{
"label": "8 GB VPS",
"server_limit_mb": 2048,
"db_limit_mb": 2048,
"ml_limit_mb": 2560,
"redis_limit_mb": 256,
"notes": "everything on at default settings"
}
]Anggap nilai tersebut sebagai batas yang dimasukkan ke Compose, bukan sebagai ukuran penggunaan Immich. Batas adalah nilai maksimum. Batas tidak mencadangkan resource dan tidak membuat service menjadi lebih kecil. Batas menentukan service yang dihentikan oleh kernel saat server kehabisan resource. Keputusan itu lebih baik ditentukan oleh Anda daripada oleh penilaian internal kernel.
Server 2 GB: hapus container machine learning
2 GB berada di bawah minimum terdokumentasi sebesar 6 GB dan di bawah satu-satunya konfigurasi terbatas yang didokumentasikan Immich, yaitu 4 GB dengan machine learning dinonaktifkan. Immich tidak menerbitkan konfigurasi 2 GB. Jadi, profil ini adalah kompromi yang tidak didukung, bukan resep konfigurasi. Jika tetap ingin mencobanya, beri komentar pada seluruh service immich-machine-learning di docker-compose.yml, atau biarkan service tersebut berjalan dan nonaktifkan setiap model di Administration, Settings, Machine Learning Settings. Menghapus container adalah opsi yang lebih kuat karena model yang dinonaktifkan tetap menyisakan proses Python di memory.
Anda tetap dapat menggunakan upload, album, berbagi, backup seluler, thumbnail, serta pencarian berdasarkan tanggal, lokasi, dan nama file. Anda kehilangan pencarian berdasarkan deskripsi, pengelompokan wajah secara otomatis ke dalam people, serta pengenalan teks di dalam gambar.
Keempat batas tersebut berjumlah sekitar 1.7 GB sehingga menyisakan sekitar 300 MB untuk host. Dokumentasi Immich menyatakan bahwa database saja memerlukan sedikitnya 2 GB setelah Docker resource limits digunakan. Nilai tersebut sama dengan seluruh kapasitas server. Jadi, 768 MB untuk database jauh di bawah batas minimum tersebut. Karena itu, Postgres adalah service yang paling mungkin dihentikan di sini.
Import akan mengalami masalah lebih dahulu. Menyajikan halaman hanya memerlukan query metadata dan pembacaan file, sehingga penelusuran library yang sudah ada memberikan beban paling ringan pada server. Sebaliknya, import yang berisi banyak video akan menyebabkan swap karena proses transcoding dan antrean thumbnail memerlukan memory pada waktu yang sama. Jika hanya 2 GB yang tersedia, atur semua antrean berat ke concurrency 1 dan tambahkan swap file. Jika Anda sedang memilih paket, anggap 4 GB sebagai batas minimum yang sebenarnya.
Server 4 GB: machine learning aktif, satu job setiap kali
Immich mendokumentasikan 4 GB sebagai kapasitas yang dapat digunakan dengan fitur machine learning dinonaktifkan. Itulah satu-satunya konfigurasi terbatas pada halaman persyaratannya. Dengan database pada batas minimum terdokumentasi sebesar 2 GB, ketiga batas dalam diagram berjumlah sekitar 3.2 GB sehingga menyisakan sekitar 800 MB untuk host. Atur job concurrency ke 1 untuk pembuatan thumbnail dan pertahankan jumlah thread transcoding tetap rendah.
Untuk mempertahankan pengenalan wajah dan objek, cara yang didokumentasikan adalah menjalankan container machine learning pada machine lain, seperti dijelaskan di bawah, lalu mengarahkan server ini ke machine tersebut. Menjalankannya pada server 4 GB yang sama melebihi konfigurasi yang didokumentasikan Immich karena batas minimum database menyisakan sekitar 2 GB untuk server, Redis, model, dan host secara bersamaan. Jika tetap ingin mencobanya, batasi container machine learning dengan Compose limit, ubah pengenalan wajah ke buffalo_s, lalu atur job concurrency ke 1 untuk pembuatan thumbnail, deteksi wajah, dan smart search.
Pemrosesan pertama pada library yang sudah ada akan berlangsung selama berjam-jam. Pada library besar, proses ini dapat berlangsung lebih dari satu hari. Ini merupakan batas CPU, bukan batas memory. Jadi, penambahan RAM tidak akan mempersingkatnya.
Jika machine learning berjalan pada server ini, container tersebut akan mengalami masalah lebih dahulu saat pemrosesan massal pertama. Tanpa batas, ukurannya akan terus bertambah ketika job transcoding juga bertambah, lalu kernel menghentikan salah satu yang lebih besar. Karena container tersebut restart dalam hitungan detik, docker ps -a menampilkannya sebagai Up dengan uptime yang jauh lebih singkat daripada service lain, bukan sebagai Exited (137). Akibatnya, antrean berjalan lebih lambat tanpa terlihat jelas saat Anda memeriksanya kembali.
Server 8 GB: rekomendasi terdokumentasi
8 GB dengan 4 core sesuai dengan rekomendasi Immich. Semua fitur berjalan dengan pengaturan default: smart search, deteksi wajah, pengenalan teks, dan transcoding, dengan concurrency default. Library yang berisi lebih dari seratus ribu aset dapat berjalan dengan baik di sini. Beban kemudian lebih banyak bergeser dari memory ke kecepatan disk karena vector index dan query metadata merupakan pekerjaan yang dilakukan database sepanjang hari.
Tetap tetapkan limits. Pada server yang memiliki kapasitas lebih, limits mencegah satu antrean yang tidak terkendali ikut menjatuhkan database. Jika Anda membandingkan biayanya dengan opsi yang lebih kecil, biaya sebenarnya VPS berdasarkan tier memory biasanya menjadikan paket 8 GB sebagai cara termurah untuk menghentikan penyesuaian konfigurasi terus-menerus.
Cara membatasi memori per service dengan limit Compose
Jangan mengedit docker-compose.yml untuk keperluan ini. File tersebut akan diganti setiap kali Anda melakukan upgrade dengan wget. Simpan limit di docker-compose.override.yml di sebelahnya. File tersebut akan digabungkan secara otomatis oleh docker compose.
services:
immich-server:
deploy:
resources:
limits:
memory: 1024M
immich-machine-learning:
deploy:
resources:
limits:
memory: 1024M
cpus: '1.5'
database:
deploy:
resources:
limits:
memory: 2048M
redis:
deploy:
resources:
limits:
memory: 192Mdocker compose up -d
docker stats --no-streamdocker stats kini seharusnya menampilkan batas memori Anda pada kolom MEM USAGE / LIMIT, bukan total memori host. Jika kolom limit masih menampilkan ukuran penuh host, file override belum digunakan. Periksa nama file, lalu jalankan docker compose config untuk melihat hasil penggabungannya.
Pertahankan memori database pada 2048M atau lebih. Dokumentasi Immich menetapkan 2 GB sebagai batas minimum database saat limit resource Docker digunakan. Limit yang terlalu rendah dapat mengubah service yang lambat menjadi service yang berhenti total. Naikkan limit jika container mulai berulang kali berhenti dan berjalan kembali. Penjelasan lebih lanjut tentang mekanismenya tersedia di mengatur limit memori per service di Docker Compose, termasuk alasan deploy dapat digunakan di luar Swarm dengan Compose v2.
Cara menonaktifkan atau memindahkan container machine learning
Pada server kecil, memindahkan container ini ke tempat lain adalah perubahan terbesar yang dapat Anda lakukan. Immich mendukung pengoperasiannya pada mesin lain. Buat file ini pada host kedua. Host tersebut dapat berupa desktop yang hanya menyala pada malam hari:
name: immich_remote_ml
services:
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
volumes:
- model-cache:/cache
restart: always
ports:
- 3003:3003
volumes:
model-cache:docker compose up -d
curl -s http://localhost:3003/pingSelanjutnya, buka Administration, Settings, Machine Learning Settings pada antarmuka web, klik Add URL, lalu masukkan http://<host>:3003. Gunakan versi yang sama pada kedua host, karena dokumentasi Immich memperingatkan bahwa perbedaan versi di antara keduanya dapat menyebabkan bug dan ketidakstabilan.
Port tersebut membawa pratinjau gambar foto Anda ke mesin lain tanpa enkripsi. Dokumentasi Immich juga memperingatkan bahwa container machine learning tidak memiliki fitur keamanan bawaan. Karena itu, pertahankan container tersebut pada jaringan privat atau jalankan melalui tunnel WireGuard antara kedua host. Jangan pernah mengekspos port 3003 ke Internet.
Jika masalahnya adalah keberadaan container model yang terus berjalan, Anda juga dapat membandingkan perbedaan PhotoPrism dan Immich dalam hal komponen yang tetap berjalan sebelum menentukan ukuran plan.
Berapa kapasitas disk yang diperlukan library Immich?
Tidak ada satu pengali yang berlaku untuk semua kasus, karena empat komponen berbeda bertambah dengan laju yang berbeda. Berikut perhitungannya untuk library yang berisi 50,000 foto dan 500 video pendek.
Data di balik grafik ini
[
{
"label": "Originals: 50,000 photos at 4 MB",
"gb": 200
},
{
"label": "Originals: 500 videos at 120 MB",
"gb": 60
},
{
"label": "Thumbnails and encoded video at 15%",
"gb": 39
},
{
"label": "Postgres database",
"gb": 3
},
{
"label": "Machine learning model cache",
"gb": 2
}
]Angka 200 GB untuk foto dan 60 GB untuk video adalah asumsi. Ganti dengan rata-rata Anda sendiri sebelum membeli perangkat apa pun, karena video paling menentukan angka ini: video ponsel berdurasi satu menit berukuran lebih besar daripada seratus foto.
find /srv/immich/upload -type f -printf '%s\n' \
| awk '{n++; s+=$1} END {printf "%d files, %.1f MB average\n", n, s/n/1048576}'Baris 39 GB adalah satu-satunya rasio yang dipublikasikan Immich: thumbnail yang dibuat dan video yang ditranskode menambah rata-rata 10 hingga 20 persen dari ukuran library. Rentang ini bergantung pada jumlah aset video yang perlu dienkode ulang agar kompatibel dengan browser. Library yang berisi file JPEG biasanya berada di batas bawah rentang tersebut.
Database berukuran 3 GB, dan angka ini hampir merupakan biaya tetap. Immich mendokumentasikan ukuran file database yang biasanya mencapai 1 hingga 3 GB, karena file tersebut menyimpan metadata dan vektor pencarian, bukan piksel. Cache model berukuran 2 GB dan bertambah jika Anda mengaktifkan beberapa model atau menguji model yang berbeda. FAQ menandai volume ini sebagai pengguna ruang yang besar karena alasan tersebut.
Kelima baris tersebut jika dijumlahkan menghasilkan sedikit lebih dari 300 GB. Jadi, volume 500 GB masih menyediakan ruang untuk pertumbuhan, sedangkan volume 250 GB tidak. Pantau pembagiannya dengan:
grep UPLOAD_LOCATION .env
du -sh /srv/immich/*Enam folder berada di bawah UPLOAD_LOCATION. upload dan library menyimpan file asli, thumbs menyimpan pratinjau dan thumbnail wajah, encoded-video menyimpan salinan yang dienkode ulang, profile menyimpan avatar, dan backups menyimpan dump database otomatis. Hanya upload, library dan profile yang tidak dapat digantikan, karena semua komponen lainnya dapat dibuat ulang dari file tersebut.
Ada dua hal yang sering mengejutkan pengguna. Aset yang dihapus terlebih dahulu masuk ke trash dan tetap menggunakan ruang sampai trash dikosongkan. Karena itu, pembersihan besar tidak langsung membebaskan ruang pada hari yang sama. Selain itu, dump database hanya berisi metadata, sehingga tidak berguna tanpa file terkait:
docker exec -t immich_postgres pg_dump --clean --if-exists \
--dbname=immich --username=postgres | gzip > /srv/backups/immich-dump.sql.gzGabungkan langkah tersebut dengan penyalinan file asli pada level file ke lokasi di luar server. Itulah fungsi backup restic dari VPS ke penyimpanan di luar server.
Transcoding dibatasi oleh CPU, bukan RAM
Menambah RAM tidak akan mempercepat transcoding. Immich melakukan transcoding dengan FFmpeg. Pada VPS biasa, setiap frame didekode dan dienkode oleh CPU. Setiap proses FFmpeg tetap menyimpan buffer frame yang telah didekode di memori. Karena itu, bagian import menghitung transcoding sebagai biaya memorinya sendiri. Namun, kecepatannya ditentukan oleh CPU. Meskipun akselerasi perangkat keras tersedia, dokumentasi Immich menyebutkan bahwa secara default hanya encoding yang dipercepat. CPU tetap menangani decoding dan tone mapping, kecuali Anda juga mengaktifkan hardware decoding.
Akselerasi perangkat keras memerlukan file Compose tambahan hwaccel.transcoding.yml serta device yang diteruskan, dengan menggunakan NVENC, Quick Sync, RKMPP, atau VAAPI. Sebagian besar paket VPS tidak menyediakan satu pun dari opsi tersebut. Karena itu, rencanakan penggunaan CPU.
Pengaturan yang paling penting adalah jumlah thread. Pada Administration, Settings, Video Transcoding Settings, nilai thread 0 berarti menggunakan semua core. Akibatnya, satu video dapat membuat antarmuka web tidak responsif pada paket 2 core. Atur nilainya menjadi 1 atau 2, seperti yang disarankan dalam FAQ Immich. Dengan begitu, transcoding menjadi lambat, bukan mengganggu layanan lain.
Mengapa import yang mengalami swap thrashing tampak seperti hang
Ini adalah kegagalan yang paling sering disalahartikan. Saat Immich kehabisan memori, ada dua kemungkinan, dan hanya satu yang tampak seperti kegagalan.
Tanpa swap, kernel menghentikan sebuah proses. Container dimulai ulang dalam hitungan detik. Dari browser, antrean pekerjaan hanya berhenti sementara lalu berjalan kembali. Buktinya ada di docker ps -a:
docker ps -a --filter name=immich
docker inspect immich_machine_learning | grep -i oomkilled
sudo dmesg -T | grep -i -E 'out of memory|oom-kill'Exited (137) berarti proses dihentikan dengan signal 9. 137 adalah 128 ditambah 9. Status ini hanya terlihat saat container berhenti. Setelah restart policy menjalankannya kembali, docker ps -a menampilkan Up lagi. Uptime yang jauh lebih singkat daripada container Immich lain menjadi petunjuknya. Signal 9 saja tidak membuktikan adanya masalah memori, karena Docker juga mengirimkannya jika proses stop normal melewati batas waktu. Nilai OOMKilled sebesar true memastikan bahwa proses dihentikan karena memori. Setelah container dimulai ulang, baris oom-kill dari dmesg adalah catatan yang harus dipercaya.
Dengan swap, tidak ada proses yang dihentikan dan tidak ada error. Kernel mulai memindahkan halaman memori ke disk. Import melambat hingga satu orde besarnya, dan antarmuka web berhenti merespons dalam batas waktu normal. Semua container tetap berjalan. Semua health check mungkin masih berhasil. Kondisinya tampak seperti hang. Pada tahap ini, orang biasanya me-reboot mesin, yang menghilangkan kemajuan antrean dan tidak mengubah apa pun.
free -m
vmstat 1 5Nilai non-zero yang terus-menerus pada kolom si dan so di vmstat berarti mesin terus membaca dan menulis swap. Inilah yang disebut thrashing. Baris free -m untuk Swap yang digunakan juga akan meningkat pada saat yang sama.
Tetap tambahkan swap pada mesin dengan RAM 2 GB atau 4 GB, karena import lambat yang dapat Anda diagnosis lebih baik daripada container yang dihentikan dan tidak dapat Anda diagnosis:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabKemudian perbaiki penyebabnya. Kurangi konkurensi pekerjaan menjadi 1, batasi penggunaan container machine learning, atau pindahkan container tersebut dari host ini. Swap memberi Anda waktu untuk melakukannya. Swap bukan solusi utama.
FAQ
Apakah Immich dapat dijalankan pada VPS 2 GB?
Tidak dengan konfigurasi apa pun yang didokumentasikan Immich. Halaman persyaratan menetapkan 6 GB sebagai minimum, menyebut 4 GB dengan fitur machine learning dinonaktifkan sebagai satu-satunya konfigurasi yang lebih kecil, dan menyatakan bahwa database saja memerlukan sedikitnya 2 GB setelah batas resource Docker diterapkan. Menonaktifkan service immich-machine-learning dan menetapkan konkurensi job ke 1 mungkin membuatnya berjalan, tetapi ini merupakan kompromi yang tidak didukung. Postgres adalah service yang paling mungkin dihentikan selama import. Jika hanya 2 GB yang tersedia, tambahkan swap file 2 GB agar lonjakan penggunaan resource saat import memperlambat server, bukan menyebabkan container dihentikan. Jika Anda memilih paket, mulai dari 4 GB.
Mengapa import Immich berhenti tanpa pesan error?
Dua penyebab berbeda dapat terlihat sama dari browser. Container mungkin dihentikan karena kehabisan memori lalu sudah dimulai ulang. Dalam kondisi ini, docker ps -a menampilkannya sebagai Up dengan uptime yang sangat singkat. Exited (137) hanya muncul jika Anda memeriksanya saat container masih berhenti. Kemungkinan lainnya, host sedang menggunakan swap. Dalam kondisi ini, semua container masih berjalan dan seluruh proses hanya menjadi sangat lambat. vmstat 1 5 membedakan kedua kondisi tersebut: angka non-nol yang terus muncul pada kolom si dan so berarti terjadi swapping. Dalam kedua kondisi tersebut, kurangi konkurensi job untuk pembuatan thumbnail, deteksi wajah, dan smart search.
Apa arti exit code 137 pada log Immich?
137 adalah 128 ditambah signal 9. Artinya, proses dihentikan dengan SIGKILL. Pada server Immich, penyebabnya biasanya batas memori, baik limit milik container maupun host yang kehabisan memori. Namun, kode ini saja tidak membuktikannya. Docker juga mengirim SIGKILL jika container tidak berhenti dalam batas waktu yang ditentukan, yang secara default adalah 10 detik di Linux. Periksa dengan docker inspect immich_machine_learning | grep -i oomkilled. Nilai true mengonfirmasi bahwa kernel menghentikan proses karena masalah memori. Selanjutnya, free -m dan sudo dmesg -T | grep -i oom-kill menunjukkan apakah penyebabnya adalah limit container atau seluruh host. Container machine learning biasanya menjadi korban karena umumnya menjalankan proses terbesar.
Berapa banyak ruang disk yang diperlukan Immich untuk setiap foto?
Siapkan ruang untuk file asli ditambah 10 hingga 20 persen. Dokumentasi Immich menyatakan bahwa thumbnail yang dibuat dan video hasil transcoding rata-rata menambah ukuran library sebesar 10 hingga 20 persen. Database itu sendiri biasanya berukuran 1 hingga 3 GB, bahkan untuk library besar. Video yang sebenarnya menentukan total kebutuhan ruang. Karena itu, ukur rata-rata ukuran file Anda sendiri sebelum memilih paket, bukan menerapkan pengali pada jumlah foto.
Apakah Immich memerlukan GPU?
Tidak. Semua bagian Immich dapat berjalan pada CPU. GPU mempercepat inferensi model dalam container machine learning dan encoding video, tetapi keduanya tidak wajib. Sebagian besar paket VPS tidak menyediakan GPU. Pada hardware yang hanya menggunakan CPU, atur thread transcoding ke 1 atau 2, gunakan model wajah buffalo_s, dan biarkan import massal pertama berjalan semalaman.