Web App

FoundryVTT.Docker

Online Personale

Il tavolo virtuale delle mie campagne di gioco di ruolo online: Foundry VTT in un container Docker, dietro nginx con HTTPS, rimesso in piedi da una pipeline a ogni push.

La configurazione sta nei segreti della pipeline, non sul server. A ogni avvio il container rigenera la configurazione di Foundry dalle variabili d'ambiente, così le credenziali e la licenza si cambiano in un posto solo. Il prezzo è che dopo ogni riavvio la licenza va riaccettata dal browser, e in quei minuti il controllo di salute non distingue l'attesa da un guasto: per questo è solo informativo e non ferma mai il deploy.

Il backup lo fa Foundry, non la pipeline. Fino all'agosto 2026 ogni deploy impacchettava tutta la cartella dei dati. Su 15 GB, 11 erano i backup interni di Foundry: era un backup dei backup, pagato in minuti di deploy e spazio su disco, per un mondo di circa 900 MB già coperto dalle istantanee che Foundry gestisce da sé. L'ho tolto; prima di un aggiornamento rischioso si fa un'istantanea dall'interfaccia.

mag 2024primo commit
12passi della pipeline
4 GBmemoria massima del container
50/srichieste per indirizzo

Piattaforma

Immagine
felddy/foundryvtt dal GitHub Container Registry, versione principale fissata a 14
Risorse
al massimo 2 CPU e 4 GB, riservati mezza CPU e 512 MB
Porta
30000, aperta solo in locale: da fuori si passa per nginx
Dati
un volume con mondi, moduli, configurazione e backup interni di Foundry

Proxy

HTTPS
HTTP/2 e IPv6, certificati Let's Encrypt rinnovati da certbot sul server
Limiti
50 richieste al secondo per indirizzo con picco di 100, 20 connessioni
WebSocket
percorso dedicato con timeout di un'ora, per le sessioni ferme
File statici
fuori dal limite e dai log: un import di Plutonium ne chiede un centinaio insieme
Caricamenti
fino a 200 MB

Rilascio

Pipeline
Azure DevOps a ogni push su main, esclusi i commit di sola documentazione
Immagine nuova
scaricata prima del rollout, con tre tentativi: se il registro non risponde, il container vecchio resta su
Segreti
file di ambiente generato sull'agente con permessi 600 e cancellato anche se il deploy fallisce
Salute
curl ogni 30 secondi, solo informativo: non blocca il deploy
Traccia
un file sul server con commit, build, data e richiedente dell'ultimo deploy
Monitoraggio
UptimeRobot su disponibilità e certificato, e il controllo orario del server sullo stato del container

Stack

Tecnologie
DockernginxAzure DevOpsLet's Encrypt

Un riepilogo al mese, solo per le sezioni che scegli

Le sezioni da ricevere

Ti arriva un'email per confermare. Niente tracciamento, ti disiscrivi con un clic. Privacy