Jinsi ya kuweka Rocket.Chat kwa Docker Compose
Jifunze kusakinisha Rocket.Chat kwenye VPS yako kwa kutumia Docker Compose. Mwongozo huu unatatua hitilafu ya MongoDB replica set na kuelekeza usanidi sahihi wa TLS na backup.
Unachojenga
Chat ya timu ya faragha unayomiliki kikamilifu: Rocket.Chat inayofanya kazi kwenye VPS yako kupitia Docker Compose, ikiwa na TLS termination, huku kila ujumbe ukiwa kwenye database ya MongoDB unayoweza kuhifadhi (backup) na kuhamisha. Rocket.Chat ni mbadala wa Slack na Teams iliyokomaa na ya chanzo huria, inayotoa njia za mawasiliano (channels), ujumbe wa moja kwa moja, threads, ushirikiano wa faili, pamoja na sauti na video, yote kwenye maunzi unayokodisha na kuyadhibiti. Programu hii ni container moja inayowaka ndani ya dakika chache. Kila kitu kinachoweza kuharibika kipo kwenye database iliyo kando yake, kwa hivyo mwongozo huu unahusu zaidi MongoDB, na hasa hitaji moja ambalo huwashangaza wengi mara ya kwanza: Rocket.Chat haitafanya kazi na MongoDB ya kawaida (standalone). Inahitaji replica set, hata kama "set" hiyo ni node moja pekee.
Mahitaji ya awali, na hesabu ya RAM ambayo watu hawakuambii
Chagua ukubwa wa seva kwa uaminifu. Kiwango cha chini kabisa kwa timu ndogo ni 2 vCPU na 4 GB ya RAM. Mchakato wa Node.js wa Rocket.Chat pekee huhitaji takriban 1 hadi 1.5 GB, na cache ya WiredTiger ya MongoDB hutumia takriban nusu ya RAM iliyobaki kwa chaguo-msingi. Kwenye VPS ya 2 GB, zote mbili hufanya kazi wakati wa kuanza, lakini hugongana mara tu trafiki halisi inapoingia: MongoDB hupanua cache yake, Node hupanua heap yake, kernel hukosa kurasa za kumbukumbu, na mchakato wa out-of-memory killer huua mchakato mkubwa zaidi, ambao kwa kawaida ni mongod. Kontena huchapisha Killed, Docker huianzisha upya, na unapata seva ya gumzo inayokata muunganisho kila baada ya dakika chache chini ya mzigo ambao ingepaswa kuuhimili. 2 GB inafaa kwa majaribio ya watu wawili; si seva ya timu. Anza na 4 GB, na uipe 8 GB ikiwa unatarajia watumiaji wengi kwa wakati mmoja, simu za video, au historia ya upakiaji inayokua.
Pia unahitaji mambo matatu yawe tayari kabla ya kuanza. Jina la domain lenye A record inayoelekeza kwenye IP ya umma ya VPS; vipengele vya wakati halisi vya Rocket.Chat na wateja wa simu huhitaji hostname thabiti, si IP pekee. Ports 80 na 443 ziwe wazi kwenye firewall ya seva na firewall ya mtandao ya mtoa huduma wako, ambayo ni kidhibiti tofauti kwenye paneli nyingi. Na VPS mpya ya Ubuntu 24.04 KVM yenye ufikiaji wa root au sudo. Ikiwa bado unaamua kama seva ya gumzo ndiyo huduma sahihi ya kwanza ya kuendesha, mwongozo wa nini kinastahili kujiendeshea mwenyewe mwaka 2026 unafafanua mambo ya kuzingatia.
Sakinisha Docker engine na Compose plugin
Tumia hazina (repository) ya apt ya Docker yenyewe, siyo kifurushi cha docker.io kinachokuja na Ubuntu wala ile binary ya zamani ya docker-compose ya Python. Compose ya kisasa ni plugin ya Docker unayoiita kama docker compose, kwa kutumia nafasi (space), siyo kistari (hyphen). Toleo la zamani la docker-compose v1 limefikia mwisho wa maisha yake na linashindwa kushughulikia vizuri syntax ya healthcheck na dependency iliyo 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-pluginThibitisha kuwa vipengele vyote viwili vipo:
sudo docker version
sudo docker compose versiondocker compose version kuchapisha kitu kama Docker Compose version v2.x ndiyo uthibitisho muhimu. Ikiwa itatoa kosa la docker: 'compose' is not a docker command, plugin haijasakinika na utakutana na hitilafu zenye kutatanisha baadaye, rekebisha hapa.
Faili la compose: MongoDB kama replica set ya node moja
Hili ni eneo ambalo watu hukosea, hivyo lisome kwa umakini. Rocket.Chat hutumia change streams za MongoDB kusukuma ujumbe mpya kwa wateja waliounganishwa kwa wakati halisi, na change streams hupatikana tu kwenye replica set. Ukielekeza Rocket.Chat kwenye mongod ya kawaida, itaunganishwa, itashindwa kufungua change stream, na itaingia kwenye mzunguko wa kuanza upya (restart-loop) milele. Suluhisho si gumu: unaendesha container moja ya kawaida ya MongoDB, lakini unaianzisha kwa --replSet na kisha kuanzisha (initialise) set ya mwanachama mmoja.
Tengeneza saraka ya kufanyia 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:Chaguzi chache hapa zimefanywa kwa makusudi. Port ya Rocket.Chat imechapishwa kwenye 127.0.0.1:3000, si 0.0.0.0; programu yenyewe haina TLS, kwa hivyo reverse proxy iliyo kwenye seva hiyo hiyo ndiyo inapaswa kuifikia; kuifunga kwenye kila interface kungeiweka ukurasa wa kuingia wa plaintext moja kwa moja kwenye Internet ya umma. MongoDB haijachapishwa kwenye host hata kidogo; inafikika tu kupitia mtandao wa ndani wa Compose kwa jina mongodb, ambalo ndilo hostname halisi inayotumiwa na MONGO_URL. MONGO_URL inabeba ?replicaSet=rs0, ukiiondoa hiyo driver itachukulia seva kama standalone ingawa ni replica set, na change streams bado zitafeli. MONGO_OPLOG_URL inaelekeza kwenye database ya local ambapo oplog hukaa; Rocket.Chat ya kisasa hupendelea change streams, lakini kuiweka haina madhara na huifanya code ya zamani ifanye kazi vizuri. depends_on inatumia condition: service_healthy, kwa hivyo Compose husubiri hadi MongoDB ijibu ping kabla ya kuanzisha Rocket.Chat, ndiyo kazi ya healthcheck hiyo.
Weka tag za toleo halisi kwenye image zote mbili, mongo:8.0 na toleo mahususi la Rocket.Chat kama 8.5.1 hapa, na usiwahi kutumia :latest, kwa sababu hubadilisha docker pull isiyohitaji uangalizi kuwa uboreshaji wa bahati mbaya ambao hauwezi kuhamishwa kwa migration. Kagua toleo thabiti la sasa la Rocket.Chat na matoleo ya MongoDB inayoyaunga mkono kabla ya kuweka pin. Rocket.Chat huchapisha hati 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, kwa hiyo mongo:8.0 ndiyo engine pekee inayotumika, pamoja na flag ya lts inayokuonyesha ikiwa toleo hilo ni build ya long-term support inayofaa kuwekwa pin kwa seva ambayo hungependa kuisimamia kila mara. Si kila project huchapisha image yenye toleo, ambapo pin huhamishwa kwenye source: kujisimamia self-hosting ya kifuatiliaji cha mazoezi cha openGym kunamaanisha ku-check out git tag mahususi na ku-build kutoka humo badala ya kufuata branch inayobadilika.
Anzisha replica set
Washa stack:
sudo docker compose up -dRocket.Chat itaanza kupata hitilafu mara moja na Docker itaendelea kuianzisha upya, jambo hili linatarajiwa kwa sababu replica set bado haijaundwa. Iunde 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 hiyo moja itajichagua yenyewe kuwa primary; thibitisha kwa:
sudo docker compose exec mongodb mongosh --quiet --eval 'rs.status().members[0].stateStr'Unapaswa kuona PRIMARY. Maelezo muhimu zaidi katika ukurasa huu wote ni hoja ya host: "mongodb:27017". Ukikimbiza rs.initiate() tupu bila orodha ya members, MongoDB itatangaza replica set hiyo kwa kutumia hostname ya ndani ya container, ambayo ni hash ya nasibu kama a1b2c3d4e5f6. Rocket.Chat, inayounganisha kutoka kwenye container yake yenyewe, haiwezi kutatua jina hilo, kwa hivyo driver ya MongoDB inashindwa kwenye DNS na kuingia kwenye mzunguko wa kudumu ikirekodi MongoServerSelectionError: getaddrinfo ENOTFOUND a1b2c3d4e5f6. Daima anzisha kwa kutumia jina la huduma lililo wazi ambalo linaendana na MONGO_URL yako.
Boot ya kwanza: fuatilia kuanza kwake
Mara tu set inapokuwa primary, restart inayofuata ya Rocket.Chat itaunganisha vizuri na kuanza migrations za mara ya kwanza. Fuatilia logi:
sudo docker compose logs -f rocketchatMstari unaosubiri ni tangazo la kuanza (startup banner):
+--------------------------------------------+
SERVER RUNNING
Rocket.Chat Version: 8.5.1
NodeJS Version: 22.22.3 - x64
+--------------------------------------------+Boot ya kwanza ni ya polepole, programu huendesha migrations za database na kujenga indexes, kwa hivyo ipe dakika moja au mbili kabla ya kuwa na wasiwasi. Ikiwa logi badala yake inarudia MongoServerSelectionError: Server selection timed out after 30000 ms ikiwa na maelezo ya topology ya aina ya ReplicaSetNoPrimary, replica set haijaanzishwa; ikiwa inarudia getaddrinfo ENOTFOUND kwenye hash ya nasibu, ilianzishwa na host isiyo sahihi. Kwa vyovyote vile, rudi hatua moja nyuma. Mara tu unapoona SERVER RUNNING, Rocket.Chat inasikiliza kwenye 127.0.0.1:3000 na ni wakati wa kuweka hostname halisi na TLS mbele yake.
Iweke nyuma ya TLS
Usiwahi kuweka Rocket.Chat kwenye HTTP ya kawaida. Ingia kupitia http:// mara moja na utakuwa umetoa nenosiri lako la admin kwa mtu yeyote aliye kwenye njia hiyo. Malizia TLS kwenye reverse proxy iliyo kwenye seva hiyo hiyo na uelekeze kwenye 127.0.0.1:3000. Mambo mawili ni muhimu: proxy lazima ipeleke mbele (forward) header za WebSocket upgrade, kwa sababu Rocket.Chat hufanya kazi kwa wakati halisi (real-time) na itafeli bila hizo, na ROOT_URL ya container lazima ilingane kikamilifu na anwani ya HTTPS ya umma wanayotumia watumiaji.
Anza na block ya nginx ya HTTP ya kawaida inayofanya proxy kwenda kwenye app na kusambaza header za upgrade. Ihifadhi kama /etc/nginx/sites-available/rocketchat, tengeneza symlink kwenye sites-enabled, na u-reload:
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 isiyo na cheti haitapita hata sudo nginx -t. Reload nginx (sudo nginx -t && sudo systemctl reload nginx), kisha toa cheti. Njia safi zaidi kwenye Ubuntu ni Let's Encrypt TLS certificates with Certbot and nginx: certbot --nginx huandika upya block iliyo hapo juu papo hapo, ikiongeza listen 443 ssl;, mistari ya ssl_certificate, na redirect ya kiotomatiki ya 80-kwenda-443, na hupanga upya (schedule) renewal kwa ajili yako. Ikiwa tayari unaendesha container kadhaa nyuma ya proxy moja, Traefik with automatic TLS for many Docker apps ni chaguo nadhifu zaidi, ongeza router na service labels kwenye huduma ya rocketchat na Traefik itaomba na kusasisha cheti kwa ajili yako, bila block yoyote ya nginx. Vyovyote vile, weka ROOT_URL kuwa https://chat.example.com kwenye compose.yml na uendeshe tena sudo docker compose up -d ili container ichukue mabadiliko hayo. Ikiwa unataka seva iweze kufikiwa tu kutoka ndani ya mtandao wako badala ya Internet ya umma, iweke mbele ya self-hosted WireGuard VPN on the VPS na ufunge (bind) proxy kwenye anwani ya tunnel.
Usanidi wa mara ya kwanza
Nenda kwenye https://chat.example.com na Rocket.Chat itakuongoza kupitia mchawi wa usanidi mfupi. Kwanza, admin account, jina kamili, jina la mtumiaji, barua pepe, na nenosiri thabiti; hii ndiyo akaunti pekee iliyopo, kwa hivyo usipoteze maelezo yake. Inayofuata ni organisation and server info, jina, sekta, ukubwa, jina la tovuti na lugha chaguo-msingi; hizi ni taarifa za kawaida, zijaze na uendelee. Kisha chaguo ambalo ni muhimu sana: register this workspace na Rocket.Chat Cloud, au iweke kama standalone.
Usajili huwezesha arifa za push kwenye simu kupitia gateway ya Rocket.Chat na soko la add-on, kwa gharama ya kuwa na uhusiano wa udhibiti na wingu la Rocket.Chat. Hali ya standalone huifanya seva kuwa ya faragha kabisa na isiyo na utegemezi wowote, lakini arifa za push za iOS na Android huacha kufanya kazi, kwa sababu Apple na Google haziruhusu programu iliyojengwa na mtumiaji kushikilia vyeti vya push; programu rasmi hupitia gateway ya wingu. Chagua standalone ikiwa faragha ndiyo lengo kuu na watumiaji wako wanatumia web app; chagua usajili ikiwa arifa za simu ni muhimu sana. Unaweza kubadili uamuzi wako baadaye kupitia sehemu ya Admin.
Iweke salama kabla ya kumkaribisha mtu yeyote
Rocket.Chat inakuja ikiwa na usajili wazi umewashwa, kwa chaguo-msingi Fomu ya Usajili imewekwa kuwa Public, kwa hivyo mtu yeyote anayepata URL anaweza kuunda akaunti. Kwenye hostname ya umma, huo ni mlango wazi. Nenda kwenye Admin → Settings → Accounts → Registration na uweke Registration Form kuwa Disabled, ili uweze kuunda akaunti kwa mkono au kwa kiungo cha mwaliko, au uweke Secret URL. Ukiwa hapo, zima Allow Anonymous Read na Allow Anonymous Write isipokuwa kama unataka mahususi chaneli ya umma inayoweza kusomwa tu. Ikiwa kuunda kila akaunti kwa mkono inaonekana kuwa kazi ngumu na hii si huduma pekee ambayo timu yako inaingia, elekeza OAuth login ya Rocket.Chat kwenye seva ya Authentik SSO inayojiendesha badala yake, ili wanaojiunga na wanaoondoka wadhibitiwe mara moja sehemu moja badala ya kufanya hivyo kwa kila programu.
Amua pia mahali ambapo faili zilizopakiwa zinaenda. Hifadhi ya File Upload ya chaguo-msingi ni GridFS, ambayo huhifadhi kila picha na kiambatisho ndani ya MongoDB yenyewe. Hiyo ni rahisi, lakini inamaanisha kuwa hifadhidata yako, na kila mongodump unayochukua, inakua bila kikomo kadiri watu wanavyopachika picha za skrini. Chini ya Admin → Settings → File Upload unaweza kubadilisha hifadhi hiyo kwenda kwenye mfumo wa faili wa ndani (local filesystem) au bucket inayooana na S3, na uweke ukubwa wa juu wa faili unaofaa. Kwa timu ndogo, GridFS inafaa; fahamu tu kuwa backups zako zitazidi kuwa nzito kadiri muda unavyopita.
Kuhifadhi nakala kwa kutumia mongodump
Data zako zote zipo ndani ya volume ya mongodb_data. Usinakili tu volume hiyo wakati database inaendelea kufanya kazi; chukua dump thabiti kwa kutumia mongodump, na uipeleke kwenye faili iliyo kwenye host:
sudo docker compose exec -T mongodb mongodump --db rocketchat --archive --gzip > rocketchat-$(date +%F).archive.gzFaili hiyo moja iliyobanwa kwa gzip ndiyo nafasi yako yote ya kazi: watumiaji, chaneli, ujumbe, mipangilio, na kama uliacha uploads kwenye GridFS, basi hata faili hizo pia. Ikiwa ulihamishia uploads kwenye mfumo wa faili (filesystem) au S3, hifadhi hifadhi hiyo (store) kando. Rejesha data kwenye stack mpya kwa kuanzisha replica set kwanza, kisha:
sudo docker compose exec -T mongodb mongorestore --archive --gzip --drop < rocketchat-2026-07-15.archive.gzNakili faili hiyo ya archive nje ya seva hiyo, kwenye object storage, seva nyingine, au mahali popote ambapo VPS ikifa, nakala hiyo haitapotea, na uendeshe dump hiyo kupitia cron kila usiku. Nakala ambayo hujawahi kuijaribu kuirejesha ni matumaini tu, si nakala salama; fanya mazoezi ya kurejesha data mara moja kwenye VPS ya majaribio ili uhakikishe inafanya kazi kabla ya kuhitaji kufanya hivyo kwa dharura.
Uboreshaji: pini tag, soma maelezo, na uzingatie matrix ya Mongo
Sheria mbili hufanya uboreshaji kuwa rahisi. Kwanza, boresha Rocket.Chat toleo moja kuu kwa wakati mmoja. Programu hii hufanya migrates ya schema wakati wa kuanza na hukataa kuruka matoleo makuu; ukijaribu kutoka 6.x kwenda 8.x moja kwa moja, itasimama na kutoa kosa la migration badala ya kuharibu data yako. Badilisha image tag kwenda toleo la hivi karibuni la toleo kuu linalofuata, soma maelezo ya toleo hilo kuhusu mabadiliko yanayoweza kuvunja utendaji, endesha docker compose up -d, na ufuatilie logs hadi migration ikamilike kabla ya kuendelea. Pili, zingatia matrix ya usaidizi ya MongoDB. Kila toleo la Rocket.Chat linaunga mkono matoleo mahususi ya MongoDB, na curl -s https://releases.rocket.chat/<version>/info | jq .compatibleMongoVersions inakuonyesha ni yapi. Unapoboresha MongoDB, kwa mfano kutoka 7.0 kwenda 8.0, fanya hatua moja kuu kwa wakati mmoja na uweke toleo la feature-compatibility baada ya kila hatua. Kwenye MongoDB 8.0, amri hiyo inahitaji confirm: true dhahiri, vinginevyo itakataa na ujumbe unaokuambia uendeshe tena amri hiyo ukiwa na flag ya uthibitisho:
sudo docker compose exec mongodb mongosh --eval 'db.adminCommand({setFeatureCompatibilityVersion: "8.0", confirm: true})'Chukua mongodump kabla ya kila uboreshaji wa sehemu yoyote kati ya hizi. Hiyo ndiyo sera nzima ya bima.
Njia za kufeli, pamoja na mifuatano kamili ya herufi
Rocket.Chat inajirudia kuanza (restart-loop) mara tu baada ya docker compose up, na docker compose logs rocketchat inajaa MongoServerSelectionError. MongoDB inafanya kazi lakini driver haiwezi kuchagua primary, na mfuatano kamili wa herufi unakuambia kosa ulilofanya. Server selection timed out after 30000 ms ikiwa na aina ya topology ya ReplicaSetNoPrimary inamaanisha hujawahi kuendesha rs.initiate(), seti hiyo haina usanidi bado. getaddrinfo ENOTFOUND ikifuatiwa na hash ya nasibu inamaanisha ulianzisha bila host: "mongodb:27017" iliyo wazi, kwa hivyo MongoDB ilitangaza hostname ya container isiyoweza kutatuliwa. Fanya utambuzi kwa sudo docker compose exec mongodb mongosh --eval 'rs.status()': ikiwa inatoa error MongoServerError: no replset config has been received, anzisha seti hiyo; ikiwa inaonyesha mwanachama ambaye name yake ni hash ya nasibu, anzisha upya kwa kutumia jina la huduma.
Kiolesura cha wavuti (web UI) kinapakia lakini kuingia (login) kunazunguka milele na hakukamiliki. Fungua console ya kivinjari na utaona WebSocket connection to 'wss://chat.example.com/websocket' failed. Hii karibu kila mara ni kutolingana kwa ROOT_URL au proxy ambayo haisambazi headers za upgrade. Thibitisha kuwa ROOT_URL inalingana na anwani kamili ya umma ikijumuisha https://, na kwamba block yako ya nginx location inaweka Upgrade na Connection "upgrade" kwa kutumia proxy_http_version 1.1. Badilisha mojawapo na uendeshe tena docker compose up -d.
Container inaendelea kufa na docker compose ps inaonyesha Restarting. docker compose logs inakatika katikati ya mstari na sudo dmesg | tail inaonyesha Out of memory: Killed process 12345 (mongod) kutoka kwa oom-killer; exit code ni 137. Seva haina RAM ya kutosha. Suluhisho la kweli ni VPS kubwa zaidi, angalau 4 GB. Kama suluhisho la muda, ongeza swap na uwekee kikomo cache ya MongoDB kwa --wiredTigerCacheSizeGB 1 katika command yake, lakini swap inachelewesha tu OOM inayofuata chini ya mzigo halisi:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfiledocker compose up inafeli kwa Error response from daemon: driver failed programming external connectivity ... bind: address already in use. Kuna kitu kinashikilia port 3000, mara nyingi ni container ya awali ya Rocket.Chat ambayo haikusimama vizuri, au programu nyingine. Ipatie kwa sudo ss -ltnp | grep :3000, simamisha mchakato huo au container, au badilisha upande wa host wa mapping kuwa 127.0.0.1:3001:3000 na usasishe proxy_pass ya proxy yako ili ilingane.
FAQ
Je, Rocket.Chat inahitaji kweli MongoDB replica set?
Ndiyo, hata kwa seva moja yenye node moja ya database. Rocket.Chat hutuma ujumbe kwa wakati halisi ikitumia MongoDB change streams, na change streams ni kipengele kinachopatikana kwenye replica set pekee; mongod ya pekee (standalone) haiwezi kufungua stream hiyo. Huna haja ya mashine nyingi; unaweza kuendesha container moja ya MongoDB iliyoanzishwa kwa --replSet rs0 na kuanzisha set ya mwanachama mmoja kwa rs.initiate(). Ukiruka hatua hiyo, driver haitapata primary, hivyo Rocket.Chat itajirudia kuanza (restart-loop) na MongoServerSelectionError: Server selection timed out na haitakamilisha kuwaka.
Rocket.Chat inayojiendesha yenyewe inahitaji RAM kiasi gani?
Panga angalau 4 GB kama kiwango cha chini cha kiutendaji na 8 GB kwa timu yenye shughuli nyingi. Mchakato wa Node wa Rocket.Chat hutumia takriban 1 hadi 1.5 GB na MongoDB huchukua karibu nusu ya RAM iliyobaki kwa ajili ya WiredTiger cache yake, kwa hivyo kwenye mashine ya 2 GB, zote mbili hugongana na out-of-memory killer huifunga mongod pindi tu mzigo halisi unapoingia, ikionyesha Killed kwenye logi na exit code 137. 2 GB inatosha tu kwa ajili ya kujaribu programu hiyo na watumiaji wachache wa majaribio.
Ninawezaje kuweka Rocket.Chat nyuma ya HTTPS?
Endesha reverse proxy kwenye VPS hiyo hiyo inayomalizia TLS na kupeleka maombi kwenye 127.0.0.1:3000, na uweke ROOT_URL ya container hiyo kwenye anwani yako ya umma ya https://. Proxy lazima ipeleke WebSocket upgrade headers, vinginevyo login itakwama. Certbot pamoja na nginx ndiyo usanidi rahisi zaidi kwa programu moja; Traefik ni safi zaidi ikiwa unaendesha containers kadhaa nyuma ya proxy moja na unataka usimamizi wa cheti wa kiotomatiki.
Ninawezaje kuhifadhi nakala (backup) ya Rocket.Chat inayojiendesha yenyewe?
Chukua dump ya database iliyokamilika kwa kutumia mongodump badala ya kunakili volume: docker compose exec -T mongodb mongodump --db rocketchat --archive --gzip > backup.archive.gz. Kumbukumbu hiyo ina watumiaji, chaneli, ujumbe, na mipangilio, pamoja na faili zilizopakiwa ikiwa uliacha hifadhi kwenye GridFS. Nakili faili hiyo nje ya seva, iweke kwenye cron ili ifanyike kila usiku, na ufanye mazoezi ya mongorestore kwenye mashine ya majaribio ili uhakikishe kuwa urejeshaji (restore) unafanya kazi kweli.
Ninawezaje kuboresha (upgrade) Rocket.Chat bila kuharibu MongoDB?
Boresha Rocket.Chat toleo moja kuu kwa wakati mmoja; hufanya migrations wakati wa kuwaka na hukataa kuruka matoleo makuu. Soma maelezo ya kila toleo (release notes) kabla ya kubadilisha pinned image tag. Angalia ni matoleo yapi ya MongoDB yanayoungwa mkono na toleo unalolenga kwa kutumia curl -s https://releases.rocket.chat/<version>/info | jq .compatibleMongoVersions, na unapohamisha MongoDB, nenda toleo moja kuu kwa wakati mmoja na uweke setFeatureCompatibilityVersion kwa kutumia confirm: true baada ya kila hatua. Daima chukua mongodump kwanza.