Puoi far girare draften sul tuo server. Posta, bozze e chiavi restano allora da te; esce solo ciò che invii al fornitore del modello linguistico (oppure niente, con un modello locale).
Questa pagina è una panoramica di come è fatta un’installazione. La procedura vera e propria è in Installazione passo passo.
Il pacchetto e la licenza
Ogni release di draften è un unico pacchetto, un file draften-<versione>.tar. Contiene le immagini di tutti i servizi, i file che li avviano, un elenco firmato di tutto il contenuto e il comando ./draften che gestisce l’installazione. Al server non serve altro che Docker.
Per farlo girare ti serve una licenza – un file che ricevi da noi e carichi nell’interfaccia. Limita il numero di caselle e di assistenti, e la sua chiave serve anche per scaricare le nuove release. Maggiori dettagli in La licenza.
Di cosa è fatta un’installazione
Tutto gira in Docker tramite docker compose:
| Servizio | Cosa fa |
|---|---|
db | il database MariaDB – contiene tutto: impostazioni, istruzioni, messaggi, bozze, segreti cifrati. Nessun’altra macchina lo tocca |
worker | legge le caselle, chiama i modelli, scrive le bozze, impara, esegue i passaggi della procedura guidata. Possono girarne diversi |
web-blue, web-green | l’interfaccia web e l’API in due colori: uno serve, l’altro aspetta la versione successiva – per questo gli aggiornamenti non causano interruzioni |
proxy | l’accesso dall’esterno: passa da un colore web all’altro e facoltativamente termina l’HTTPS |
updater | facoltativo: esegue ciò che l’operatore chiede in Installazione (aggiornamento, ritorno alla versione precedente, numero di processi, sostituzione della chiave) |
cloudflared | facoltativo: pubblicazione dell’interfaccia tramite un Cloudflare Tunnel |
L’interfaccia e il worker non comunicano direttamente – entrambi lavorano con lo stesso database; ciò che richiede la posta o un modello, l’interfaccia lo mette in coda come job per il worker.
Cosa ti servirà
- un server x86-64 con Linux e Docker 24 o più recente (con il plugin compose), 4 GB di memoria e 20 GB di disco,
- l’indirizzo a cui sarà raggiungibile l’interfaccia, con HTTPS – un certificato direttamente in draften, oppure il tuo reverse proxy o tunnel,
- l’accesso alle caselle: una registrazione dell’app in Microsoft Entra, un account di servizio di Google Workspace o i dati IMAP,
- una chiave API per un modello (Anthropic, OpenAI) o un tuo server compatibile con OpenAI,
- una licenza da noi.
HTTPS
- In draften: dai all’installer il certificato e la sua chiave (PEM). draften ascolta allora sulla porta 443 e reindirizza dalla porta 80. Un certificato rinnovato lo installi con
./draften certificate new.pem new.keysenza perdere nemmeno una richiesta. Il certificato te lo procuri tu (da un’autorità di certificazione o con un client ACME). - Davanti a draften: senza certificato, draften ascolta su
127.0.0.1:8085e l’HTTPS lo termina il tuo proxy o tunnel.
L’updater
L’updater è un servizio facoltativo che esegue ciò che l’operatore chiede in Installazione → Installazione: l’aggiornamento a una nuova versione, il ritorno a quella precedente, la modifica del numero di processi worker e la sostituzione della chiave di cifratura. Per farlo esegue lo stesso ./draften che eseguiresti tu.
L’updater ha accesso a Docker, il che significa diritti di root sul server. L’interfaccia stessa non tocca mai Docker – scrive solo una richiesta nel database per l’updater. Si attiva durante l’installazione (COMPOSE_PROFILES=updater in .env); senza, tutto funziona dalla riga di comando.
Impostazioni in .env
Il file .env nella cartella dell’installazione lo scrive l’installer ed è leggibile solo dal suo proprietario. Contiene l’infrastruttura e i segreti; tutto ciò che riguarda gli assistenti è nel database e si imposta nell’interfaccia.
| Variabile | A cosa serve |
|---|---|
DRAFTEN_VERSION, DRAFTEN_EDITION | la versione in esecuzione e l’edizione (onprem) |
DB_ROOT_PASSWORD, DB_PASSWORD | le password del database |
MASTER_KEY | la chiave che cifra i segreti nel database (chiavi API, accesso alle caselle, client di accesso). Tienine una copia fuori dal server |
MASTER_KEY_PREVIOUS | la chiave precedente dopo la sostituzione, finché backups/ contiene dump di prima |
WEB_APP_SECRET | una stringa casuale che firma le sessioni |
WEB_PUBLIC_URL | l’indirizzo a cui le persone aprono l’interfaccia; da questo si costruiscono gli indirizzi di reindirizzamento per l’accesso |
WEB_BIND, DRAFTEN_TLS, WEB_TLS_BIND | dove ascoltano HTTP e HTTPS |
COMPOSE_PROFILES | servizi facoltativi: updater, tunnel |
DRAFTEN_BACKUPS | quanti dump del database di prima di un aggiornamento tenere in backups/ (predefinito 3) |
CLOUDFLARE_TUNNEL_TOKEN | solo con un Cloudflare Tunnel |
INTERVAL_SECONDS, WORKER_CONCURRENCY | l’intervallo predefinito dei controlli e i controlli simultanei (meglio impostarli nell’interfaccia) |
WORKER_REPLICAS | quanti processi worker girano su questa macchina (predefinito 1), vedi Gestione e capacità |
Un valore con il segno $ va scritto come $$ in .env – altrimenti la parte dopo il dollaro si perde senza avvisi. Le chiavi generate con openssl rand -hex 32 non contengono mai il dollaro.
Cosa si trova dove
.env | le impostazioni e i segreti dell’installazione |
compose.yaml, proxy/ | come girano i container; ogni aggiornamento li sostituisce |
backups/ | i dump del database di prima degli aggiornamenti |
data/ | il log e i report del worker |
updates/ | i pacchetti in attesa di installazione; anche l’updater scarica qui |
NOTES.md | cosa ha cambiato la release installata |
Per proseguire
- Installazione passo passo,
- Amministrazione dell’installazione – versione, licenza, chiavi e mittente predefiniti, organizzazioni,
- Aggiornare con l’updater e dalla riga di comando,
- Gestione e capacità,
- Backup e ripristino,
- Risoluzione dei problemi.