Puede ejecutar draften en su propio servidor. El correo, los borradores y las claves se quedan entonces con usted; solo sale lo que envía al proveedor del modelo de lenguaje (o nada, con un modelo local).
Esta página es un resumen de cómo se compone una instalación. El procedimiento en sí está en La instalación, paso a paso.
El paquete y la licencia
Cada versión de draften es un paquete, un archivo draften-<version>.tar. Contiene las imágenes de todos los servicios, los archivos que los inician, una lista firmada de todo su contenido y el comando ./draften, que administra la instalación. El servidor no necesita nada más que Docker.
Para ejecutarlo necesita una licencia: un archivo que le damos nosotros y que se sube en la interfaz. Limita el número de buzones y de asistentes, y su clave sirve también para descargar las versiones nuevas. Más información en La licencia.
De qué se compone una instalación
Todo se ejecuta en Docker mediante docker compose:
| Servicio | Qué hace |
|---|---|
db | la base de datos MariaDB: lo guarda todo (configuración, instrucciones, mensajes, borradores, secretos cifrados). Nada de otra máquina accede a ella |
worker | lee los buzones, llama a los modelos, escribe los borradores, aprende, ejecuta los pasos de la configuración guiada. Puede haber varios |
web-blue, web-green | la interfaz web y la API en dos colores: uno atiende y el otro espera a la siguiente versión; por eso las actualizaciones no interrumpen el servicio |
proxy | la entrada desde fuera: cambia entre los colores de la web y, opcionalmente, termina el HTTPS |
updater | opcional: ejecuta lo que el operador solicita en Instalación (actualizar, volver a una versión anterior, el número de procesos, sustituir la clave) |
cloudflared | opcional: publicar la interfaz a través de un Cloudflare Tunnel |
La interfaz y el worker no se comunican directamente: ambos trabajan con la misma base de datos; lo que necesita el correo o un modelo, la interfaz lo pone en cola como trabajo para el worker.
Qué necesitará
- un servidor x86-64 con Linux y Docker 24 o posterior (con el plugin compose), 4 GB de memoria y 20 GB de disco,
- la dirección en la que estará disponible la interfaz, con HTTPS: un certificado directamente en draften, o su proxy inverso o túnel,
- acceso a los buzones: un registro de aplicación en Microsoft Entra, una cuenta de servicio de Google Workspace o los datos de IMAP,
- una clave de API de un modelo (Anthropic, OpenAI) o su propio servidor compatible con OpenAI,
- una licencia nuestra.
HTTPS
- En draften: indique al instalador el certificado y su clave (PEM). draften escucha entonces en el puerto 443 y redirige desde el puerto 80. Un certificado renovado se despliega con
./draften certificate new.pem new.keysin perder ni una sola solicitud. El certificado lo obtiene usted (de una autoridad de certificación o con un cliente ACME). - Delante de draften: sin certificado, draften escucha en
127.0.0.1:8085y su proxy o túnel termina el HTTPS.
El updater
El updater es un servicio opcional que ejecuta lo que el operador solicita en Instalación › Instalación: actualizar a una versión nueva, volver a la anterior, cambiar el número de procesos worker y sustituir la clave de cifrado. Para ello ejecuta el mismo ./draften que ejecutaría usted.
El updater tiene acceso a Docker, lo que equivale a derechos de root en el servidor. La propia interfaz nunca toca Docker: solo escribe una solicitud en la base de datos para el updater. Se activa durante la instalación (COMPOSE_PROFILES=updater en .env); sin él, todo funciona desde la línea de comandos.
Configuración en .env
El archivo .env del directorio de la instalación lo escribe el instalador y solo lo puede leer su propietario. Contiene la infraestructura y los secretos; todo lo relativo a los asistentes está en la base de datos y se configura en la interfaz.
| Variable | Para qué |
|---|---|
DRAFTEN_VERSION, DRAFTEN_EDITION | la versión en ejecución y la edición (onprem) |
DB_ROOT_PASSWORD, DB_PASSWORD | contraseñas de la base de datos |
MASTER_KEY | la clave que cifra los secretos en la base de datos (claves de API, acceso a los buzones, clientes de inicio de sesión). Guarde una copia fuera del servidor |
MASTER_KEY_PREVIOUS | la clave anterior después de sustituirla, mientras backups/ contenga volcados de antes del cambio |
WEB_APP_SECRET | una cadena aleatoria que firma las sesiones |
WEB_PUBLIC_URL | la dirección en la que se abre la interfaz; a partir de ella se crean las direcciones de redirección del inicio de sesión |
WEB_BIND, DRAFTEN_TLS, WEB_TLS_BIND | dónde escuchan HTTP y HTTPS |
COMPOSE_PROFILES | servicios opcionales: updater, tunnel |
DRAFTEN_BACKUPS | cuántos volcados de la base de datos de antes de una actualización se conservan en backups/ (3 de forma predeterminada) |
CLOUDFLARE_TUNNEL_TOKEN | solo con un Cloudflare Tunnel |
INTERVAL_SECONDS, WORKER_CONCURRENCY | el intervalo predeterminado de revisión del correo y las revisiones simultáneas (mejor configurarlos en la interfaz) |
WORKER_REPLICAS | cuántos procesos worker se ejecutan en esta máquina (1 de forma predeterminada), vea Funcionamiento y capacidad |
Un valor con el signo $ debe escribirse como $$ en .env; si no, la parte que sigue al dólar se pierde sin aviso. Las claves generadas con openssl rand -hex 32 nunca contienen un dólar.
Dónde está cada cosa
.env | la configuración y los secretos de la instalación |
compose.yaml, proxy/ | cómo se ejecutan los contenedores; cada actualización los sustituye |
backups/ | volcados de la base de datos de antes de las actualizaciones |
data/ | los registros y los informes del worker |
updates/ | paquetes pendientes de instalar; el updater también descarga aquí |
NOTES.md | qué cambió la versión instalada |
Siguiente
- La instalación, paso a paso,
- Administración de la instalación: versión, licencia, claves y remitente predeterminados, organizaciones,
- «Actualizar con el updater» y desde la línea de comandos,
- Funcionamiento y capacidad,
- Copia de seguridad y restauración,
- Solución de problemas.