SSD Nodes Learn
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-07-24

Jinsi ya kusakinisha Rocket.Chat na Docker

Jifunze kusakinisha Rocket.Chat kwenye VPS kwa kutumia Docker Compose. Jua kwa nini unahitaji MongoDB replica set na jinsi ya kutumia TLS na backups.

Unachojenga

Chat ya timu ya kibinafsi unayomiliki kikamilifu: Rocket.Chat inayojiendesha kwenye VPS yako mwenyewe kupitia Docker Compose, ikiwa imelindwa na TLS, na ujumbe wote ukiwekwa kwenye database ya MongoDB unayoweza kuibakia na kuihamishisha. Rocket.Chat ni mbadala bora wa Slack na Teams — channels, ujumbe wa moja kwa moja, threads, kushiriki faili, pamoja na sauti na video, vyote kwenye vifaa unavyokodisha na kuvidhibiti. Programu hii ni container moja inayowaka ndani ya dakika chache. Matatizo yote yanapotokea yanahusiana na database iliyo karibu nayo, hivyo mwongozo huu mwingi unahusu MongoDB, na hasa hitaji moja linalowashangaza watu wengi mara ya kwanza: Rocket.Chat haitafanya kazi kwa kutumia MongoDB inayojitegemea (standalone). Inahitaji replica set, hata kama hiyo "set" ni node moja tu.

Mahitaji ya awali, na hesabu ya RAM ambayo hakuna anayokuambia

Chagua ukubwa wa seva kwa uaminifu. Kiwango cha chini cha kutosha kwa timu ndogo ni 2 vCPU na 4 GB ya RAM. Mchakato wa Node.js wa Rocket.Chat unahitaji takriban 1 hadi 1.5 GB pekee, na cache ya WiredTiger ya MongoDB hutumia karibu nusu ya RAM iliyobaki kwa mipangilio ya kawaida. Kwenye VPS ya 2 GB, zote mbili zinaweza kuwaka wakati wa kuanza, lakini zinagongana mara tu trafiki halisi inapofika: MongoDB huongeza cache yake, Node huongeza heap yake, kernel inaishiwa na pages, na out-of-memory killer huua mchakato wowote mkubwa zaidi — mara nyingi ni mongod. Container hutoa Killed, Docker inairudisha, na unapata seva ya chat inayokatika kila baada ya dakika chache chini ya mzigo ambao unapaswa kuustahimili. 2 GB inatosha kwa majaribio ya watu wawili; si seva ya timu. Anza na 4 GB, na utumie 8 GB ikiwa unatarajia watumiaji makumi wanaotumia kwa wakati mmoja, simu za video, au historia inayokua ya nyaraka zinazopakuliwa.

Pia unahitaji vitu vitatu vilivyowekwa kabla ya kuanza. Jina la domain lenye A record inayoelekea kwenye IP ya umma ya VPS — vipengele vya wakati halisi vya Rocket.Chat na wateja wa simu vinahitaji hostname thabiti, si IP pekee. Port 80 na 443 ziwe wazi kwenye firewall ya seva na kwenye firewall ya mtandao ya mtoa huduma wako, ambayo ni udhibiti tofauti kwenye madawati mengi. Na Ubuntu 24.04 KVM VPS mpya yenye root au sudo. Ikiwa bado unaamua kama seva ya chat ndiyo huduma sahihi ya kuanza kuendesha, mwongozo wa kile kinachostahili kujihostia mwenyewe mwaka 2026 unaelezea faida na hasara zake.

Sakinisha Docker engine na Compose plugin

Tumia apt repository ya Docker, usitumie docker.io package inayotolewa na Ubuntu wala docker-compose Python binary ya zamani. Compose ya kisasa ni Docker plugin inayotumiwa kama docker compose — kutumia nafasi (space) badala ya hyphen. docker-compose v1 ya zamani imefika mwisho wa maisha yake na inashughulikia vibaya syntax ya healthcheck na dependency hapa chini.

sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Thibitisha kuwa sehemu zote mbili zipo:

sudo docker version
sudo docker compose version

docker compose version inayochapisha kitu kama Docker Compose version v2.x ndiyo ukaguzi muhimu. Ikiwa inatoa kosa la docker: 'compose' is not a docker command, plugin haikuwekwa sawa na utakutana na hitilafu zisizo na maana baadaye — itatue hapa.

Faili ya compose: MongoDB kama single-node replica set

Hii ni sehemu ambayo watu hufanya makosa, hivyo isome kwa umakini. Rocket.Chat hutumia change streams za MongoDB kusukuma ujumbe mpya kwa wateja waliounganishwa papo hapo, na change streams zinapatikana kwenye replica set pekee. Ikiwa utaiunganishia Rocket.Chat mongod ya kawaida (standalone), itaunganishwa, itashindwa kufungua change stream, na itaanza kuanza upya (restart-loop) mfululizo. Suluhisho si la ajabu: unatumia container moja ya MongoDB ya kawaida, lakini unaianza na --replSet na kisha unaanzisha set yenye mwanachama mmoja.

Tengeneza directory ya kazi na compose.yml:

services:
  mongodb:
    image: mongo:8.0
    restart: always
    command: ["mongod", "--replSet", "rs0", "--bind_ip_all", "--oplogSize", "128"]
    volumes:
      - mongodb_data:/data/db
      - mongodb_config:/data/configdb
    healthcheck:
      test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping')"]
      interval: 10s
      timeout: 10s
      retries: 12

  rocketchat:
    image: registry.rocket.chat/rocketchat/rocket.chat:8.5.1
    restart: always
    depends_on:
      mongodb:
        condition: service_healthy
    environment:
      MONGO_URL: "mongodb://mongodb:27017/rocketchat?replicaSet=rs0"
      MONGO_OPLOG_URL: "mongodb://mongodb:27017/local?replicaSet=rs0"
      ROOT_URL: "https://chat.example.com"
      PORT: "3000"
    ports:
      - "127.0.0.1:3000:3000"

volumes:
  mongodb_data:
  mongodb_config:

Baadhi ya chaguzi hapa zimechaguliwa kwa makusudi. Rocket.Chat imechapishwa kwenye 127.0.0.1:3000, si 0.0.0.0 — programu yenyewe haina TLS, hivyo ni reverse proxy kwenye mashine hiyo hiyo pekee inayopaswa kuifikia; kuibandika kwenye kila interface kutafanya ukurasa wa kuingia (login page) uonekane wazi kwenye mtandao wa umma. MongoDB haichapishwa kwenye host kabisa; inaweza kufikiwa tu kupitia mtandao wa ndani wa Compose chini ya jina mongodb, ambalo ndilo hostname inayotumiwa na MONGO_URL. MONGO_URL hubeba ?replicaSet=rs0 — ukiiondoa, driver itaitambua server kama standalone ingawa ni replica set, na change streams zitashindwa tena. MONGO_OPLOG_URL inaelekeza kwenye database ya local ambapo oplog imehifadhiwa; Rocket.Chat ya kisasa inapendelea change streams, lakini kuweka chaguo hili hakuna madhara na husaidia kodi za zamani. depends_on hutumia condition: service_healthy, kwa hivyo Compose itasubiri hadi MongoDB ijibu ping kabla ya kuanza Rocket.Chat — hiyo ndiyo kazi ya healthcheck.

Tumia tag za toleo halisi kwenye picha zote mbili — mongo:8.0 na toleo mahususi la Rocket.Chat kama vile 8.5.1 hapa — na usitumie kamwe :latest, ambayo hubadilisha docker pull isiyodhibitiwa kuwa upgrade ya bahati mbaya isiyoweza kuhamishika. Hakikisha toleo la sasa la Rocket.Chat linalotulia na matoleo ya MongoDB yanayounga mkono kabla ya kuweka tag. Rocket.Chat huchapisha hati ya habari inayoweza kusomwa na mashine kwa kila toleo: curl -s https://releases.rocket.chat/8.5.1/info | jq '{compatibleMongoVersions, lts}' hurudisha compatibleMongoVersions: ["8.0"] kwa 8.5.1, hivyo mongo:8.0 ndiyo injini pekee inayounga mkono, pamoja na flag ya lts inayokuambia ikiwa toleo hilo ni la msaada wa muda mrefu (LTS) linalostahili kutumika kwa server ambayo hutaki kuifuatilia kila wakati.

Sanidisha replica set

Washa stack:

sudo docker compose up -d

Rocket.Chat itaanza kuzima mara moja na Docker itaendelea kuirudisha — hali hii ni ya kawaida, kwa sababu replica set bado haijatengenezwa. Itengeneze mara moja, kwa mkono:

sudo docker compose exec mongodb mongosh --eval 'rs.initiate({_id: "rs0", members: [{_id: 0, host: "mongodb:27017"}]})'

Matokeo sahihi ni { ok: 1 }. Ndani ya sekunde chache, node moja itajichagua kuwa primary; thibitisha kwa:

sudo docker compose exec mongodb mongosh --quiet --eval 'rs.status().members[0].stateStr'

Unapaswa kuona PRIMARY. Maelezo muhimu zaidi kwenye ukurasa huu ni argume ya host: "mongodb:27017". Ukitekeleza rs.initiate() bila orodha ya wanachama, MongoDB itatangaza replica set kwa kutumia hostname ya ndani ya container — hash ya nasibu kama a1b2c3d4e5f6. Rocket.Chat, ikijiunganisha kutoka kwenye container yake, haiwezi kutatua jina hilo, hivyo MongoDB driver itashindwa DNS na itarudia mzunguko wa kutoa log ya MongoServerSelectionError: getaddrinfo ENOTFOUND a1b2c3d4e5f6. Daima anza kwa kutumia jina la huduma (service name) linalolingana na MONGO_URL yako.

Wakati wa kuanza kwa mara ya kwanza: fuatilia mchakato

Baada ya seti kuwa primary, restart inayofuata ya Rocket.Chat itaunganishwa vizuri na kuanza migrations za mara ya kwanza. Fuatilia logs:

sudo docker compose logs -f rocketchat

Mstari unaosubiriwa ni banner ya startup:

+--------------------------------------------+
        SERVER RUNNING
   Rocket.Chat Version: 8.5.1
        NodeJS Version: 22.22.3 - x64
+--------------------------------------------+

Kuanza kwa mara ya kwanza huchukua muda — programu inafanya database migrations na kujenga indexes, hivyo subiri dakika moja au mbili kabla ya kuwa na wasiwasi. Ikiwa log inarudia MongoServerSelectionError: Server selection timed out after 30000 ms ikiwa na maelezo ya topology ya aina ReplicaSetNoPrimary, replica set haijaanzishwa; ikiwa inarudia getaddrinfo ENOTFOUND kwenye hash ya random, ilianza kwa host isiyo sahihi. Katika hali zote mbili, rudi hatua moja nyuma. Ukiona SERVER RUNNING, Rocket.Chat inasikiliza kwenye 127.0.0.1:3000 na ni wakati wa kuweka hostname halisi na TLS mbele yake.

Iwe nyuma ya TLS

Usionyeshe Rocket.Chat kwenye HTTP ya kawaida. Ukijisajili kupitia http:// mara moja, unakuwa umeipa nyota ya siri ya admin kwa mtu yeyote aliye kwenye njia hiyo. Malizia TLS kwenye reverse proxy kwenye mashine hiyo hiyo na uweke mbele ya 127.0.0.1:3000. Mambo mawili ni muhimu: proxy lazima iweke mbele ya WebSocket upgrade headers, kwa sababu Rocket.Chat inafanya kazi kwa wakati halisi na itafeli bila hizo, na ROOT_URL ya container lazima ifanane sawia na anwani ya umma ya HTTPS ambayo watumiaji huingiza.

Anza na nginx server block ya HTTP ya kawaida inayofanya proxy kwenda kwenye app na inayoweza mbele upgrade headers. Ihifadhi kama /etc/nginx/sites-available/rocketchat, iweke kama symlink ndani ya sites-enabled, kisha uirudishe:

server {
    listen 80;
    server_name chat.example.com;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Iache kwenye port 80 kwa sasa — block yenye listen 443 ssl; na bila cheti haitapitisha hata sudo nginx -t. Relaod nginx (sudo nginx -t && sudo systemctl reload nginx), kisha toa cheti. Njia rahisi zaidi kwenye Ubuntu ni Let's Encrypt TLS certificates with Certbot and nginx: certbot --nginx inafanya upya block iliyo juu, ikiongeza listen 443 ssl;, mistari ya ssl_certificate, na uelekezaji wa kiotomatiki wa 80-kwenda-443, na inapanga ajili ya kuhifadhiwa upya. Kama tayari unatumia container nyingi nyuma ya proxy moja, Traefik with automatic TLS for many Docker apps ndiyo chaguo bora zaidi — ongeza router na service labels kwenye huduma ya rocketchat na Traefik itaomba na kuhifadhi upya cheti kwa ajili yako, bila kuhitaji nginx block kabisa. Vyovyote vile, weka ROOT_URL kuwa https://chat.example.com ndani ya compose.yml na urudishe sudo docker compose up -d ili container ichukue mabadiliko hayo. Kama unataka seva iweze kufikiwa tu kutoka ndani ya mtandao wako badala ya mtandao wa umma, iweke nyuma ya self-hosted WireGuard VPN on the VPS na uunganishe proxy kwenye anwani ya tunnel.

Mchoro wa usanidi wa mara ya kwanza

Nenda kwenye https://chat.example.com na Rocket.Chat itakuongoza kupitia mchoro mfupi. Kwanza, akaunti ya admin — jina halisi, jina la mtumiaji, barua pepe, na nywila imara; hii ndiyo akaunti pekee inayopo, hivyo usipoteze. Kisha, taarifa za shirika na seva — jina, sekta, ukubwa, jina la tovuti, na lugha ya msingi; hizi ni taarifa za urembo, jaza kisha endelea. Baada ya hapo, chagua chaguo muhimu: usajili workspace hii kwenye Rocket.Chat Cloud, au iache iwe standalone.

Usajili unaruhusu arifa za push kwenye simu kupitia lango la Rocket.Chat na soko la nyongeza (add-on marketplace), lakini hili linatengeneza uhusiano wa control-plane na wingu la Rocket.Chat. Chaguo la standalone linaweka seva kuwa ya faragha kabisa na bila utegemezi, lakini arifa za push za iOS na Android zitaacha kufanya kazi, kwa sababu Apple na Google haziwezi kuruhusu programu iliyojengwa yenyewe iwe na vyeti vya push — programu rasmi hupitia lango la wingu. Chagua standalone ikiwa faragha ndiyo lengo kuu na watumiaji wako wanatumia programu ya web; chagua usajili ikiwa arifa za push kwenye simu ni muhimu sana. Unaweza kubadilisha uamuzi wako baadaye chini ya Admin.

Imarisha usalama kabla ya kualika mtu yeyote

Rocket.Chat inakuja ikiwa na usajili wa wazi (open registration on) — kwa kawaida Registration Form imewekwa kwenye Public, hivyo mtu yeyote anayepata URL anaweza kutengeneza akaunti. Hii ni kama mlango wazi kwenye hostname ya umma. Nenda kwenye Admin → Settings → Accounts → Registration na uweke Registration Form kuwa Disabled, ili utengeneze akaunti kwa mkono au kwa link ya mwaliko, au uweke Secret URL. Unapokuwa hapo, zima Allow Anonymous Read na Allow Anonymous Write isipokuwa kama unataka chaneli ya umma inayoweza kusomwa tu.

Amua pia mahali ambapo faili zitahifadhiwa. Uhifadhi wa File Upload wa kawaida ni GridFS, ambao huhifadhi kila picha na kiambatisho ndani ya MongoDB yenyewe. Hii ni rahisi, lakini inamaanisha database yako — na kila mongodump unayopiga — itakua bila kikomo wakati watu wanapoweka screenshots. Chini ya Admin → Settings → File Upload unaweza kubadilisha uhifadhi kwenda kwenye filesystem ya ndani au bucket inayofanana na S3, na kuweka kiwango cha juu cha ukubwa wa faili. Kwa timu ndogo GridFS inafaa; lakini kumbuka kuwa nakala zako za ziada (backups) zitakuwa kubwa zaidi baada ya muda.

Backups kwa kutumia mongodump

Data zako zote zipo kwenye volume ya mongodb_data. Usinakili volume wakati database inafanya kazi — tumia mongodump kupata dump iliyo thabiti, ukiielekeza kwenye faili kwenye host:

sudo docker compose exec -T mongodb mongodump --db rocketchat --archive --gzip > rocketchat-$(date +%F).archive.gz

Faili hiyo moja ya gzipped ndiyo workspace yako nzima: watumiaji, channels, ujumbe, mipangilio, na — ikiwa uliweka uploads kwenye GridFS — faili pia. Ikiwa ulihamisha uploads kwenye filesystem au S3, nakili hapo kando. Ili kurejesha (restore) kwenye stack mpya, kwanza sanifu replica set, kisha:

sudo docker compose exec -T mongodb mongorestore --archive --gzip --drop < rocketchat-2026-07-15.archive.gz

Nakili archive hiyo nje ya mashine — kwenye object storage, server nyingine, au mahali popote ambapo VPS inayokufa haitaichukua backup — na uendeshe dump kutoka kwenye cron kila usiku. Backup ambayo hujawahi kuirejesha ni matumaini tu, siyo backup; fanya mazoezi ya kurejesha mara moja kwenye VPS ya majaribio ili ujue inafanya kazi kabla ya kuihitaji.

Upgrades: pin tags, read the notes, respect the Mongo matrix

Sheria mbili hufanya upgrades ziwe rahisi. Kwanza, upgrade Rocket.Chat kwa toleo kubwa moja kwa wakati mmoja. Inafanya schema migrations wakati wa kuanza na inakataa makusudi kuruka matoleo makubwa; ukijaribu kwenda kutoka 6.x moja kwa moja hadi 8.x, itasimama na kutoa migration error badala ya kuharibu data yako. Badilisha image tag kwenda toleo jipya la mwisho la toleo kubwa linalofuata, soma maelezo ya toleo hilo kwa mabadiliko yanayovunja mfumo (breaking changes), kimbiza docker compose up -d, na uangalie logs ziishe kuhama (migrating) kabla ya kuendelea. Pili, heshimu MongoDB support matrix. Kila toleo la Rocket.Chat linasaidia seti maalum ya matoleo ya MongoDB, na curl -s https://releases.rocket.chat/<version>/info | jq .compatibleMongoVersions inakuambia ipi. Unapohamisha MongoDB — kwa mfano kutoka 7.0 hadi 8.0 — fanya hatua moja kubwa kwa wakati mmoja na uweke feature-compatibility version baada ya kila hatua. Kwenye MongoDB 8.0, amri hiyo inahitaji confirm: true ya wazi, yokani itakataa na kutoa ujumbe unaokuambia uirudie na confirmation flag:

sudo docker compose exec mongodb mongosh --eval 'db.adminCommand({setFeatureCompatibilityVersion: "8.0", confirm: true})'

Fanya mongodump kabla ya kila upgrade ya sehemu yoyote kati ya hizi. Hiyo ndiyo bima yako nzima.

Failure modes, with the exact strings

Rocket.Chat inarudia kuanza upya (restart-loops) mara baada ya docker compose up, na docker compose logs rocketchat hujaa MongoServerSelectionError. MongoDB inafanya kazi lakini driver haiwezi kuchagua primary, na ujumbe kamili unakuambia kosa ulilofanya. Server selection timed out after 30000 ms ikiwa na topology type ya ReplicaSetNoPrimary inamaanisha hukukimbiza rs.initiate() — seti haina usanidi (config) bado. getaddrinfo ENOTFOUND ikifuatiwa na hash ya nasibu inamaanisha ulianzisha bila host: "mongodb:27017" ya wazi, hivyo MongoDB ilitangaza hostname ya container isiyoweza kutatuliwa. Fanya uchunguzi kwa sudo docker compose exec mongodb mongosh --eval 'rs.status()': ikiwa inatoa kosa la MongoServerError: no replset config has been received, anza seti; ikiwa inaonyesha mwanachama ambaye name ni hash ya nasibu, anza tena kwa kutumia jina la huduma (service name).

Web UI inafunguka lakini login inazunguka milele na haimalizi. Fungua console ya kivinjari (browser console) na utaona WebSocket connection to 'wss://chat.example.com/websocket' failed. Hii mara nyingi ni kutofautiana kwa ROOT_URL au proxy ambayo haipitishi (forwarding) upgrade headers. Hakikisha ROOT_URL ni sawa na anwani ya umma ikiwa ni pamoja na https://, na kwamba nginx location block yako imeweka Upgrade na Connection "upgrade" kwa kutumia proxy_http_version 1.1. Badilisha mojawapo na urafikishe docker compose up -d upya.

Container inaendelea kufa na docker compose ps inaonyesha kuwa Restarting. docker compose logs hukatika katikati ya mstari na sudo dmesg | tail inaonyesha Out of memory: Killed process 12345 (mongod) kutoka kwa oom-killer; exit code ni 137. Mashine haina RAM ya kutosha. Suluhisho la kudumu ni VPS kubwa zaidi — angalau 4 GB. Kama suluhisho la muda, ongeza swap na uweke kikomo cha cache ya MongoDB kwa kutumia --wiredTigerCacheSizeGB 1 kwenye command yake, lakini swap huchelewesha tu OOM inayofuata chini ya mzigo halisi:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

docker compose up inafeli kwa Error response from daemon: driver failed programming external connectivity ... bind: address already in use. Kitu fulani tayari kinatumia port 3000 — mara nyingi ni container ya awali ya Rocket.Chat ambayo haikuacha vizuri, au programu nyingine. Kipate kwa kutumia sudo ss -ltnp | grep :3000, simamisha process au container hiyo, au badilisha upande wa host wa mapping kuwa 127.0.0.1:3001:3000 na ubadilishe proxy_pass ya proxy yako ili ifanane.

FAQ

Je, Rocket.Chat inahitaji MongoDB replica set?

Ndiyo, hata kwa seva moja yenye node moja ya database. Rocket.Chat hutuma ujumbe kwa wakati halisi (real time) kwa kutumia MongoDB change streams. Change streams ni kipengele cha replica-set pekee — standalone mongod haiwezi kufungua stream. Huhitaji mashine nyingi; tumia container moja ya MongoDB iliyoanzishwa na --replSet rs0 na uanzishe set ya member mmoja kwa kutumia rs.initiate(). Ukiruka hatua hiyo, driver haitapata primary, hivyo Rocket.Chat itajirudia (restart-loop) na MongoServerSelectionError: Server selection timed out na haitamaliza kuwaka.

Rocket.Chat inayojihosti inahitaji RAM kiasi gani?

Panga kutumia 4 GB kama kiwango cha chini cha matumizi, na 8 GB kwa timu inayofanya kazi nyingi. Process ya Node ya Rocket.Chat hutumia takriban 1 hadi 1.5 GB, na MongoDB hutumia nusu ya RAM iliyobaki kwa WiredTiger cache. Kwa mfano, kwenye box la 2 GB, programu hizi mbili zitagongana na out-of-memory killer itafunga mongod chini ya mzigo wowote, ikionyesha Killed kwenye logs na exit code 137. GB 2 ni nzito tu kwa ajili ya kujaribu programu kwa watumiaji wachache wa majaribio.

Nitafanyaje kuweka Rocket.Chat nyuma ya HTTPS?

Tumia reverse proxy kwenye VPS hiyo hiyo inayofanya TLS termination na kuelekeza trafiki kwenda 127.0.0.1:3000, kisha weka ROOT_URL ya container kwenye anwani yako ya https:// ya umma. Proxy lazima itume WebSocket upgrade headers vinginevyo login itakwama. Certbot pamoja na nginx ndiyo mpangilio rahisi zaidi kwa programu moja; Traefik ni bora zaidi ikiwa unatumia container nyingi nyuma ya proxy moja na unataka usimamizi wa automatic wa vyeti (certificates).

Nitafanyakuaje kufanya backup ya Rocket.Chat inayojihosti?

Fanya database dump thabiti kwa kutumia mongodump badala ya kunakili volume: docker compose exec -T mongodb mongodump --db rocketchat --archive --gzip > backup.archive.gz. Faili hiyo ya archive ina watumiaji, channels, ujumbe, na mipangilio, pamoja na faili zilizopakiwa ikiwa uliacha storage kwenye GridFS. Nakili faili hiyo nje ya seva, iweke ijiendeshe kila usiku kwa kutumia cron, na fanya mongorestore kwenye box la majaribio ili ujue kuwa urejeshaji (restore) unafanya kazi.

Nitafanyaje kuongeza toleo (upgrade) la Rocket.Chat bila kuharibu MongoDB?

Ongeza toleo kuu la Rocket.Chat moja baada ya jingine — programu hufanya migrations wakati wa kuwaka na haikubali kuruka matoleo makuu — na usome maelezo ya kila toleo kabla ya kubadilisha image tag. Angalia ni matoleo gani ya MongoDB yanayoungwa mkono na toleo lako kwa kutumia curl -s https://releases.rocket.chat/<version>/info | jq .compatibleMongoVersions, na unapohamisha MongoDB, fanya hatua moja kuu kwa wakati mmoja na uweke setFeatureCompatibilityVersion kwa kutumia confirm: true baada ya kila hatua. Kila wakati fanya mongodump kwanza.