Architettura
Decisioni architetturali
Decision log per Obelica VPS
Ultimo aggiornamento: 2026-06-24.
Direzione
Obelica VPS diventa progressivamente il centro operativo self-hosted di Obelica.
Target breve:
- Docker runtime per app in produzione;
- HTTPS reverse proxy tramite Traefik;
- Git privato tramite Forgejo;
- DigitalOcean managed PostgreSQL per le app migrate;
- backup locale cifrato automatico con
obelica-backup; - control plane operativo Rust
obelicaper check, backup, cron e deploy helper; - base per monitoring e automazioni future.
Target medio:
- sostituire Vercel per molte app in modo graduale;
- mantenere l'infrastruttura semplice da operare;
- evitare Kubernetes, multi-droplet, registry complessi e managed DB ovunque finche' non servono davvero.
Scelte attuali
| Area | Decisione |
|---|---|
| Compute | singolo droplet DigitalOcean |
| Runtime | Docker Compose |
| Reverse proxy | Traefik |
| Git | Forgejo privato via tunnel SSH |
| DB app | DigitalOcean managed PostgreSQL |
| DB Forgejo | PostgreSQL locale in Docker |
| Backup | obelica backup run orchestrato dal control plane Rust, motore obelica-backup, locale, cifrato ChaCha20Poly1305, cron 04:00 |
| Control plane | CLI Rust /opt/obelica/infra/bin/obelica, wrapper globale shell ancora non promosso |
| DNS | *.obelica.com resta produzione Vercel, *.vps.obelica.com staging VPS |
| Deploy | control plane Rust obelica, manuale controllato prima di CI/CD |
| Fonte repo | Forgejo primario, GitHub mirror non aggiornato |
| Documentazione | bona/obelica-docs e' fonte tecnica unica |
Non obiettivi attuali
- Kubernetes;
- alta disponibilita multi-droplet;
- Forgejo pubblico;
- migrazione DNS globale;
- zero downtime obbligatorio;
- CI/CD automatico prima che il deploy manuale sia stabile.
Forgejo
Stato desiderato attuale:
- HTTP solo
127.0.0.1:3333; - accesso via tunnel SSH;
- registrazioni disabilitate;
- login obbligatorio;
- un admin iniziale;
- nessun
git.obelica.compubblico ora; - SSH Git solo se diventa necessario.
Prima di renderlo pubblico servono 2FA, policy utenti, backup offsite, monitoring, rate limit, hardening e possibile VPN/IP allowlist.
Database
Policy:
- app migrate: DigitalOcean managed PostgreSQL;
- Forgejo: PostgreSQL locale in Docker;
- dati importanti: sempre dump e backup offsite.
La migrazione da Neon a DigitalOcean e' completata per tutti i progetti.
Documentazione
Decisione 2026-06-22:
- la fonte di verita' tecnica e'
bona/obelica-docs; /opt/obelica/docsviene deprecata e trasformata in puntatore;- il framework locale Mac serve solo come bootstrap per agenti, non come documentazione tecnica duplicata;
- ogni modifica infrastrutturale deve aggiornare Fumadocs nello stesso ciclo di lavoro.
Backup
Policy:
- backup automatico quotidiano;
- cifratura simmetrica con passphrase protetta;
- retention locale limitata;
- offsite obbligatorio appena possibile;
- restore test periodico.
Control plane Rust
Decisione 2026-06-23:
- centralizzare gli script operativi in un framework Rust modulare chiamato
obelica; - mantenere i vecchi script shell come fallback finche' la parita' non e' stabile;
- usare
/opt/obelica/infra/bin/obelicacome percorso operativo esplicito; - promuovere successivamente il binario a
/usr/local/bin/obelicacon sudo; - non cambiare architettura server: Docker Compose, Traefik, Forgejo e layout
/opt/obelicarestano validi.
Decisione 2026-06-24:
- centralizzare i deploy app nel modulo Rust
deploy; - usare
/opt/obelica/infra/config/deploy-apps.tsvcome manifest operativo dei target deployabili; - mantenere Docker Compose come backend di esecuzione;
- modellare ogni progetto con
strategy, repo, compose path, branch, container attesi, smoke URL, codici HTTP attesi e timeout; - separare build e start (
docker compose build+docker compose up -d --no-build); - considerare
docker compose up -d --builduna scorciatoia legacy, non la procedura normale; - mantenere wrapper shell solo come punti d'ingresso o lock legacy, non come logica primaria.
Dominio principale
obelica.com deve diventare landing pubblica Obelica.
Non deve puntare a Forgejo. Se Forgejo diventera' pubblico, usare eventualmente git.obelica.com.