Passa al contenuto principale
Versione: Next

Rocket.Chat su Aruba Cloud

Distribuisci Rocket.Chat — una piattaforma open-source per la messaggistica e la collaborazione del team — su Aruba Cloud tramite Terraform e cloud-init. Rocket.Chat e MongoDB 7.0 vengono eseguiti come servizi Docker Compose con l'account admin pre-configurato al momento del bootstrap.

Versione provider: arubacloud/arubacloud ~> 1.0 | Terraform: ≥ 1.9


Introduzione​

Rocket.Chat è un'alternativa self-hosted a Slack e Microsoft Teams, che offre messaggistica in tempo reale, videochiamate e condivisione di file. Questo esempio distribuisce:

  • Rocket.Chat (ultima versione stabile) e MongoDB 7.0 tramite Docker Compose
  • Replica set MongoDB inizializzata automaticamente (richiesta da Rocket.Chat per il tailing oplog)
  • Account admin creato al primo avvio tramite variabili d'ambiente — nessuna procedura guidata di configurazione manuale
  • Porta 3000 per l'interfaccia web, limitata a admin_cidr

Confronto con Mattermost: Rocket.Chat è più ricco di funzionalità ma più pesante (MongoDB vs. PostgreSQL). Per una soluzione di messaggistica più semplice con minore utilizzo delle risorse, considera l'esempio Mattermost.


Panoramica dell'architettura​


Infrastruttura creata​

RisorsaPattern nomeDescrizione
arubacloud_projectrc-prodContenitore progetto
arubacloud_vpcrc-prod-vpcVirtual Private Cloud
arubacloud_subnetrc-prod-subnetSubnet di base
arubacloud_securitygrouprc-prod-vm-sgSecurity group
arubacloud_securityrulerc-prod-vm-sshIngresso SSH
arubacloud_securityrulerc-prod-vm-admin-uiIngresso interfaccia web TCP 3000
arubacloud_elasticiprc-prod-vm-eipIP pubblico VM
arubacloud_blockstoragerc-prod-bootDisco di avvio 40 GB (Performance)
arubacloud_keypairrc-prod-keypairChiave pubblica SSH
arubacloud_cloudserverrc-prod-vmCloudServer VM

Costo mensile stimato​

RisorsaSpecificheCosto/mese stimato
CloudServer VMCSO4A8 — 4 vCPU / 8 GB~€35
Disco di avvio40 GB Performance~€6
Elastic IP—~€3
Totale~€44/mese

Requisiti​

  • Terraform ≥ 1.9
  • ArubaCloud Terraform Provider ~> 1.0
  • Un account ArubaCloud con credenziali API OAuth2
  • Una coppia di chiavi SSH

Variabili​

Obbligatorie​

VariabileDescrizione
arubacloud_client_idClient ID OAuth2 ArubaCloud
arubacloud_client_secretClient secret OAuth2 ArubaCloud
ssh_public_keyContenuto della chiave pubblica SSH
admin_emailIndirizzo email admin Rocket.Chat
admin_passwordPassword admin Rocket.Chat (min 8 caratteri)

Opzionali​

VariabileDefaultDescrizione
app_name"rc"Nome breve usato in tutti i nomi delle risorse
environment"prod"Etichetta ambiente
location"ITBG-Bergamo"Regione ArubaCloud
zone"ITBG-1"Zona di disponibilità
billing_period"Hour""Hour" o "Month"
vm_flavor"CSO4A8"Flavor CloudServer
vm_image"LU22-001"Immagine disco di avvio (Ubuntu 22.04 LTS)
vm_disk_size_gb40Dimensione disco di avvio in GB
ssh_cidr"0.0.0.0/0"CIDR per SSH
admin_cidr"0.0.0.0/0"CIDR per l'interfaccia web porta 3000
admin_username"admin"Nome utente admin Rocket.Chat
admin_fullname"Administrator"Nome visualizzato admin Rocket.Chat

Output​

OutputDescrizione
rocketchat_urlURL interfaccia web Rocket.Chat
vm_public_ipIndirizzo IP pubblico della VM
ssh_commandComando SSH per connettersi alla VM

Istruzioni di distribuzione​

1. Clona e naviga​

git clone https://github.com/arubacloud/terraform-arubacloud-examples.git
cd terraform-arubacloud-examples/rocketchat

2. Configura le variabili​

cp terraform.tfvars.example terraform.tfvars

3. Distribuisci​

terraform init
terraform plan
terraform apply

Il bootstrap richiede circa 5–8 minuti (installazione Docker + inizializzazione replica set MongoDB + primo avvio Rocket.Chat).

4. Accedi a Rocket.Chat​

terraform output rocketchat_url

Accedi con admin_username / admin_password. Attendi 2–3 minuti perché Rocket.Chat si inizializzi completamente al primo avvio.


Risoluzione dei problemi​

Rocket.Chat non si carica​

ssh ubuntu@$(terraform output -raw vm_public_ip)
docker compose -f /opt/rocketchat/docker-compose.yml ps
docker compose -f /opt/rocketchat/docker-compose.yml logs rocketchat --tail 50

Replica set MongoDB non inizializzata​

docker compose -f /opt/rocketchat/docker-compose.yml exec mongo mongosh \
--eval "rs.status()"

Se rs.status() restituisce un errore, inizializza manualmente:

docker compose -f /opt/rocketchat/docker-compose.yml exec mongo mongosh \
--eval "rs.initiate({_id:'rs0',members:[{_id:0,host:'localhost:27017'}]})"

Riferimenti​