Mbadala bora wa Dropbox wa kujihostia (Self-hosted)
Linganisha Nextcloud, Seafile, na Syncthing ili kujua chaguo sahihi kwa VPS yako. Pata mwongozo kuhusu gharama halisi na kwa nini usawazishaji si sawa na kuhifadhi nakala.
Ni mbadala gani wa Dropbox unaoweza kujihostia (self-hosted) unaopaswa kuutumia?
Kuna njia mbadala nne za Dropbox unazoweza kujihostia ambazo zinafaa muda wako: Nextcloud, Seafile, Syncthing, na hifadhi ya object (object storage) yenye mteja (client) juu yake. Hizi hazibadilishani. Nextcloud inafaa kwa kaya au timu ndogo ambapo watu wengine wanahitaji kupokea faili. Seafile inafaa kwa mtu binafsi au timu inayosawazisha (sync) idadi kubwa sana ya faili ndogo, ambapo kasi ya kusawazisha ni muhimu zaidi kuliko jinsi data inavyoonekana kwenye diski. Syncthing inafaa kwa mtu mmoja anayesawazisha vifaa vyake mwenyewe, ambapo hakuna mtu wa nje anayehitaji link. Hifadhi ya object inafaa kwa ajili ya kumbukumbu (archive): nafasi ya bei nafuu ya kuhifadhi data ambayo huifungui mara kwa mara.
Chagua kulingana na jinsi usawazishaji unavyofanya kazi kabla ya kulinganisha vipengele. Orodha za vipengele zote zinaonekana sawa. Topolojia, yaani ni mashine ipi inayoshikilia nakala ambayo kila mashine nyingine inakubaliana nayo, ndiyo inayoamua kama utaendelea kufurahia mfumo huo baada ya miezi sita.
Topolojia ya usawazishaji: seva kuu (server of record), au vifaa sawa (peers) bila seva
Kuna usanifu mbili zinazozingatiwa, na sehemu kubwa ya maelekezo yafuatayo inategemea chaguo lako.
Seva kuu (Server of record). Nextcloud, Seafile na hifadhi ya object storage zote hufanya kazi kwa njia hii. Mashine moja, kwa kawaida VPS (virtual private server), inashikilia nakala rasmi. Kila kifaa huwasiliana na mashine hiyo. Laptop yako inaweza kuzimwa kwa mwezi mzima, ikawashwa tena, na kujisasisha yenyewe. Simu yenye nafasi ya 6 GB inaweza kuhifadhi sehemu ya data wakati seva inashikilia kila kitu. Kivinjari kinaweza kufikia faili hizo, na ndiyo sababu viungo vya kushiriki (share links) vinaweza kuwepo.
Vifaa sawa (Peers) bila seva. Syncthing hufanya kazi kwa njia hii. Vifaa hutafutana na kubadilishana orodha ya faili moja kwa moja kupitia muunganisho uliosimbwa (encrypted). Hakuna nakala rasmi: faili ipo kwenye vifaa vinavyoishikilia na si mahali pengine. Vifaa viwili lazima viwe mtandaoni kwa wakati mmoja ili mabadiliko yaweze kupita kati yao. Hakuna URL ya kumpa mtu yeyote, kwa sababu hakuna mashine inayohudumia ukurasa.
Matokeo manne yanajitokeza, na haya ndiyo watu hukutana nayo baadaye:
- Kutuma faili kwa mtu ambaye hataki kusakinisha programu kunahitaji seva kuu. Kiungo ni URL, na URL inahitaji mchakato (process) unaosikiliza kwenye port.
- Kufikia faili zako kutoka kwa mashine usiyoimiliki, kwa mfano laptop ya kazini, kunahitaji seva kuu.
- Kifaa kilichokuwa kimezimwa kwa wiki kadhaa hujisasisha kutoka kwa seva pindi kinapowashwa. Katika usanifu wa vifaa sawa, hujisasisha tu wakati kifaa kingine kinachoshikilia data hiyo kikiwa mtandaoni pia. Hii ndiyo sababu watumiaji wengi wa Syncthing huendesha instance moja kwenye VPS kama kifaa sawa kinachowaka muda wote.
- Hifadhi huongezeka kwa njia tofauti. Seva kuu inashikilia nakala moja kamili, pamoja na chochote ambacho kila kifaa kinahifadhi ndani yake. Vifaa vinne vinavyoshiriki folda moja vitashikilia nakala nne kamili, kwa sababu kila kifaa kinahifadhi folda nzima.
Nextcloud: watumiaji, vikundi na viungo vya umma
Nextcloud ni programu ya wavuti ya PHP. Inahifadhi faili zako kama faili za kawaida chini ya saraka ya data na kuzifuatilia kwenye hifadhidata. Unaweza kushiriki folda na mtumiaji, kikundi, au kama kiungo cha umma chenye nenosiri na tarehe ya mwisho wa matumizi. Historia ya toleo imewashwa kwa chaguo-msingi na faili zilizofutwa huenda kwenye pipa la takataka kwanza. Wateja wa kompyuta ya mezani (desktop clients) wanapatikana kwa Linux, macOS na Windows, na programu za iOS na Android ni rasmi. Ikiwa sababu yako ya kuondoka Dropbox ni kwamba watu wengine wanahitaji kupokea faili zako, hii ndiyo jibu la kweli.
Gharama yake ni sehemu nyingi zinazofanya kazi. Ufungaji wa kawaida huendesha seva ya wavuti, PHP-FPM (meneja wa mchakato wa PHP), hifadhidata kama MariaDB au PostgreSQL, na Redis kwa ajili ya kufunga faili (file locking). Kazi ya usuli (background job) huendeshwa kila dakika tano kutoka cron au systemd timer. Kwenye VPS ya 1 GB itaanza, kisha upakiaji mkubwa au amri ndefu ya occ maintenance itakumbana na out-of-memory killer. Chukulia 2 GB kama kiwango cha chini kwa watumiaji wachache, na tarajia kuhitaji 4 GB pindi utakapowasha programu zaidi. Gharama nyingine ni maboresho: programu za app-store hujengwa kwa ajili ya toleo maalum la msingi, kwa hivyo hakikisha kuwa programu unazotegemea zinaunga mkono toleo kuu linalofuata kabla ya kulifanya.
Nextcloud hupungua kasi wakati akaunti moja inaposhikilia mamia ya maelfu ya faili ndogo, kwa sababu kila faili ni safu katika jedwali la akiba ya faili (file cache table) na faili halisi kwenye diski, na mteja wa kompyuta ya mezani huzichunguza moja baada ya nyingine. Katika kiwango cha kaya jambo hili halijitokezi. Ukubwa, TLS (transport layer security) na nakala rudufu (backups) zimefafanuliwa katika usakinishaji wa Nextcloud kwa kutumia Docker wenye TLS na backups, ambapo ndipo unapaswa kwenda mara tu utakapokuwa umeamua.
Onyo moja kuhusu wigo. Nextcloud pia itaendesha kalenda yako, anwani, madokezo na maktaba ya picha, na kila programu unayowasha huongeza kazi ya usuli na kitu kingine kimoja kinachoweza kuzuia uboreshaji. Ikiwa picha ndilo tatizo halisi, zana maalum huishughulikia vyema zaidi: angalia Immich kama mbadala wa Google Photos unaojiendesha. Ikiwa hati na wiki ndilo tatizo halisi, angalia mbadala za Notion zinazojiendesha badala ya kurundika programu kwenye seva yako ya faili. Kuhariri hati hizo kwenye kivinjari ni seva tofauti tena badala ya kuwa programu ya Nextcloud, kwa hivyo pima OnlyOffice dhidi ya Collabora kabla ya kudhani kuwa kiwango cha 2 GB bado kinakutosheleza.
Seafile: iliyoundwa kwa ajili ya idadi kubwa sana ya faili ndogo
Seafile hugawanya kila faili katika vizuizi (blocks) na kuzihifadhi kwenye hifadhi ya vitu (object store) ya ndani inayoelekezwa kwa kutumia hash ya maudhui, wazo sawa na lile ambalo git hutumia kwa vitu vyake. Kitengo cha kusawazisha (sync) na kushiriki ni maktaba (library) badala ya mti wa folda. Kwa sababu mteja hupakia vizuizi na commit moja badala ya ombi moja kwa kila faili, kusawazisha saraka ya faili ndogo 100,000 hukamilika haraka zaidi kuliko itifaki ya kila-faili inavyoweza kufanya. Vizuizi vinavyofanana huhifadhiwa mara moja, kwa hivyo nakala ya pili ya faili kubwa haigharimu karibu chochote.
Hasara yake ni kwamba faili zako kwenye seva huacha kuwa faili za kawaida. Fungua saraka ya hifadhi na utapata faili za vitu zenye majina ya hexadecimal. Kupata data nje kunamaanisha kutumia mteja wa Seafile, au zana za Seafile za export na fsck. Backup bado hufanya kazi, kwa sababu vitu hivyo ni faili za kawaida, lakini huwezi kurejesha lahajedwali moja kwa kutumia cp. Amua sasa kama hilo linakubalika, kwa sababu hiyo ndiyo sifa ambayo watu hujutia baadaye.
Seafile hutoa toleo la jamii (community edition) na toleo la kitaalamu la kulipia (professional edition), na mgawanyo kati yao hubadilika kati ya releases, kwa hivyo soma masharti ya sasa kwenye tovuti yao kabla ya kupanga timu kuzunguka kipengele maalum. Wateja rasmi wa desktop na simu wanapatikana. Maktaba zilizosimbwa kwa njia fiche (encrypted) husimbwa kwenye mteja, kwa hivyo seva huhifadhi matini fiche (ciphertext) ambayo haiwezi kuisoma. Ukipoteza nenosiri, maktaba haitasomeka, hata kwako mwenyewe. Kufungua maktaba iliyosimbwa kwenye kivinjari kunamaanisha kutoa nenosiri hilo kwa kikao cha wavuti, kwa hivyo toleo thabiti la dhamana hiyo ni la wateja wa desktop na simu.
Gharama ya rasilimali inakaribia ile ya Nextcloud. Unaendesha database, cache ya kumbukumbu na michakato miwili ya programu, kwa hivyo 2 GB ni kiwango cha chini kinachofaa.
Syncthing: hakuna cha kuingia (login)
Syncthing ni binary moja ya Go. Inafuatilia folda, inatafuta vifaa vingine kupitia seva ya ugunduzi (discovery server) au relay, na kusawazisha data moja kwa moja kati ya vifaa. Hakuna akaunti na hakuna ukurasa wa kuingia (login) kwa watu unaosawazisha nao. Unaoanisha vifaa viwili kwa kutumia ID na kukubali folda kila upande. Hii ndiyo huduma rahisi zaidi kuendesha kati ya zote hapa, kwa sababu kuna vitu vichache sana vya kuendesha.
Unachopoteza ni safu nzima ya kushiriki (sharing). Ingizo lake linasomeka Device pairing only, no links. Huwezi kumpa mteja, mhasibu, au ndugu kiungo (link). Simu za mkononi ndiyo pengo lingine: Android app, no official iOS. FAQ ya mradi huu inasema wazi: "Hakuna mipango ya timu ya sasa ya Syncthing kuunga mkono iOS rasmi katika siku za usoni," kwa sababu iOS inazuia usindikaji wa chinichini (background processing) kiasi cha kufanya usawazishaji wa kuaminika kuwa mgumu. Watumiaji wa iOS wameachiwa programu za watu wengine.
Matumizi ya rasilimali ni madogo, na kuna jambo moja la kufahamu. Syncthing huweka ingizo la index kwa kila faili inayosawazisha, kwa hivyo kumbukumbu (memory) na skani ya kwanza hukua kulingana na idadi ya faili badala ya ukubwa wa jumla. Kufanya hashing ya folda kubwa kwa mara ya kwanza kutatumia CPU kwa muda, kisha itatulia. Kwenye mpango mdogo zaidi wa VPS, inafanya kazi vizuri.
Migogoro (conflicts) hushughulikiwa kwa kuhifadhi pande zote mbili. Wakati vifaa viwili vinabadilisha faili moja wakati haviwezi kuonana, Syncthing hubadilisha jina la nakala moja na kuiweka kando ya nyingine, kwa hivyo utapata faili kama notes.sync-conflict-20260802-141530-K7MB3QT.md. Hakuna kinachopotea. Hakuna kinachounganishwa (merged) pia, na unatatua mgogoro huo kwa mkono.
Hifadhi ya vitu (object storage) na mteja: baiti za bei nafuu, si folda ya kusawazisha (sync)
Hifadhi ya vitu inamaanisha ndoo (bucket) inayooana na S3 (simple storage service), iwe unajiendeshea mwenyewe kwa kutumia MinIO au umekodisha kutoka kwa mtoa huduma. Unaifikia kwa kutumia zana: rclone kupitia mstari wa amri (command line), au mteja wa desktop anayeionyesha ndoo hiyo kama diski. Ikiwa ungependa kuvinjari ndoo hiyo kupitia ukurasa wa wavuti badala ya shell, zana kadhaa katika ulinganisho huu wa meneja wa faili za kujihudumia hutumia ndoo ya S3 kama backend na kuongeza viungo vyao vya kushiriki juu yake. Kushiriki hufanyika kupitia presigned URL, kiungo unachotengeneza ambacho kina muda wake wa kumalizika. Versioning ni mpangilio wa ndoo: Bucket versioning, off by default, kwa hivyo iwashe unapounda ndoo, kwa sababu haitumiki kwa vitu ulivyopakia awali.
Kuitendea ndoo kama folda ya kusawazisha (sync folder) ndipo mambo yanapoharibika. Hakuna kinachofuatilia saraka yako ya Documents kwa chaguo-msingi. rclone bisync hufanya usawazishaji wa njia mbili, na nyaraka za rclone zenyewe ziko wazi kuhusu umakini unaohitajika. Kile ambacho hifadhi ya vitu hufanya vizuri sana ni kukaa chini: kama lengo la chelezo (backup target), au safu ya hifadhi nyuma ya programu. Hifadhi ya vitu inayooana na S3 ya kujihudumia kwa kutumia MinIO inashughulikia upande wa seva.
Gharama ya rasilimali hapa si ya kawaida. MinIO ni binary moja na hutumia rasilimali kidogo ikiwa haifanyi kazi. Gharama unayolipa hasa ni diski, na kwenye VPS hiyo inamaanisha block volume iliyokodishwa kwa gigabyte, pamoja na bandwidth unayotumia kuhamisha vitu ndani na nje. Hakuna kati ya hayo yanayoonekana kwenye free -h, kwa hivyo soma gharama halisi ya VPS kwa mwezi kabla ya kupima ukubwa wa kumbukumbu yako.
Ulinganisho wa ushirikiano, wateja wa simu, na toleo (versioning)
The data behind this chart
[
{
"tool": "Nextcloud",
"sharing": "Public links, users and groups",
"mobile": "Official iOS and Android apps",
"versioning": "On by default, plus trash"
},
{
"tool": "Seafile",
"sharing": "Public links with password and expiry",
"mobile": "Official iOS and Android apps",
"versioning": "Library history and snapshots"
},
{
"tool": "Syncthing",
"sharing": "Device pairing only, no links",
"mobile": "Android app, no official iOS",
"versioning": "Optional per folder, off by default"
},
{
"tool": "Object storage",
"sharing": "Presigned URLs you generate",
"mobile": "Third party clients only",
"versioning": "Bucket versioning, off by default"
}
]Chaguzi zote 4 zimegawanywa kwenye mstari mmoja. Tatu kati ya hizo zinaweza kumpa mtu mwingine faili kwa kutumia kivinjari pekee. Moja kati ya hizo huwasiliana na vifaa ulivyo navyo wewe mwenyewe pekee. Ingizo la toleo la Seafile, Library history and snapshots, linastahili kuzingatiwa: historia huhifadhiwa kwa kila maktaba (library), kwa hivyo kufuta maktaba kutaondoa pia historia yake.
Kutoa data yako nje
Gharama ya kutoka ni nafuu kuikagua sasa na ni ghali kuigundua baadaye, kwa hivyo ikague kabla ya kujitolea.
Nextcloud huhifadhi faili halisi katika saraka halisi, kwa hivyo tar ya saraka ya data hukupa hati zako hata kama programu haitawaka tena. Syncthing hufanya vivyo hivyo kwenye kila kifaa, ambayo ndiyo njia bora zaidi ya kutoka hapa: faili ziko tu kwenye kila kifaa. Hifadhi ya vitu (object store) ya Seafile inahitaji Seafile au zana zake za kusafirisha nje ili kuunganisha tena vizuizi (blocks) kuwa faili. Hifadhi ya vitu (object storage) inahitaji rclone au zana sawa na hiyo, ambayo inapatikana kwa amri moja tu.
Usawazishaji si chelezo, na pengo hilo ndipo watu hupoteza data
Kila zana hapa hunakili mabadiliko kati ya mashine. Kufuta faili ni mabadiliko. Ukiondoa folda kwenye kompyuta yako, mteja humwambia seva, seva hutekeleza, na kila kifaa kingine huiondoa pia. Ransomware hutumia njia hiyo hiyo: husimba faili kwa njia fiche ndani ya kifaa, mteja huona faili zilizobadilishwa, na hupakia matoleo yaliyosimbwa. Usawazishaji ulifanya kazi kwa usahihi. Data yako bado imepotea.
Mapipa ya takataka na historia ya matoleo hupunguza athari hii. Hata hivyo, muda wake huisha, yanaweza kufutwa na akaunti ileile iliyofanya makosa, na yanakaa kwenye diski ileile kama nakala inayotumika. Volumu iliyoharibika huchukua faili na historia yake pamoja.
Chelezo ni nakala tofauti, kwenye maunzi tofauti, inayochukuliwa kwa ratiba, ambayo umewahi kuirejesha angalau mara moja. Hifadhi database katika mchakato mmoja na faili. Kurejesha saraka ya data ya Nextcloud bila database yake hukupa mfano wa programu usiojua kuwa faili hizo zipo, na occ files:scan baadaye hurejesha faili huku ukipoteza ushiriki na historia ya matoleo yaliyokuwepo kwenye majedwali hayo. Chelezo za restic zilizoratibiwa kutoka VPS inashughulikia toleo la hili lililosimbwa na kuondolewa nakala rudufu, ikijumuisha jinsi ya kujaribu urejeshaji badala ya kudhani kuwa utafanya kazi.
Nini ningechagua
Nextcloud, kwa watu wengi wanaosoma hapa. Kitu ambacho watu hukikosa baada ya kuacha Dropbox ni kumpa mtu kiungo ambaye hatowahi kusakinisha chochote, na kufungua faili kwenye simu. Nextcloud hufanya yote mawili kwa kutumia wateja rasmi na haina ngazi ya malipo, na 2 GB ya RAM ni bei nafuu kwa hilo. Kuna vighairi viwili ninavyozingatia. Ikiwa folda ni yako pekee na inakaa kwenye vifaa unavyomiliki pekee, tumia Syncthing na ufurahie kutokuwa na seva ya kufanyia patch wala login ya wavuti ya kulinda. Ikiwa unasawazisha saraka ya kazi yenye mamia ya maelfu ya faili, tumia Seafile na ukubali uhifadhi wa aina ya opaque badala ya kasi. Object storage inapaswa kuwa chini ya mfumo wowote utakaochagua, kama lengo la backup, si mbele yake kama zana ya kusawazisha.
FAQ
Je, Syncthing ni hifadhi rudufu (backup) kwa kompyuta yangu?
Hapana. Syncthing hunakili mabadiliko kati ya vifaa, na kufuta faili ni mabadiliko kama mengine yoyote; kwa hivyo faili unayofuta kimakosa hupotea kutoka kwenye vifaa vyote vilivyounganishwa ndani ya sekunde chache. Kipengele cha file versioning kwa kila folda husaidia, lakini kimezimwa hadi utakapokiwezesha kwenye kila folda. Weka hifadhi rudufu halisi kwenye maunzi (hardware) tofauti, inayofanyika kwa ratiba, na uifanyie jaribio la kurejesha data (restore) mara moja ili uhakikishe kuwa mchakato huo unafanya kazi.
Je, ninaweza kuendesha Nextcloud na Syncthing kwenye VPS moja?
Ndiyo, husikiliza kwenye port tofauti na hazigongani. Usielekeze folda ya Syncthing kwenye saraka ya data ya Nextcloud. Nextcloud hufuatilia kila faili kwenye database, kwa hivyo faili zinazoonekana kwenye diski chini yake hubaki zikiwa hazionekani hadi utakapokimbiza occ files:scan, na faili zinazofutwa chini yake huacha safu kwenye database zikielekeza kwenye kitu kisichokuwepo. Ipe Syncthing saraka yake yenyewe, au unganisha saraka hiyo kwenye Nextcloud kama external storage ili Nextcloud ijue kuitazama.
Ni ipi inayoniwezesha kushiriki link na mtu asiye na akaunti?
Nextcloud na Seafile zote hutengeneza link za umma, zikiwa na chaguo la nenosiri na tarehe ya mwisho wa matumizi. Object storage hukupa presigned URL inayokoma kufanya kazi yenyewe baada ya muda ulioweka. Syncthing haina jibu hapa. Mfumo wake wa kushiriki ni kuoanisha vifaa (device pairing), kwa hivyo mtu mwingine lazima asakinishe Syncthing, akupe device ID, na akubali folda hiyo.
Seva inahitaji diski ya ukubwa gani?
Kwa seva ya msingi (server of record), panga ukubwa kamili wa data inayoshirikiwa, pamoja na nafasi ya historia ya matoleo (version history) na takataka (trash), pamoja na nafasi ya ziada kwa ajili ya upakiaji wa faili unaoendelea. Historia ya matoleo ni sehemu ambayo watu huipuuza: kuhifadhi kila toleo la faili ya 2 GB inayobadilika kila siku hukua haraka, kwa hivyo weka sera ya uhifadhi (retention policy) mapema. Kuweka data kwenye volume tofauti huzuia ukuaji huo kuathiri root filesystem, ambapo diski kujaa husimamisha seva nzima badala ya upakiaji mmoja tu.