PhotoPrism au Immich: ipi bora kwa picha zako?
Linganisha PhotoPrism na Immich kwa ajili ya seva binafsi. Jua tofauti za matumizi ya RAM, utendaji wa programu za simu, ramani, na amri sahihi za chelezo kwenye VPS.
PhotoPrism dhidi ya Immich: jibu fupi
Uchaguzi kati ya PhotoPrism na Immich ni wa kazi mbili tofauti, si matoleo mawili ya bidhaa moja. Immich inachukua nafasi ya Google Photos: programu ya simu huhifadhi nakala ya picha zako kiotomatiki, na mpangilio wa muda (timeline) unaopata unaonekana kama ule wa matunzio ya simu. PhotoPrism hupanga maktaba ya picha uliyo nayo tayari: hufanya index ya folda za faili kwenye diski, husoma metadata zake, huziweka kwenye ramani, na kuziacha faili hizo mahali zilipokuwa.
Chagua Immich ikiwa tatizo ni "simu yangu imejaa na nataka kuacha kutumia Google Photos". Chagua PhotoPrism ikiwa tatizo ni "nina GB 400 za picha kwenye diski na siwezi kupata chochote ndani yake". Zote ni open source, zote huendeshwa kama Docker containers kwenye VPS ya kawaida, na zote hufanya index na kutafuta kwenye maktaba yako bila kutuma chochote kwa wahusika wengine.
Mgawanyiko wa falsafa, na kwa nini unaamua kila kitu
Immich inamiliki faili. Unaiwekea eneo la kupakia, programu ya simu au kipakiaji cha wavuti hutuma faili asilia, na Immich huzihifadhi chini ya njia yake yenyewe kwa kutumia mfumo wake wa kutoa majina. Hifadhidata ndiyo inayoshikilia ukweli kuhusu albamu, nyuso, na utafutaji. Usanifu huo ndio unaofanya matumizi ya simu kuwa mazuri, kwa sababu seva daima inajua hali kamili ya kila kipengee.
PhotoPrism inasoma faili. Unapachika (mount) folda ya originals ambayo tayari unaitawala, na PhotoPrism hujenga index juu yake. Mti wako wa saraka unabaki kuwa wako. Ukiondoa PhotoPrism kesho, picha zitabaki pale pale kwenye folda zilezile zenye majina yaleyale, na faili za sidecar YAML ambazo PhotoPrism iliandika zikielezea ilivyojifunza zitabaki kwenye folda yake ya kuhifadhia, ambapo ndipo inapozihifadhi kwa chaguo-msingi.
Tofauti hiyo moja inaelezea sehemu kubwa ya mambo mengine. Immich ina usaidizi thabiti wa simu kwa sababu inadhibiti uingizaji wa data. PhotoPrism ina usimamizi thabiti wa maktaba kwa sababu haigombani na muundo wako uliopo. Immich ni jibu bora kwa familia ambayo picha zake zipo kwenye simu. PhotoPrism ni jibu bora kwa kumbukumbu iliyopo kwenye diski.
Mahitaji ya maunzi: Immich inahitaji zaidi
Kiwango cha chini cha kumbukumbu kilichoelezwa kiko mbali sana, na kwenye VPS ndogo hii ndiyo sababu kuu ya maamuzi.
Data iliyo nyuma ya chati hii
[
{
"label": "Immich",
"min_ram_gb": 6
},
{
"label": "PhotoPrism",
"min_ram_gb": 3
}
]Immich inaeleza 6 GB ya RAM kama kiwango cha chini na 8 GB kama kiwango kinachopendekezwa, ikiwa na angalizo kwamba mashine ya 4 GB inaweza kuiendesha tu ikiwa machine learning imezimwa. PhotoPrism inaeleza 3 GB ya kumbukumbu halisi na cores mbili za CPU, na inasema kuwa zaidi ya kiwango hicho cha chini, kiasi cha RAM kinapaswa kuendana na idadi ya cores.
Pengo hili ni la kweli, na linatokana na container ya machine learning. Immich huendesha mifano yake (models) katika huduma tofauti ya immich-machine-learning inayopakia CLIP (contrastive language image pretraining) na mifano ya utambuzi wa nyuso kwenye kumbukumbu. Kwenye mashine ya 2 GB, tukio la out of memory kill linawezekana; ikiwa kernel itaua container hiyo, utaiona ikitoka na code 137, hali inayowakilisha mchakato uliouawa kwa signal 9, ambayo ndiyo namna out of memory kill inavyoonekana kwenye Docker. Mifano iliyojengwa ndani ya PhotoPrism huendeshwa kwenye ONNX, ambayo nyaraka zake zinasema kwa ujumla hufanya kazi vizuri kwenye aina zote za maunzi, na ina njia mbadala iliyoandikwa kwa ajili ya kumbukumbu ndogo: kwenye mashine zenye 1 GB au chini ya hapo, inazima ubadilishaji wa RAW na utambuzi wa nyuso. Hata hivyo, hiyo si ahadi ya uthabiti. PhotoPrism inapendekeza 3 GB na inaripoti kuwa imefanya kazi kwenye Droplets ndogo zaidi, huku ikionya kuhusu kukosekana kwa uthabiti na matatizo ya utendaji chini ya pendekezo hilo.
Nyaraka za PhotoPrism ziko wazi kuhusu kuhitaji angalau 4 GB ya swap kwenye seva. Ukurasa wa mahitaji wa Immich hautaji swap, lakini swap huipa container yake ya machine learning nafasi ya ziada kwenye mashine ndogo. Iongeze kabla ya kusakinisha yoyote kati ya hizo mbili.
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 sasa inapaswa kuchapisha mstari wa Swap: unaoonyesha 4.0Gi. Ikiwa inachapisha 0B, basi swapon imefeli, kwa kawaida kwa sababu mfumo wa faili (filesystem) haukubali fallocate, na sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 ndiyo njia mbadala. Viwango vya juu vya kumbukumbu ya container ni muhimu hapa pia, na kuweka mipaka ya kumbukumbu katika Docker Compose ndiyo njia unayotumia kuzuia huduma moja yenye njaa ya rasilimali kuangusha mashine nzima. Isipokuwa ni PhotoPrism yenyewe: nyaraka zake zinashauri kutoweka kikomo kigumu cha kumbukumbu kwenye container yake, kwa sababu kuorodhesha (indexing) faili kubwa huhitaji kumbukumbu ya ziada kwa muda mfupi na kikomo kinaweza kusababisha kuanza upya kusikotarajiwa.
Mahitaji mengine moja huwakamata watu. Database ya Postgres ya Immich lazima ikae kwenye mfumo wa faili wa kawaida wa Unix wenye umiliki na ruhusa halisi, kwenye hifadhi ya ndani (local storage), kamwe si kwenye network share. PhotoPrism inaonya kamwe usihifadhi faili zake za database kwenye folda ya mtandao iliyoshirikiwa na inaita hifadhi ya ndani ya SSD kuwa mahali bora zaidi kwa ajili yake. Hakuna programu kati ya hizi mbili iliyo salama kuendeshwa huku database yake ikiwa kwenye mounted object store.
Jinsi ya kusakinisha kila moja
Usakinishaji wote unahusisha faili ya compose ya mtoa huduma na amri moja. Sanidi Docker Engine na Compose plugin kwanza, kama ilivyoelezwa katika mwongozo wetu wa Docker Compose kwenye VPS.
Immich huchapisha faili yake ya compose na faili ya mfano ya mazingira (environment file) katika kila release.
sudo mkdir -p /opt/immich && cd /opt/immich
wget -O docker-compose.yml https://raw.githubusercontent.com/immich-app/immich/v3.3.0/docker/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.envHariri .env kabla ya kuanza jambo lolote. UPLOAD_LOCATION ndipo asilia zako zitakapohifadhiwa. DB_PASSWORD huja na chaguo-msingi linalofanya kazi, na Immich inapendekeza kulibadilisha kuwa nenosiri nasibu (random password), ingawa haihitajiki. Postgres haijawekwa wazi kwa umma, kwa hivyo nenosiri hutumika kwa uthibitishaji wa ndani pekee, lakini kutumia nenosiri nasibu hakugharimu chochote. Tumia vibambo vya A-Za-z0-9 pekee, kwa sababu nyaraka za Immich zinasema vibambo vingine vinaweza kusababisha matatizo wakati Docker inapochakata thamani hiyo. Kisha ianzishe.
docker compose up -d
docker compose psKiolesura cha wavuti hujibu kwenye port 2283. Akaunti ya kwanza kusajiliwa kupitia ukurasa huo inakuwa ya msimamizi (administrator), kwa hivyo ifikie na ujisajili mara moja badala ya kuacha mfano (instance) wazi kwenye Internet.
PhotoPrism husafirisha faili moja ya compose ambayo tayari inajumuisha MariaDB.
sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yamlFungua compose.yaml na ubadilishe PHOTOPRISM_ADMIN_PASSWORD kabla ya kuanza kwa mara ya kwanza. Nyaraka ziko wazi kuhusu hili: programu huanza na nenosiri lolote la awali lililo kwenye faili hiyo, urefu wa chini ni vibambo 8, na thamani chaguo-msingi haipaswi kamwe kutumika kwenye seva ya umma. Weka volume ya originals kwenye folda inayoshikilia picha zako wakati huo huo.
docker compose up -d
docker compose logs -f photoprismPhotoPrism hujibu kwenye port 2342 na mtumiaji admin. Hakuna programu kati ya hizi inayopaswa kuwekwa wazi moja kwa moja. Weka reverse proxy yenye TLS (transport layer security) mbele, mfumo uleule uliotumika kwa Nextcloud inayojiendesha yenyewe kwa Docker, TLS na backups, au iweke seva ikiwa ya faragha na uifikie kupitia VPN. Ikiwa VPS hiyo itaishia kubeba vitu vingine zaidi ya picha, tumia tahadhari hiyo hiyo kwa kila huduma unayoongeza, kwa sababu relay ya RustDesk inayojiendesha yenyewe inahitaji port zake pekee ziweze kufikiwa na si kitu kingine.
Ni ipi ina app bora ya simu
Hapa ndipo miradi hii miwili inapotofautiana zaidi, na ndiyo sababu watu wengi huishia kutumia Immich.
Immich inatoa apps rasmi kwa ajili ya Android na iOS. Apps hizi hufanya backup ya picha kutoka kwenye simu kwa nyuma (background), kumaanisha kuwa picha mpya huondoka kwenye simu bila mtumiaji kufungua chochote. Ili kuitumia ukiwa nje ya nyumba, Immich inaelekeza njia tatu: VPN kama WireGuard au OpenVPN, Tailscale, au reverse proxy inayotoa HTTPS. Reverse proxy ndiyo inayoruhusu apps za simu kuunganishwa bila hitaji la app ya VPN kwenye kila simu, na Immich inaonya kutowahi kufungua port 2283 moja kwa moja kwenye Internet bila usanidi wa ziada.
PhotoPrism haina app rasmi ya asili (native app). Inatoa progressive web app, ambayo unaiongeza kwenye home screen kupitia kivinjari, na inaelekeza WebDAV (web distributed authoring and versioning) kama njia ya kusawazisha (sync) data kutoka kwenye simu. Mradi huu unapendekeza app ya mtu wa tatu inayoitwa PhotoSync kwa kazi hii, ikielekezwa kwenye saraka ya /import/ au /originals/ kupitia WebDAV. Inafanya kazi, na ni app ya mtu wa tatu inayolipishwa inayofanya kazi ambayo Immich inafanya ndani ya client yake yenyewe.
Ikiwa hitaji ni backup ya kiotomatiki ya simu kwa wanafamilia kadhaa, basi jibu ni moja. Immich.
Mashine ya kujifunza (machine learning) inakupa nini hasa
Immich hufanya utafutaji wa kisemantiki (semantic search) kwenye maktaba yako kwa kutumia CLIP, hivyo swali kama "baiskeli nyekundu kwenye theluji" hupata picha ambazo hazijawahi kuwekewa tag na mtu yeyote. Pia hufanya utambuzi wa nyuso na kuziweka kwenye makundi, pamoja na kutambua nakala rudufu (duplicate detection). Kuorodhesha (indexing) mkusanyiko mkubwa wa picha kwa kutumia CPU huchukua saa kadhaa nyuma ya pazia, jambo ambalo ni la kawaida na halihitaji GPU (graphics processing unit).
PhotoPrism huainisha picha katika lebo kwa kutumia modeli ya ONNX iliyojengwa ndani, hutambua nyuso na kuziweka kwenye makundi ya watu kwa kutumia modeli za nyuso za ONNX, na kusoma metadata ya eneo ili kujenga ramani ya maeneo. Faili ya vision.yml katika folda yake ya usanidi inaweza kubadilisha na kutumia Ollama au OpenAI kwa ajili ya lebo na maelezo (captions) ukitaka. Ramani ndiyo kipengele ambacho watu hukivutia zaidi: maktaba iliyoorodheshwa kulingana na mahali picha zilipopigwa ni njia tofauti kabisa ya kuvinjari picha za miaka ishirini. Wazo hilohilo hufanya kazi kwenye makusanyo mengine ya midia, na kiolesura cha duka la video la miaka ya 90 cha Halcyon kwa ajili ya Jellyfin ni toleo la filamu la wazo hilo, ambapo unavinjari kwa rafu badala ya orodha. Utambuzi wa nyuso umejumuishwa katika toleo la bure la Community. Uanachama wa Essentials na Plus unaolipiwa huongeza vitu vya ziada kama tabaka za ramani zenye maelezo zaidi, majukumu zaidi ya watumiaji na kiolesura cha usimamizi wa watumiaji, kuanzia euro chache kwa mwezi, zinazolipwa kila mwaka, kuanzia Oktoba 2026.
Immich haina vipengele vilivyofungiwa kwa malipo, na mradi huo unasema havitakuwepo kamwe. Inauza funguo za bidhaa za maisha (lifetime product keys) za hiari, $25 kwa mtumiaji mmoja au $100 kwa seva nzima kulingana na bei ambazo Immich ilitangaza mnamo Julai 2024, lakini kununua ufunguo hakufungui chochote na Immich hufanya kazi bila kizuizi chochote kama hutalipa. Msingi wa PhotoPrism ni bure, na una nyongeza za hiari zinazolipiwa.
Backup huamua kama utahifadhi data zako
Seva ya picha isiyo na backup iko hatarini kupoteza kila kitu cha familia endapo diski itaharibika. Programu zote mbili zinahitaji backups mbili: database, na faili zenyewe.
Kwa Immich, toa dump ya database kutoka kwenye container ya Postgres na unakili eneo la upload.
docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gzKisha fanya backup ya UPLOAD_LOCATION. Folda zenye data zisizoweza kubadilishwa ni upload, library na profile. Folda za thumbs na encoded-video zinaweza kutengenezwa upya, ingawa itachukua saa nyingi za CPU. Database dump pekee hairejeshi chochote, kwa sababu ina metadata pekee.
Kwa PhotoPrism, index ina amri yake maalum.
docker compose exec photoprism photoprism backup -i -fHiyo huandika SQL dump ndani ya storage/backup/. Kisha unakili folda ya originals na folda ya storage. Kwa sababu PhotoPrism pia huandika faili za sidecar YAML zinazoelezea kila picha, index iliyopotea inaweza kujengwa upya kutoka kwenye faili pekee, jambo ambalo ni faida kubwa kwa kumbukumbu unayopanga kuhifadhi kwa miongo kadhaa.
Chochote utakachochagua, tuma nakala hizo rudufu nje ya seva kwa ratiba ukitumia nakala rudufu za restic zilizotiwa usimbaji fiche na kuondoa marudio, kwenda kwenye hifadhi ya mbali. Nakala rudufu iliyo kwenye diski ileile na maktaba si nakala rudufu. Weka kazi hiyo itoe arifa inaposhindwa, kwa sababu nakala rudufu iliyoacha kufanya kazi kimya kimya mwezi wa March inaonekana sawa kabisa na ile iliyotekelezwa jana usiku hadi siku utakapoihitaji, na seva ya ntfy unayojiendeshea itatuma taarifa hiyo ya kushindwa kwenye simu yako jioni hiyohiyo.
Ni ipi unapaswa kuiendesha
Endesha Immich ikiwa picha zako ziko kwenye simu, ikiwa zaidi ya mtu mmoja anahitaji kuhifadhi nakala ya picha za simu (camera roll), na ikiwa unaweza kuipa seva yako 6 GB ya RAM au zaidi. Hii ndiyo programu inayokaribiana zaidi na Google Photos unayoweza kujiendeshea mwenyewe, na matumizi ya simu ndiyo lengo kuu. Mwongozo wetu wa hatua kwa hatua wa kusakinisha Immich unaelezea kwa kina kuhusu matatizo ya kumbukumbu na mitego ya kuboresha toleo (upgrade).
Endesha PhotoPrism ikiwa tayari una mkusanyiko wa picha kwenye diski, ikiwa unajali ramani na metadata na kutunza muundo wako wa folda, au ikiwa VPS yako ina 4 GB ya RAM na ungependa kuwa na maktaba inayofanya kazi badala ya inayotumia swap memory. Hii ni zana bora zaidi ya kupanga picha na ni rafiki zaidi kwa vifaa vyenye uwezo mdogo.
Kuendesha zote mbili pia ni jambo linalofaa. Immich inashughulikia uingizaji wa picha za kila siku kutoka kwenye simu, na mara moja kwa mwaka unachagua picha unazotaka kuzihifadhi kwenye kumbukumbu yako na kuiacha PhotoPrism iziainishe. Hazigongani, kwa sababu PhotoPrism inasoma folda wakati Immich inamiliki folda zake yenyewe.
FAQ
Je, PhotoPrism na Immich zinaweza kutumia folda moja ya picha?
Si kwa usalama katika pande zote mbili. PhotoPrism huorodhesha folda ya originals na ina vipengele vinavyoandika humo isipokuwa ikiwa inaendeshwa katika hali ya read-only, wakati Immich inatarajia kumiliki maudhui ya eneo lake la upload. Unaweza kuelekeza PhotoPrism kwenye nakala ya read-only ya folda ya library ya Immich ili kuvinjari, lakini usiruhusu programu zote mbili kudhibiti faili zilezile, kwa sababu template ya hifadhi ya Immich inaweza kuhamisha au kubadili majina ya faili wakati PhotoPrism inafanya indexing.
Je, Immich ni thabiti vya kutosha kuhifadhi nakala pekee ya picha zangu?
Hakuna programu ya self-hosted inayopaswa kuhifadhi nakala pekee ya kitu chochote. Immich sasa inafuata semantic versioning na inasema mabadiliko makubwa (breaking changes) yanatokea tu kwenye major releases, kwa hivyo funga IMMICH_VERSION kwenye tag ya major version kama v3, soma maelezo ya release, kisha ufanye upgrade kwa kutumia docker compose pull && docker compose up -d. Downgrading haitumiki, hata ndani ya minor version ileile, kwa hivyo chukua database dump kabla ya kila upgrade. Hifadhi faili asilia nje ya seva ili hatari ibaki ndogo.
Kwa nini container ya machine learning ya Immich inajianzisha upya mara kwa mara?
Kwa kawaida inafungwa kwa sababu ya kutumia kumbukumbu (memory) nyingi mno. Endesha docker compose ps --all, kwa sababu container iliyosimamishwa hufichwa bila flag hiyo, na utafute huduma ya machine learning inayotoka na code 137. Code hiyo inamaanisha mchakato ulifungwa kwa signal 9; kernel out of memory killer ndiyo sababu ya kawaida lakini si pekee, kwa hivyo thibitisha kwa sudo dmesg | grep -i 'out of memory'. Ongeza swap, au zima machine learning kabisa kwenye mashine ya 4 GB. Kikomo cha kumbukumbu (hard memory limit) huzuia matumizi ya kumbukumbu ya container: kufikia kikomo hicho husababisha memory reclamation, na kernel huita out of memory killer ndani ya container ikiwa matumizi hayawezi kupunguzwa. Kufikia kikomo hakufungi container moja kwa moja. Smart search na utambuzi wa nyuso (face recognition) huacha kufanya kazi bila machine learning, lakini sehemu nyingine ya Immich huendelea kufanya kazi vizuri.
Je, PhotoPrism inahitaji MariaDB, au SQLite inatosha?
SQLite inafanya kazi na inafaa kwa maktaba ya kibinafsi, lakini PhotoPrism hujiwekea kikomo cha wafanyakazi (workers) wanne inapotumia SQLite, na nyaraka zinapendekeza kutumia MariaDB kwa sababu inashughulikia concurrency ya juu vizuri zaidi. Faili ya compose inayokuja na mradi huu tayari inajumuisha MariaDB, kwa hivyo njia inayopendekezwa ndiyo chaguo-msingi.
Ni nafasi kiasi gani ya diski ninapaswa kutenga zaidi ya ukubwa wa maktaba yangu?
Kwa Immich, thumbnails zinazozalishwa na video zilizobadilishwa format (transcoded) huongeza ukubwa wa maktaba kwa asilimia 10 hadi 20 kwa wastani. Mkusanyiko wa 200 GB kwa hivyo unahitaji takriban 220 hadi 240 GB kwa ajili ya maktaba pekee kulingana na makadirio hayo, pamoja na nafasi ya database na ukuaji. PhotoPrism haina asilimia maalum inayotabirika: mahitaji halisi ya hifadhi hutegemea resolution na format za faili, na folda yake ya hifadhi inaweza kuzidi ukubwa wa faili asilia wakati video zilizobanwa sana zinahitaji AVC transcoding. Ikiwa pia utahifadhi nakala kamili ya backup kwenye volume ileile, 200 GB ya faili asilia na nakala hiyo zinahitaji angalau 400 GB kabla ya kuhesabu faili zilizozalishwa, database na ukuaji.