Referencia de configuración
Todos los ajustes viven en deploy/.env, copiado de .env.example. Solo POSTGRES_PASSWORD y CAMPBOOKS_PUBLIC_URL son obligatorios. Todo lo demás es opcional, y se aplican los valores por defecto de abajo cuando un ajuste no está definido. Tras cambiar .env, ejecuta de nuevo docker compose up -d.
Núcleo
| Variable | Valor por defecto | Qué hace |
|---|---|---|
POSTGRES_PASSWORD | change-me (ejemplo) | Contraseña del usuario propietario del Postgres incluido. Obligatoria. Solo caracteres seguros para URL. |
CAMPBOOKS_PUBLIC_URL | https://campbooks.example.com (ejemplo) | La dirección que la gente usa para llegar a esta instancia. Obligatoria. Los enlaces de invitación se construyen con ella. |
CAMPBOOKS_PORT | 8080 | Puerto del host para la aplicación web y la API. |
CAMPBOOKS_LOG_FORMAT | json | json o pretty. |
CAMPBOOKS_RUN_MIGRATIONS | true | Aplica las migraciones de la base de datos al arrancar. |
RUST_LOG | sin definir | Filtro de nivel de registro, por ejemplo info. |
CAMPBOOKS_ENV | sin definir | development registra los enlaces de invitación. No lo definas nunca en un servidor que use otra gente. |
Credenciales de la base de datos
El archivo compose incluido las configura por ti. Solo importan si usas tu propio Postgres. Consulta Almacenamiento y base de datos.
| Variable | Valor por defecto | Qué hace |
|---|---|---|
CAMPBOOKS_DATABASE_URL | definido por compose | Usuario de ejecución, sin superusuario. |
CAMPBOOKS_DATABASE_PASSWORD_FILE | definido por compose | Archivo con la contraseña del usuario de ejecución (opcional). |
CAMPBOOKS_DATABASE_MIGRATION_URL | definido por compose | Usuario propietario, usado solo para ejecutar migraciones. |
CAMPBOOKS_DATABASE_ROLE | campbooks_app | Con una sola URL privilegiada, el rol al que cambia cada conexión. Déjalo por defecto salvo que tu administrador de base de datos haya creado otro. |
CAMPBOOKS_DATABASE_ALLOW_RLS_BYPASS | false | Arranca aunque el usuario eluda la seguridad a nivel de fila. El aislamiento de los espacios de trabajo depende entonces solo de las consultas. |
CAMPBOOKS_DATABASE_MAX_CONNECTIONS | 10 | Tamaño del pool de la base de datos. Mantenlo por encima de CAMPBOOKS_JOBS__CONCURRENCY. |
Inicio de sesión
Campbooks es su propio inicio de sesión. Deja CAMPBOOKS_AUTH__ISSUER sin definir. Consulta Inicio de sesión para ver el panorama completo. Cada secreto de cliente es un archivo de deploy/secrets/, montado en el servidor en /run/secrets/campbooks.
| Variable | Valor por defecto | Qué hace |
|---|---|---|
CAMPBOOKS_GOOGLE__CLIENT_ID | sin definir | Activa el acceso con Google y la conexión de Gmail. La Gmail API debe estar activada en el mismo proyecto de Google. URI de redirección: ${CAMPBOOKS_PUBLIC_URL}/auth/callback/google. |
CAMPBOOKS_GOOGLE__CLIENT_SECRET_FILE | sin definir | Por ejemplo /run/secrets/campbooks/google-client-secret. |
CAMPBOOKS_MICROSOFT__CLIENT_ID | sin definir | Activa el acceso con Microsoft. URI de redirección: ${CAMPBOOKS_PUBLIC_URL}/auth/callback/microsoft. |
CAMPBOOKS_MICROSOFT__CLIENT_SECRET_FILE | sin definir | Por ejemplo /run/secrets/campbooks/microsoft-client-secret. |
CAMPBOOKS_MICROSOFT__TENANT | common | common, organizations, consumers, o el ID de un tenant. |
CAMPBOOKS_ZOHO__CLIENT_ID | sin definir | Activa el acceso con Zoho y la conexión de Zoho Mail. URI de redirección: ${CAMPBOOKS_PUBLIC_URL}/auth/callback/zoho. |
CAMPBOOKS_ZOHO__CLIENT_SECRET_FILE | sin definir | Por ejemplo /run/secrets/campbooks/zoho-client-secret. |
CAMPBOOKS_ZOHO__ACCOUNTS_SERVER | https://accounts.zoho.com | El servidor de cuentas del centro de datos en el que está registrada tu aplicación de Zoho, por ejemplo https://accounts.zoho.eu. Deja el valor por defecto solo si la aplicación tiene Multi-DC activado. |
CAMPBOOKS_<PROVIDER>__REDIRECT_PATH | /auth/callback/<provider> | Solo si tu aplicación OAuth registró otra ruta de retorno que tu proxy inverso reescribe. |
CAMPBOOKS_TRUSTED_PROXIES | sin definir | Direcciones o bloques CIDR de los proxies inversos cuyo X-Forwarded-For indica el cliente. Sin esto, los límites de peticiones del inicio de sesión cuentan a todos los clientes como uno. |
CAMPBOOKS_AUTH__AUDIENCE | campbooks-api | Solo con un emisor externo: la audiencia que la API debe encontrar en el aud del token. |
CAMPBOOKS_AUTH__LEEWAY_SECONDS | 60 | Solo con un emisor externo: desfase de reloj tolerado. |
CAMPBOOKS_BFF__IDLE_TIMEOUT_MINUTES | 2880 | Las sesiones web terminan tras este tiempo sin uso. |
CAMPBOOKS_BFF__ABSOLUTE_TIMEOUT_HOURS | 720 | Las sesiones web terminan, como máximo, tras este tiempo desde el inicio de sesión. |
CAMPBOOKS_BFF__ROTATE_MINUTES | 60 | Cada cuánto se reemplaza el valor de la cookie de una sesión. |
CAMPBOOKS_BFF__LOGIN_TIMEOUT_SECONDS | 600 | Cuánto puede tardar un inicio de sesión ya empezado en el proveedor. |
CAMPBOOKS_BFF__SCOPES | openid profile email offline_access más todos los ámbitos de la API | Ámbitos que se solicitan. |
Buzones
Todos opcionales. Consulta Conectar buzones. Los ajustes de los clientes de Google y Zoho están en la tabla de Inicio de sesión de arriba. Los ajustes de IMAP (CAMPBOOKS_CONNECTORS__IMAP__*) están en Buzones IMAP.
| Variable | Valor por defecto | Qué hace |
|---|---|---|
CAMPBOOKS_CONNECTORS__GMAIL__BACKFILL_DAYS | 90 | Hasta dónde lee una conexión nueva de Gmail, en días. De 1 a 3650. |
CAMPBOOKS_CONNECTORS__GMAIL__MAX_MESSAGE_BYTES | 52428800 (50 MiB) | Los mensajes más grandes se omiten y se registran como demasiado grandes. |
CAMPBOOKS_CONNECTORS__GMAIL__RUN_BUDGET_BYTES | 67108864 (64 MiB) | Una ejecución de sincronización no inicia más descargas tras este número de bytes y continúa en la siguiente. Mantiene la memoria acotada. |
CAMPBOOKS_CONNECTORS__POLL__MIN_SECONDS | 60 | Intervalo tras una sincronización que encontró cambios. |
CAMPBOOKS_CONNECTORS__POLL__MAX_SECONDS | 14400 (4 horas) | Intervalo más largo de un buzón inactivo. |
CAMPBOOKS_CONNECTORS__GOOGLE__UNITS_PER_SECOND | 5000 | Unidades de cuota de la API de Google por segundo, compartidas por todos los procesos del servidor. Un valor bajo solo ralentiza los envíos grandes. |
CAMPBOOKS_CONNECTORS__ZOHO__BACKFILL_DAYS | 90 | Hasta dónde lee un buzón nuevo de Zoho, en días. De 1 a 3650. |
CAMPBOOKS_CONNECTORS__ZOHO__MAX_MESSAGE_BYTES | 52428800 (50 MiB) | Los mensajes más grandes se omiten y se registran como demasiado grandes. |
CAMPBOOKS_CONNECTORS__ZOHO__RUN_BUDGET_BYTES | 67108864 (64 MiB) | Igual que en Gmail. |
CAMPBOOKS_CONNECTORS__ZOHO__REQUESTS_PER_MINUTE | 60 | Peticiones que cada inicio de sesión de Zoho puede hacer por minuto, compartidas por todos los procesos. |
CAMPBOOKS_CONNECTORS__ZOHO__SWEEP_MINUTES | 360 | Minutos entre relecturas completas de la ventana de un buzón de Zoho. |
CAMPBOOKS_CONNECTORS__FAILING_AFTER | 5 | Ejecuciones fallidas seguidas antes de que un buzón aparezca con fallos. |
CAMPBOOKS_CONNECTORS__BATCH_RETENTION_DAYS | 7 | Días que se guarda un lote de cambios producido para poder repetirlo. |
Política de registro
| Variable | Valor por defecto | Qué hace |
|---|---|---|
CAMPBOOKS_SIGNUP__POLICY | open | Quién puede crear un espacio de trabajo: open, invite_only, approval o code. El primer usuario de la instancia siempre puede crear uno. |
CAMPBOOKS_SIGNUP__CODES | sin definir | Códigos separados por comas aceptados con code. Cada uno es reutilizable. Trátalo como un secreto. |
Tareas y worker
El servidor ejecuta el worker de tareas junto a la API. Cada tarea en ejecución puede ocupar una conexión a la base de datos.
| Variable | Valor por defecto | Qué hace |
|---|---|---|
CAMPBOOKS_JOBS__CONCURRENCY | 4 | Tareas que un proceso ejecuta a la vez. |
CAMPBOOKS_JOBS__PER_WORKSPACE | 2 | Tareas de un mismo espacio de trabajo que pueden ejecutarse a la vez por cola. |
CAMPBOOKS_JOBS__POLL_INTERVAL_MS | 5000 | Sondeo en reposo. Las tareas nuevas despiertan al worker de inmediato de todos modos. |
CAMPBOOKS_JOBS__RETENTION_HOURS | 168 | Cuánto se conservan las tareas completadas. Las fallidas se conservan hasta que las borras. |
CAMPBOOKS_JOBS__SHUTDOWN_GRACE_SECONDS | 8 | Cuánto espera un worker que se detiene a las tareas en ejecución. Mantenlo por debajo del tiempo de parada. |
CAMPBOOKS_JOBS__LEASE_SECONDS | 60 | Duración del arrendamiento de una tarea. |
CAMPBOOKS_JOBS__RETRY_BASE_MS | 1000 | Retardo base de reintento. |
CAMPBOOKS_JOBS__RETRY_MAX_SECONDS | 3600 | Retardo máximo de reintento. |
Almacenamiento de blobs
Consulta Almacenamiento y base de datos.
| Variable | Valor por defecto | Qué hace |
|---|---|---|
CAMPBOOKS_BLOBS__BACKEND | fs | fs (disco local) o s3. |
CAMPBOOKS_BLOBS__PATH | /data/blobs | Directorio para el backend fs (el volumen blobs-data). |
CAMPBOOKS_BLOBS__MAX_OBJECT_BYTES | 52428800 (50 MiB) | Archivo más grande aceptado. |
CAMPBOOKS_BLOBS__SWEEP_GRACE_HOURS | 24 | Cuánto se conserva un archivo que nada usa antes de borrarlo. |
CAMPBOOKS_BLOBS__S3__BUCKET | sin definir | Nombre del bucket. |
CAMPBOOKS_BLOBS__S3__ENDPOINT | sin definir (AWS) | URL del almacén. Se acepta http:// en una red privada. |
CAMPBOOKS_BLOBS__S3__REGION | sin definir | Región que espera tu almacén. |
CAMPBOOKS_BLOBS__S3__ACCESS_KEY_ID | sin definir | Clave de acceso. |
CAMPBOOKS_BLOBS__S3__SECRET_ACCESS_KEY | sin definir | Clave secreta. |
CAMPBOOKS_BLOBS__S3__PATH_STYLE | false | true para URL del tipo <endpoint>/<bucket> (la mayoría de los almacenes autoalojados). |
Roles de IA
Consulta IA local. Un rol sin definir simplemente no está disponible.
| Variable | Valor por defecto | Qué hace |
|---|---|---|
CAMPBOOKS_AI__DECIDE__PROTOCOL | laya | laya u openai. |
CAMPBOOKS_AI__DECIDE__BASE_URL | http://laya:8000/v1 | Dónde se sirve el modelo decide. |
CAMPBOOKS_AI__DECIDE__MODEL | convaiinnovations/laya-multilingual | El modelo decide. |
CAMPBOOKS_AI__DECIDE__API_KEY | vacío | Obligatoria para Laya. Genérala con openssl rand -hex 32. |
CAMPBOOKS_AI__DECIDE__LOGPROBS | true | Ponlo en false para servidores que rechazan el parámetro logprobs (protocolo openai). |
CAMPBOOKS_AI__DECIDE__CALIBRATION__* | 1.0 | Una temperatura por tipo de pregunta (NOUL, CHOICE, CHOICE_2, SCORE). Por encima de 1 las probabilidades son menos seguras. |
CAMPBOOKS_CONVERSATIONS__DECIDE_BACKFILL_DAYS | 14 | El correo con más de estos días no recibe llamada a decide. |
CAMPBOOKS_AI__COMPLETE__BASE_URL | http://ollama:11434/v1 | Dónde se sirve el modelo complete. |
CAMPBOOKS_AI__COMPLETE__MODEL | qwen3:8b | El modelo complete. |
CAMPBOOKS_AI__EMBED__BASE_URL | http://embeddings:80/v1 | Dónde se sirve el modelo embed. |
CAMPBOOKS_AI__EMBED__MODEL | BAAI/bge-m3 | El modelo embed (1024 dimensiones). |
CAMPBOOKS_AI__VISION__BASE_URL | sin definir | Rol vision opcional, por ejemplo http://ollama:11434/v1. |
CAMPBOOKS_AI__VISION__MODEL | sin definir | Opcional, por ejemplo qwen2.5vl:7b. |
Cualquier rol acepta también CAMPBOOKS_AI__<ROLE>__API_KEY para un proveedor alojado.
Otros ajustes en .env.example
.env.example documenta además estas áreas. Sus valores por defecto figuran allí.
- Actualizaciones en vivo (flujo de cambios): el bloque
CAMPBOOKS_CHANGES__*. Un proxy inverso delante del servidor no debe almacenar en búfer las respuestastext/event-stream. - Monitorización:
CAMPBOOKS_TELEMETRY__METRICS_ADDR,CAMPBOOKS_TELEMETRY__OTLP_ENDPOINT,CAMPBOOKS_TELEMETRY__OTLP_HEADERSyCAMPBOOKS_TELEMETRY__SAMPLE_RATIO. Desactivada por defecto.