SSD Nodes Learn 🎉 VPS kutoka $5.50/mwezi
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-08-13

Mbadala bora wa Calendly wa kujiendesha (Self-hosted)

Linganisha Cal.com, Easy!Appointments, Rallly na DayOtter kwenye VPS yako. Tunachambua uwezo wa kusawazisha kalenda pande mbili na utumaji wa barua pepe ili kuepuka hitilafu.

Jibu fupi

Mbadala wa Calendly unaojiendesha (self-hosted) lazima ufanye jambo moja ambalo zana za ndani kwenye VPS yako hazifanyi kamwe: kujibu maombi ya umma. Ukurasa wa kuweka miadi ndio bidhaa yenyewe. Unahitaji domain name halisi na TLS (transport layer security) kuanzia siku ya kwanza, na lazima uweze kutuma barua pepe kwa watu ambao hawajawahi kusikia kuhusu seva yako.

Miradi minne inashughulikia uwanja huu kwa uhalisia. Cal.com ndiyo inayofanana zaidi na Calendly na ndiyo chaguo la kawaida kwa mshauri binafsi. Ni rahisi! Easy!Appointments ni chaguo jepesi, linalotumia PHP na MySQL, na linafanya kazi vizuri kwenye VPS ya 1 GB. Rallly ni zana ya kupigia kura ya kikundi na haina ukurasa wa kuweka miadi hata kidogo. DayOtter ndiyo mshiriki mpya zaidi, ni jukwaa la kupanga ratiba la AGPLv3 lenye msaidizi wa kuthibitisha miadi mbele yake.

Maswali mawili huamua ni ipi unayoweza kuiendesha kwa uhalisia. Je, inasawazisha (sync) pande zote mbili na kalenda unayotumia kila siku? Na je, inaweza kutuma barua pepe? Swali la pili ndilo mahali ambapo usanidi mwingi wa booking unaojiendesha hushindwa kimyakimya, kwa hivyo ndilo linalopaswa kuulizwa kwanza.

Barua pepe za kutoka nje ndizo zinazoshindwa kufika

Uthibitisho wa miadi huenda kwenye kikasha cha mtu asiyehusika. Hiyo ni barua pepe ya miamala inayofika Gmail au Microsoft 365, na wapokeaji hao hukuhukumu kulingana na anwani ya IP ya kutuma na rekodi zako za DNS.

Kutuma barua pepe moja kwa moja kutoka kwenye VPS mara nyingi hakufanyi kazi. Watoa huduma wengi huzuia port 25 ya TCP kwa akaunti mpya, hivyo muunganisho hukwama na kisha muda wake huisha. Hata pale port 25 inapokuwa wazi, anwani mpya ya VPS haina historia ya utumaji, na wapokeaji wakubwa huchukulia anwani za hosting kama zenye shaka. Miadi huandikwa kwenye database, ukurasa huonyesha imethibitishwa, lakini hakuna anayepata barua pepe. Hakuna kinachoonekana kuharibika upande wa seva, ndiyo maana tatizo hili mara nyingi hugunduliwa wiki kadhaa baadaye na mteja ambaye hakutokea.

Tumia relay. Mtoa huduma yeyote wa barua pepe za miamala anafaa, na programu inahitaji tu hostname, port, mtumiaji na nenosiri. Hakikisha port inafikika kabla ya kugusa usanidi wa programu:

nc -vz -w 5 "$SMTP_HOST" 587

Mstari wa succeeded unamaanisha njia iko wazi. Kukwama au Connection refused kunamaanisha port imezuiwa kwenye kiwango cha mtandao, na hakuna kiasi chochote cha kuhariri .env kitakachorekebisha hilo. Relay husikiliza kwenye 587 au 465 kwa sababu port 25 mara nyingi huzuiwa.

Kila mradi hutumia relay kwa njia yake. Cal.com husoma EMAIL_FROM, EMAIL_SERVER_HOST, EMAIL_SERVER_PORT, EMAIL_SERVER_USER na EMAIL_SERVER_PASSWORD, na pia hukubali RESEND_API_KEY badala yake. Zingatia hilo: .env.example iliyokuja na programu inaelekeza EMAIL_SERVER_HOST kwenye localhost katika port 1025, ambayo ni kikasha cha barua pepe cha majaribio ya ndani. Acha chaguo-msingi kama lilivyo na programu itatuma barua pepe kwenye utupu bila kutoa kosa. Rallly huchukua SMTP_HOST, SMTP_PORT, SMTP_USER na SMTP_PWD. DayOtter huchukua mipangilio ya SMTP au ufunguo wa Resend. Rahisi! Easy!Appointments hutuma arifa zake kutoka kwenye programu, kwa hivyo ielekeze kwenye relay hiyo hiyo kutoka ukurasa wake wa mipangilio kabla ya kukubali miadi halisi.

Kisha chapisha rekodi za DNS ambazo relay yako inakupa. Rekodi ya SPF (sender policy framework) husema ni seva zipi zinazoruhusiwa kutuma barua pepe kwa niaba ya domain yako, na ufunguo wa DKIM (domainkeys identified mail) husaini kila ujumbe ili mpokeaji aweze kuthibitisha kuwa haukubadilishwa. Ongeza sera ya DMARC (domain-based message authentication, reporting and conformance) mara tu zote mbili zitakapopita. Tuma miadi ya majaribio kwenye anwani halisi ya mtoa huduma mkubwa, fungua vichwa vya ujumbe (message headers), na uthibitishe kuwa mistari ya uthibitishaji inasoma pass. Ukurasa wa miadi ambao hauwezi kutuma barua pepe ni mbaya zaidi kuliko kutokuwa na ukurasa wa miadi, kwa sababu hushindwa kimya kimya.

Ni backend zipi za kalenda zinazofanya sync ya njia mbili kikamilifu

Sync ina pande mbili na kila upande unaweza kufeli kivyake. Upande wa kusoma ni upatikanaji: programu lazima ione muda wako uliopangwa ili isitoe nafasi ambayo tayari umeishikilia. Upande wa kuandika ni booking yenyewe: tukio lililothibitishwa lazima lionekane kwenye kalenda unayotumia, si ndani ya zana ya booking pekee.

Google Calendar na Microsoft 365 hufanya pande zote mbili, kwa sharti moja kwenye usakinishaji wa self-hosted. Unatengeneza OAuth (open authorization) client mwenyewe, kwa sababu client ID ya bidhaa inayohostiwa haipo kwenye source code. Kwa Cal.com hiyo ni GOOGLE_API_CREDENTIALS katika .env, inayohifadhi JSON unayopakua kutoka Google Cloud console. DayOtter huchukua credentials za OAuth za Google na Microsoft kwa njia hiyo hiyo.

Mambo mawili huharibika hapa, na yote yanafaa kujulikana kabla ya kuanza. Kwanza, redirect URI unayoisajili lazima ilingane na URL yako ya umma kikamilifu, ikijumuisha scheme na njia yoyote ya mwisho, vinginevyo Google itakataa muunganisho kwa redirect_uri_mismatch kwenye skrini ya idhini. Pili, mradi wa Google ulio katika hali ya Testing hutoa refresh tokens zinazoisha muda wake baada ya siku saba. Sync hufanya kazi wiki nzima kisha huacha, na logi za programu huonyesha invalid_grant wakati wa refresh inayofuata. Hamisha skrini ya idhini kwenda In production, au ukubali kuunganisha upya kwa mkono kila Jumatatu.

CalDAV (viendelezi vya kalenda kwa WebDAV) ndiyo chaguo huria, na usaidizi wake ni mdogo. Cal.com inatoa programu ya CalDAV ambayo bado imewekewa alama ya beta, iliyothibitishwa dhidi ya seva ikiwemo Baikal, Radicale, Nextcloud na Kerio Connect. Apple iCloud hufanya kazi kupitia programu hiyo hiyo lakini inahitaji nenosiri mahususi la programu badala ya nenosiri lako la Apple ID. DayOtter huorodhesha Apple kupitia CalDAV kando ya Google na Microsoft 365.

Feed ya ICS si sync. URL ya .ics unayojisajili kwayo ni ya kusoma pekee kwa usanifu wake, kwa hivyo inaweza kuzuia muda kwenye ukurasa wako wa booking lakini haiwezi kupokea booking. Ikiwa zana inatoa ICS pekee kwa kalenda yako, una nusu ya mfumo na bado utakuwa ukinakili matukio kwa mkono.

Easy!Appointments hufanya sync ya Google Calendar pekee na si kingine. Rallly haisomi upatikanaji hata kidogo: hukusanya kura kwenye seti ya tarehe zinazopendekezwa. Hiyo ndiyo zana sahihi kwa "sisi sita tunaweza kukutana lini" na si zana sahihi kwa "weka miadi ya dakika 30 na mimi".

Ukurasa wa kuweka miadi ni wa umma, kwa hivyo TLS ndiyo kipaumbele

Sehemu kubwa ya huduma wanazojiendeshea watu ni za faragha. Wiki, ubao wa matangazo, au dashibodi, vyote vinaweza kukaa nyuma ya VPN au login ya SSO na visiwahi kuonekana kwenye Internet ya wazi. Kiungo cha kuweka miadi hakiwezi kufanya hivyo. Mtu yeyote unayemtumia kiungo hicho lazima akipakie, jambo ambalo hubadilisha usanidi kwa njia tatu mahususi.

Unahitaji jina la domain lenye A record inayoelekeza kwenye VPS, kabla ya kusakinisha chochote. Unahitaji cheti (certificate) kuanzia siku ya kwanza, kwa sababu vivinjari (browsers) huashiria fomu ya HTTP ya kawaida kama isiyo salama, na mteja wako anaingiza jina na barua pepe yake humo. Na unahitaji URL ya umma ya programu hiyo iwe imewekwa kwa usahihi kwenye usanidi wake, kwa sababu thamani hiyo huingizwa kwenye viungo vilivyomo ndani ya barua pepe zinazotumwa na kwenye OAuth redirect URIs. Weka NEXT_PUBLIC_WEBAPP_URL katika Cal.com, DOMAIN katika Rallly, BASE_URL katika Easy!Appointments, au DAYOTTER_DOMAIN wakati wa usakinishaji, na uiweke kwenye anwani ya https:// utakayotumia kikweli.

Rallly na DayOtter hutatua suala la TLS kwa ajili yako. Stack iliyojumuishwa ya Rallly inajumuisha Traefik na hutoa vyeti vya Let's Encrypt kwa kutumia anwani iliyo kwenye ACME_EMAIL. Kisakinishi cha DayOtter huleta Caddy yenye HTTPS ya kiotomatiki. Cal.com na Easy!Appointments hazifanyi hivyo, kwa hivyo unaweka nginx mbele na kutoa cheti mwenyewe, kwa njia ile ile unayotumia kwa cheti cha Let's Encrypt kwenye nginx kwa kutumia Certbot. Funga container ya programu kwenye 127.0.0.1 ili njia pekee ya kuingia iwe kupitia proxy unayoimiliki. Ikiwa seva hiyo hiyo tayari inaendesha njia mbadala ya Trello inayojiendeshea kwa ajili ya mbao zako za ndani, iweke hiyo nyuma ya uthibitishaji wako uliopo na upe host ya kuweka miadi pekee block ya seva ya umma.

Cal.com kwenye VPS yako

Usanidi wa Docker unakaa kwenye hazina yake (repository) pekee, na images zimeshajengwa tayari kwenye Docker Hub, kwa hivyo unazivuta (pull) badala ya kuzijenga.

git clone --recursive https://github.com/calcom/cal.diy.git
cd cal.diy
cp .env.example .env
openssl rand -base64 32
openssl rand -base64 24
docker compose pull
docker compose up -d

Thamani ya kwanza ya nasibu (random value) inawekwa kwenye NEXTAUTH_SECRET na ya pili kwenye CALENDSO_ENCRYPTION_KEY. Zote mbili zinahitajika. Weka DATABASE_URL na uelekeze NEXT_PUBLIC_WEBAPP_URL kwenye anwani yako ya umma. Stack iliyojumuishwa ni web app, PostgreSQL na Prisma Studio; nyaraka hutoa docker compose up -d calcom kwa ajili ya kuendesha app pekee dhidi ya database unayohifadhi mahali pengine, jambo ambalo ndilo unalotaka pindi usakinishaji utakapokamilika.

Vuta image, usijenge kwenye VPS. Maelekezo ya mradi yenyewe yanakuambia u-export NODE_OPTIONS="--max-old-space-size=16384" wakati wa kujenga kutoka kwenye source, ambayo ni 16 GB ya heap kwa Node pekee. Kwenye vifaa vya ARM, ongeza suffix ya -arm kwenye image tag. Mradi hauchapishi kiwango cha chini cha kuendesha image iliyojengwa tayari, kwa hivyo chukulia 2 GB kwa ajili ya app pamoja na PostgreSQL kama makadirio yangu ya kazi badala ya takwimu iliyoandikwa, na ufuatilie kumbukumbu (memory) katika wiki ya kwanza.

Thibitisha kuwa imewaka:

docker compose ps
docker compose logs -f calcom
curl -sI https://cal.example.com | head -n 1

Amri ya curl inapaswa kuchapisha HTTP/2 200. 502 Bad Gateway kutoka kwa nginx wakati container inaonekana kuwa inaendelea (running) kwa kawaida inamaanisha kuwa boot ya kwanza bado inafanya database migrations. Ipe dakika chache na usome logs kabla ya kuhitimisha kuwa imevunjika. Webhooks za Cal.com hufanya kazi kila booking inapothibitishwa, kwa hivyo booking inaweza kuendesha otomatiki yoyote unayotumia tayari, kwa mfano instance ya n8n inayoweza kufikiwa kupitia HTTPS kwenye VPS yako.

Msingi ni AGPLv3, huku baadhi ya vipengele vikiwa kwenye saraka ya biashara (enterprise directory) chini ya leseni tofauti ya kibiashara. Soma leseni hiyo kabla ya kujenga mchakato wa biashara unaolipiwa kwenye vipengele vya timu.

Easy!Appointments kwenye seva ya 1 GB

Mahitaji ni Apache au Nginx, PHP 8.2 au toleo jipya zaidi, na MySQL. Kuna image rasmi kwenye alextselegidis/easyappointments.

Onyo moja kwanza. docker-compose.yml iliyo kwenye repository ni mazingira ya maendeleo (development). Inatarajia ufungue shell ndani ya container na uendeshe npm install && composer install && npm start. Hiyo siyo njia ya deployment. Tumia image iliyochapishwa badala yake:

services:
  easyappointments:
    image: alextselegidis/easyappointments  # pin the current tag from Docker Hub
    environment:
      - BASE_URL=https://book.example.com
      - DB_HOST=mysql
      - DB_NAME=easyappointments
      - DB_USERNAME=easyapp
      - DB_PASSWORD=change-me
    ports:
      - '127.0.0.1:8080:80'
    depends_on:
      - mysql
  mysql:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=change-me-too
      - MYSQL_DATABASE=easyappointments
      - MYSQL_USER=easyapp
      - MYSQL_PASSWORD=change-me
    volumes:
      - ./mysql:/var/lib/mysql

BASE_URL lazima iwe anwani ya umma ya HTTPS. Ukikosea, viungo vya kuhifadhi nafasi (booking links) ndani ya barua pepe za uthibitisho vitaelekeza kwenye host ambayo mteja wako hawezi kuifikia. Image hii hutoa HTTP ya kawaida kwenye port 80 bila cheti chake, ndiyo maana port hiyo imefungwa kwenye 127.0.0.1 na nginx inafanya TLS termination mbele yake. Ikiwa syntax ya compose ni ngeni kwako, anza na Misingi ya Docker Compose kwenye VPS kisha urudi hapa.

Hili ni chaguo jepesi zaidi hapa kwa mbali. Container mbili, programu ya PHP na MySQL, hukaa vizuri kwenye VPS ya 1 GB. Gharama yake ni uwezo: Google Calendar ndiyo backend pekee ya kalenda, na kiolesura ni paneli ya kawaida ya admin badala ya mtiririko wa kisasa wa booking. Ikiwa kalenda yako ni Microsoft 365, Fastmail au Nextcloud, basi hii haitakufaa kabla hata hujaanza.

Rallly kwa ajili ya kura za kikundi

Rallly inajibu swali tofauti. Haichapishi upatikanaji wako. Inaweka seti ya nyakati zinazopendekezwa mbele ya kikundi na kukusanya kura, jambo ambalo unahitaji kwa ajili ya mkutano wa bodi na halifai kwa kiungo cha kuweka miadi ya mteja.

curl -fsSL https://get.rallly.co | bash

Soma script yoyote kabla ya kuipitisha kwenye shell. Badilisha bash kwa less, soma inachofanya, kisha iendeshe. Njia ya mwongozo hufanya kazi hiyo hiyo kwa hatua unazoweza kuziona:

git clone https://github.com/lukevella/rallly-selfhosted.git
cd rallly-selfhosted
./rallly.sh setup
./rallly.sh start

Mahitaji yaliyoandikwa ni angalau 2 GB ya RAM, Docker 19.03 au mpya zaidi ikiwa na Compose v2, milango 80 na 443 ikiwa wazi, na domain iliyoelekezwa kwenye seva. Stack iliyojumuishwa ni Traefik kwa ajili ya HTTPS, programu ya wavuti, PostgreSQL, na Garage kwa ajili ya hifadhi ya vitu (object storage) inayooana na S3. Weka DOMAIN, SECRET_PASSWORD ya angalau herufi 32, SUPPORT_EMAIL na INITIAL_ADMIN_EMAIL. Ikiwa tayari unaendesha reverse proxy, weka PROXY_MODE=external na WEB_PORT, na Traefik haitaingilia kati. Ikiwa tayari unaendesha hifadhi ya vitu inayooana na S3 uliyojiwekea mwenyewe kwa kutumia MinIO, elekeza vigezo vya S3_* kwake na uondoe container ya Garage.

SMTP si ya hiari hapa, kwa sababu kuingia kwenye mfumo hutumia magic link. Bila relay inayofanya kazi, hakuna mtu anayeweza kuingia, ikiwemo akaunti ya admin uliyoiunda sasa hivi. Hiyo ndiyo toleo zuri la hitilafu ya barua pepe: inakuzuia mlangoni badala ya kupoteza miadi ya mteja wiki tatu baadaye.

DayOtter, mshiriki mpya zaidi

DayOtter ni jukwaa la kuratibu la AGPLv3 lenye msaidizi aliyeunganishwa. Ufungaji wa toleo la uzalishaji (production) unahitaji amri moja:

curl -fsSL https://raw.githubusercontent.com/Dayotter/dayotter/main/deploy/install.sh \
  | sudo DAYOTTER_DOMAIN=cal.example.com bash

Isome kabla ya kuiendesha, kama ilivyoelezwa hapo juu. Kisakinishi hiki huweka Docker, hutengeneza siri (secrets), na kuwasha stack nzima: programu ya wavuti ya Next.js, mfanyakazi wa usuli (background worker) anayeshughulikia vikumbusho, usawazishaji wa kalenda na webhooks, PostgreSQL, Redis, na Caddy yenye HTTPS ya kiotomatiki.

Usaidizi wa kalenda ndio mpana zaidi kati ya mifumo minne hii. Inasaidia Google, Microsoft 365, Apple kupitia CalDAV, na milisho ya ICS, kwa kuzingatia tahadhari ya ICS iliyotajwa hapo juu. Kila muunganisho mwingine huchaguliwa kupitia vigezo vya mazingira (environment variables), ikiwemo SMTP au Resend kwa barua pepe, ANTHROPIC_API_KEY kwa msaidizi, Twilio kwa SMS, na Stripe kwa malipo. Msaidizi hufuata utaratibu wa kuthibitisha kwanza: anapendekeza, wewe unakubali, na hakuna kitu kinachofika kwenye kalenda yako bila idhini yako ya wazi. Acha ufunguo wa API ukiwa wazi na sehemu hiyo ya bidhaa haitaendeshwa kabisa.

Leseni ni wazi kwa wale wanaojiendeshea seva zao (self-hosters). Msingi wake ni AGPLv3, na saraka ya ee/ ina leseni ya kibiashara ya wingu pekee ambayo haifanyi kazi isipokuwa DAYOTTER_CLOUD=1 ikiwa imewekwa. Hii inamaanisha kuwa vipengele vya timu vinavyotozwa $9 kwa kila mtumiaji kila mwezi kwenye mpango wa wingu, kufikia Agosti 2026, vinapatikana kwenye seva yako mwenyewe.

Hii pia ndiyo stack nzito zaidi hapa na ni mradi mchanga zaidi. Iendeshe sambamba na kiungo chako cha sasa cha kuhifadhi nafasi (booking link) kwa wiki mbili, pokea nafasi halisi kupitia zote mbili, na usome logi za mfanyakazi (worker logs) kabla ya kuhamisha wateja wako.

Gharama halisi ya kila stack

Idadi ya container ndiyo kipimo sahihi cha kiasi cha rasilimali ambacho stack itahitaji kutoka kwa VPS ndogo, kwa sababu kila huduma ina kiwango chake cha chini cha matumizi ya kumbukumbu. Hizi ni idadi zilizotokana na Docker stack iliyochapishwa na kila mradi, iliyosomwa mnamo Agosti 2026.

ChartServices in each project's documented Docker stack
The data behind this chart
[
  {
    "tool": "Easy!Appointments",
    "containers": 2,
    "database": "MySQL"
  },
  {
    "tool": "Cal.com",
    "containers": 3,
    "database": "PostgreSQL"
  },
  {
    "tool": "Rallly",
    "containers": 4,
    "database": "PostgreSQL"
  },
  {
    "tool": "DayOtter",
    "containers": 5,
    "database": "PostgreSQL and Redis"
  }
]

Easy!Appointments inahitaji 2 container na inatoshea kwenye 1 GB. Stack iliyounganishwa ya Rallly ina 4, na nyaraka zake zinaomba 2 GB. Kisakinishi cha DayOtter huleta 5, ndiyo maana kinahitaji seva kubwa zaidi kati ya 4 zilizopo hapa. Cal.com na DayOtter hazichapishi kiwango cha chini cha kumbukumbu hata kidogo, kwa hivyo 2 GB ndiyo kianzio changu kwa zote mbili badala ya namba inayoungwa mkono rasmi.

Idadi mbili kati ya hizi hupungua ikiwa tayari unaendesha miundombinu. Container za Traefik na Garage za Rallly zote huondolewa unapoielekeza kwenye proxy yako mwenyewe na hifadhi ya object storage. Prisma Studio ya Cal.com ni zana ya maendeleo (development tool) ambayo hupaswi kuiacha ikiwa inaendelea kufanya kazi kwenye seva ya umma.

Ni mbadala gani wa Calendly wa kujihostia unapaswa kuchagua

Mshauri binafsi anapaswa kutumia Cal.com. Huu ndio mradi pekee hapa unaochanganya ukurasa wa kuweka miadi unaotambulika, picha za kontena zilizojengwa awali zinazookoa VPS yako na mchakato wa Node, na njia ya CalDAV kwa wale ambao hatutumii kalenda ya Google au Microsoft. Hifadhidata moja ya PostgreSQL na kontena moja la programu ni mzigo wa matengenezo unaoweza kuubeba kwa miaka mingi. Tenga mchana mzima kwa ajili ya OAuth client na mail relay, na kumbuka kuwa programu ya CalDAV bado iko katika hatua ya beta, kwa hivyo jaribu miadi moja halisi kuanzia mwanzo hadi mwisho kabla ya kuchapisha kiungo.

Timu ndogo inapaswa kuangalia DayOtter. Mfumo wa weighted round robin na uwekaji miadi wa pamoja vimo ndani ya msingi wa AGPLv3, kwa hivyo kujihostia kunakupa vipengele ambavyo huduma za kulipia hutoa kwa gharama ya kila mtumiaji, na worker process imejengwa kwa ajili ya vikumbusho na webhooks ambazo timu hutegemea. Changamoto yake ni ukomavu: huu ndio mradi mpya zaidi kwenye orodha hii, kwa hivyo uendeshe sambamba na mfumo wako wa zamani kwanza na uweke kiungo cha zamani kikiwa hai hadi uwe umeona mwezi mzima wa miadi.

Kuna hali mbili maalum. Ikiwa unachohitaji ni kura ya maoni ili kupata muda ambao kikundi kinaweza kukutana, sakinisha Rallly na uishie hapo. Ikiwa una VPS ya 1 GB, unatumia Google Calendar, na unataka kitu kidogo zaidi kinachoweza kupokea miadi, Easy!Appointments itadumu zaidi ya chaguo lolote la kifahari unaloweza kuweka kwenye seva hiyo. Kwa swali pana zaidi la nini kingine kinachostahili nafasi kwenye seva hiyo hiyo, angalia nini kinastahili kujihostiwa mwaka 2026.

FAQ

Je, ninaweza kuendesha ukurasa wa booking wa kujihostia bila jina la domain?

Hapana. Kila moja ya programu hizi huandika URL yake ya umma kwenye viungo vilivyomo ndani ya barua pepe za uthibitisho, na Google pamoja na Microsoft zote hulinganisha OAuth redirect URI na thamani hiyo hiyo, kwa hivyo anwani ya IP pekee itakupa redirect_uri_mismatch kwenye skrini ya idhini. Let’s Encrypt haitatoa cheti kwa ajili ya anwani ya IP, kwa hivyo ukurasa utafunguka kupitia HTTP ya kawaida na kivinjari kitaashiria fomu hiyo kama isiyo salama. Nunua domain kwanza, elekeza A record kwenye VPS, kisha usakinishe.

Kwa nini barua pepe zangu za uthibitisho wa booking hazifiki?

Karibu kila mara ni kwa sababu seva inajaribu kutuma barua pepe yenyewe. Watoa huduma wengi wa VPS huzuia port 25 ya kutoka kwenye akaunti mpya, kwa hivyo muunganisho hukwama, na hata pale inapokuwa wazi, anwani mpya haina sifa ya utumaji na wapokeaji wakubwa huikataa. Elekeza programu kwenye transactional mail relay kupitia port 587, thibitisha kuwa port hiyo inafikika kwa kutumia nc -vz -w 5 "$SMTP_HOST" 587, kisha chapisha SPF na DKIM records ambazo relay hiyo inakupa. Ikiwa unaendesha Cal.com, hakikisha umebadilisha EMAIL_SERVER_HOST=localhost na EMAIL_SERVER_PORT=1025 chaguo-msingi zilizokuja na programu, ambazo huelekeza kwenye kisanduku cha barua cha maendeleo cha ndani (local development mailbox).

Je, Cal.com ya kujihostia inasawazisha na CalDAV, au Google pekee?

Zote mbili, kwa viwango tofauti vya ukomavu. Programu ya CalDAV imeashiriwa kama beta na imethibitishwa kufanya kazi na seva ikiwemo Baikal, Radicale, Nextcloud na Kerio Connect, na Apple iCloud hufanya kazi kupitia hiyo kwa kutumia nenosiri maalum la programu (app-specific password). Google Calendar na Microsoft 365 zote husawazisha pande zote mbili, lakini kwenye usakinishaji wa kujihostia lazima utengeneze OAuth client yako mwenyewe na kuiweka kupitia GOOGLE_API_CREDENTIALS, kwa sababu vitambulisho vya huduma iliyohostiwa havimo kwenye source code.

Kwa nini usawazishaji wangu wa Google Calendar huacha kufanya kazi baada ya wiki moja?

Kwa sababu mradi wa Google Cloud bado uko katika hali ya uchapishaji ya Testing. Google hutoa refresh tokens kwa programu zilizoko katika hali hiyo ambazo huisha muda wake baada ya siku saba, kwa hivyo muunganisho hufanya kazi, kisha hufa wakati wa refresh inayofuata ya token, na logi ya programu huonyesha invalid_grant. Hamisha skrini ya idhini ya OAuth kwenda In production na uunganishe tena kalenda mara moja. Kuunganisha tena bila kubadilisha hali hiyo kutakupa siku nyingine saba tu na si zaidi.

Ni ipi kati ya hizi itafanya kazi kwenye VPS ya 1 GB?

Easy!Appointments itafanya kazi, kwa kuwa ni programu ya PHP pamoja na MySQL. Rallly inaelekeza kiwango cha chini cha 2 GB na stack yake iliyounganishwa huendesha huduma nne. Cal.com na DayOtter hazichapishi kiwango cha chini, lakini programu ya Next.js pamoja na PostgreSQL, na kwa upande wa DayOtter ikiwa na Redis na worker process pia, inamaanisha unapaswa kupanga 2 GB au zaidi. Usijenge Cal.com kutoka kwenye source kwenye seva ndogo: maelekezo ya ujenzi ya mradi huo yenyewe yanahitaji 16 GB ya Node heap, kwa hivyo vuta image iliyojengwa awali (prebuilt image) badala yake.

#scheduling#calendly#cal-com#self-hosted#booking