Configuración
Una instalación propia se configura mediante el .env situado junto al compose.yaml.
Esta página ordena las variables más importantes por finalidad. La tabla completa y de referencia
está en la sección
Configuration del
README; además, cada variable está comentada en el .env.example.
Valores obligatorios
Sección titulada «Valores obligatorios»| Variable | Obligatoria | Significado |
|---|---|---|
GW_APP_URL |
sí | Dirección en la que se accede a la app. De ella dependen los enlaces de acceso y el origen de los passkeys. |
GW_HOSTNAME |
para tls |
Nombre del certificado; se pasa a Caddy. |
GW_VERSION |
sí | Etiqueta de la imagen: latest o un número fijo como 0.8.22. Aparece en el pie de página y en /api/health. |
GW_APP_URL tiene que ser exactamente la dirección que aparece en el navegador. Si no coincide,
los enlaces de acceso abren la dirección equivocada y el editor en vivo se queda sin conexión.
Envío de correo
Sección titulada «Envío de correo»El envío de correo puedes configurarlo en la interfaz, en Envío de correo
(Envío de correo), o en el .env. El entorno prevalece campo por campo; la
interfaz marca esos campos con del entorno.
| Variable | Cuándo | Significado |
|---|---|---|
GW_MAIL_TRANSPORT |
opcional | smtp, graph, console o none. Vacío: se aplican los ajustes de la interfaz. |
SMTP_URL / SMTP_URL_FILE |
con smtp |
URL del relay, directamente o desde un archivo |
SMTP_FROM |
con smtp |
Dirección del remitente |
GW_GRAPH_TENANT_ID |
con graph |
Inquilino de Microsoft 365, como dominio o ID de directorio |
GW_GRAPH_CLIENT_ID |
con graph |
ID de aplicación del registro de la app |
GW_GRAPH_CLIENT_SECRET / GW_GRAPH_CLIENT_SECRET_FILE |
con graph |
Secreto del registro, directamente o desde un archivo |
GW_GRAPH_SENDER |
con graph |
Buzón desde el que se envía |
Para Microsoft Graph necesitas un registro de aplicación en Entra ID con el
permiso de aplicación Mail.Send (no el delegado), con consentimiento de administrador.
Acceso y sesiones
Sección titulada «Acceso y sesiones»| Variable | Por defecto | Significado |
|---|---|---|
GW_RP_ID |
Host de GW_APP_URL |
ID de Relying Party de WebAuthn. Cambiarlo más adelante invalida todos los passkeys. |
GW_SESSION_IDLE_DAYS |
14 |
Tras cuántos días sin uso caduca una sesión |
GW_TRUSTED_PROXIES |
1 |
Número de proxies delante de la app. Solo para limitación de peticiones y logs, nunca para un permiso. |
Primera cuenta de administración
Sección titulada «Primera cuenta de administración»Solo para instalaciones que monta un script. La vía normal es /setup; consulta
Instalación.
| Variable | Significado |
|---|---|
GW_BOOTSTRAP_ADMIN_EMAIL |
Crea un admin en el primerísimo arranque e imprime su enlace |
GW_BOOTSTRAP_ADMIN_FIRST_NAME |
Nombre, opcional |
GW_BOOTSTRAP_ADMIN_LAST_NAME |
Apellido, opcional |
Operación
Sección titulada «Operación»| Variable | Por defecto | Significado |
|---|---|---|
GW_TIMEZONE |
Europe/Berlin |
Zona horaria para las fechas en la interfaz. Defínela explícitamente para que servidor y navegador formateen igual. |
GW_SECRET_KEY / GW_SECRET_KEY_FILE |
se genera | Cifra las credenciales de correo introducidas en la interfaz. Debe estar en la copia de seguridad. |
GW_OPS_TOKEN |
vacío | Hace que /api/health sea detallado con la cabecera x-ops-token: versión, estado de migraciones, errores del driver. |
GW_MIGRATE_ON_START |
desactivado | 1 hace que app migre antes de arrancar, para actualizadores como Watchtower |
GW_PORT, GW_COLLAB_PORT |
3000, 3001 |
Puertos en 127.0.0.1, por si los valores por defecto están ocupados |
GW_COLLAB_URL, GW_COLLAB_INTERNAL_URL |
vacío | Solo necesarias si el servicio de colaboración no está en /collab en el mismo host |
Sin GW_OPS_TOKEN, /api/health solo responde con el estado y los nombres de las comprobaciones:
el endpoint es accesible públicamente. Qué hay detrás de GW_SECRET_KEY y GW_MIGRATE_ON_START
se explica en Actualizar y hacer copias de seguridad.
Aplicar los cambios
Sección titulada «Aplicar los cambios»Tras un cambio en el .env, vuelves a levantar el stack:
docker compose --profile tls up -dSin el perfil tls (proxy propio, túnel SSH) omites --profile tls; consulta
HTTPS y proxy inverso.