Forgejo su Aruba Cloud
Esegui il deployment di un servizio Git self-hosted Forgejo pronto per la produzione su Aruba Cloud tramite Terraform e cloud-init. Nessuna configurazione manuale del server richiesta.
Versione provider: arubacloud/arubacloud
~> 1.0| Terraform: ≥ 1.9
Introduzione
Forgejo è un servizio Git self-hosted mantenuto dalla community — il fork più attivo di Gitea. Fornisce un'interfaccia simile a GitHub per ospitare repository, revisionare pull request, eseguire CI/CD con Forgejo Actions e gestire team. Questo esempio esegue il provisioning di uno stack Forgejo completo su Aruba Cloud con:
- Una VM CloudServer che esegue il binario Forgejo dietro un reverse proxy nginx, completamente avviata da cloud-init
- La scelta tra SQLite (default, costo zero aggiuntivo) o MySQL 8.0 DBaaS gestito per team più grandi
- Una VPC, subnet e security group dedicati tramite il modulo di rete condiviso
- Elastic IP per la VM (e DBaaS quando MySQL è abilitato)
- HTTPS Let's Encrypt opzionale quando viene fornito un dominio personalizzato
- Accesso SSH Git sulla porta 2222 in modo che il server SSH integrato di Forgejo non entri in conflitto con SSH admin sulla porta 22
Il primo utente che si registra tramite l'interfaccia web diventa automaticamente l'amministratore dell'istanza — nessuna credenziale viene preimpostata durante il provisioning.
Panoramica dell'architettura
Forgejo viene eseguito come servizio systemd in ascolto su 127.0.0.1:3000. nginx termina il traffico HTTP/HTTPS pubblico e lo inoltra a Forgejo. Il server SSH integrato di Forgejo è in ascolto sulla porta 2222 per le operazioni git clone / git push.
Infrastruttura creata
Le risorse con (solo MySQL) vengono create solo quando enable_mysql = true.
| Risorsa | Pattern del nome | Descrizione |
|---|---|---|
arubacloud_project | forgejo-prod | Contenitore del progetto |
arubacloud_vpc | forgejo-prod-vpc | Virtual Private Cloud |
arubacloud_subnet | forgejo-prod-subnet | Subnet base |
arubacloud_securitygroup | forgejo-prod-vm-sg | Security group VM |
arubacloud_securitygroup | forgejo-prod-db-sg | Security group DBaaS (solo MySQL) |
arubacloud_securityrule | forgejo-prod-vm-ssh | Regola ingress SSH (CIDR limitato) |
arubacloud_securityrule | forgejo-prod-vm-http | Regola ingress HTTP |
arubacloud_securityrule | forgejo-prod-vm-https | Regola ingress HTTPS |
arubacloud_securityrule | forgejo-prod-vm-git-ssh | Regola ingress Git SSH (porta 2222) |
arubacloud_securityrule | forgejo-prod-db-mysql | Regola ingress MySQL dall'IP VM (solo MySQL) |
arubacloud_elasticip | forgejo-prod-vm-eip | IP pubblico VM |
arubacloud_elasticip | forgejo-prod-db-eip | IP pubblico DBaaS (solo MySQL) |
arubacloud_blockstorage | forgejo-prod-boot | Disco di boot da 30 GB (Performance) |
arubacloud_keypair | forgejo-prod-keypair | Chiave pubblica SSH |
arubacloud_dbaas | forgejo-prod-dbaas | MySQL 8.0 gestito (solo MySQL) |
arubacloud_database | forgejo | Database logico Forgejo (solo MySQL) |
arubacloud_dbaasuser | forgejo | Utente applicativo MySQL (solo MySQL) |
arubacloud_databasegrant | — | Grant liteadmin (solo MySQL) |
arubacloud_cloudserver | forgejo-prod-vm | VM CloudServer |
Raccomandazione dimensionamento VM
| Workload | vCPU | RAM | Disco | Flavor | Database |
|---|---|---|---|---|---|
| Personale / team piccolo (≤ 10 utenti) | 2 | 4 GB | 30 GB | CSO2A4 (default) | SQLite |
| Organizzazione piccola (≤ 50 utenti) | 2 | 4 GB | 50 GB | CSO2A4 | MySQL DBO2A8 |
| Organizzazione media (≤ 200 utenti) | 4 | 8 GB | 50 GB | CSO4A8 | MySQL DBO4A16 |
Per i deployment SQLite, i repository risiedono sul disco di boot — aumenta vm_disk_size_gb per adattarsi alle dimensioni attese dei repository.
Costo mensile stimato
Prezzi approssimativi per ITBG-Bergamo, fatturazione oraria. I prezzi effettivi possono variare — verifica nella console ArubaCloud.
SQLite (default)
| Risorsa | Specifiche | Costo stimato/mese |
|---|---|---|
| VM CloudServer | CSO2A4 — 2 vCPU / 4 GB | ~€18 |
| Disco di boot | 30 GB Performance | ~€4 |
| Elastic IP | — | ~€3 |
| Totale | ~€25/mese |
MySQL (enable_mysql = true)
| Risorsa | Specifiche | Costo stimato/mese |
|---|---|---|
| VM CloudServer | CSO2A4 — 2 vCPU / 4 GB | ~€18 |
| Disco di boot | 30 GB Performance | ~€4 |
| MySQL gestito | DBO2A8 — 2 vCPU / 8 GB | ~€35 |
| Storage DBaaS | 20 GB | ~€3 |
| Elastic IP × 2 | — | ~€5 |
| Totale | ~€65/mese |
Requisiti
- Terraform ≥ 1.9
- ArubaCloud Terraform Provider
~> 1.0 - Un account ArubaCloud con credenziali API OAuth2
- Una coppia di chiavi SSH
db_password(min 16 caratteri) — solo quandoenable_mysql = true