Você pode rodar o draften no seu próprio servidor. Os e-mails, os rascunhos e as chaves ficam então com você; só sai o que você envia ao provedor do modelo de linguagem (ou nada, com um modelo local).
Esta página é uma visão geral de como uma instalação é montada. O procedimento em si está em Instalação passo a passo.
O pacote e a licença
Cada versão do draften é um único pacote, um arquivo draften-<version>.tar. Ele contém as imagens de todos os serviços, os arquivos que os iniciam, uma lista assinada de tudo o que está dentro e o comando ./draften, que gerencia a instalação. O servidor não precisa de nada além do Docker.
Para rodá-lo você precisa de uma licença – um arquivo que você recebe de nós e carrega na interface. Ela limita o número de caixas de e-mail e de assistentes, e a chave dela também é usada para baixar novas versões. Mais em A licença.
Do que uma instalação é feita
Tudo roda no Docker por meio do docker compose:
| Serviço | O que faz |
|---|---|
db | o banco de dados MariaDB – guarda tudo: configurações, instruções, mensagens, rascunhos, segredos criptografados. Nada de outra máquina tem acesso a ele |
worker | lê as caixas de e-mail, chama os modelos, escreve rascunhos, aprende, executa os passos da configuração guiada. Podem rodar vários |
web-blue, web-green | a interface web e a API em duas cores: uma atende, a outra espera a próxima versão – é por isso que as atualizações não causam interrupção |
proxy | a porta de entrada de fora: alterna entre as cores da interface web e, opcionalmente, termina o HTTPS |
updater | opcional: executa o que o operador pede em Instalação (atualização, volta para a versão anterior, número de processos, troca da chave) |
cloudflared | opcional: publicação da interface por um Cloudflare Tunnel |
A interface e o worker não conversam diretamente – os dois trabalham com o mesmo banco de dados; o que precisa dos e-mails ou de um modelo, a interface coloca na fila como um job para o worker.
Do que você vai precisar
- um servidor x86-64 com Linux e Docker 24 ou mais recente (com o plugin compose), 4 GB de memória e 20 GB de disco,
- o endereço em que a interface vai estar acessível, com HTTPS – um certificado diretamente no draften, ou o seu proxy reverso ou túnel,
- acesso às caixas de e-mail: um registro de aplicativo no Microsoft Entra, uma conta de serviço do Google Workspace ou os dados de IMAP,
- uma chave de API de modelo (Anthropic, OpenAI) ou o seu próprio servidor compatível com a OpenAI,
- uma licença nossa.
HTTPS
- No draften: informe ao instalador o certificado e a chave dele (PEM). O draften então escuta na porta 443 e redireciona da porta 80. Um certificado renovado você implanta com
./draften certificate new.pem new.keysem perder uma única requisição. O certificado você mesmo obtém (de uma autoridade certificadora ou com um cliente ACME). - Na frente do draften: sem certificado, o draften escuta em
127.0.0.1:8085e o seu proxy ou túnel termina o HTTPS.
O updater
O updater é um serviço opcional que executa o que o operador pede em Instalação → Instalação: uma atualização para uma nova versão, a volta para a anterior, a alteração do número de processos de worker e a troca da chave de criptografia. Para isso ele executa o mesmo ./draften que você executaria.
O updater tem acesso ao Docker, o que significa direitos de root no servidor. A interface em si nunca mexe no Docker – ela só grava uma solicitação no banco de dados para o updater. Ele é ativado na instalação (COMPOSE_PROFILES=updater no .env); sem ele, tudo funciona pela linha de comando.
Configurações no .env
O arquivo .env, no diretório da instalação, é gravado pelo instalador e só pode ser lido pelo proprietário dele. Ele guarda a infraestrutura e os segredos; tudo o que diz respeito aos assistentes fica no banco de dados e é definido na interface.
| Variável | Para quê |
|---|---|
DRAFTEN_VERSION, DRAFTEN_EDITION | a versão em execução e a edição (onprem) |
DB_ROOT_PASSWORD, DB_PASSWORD | senhas do banco de dados |
MASTER_KEY | a chave que criptografa os segredos no banco de dados (chaves de API, acesso às caixas de e-mail, clientes de login). Guarde uma cópia fora do servidor |
MASTER_KEY_PREVIOUS | a chave anterior depois da troca, enquanto backups/ tiver dumps de antes dela |
WEB_APP_SECRET | uma sequência aleatória que assina as sessões |
WEB_PUBLIC_URL | o endereço em que as pessoas abrem a interface; os endereços de redirecionamento do login são montados a partir dele |
WEB_BIND, DRAFTEN_TLS, WEB_TLS_BIND | onde o HTTP e o HTTPS escutam |
COMPOSE_PROFILES | serviços opcionais: updater, tunnel |
DRAFTEN_BACKUPS | quantos dumps do banco de dados de antes de uma atualização manter em backups/ (padrão 3) |
CLOUDFLARE_TUNNEL_TOKEN | só com um Cloudflare Tunnel |
INTERVAL_SECONDS, WORKER_CONCURRENCY | o intervalo padrão de verificação e as verificações simultâneas (melhor definir na interface) |
WORKER_REPLICAS | quantos processos worker rodam nesta máquina (padrão 1), veja Operação e capacidade |
Um valor com o sinal $ precisa ser escrito como $$ no .env – caso contrário, a parte depois do cifrão se perde sem aviso. Chaves geradas com openssl rand -hex 32 nunca contêm cifrão.
Onde fica cada coisa
.env | as configurações e os segredos da instalação |
compose.yaml, proxy/ | como os contêineres rodam; cada atualização os substitui |
backups/ | dumps do banco de dados de antes das atualizações |
data/ | o log e os relatórios do worker |
updates/ | pacotes esperando para ser instalados; o updater também baixa para cá |
NOTES.md | o que a versão instalada mudou |
Próximos passos
- Instalação passo a passo,
- Administração da instalação – versão, licença, chaves e remetente padrão, organizações,
- Atualizar com o updater e pela linha de comando,
- Operação e capacidade,
- Backup e restauração,
- Solução de problemas.