Saltar al contenido principal

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​

VariableValor por defectoQué hace
POSTGRES_PASSWORDchange-me (ejemplo)Contraseña del usuario propietario del Postgres incluido. Obligatoria. Solo caracteres seguros para URL.
CAMPBOOKS_PUBLIC_URLhttps://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_PORT8080Puerto del host para la aplicación web y la API.
CAMPBOOKS_LOG_FORMATjsonjson o pretty.
CAMPBOOKS_RUN_MIGRATIONStrueAplica las migraciones de la base de datos al arrancar.
RUST_LOGsin definirFiltro de nivel de registro, por ejemplo info.
CAMPBOOKS_ENVsin definirdevelopment 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.

VariableValor por defectoQué hace
CAMPBOOKS_DATABASE_URLdefinido por composeUsuario de ejecución, sin superusuario.
CAMPBOOKS_DATABASE_PASSWORD_FILEdefinido por composeArchivo con la contraseña del usuario de ejecución (opcional).
CAMPBOOKS_DATABASE_MIGRATION_URLdefinido por composeUsuario propietario, usado solo para ejecutar migraciones.
CAMPBOOKS_DATABASE_ROLEcampbooks_appCon 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_BYPASSfalseArranca 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_CONNECTIONS10Tamañ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.

VariableValor por defectoQué hace
CAMPBOOKS_GOOGLE__CLIENT_IDsin definirActiva 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_FILEsin definirPor ejemplo /run/secrets/campbooks/google-client-secret.
CAMPBOOKS_MICROSOFT__CLIENT_IDsin definirActiva el acceso con Microsoft. URI de redirección: ${CAMPBOOKS_PUBLIC_URL}/auth/callback/microsoft.
CAMPBOOKS_MICROSOFT__CLIENT_SECRET_FILEsin definirPor ejemplo /run/secrets/campbooks/microsoft-client-secret.
CAMPBOOKS_MICROSOFT__TENANTcommoncommon, organizations, consumers, o el ID de un tenant.
CAMPBOOKS_ZOHO__CLIENT_IDsin definirActiva 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_FILEsin definirPor ejemplo /run/secrets/campbooks/zoho-client-secret.
CAMPBOOKS_ZOHO__ACCOUNTS_SERVERhttps://accounts.zoho.comEl 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_PROXIESsin definirDirecciones 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__AUDIENCEcampbooks-apiSolo con un emisor externo: la audiencia que la API debe encontrar en el aud del token.
CAMPBOOKS_AUTH__LEEWAY_SECONDS60Solo con un emisor externo: desfase de reloj tolerado.
CAMPBOOKS_BFF__IDLE_TIMEOUT_MINUTES2880Las sesiones web terminan tras este tiempo sin uso.
CAMPBOOKS_BFF__ABSOLUTE_TIMEOUT_HOURS720Las sesiones web terminan, como máximo, tras este tiempo desde el inicio de sesión.
CAMPBOOKS_BFF__ROTATE_MINUTES60Cada cuánto se reemplaza el valor de la cookie de una sesión.
CAMPBOOKS_BFF__LOGIN_TIMEOUT_SECONDS600Cuánto puede tardar un inicio de sesión ya empezado en el proveedor.
CAMPBOOKS_BFF__SCOPESopenid 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.

VariableValor por defectoQué hace
CAMPBOOKS_CONNECTORS__GMAIL__BACKFILL_DAYS90Hasta dónde lee una conexión nueva de Gmail, en días. De 1 a 3650.
CAMPBOOKS_CONNECTORS__GMAIL__MAX_MESSAGE_BYTES52428800 (50 MiB)Los mensajes más grandes se omiten y se registran como demasiado grandes.
CAMPBOOKS_CONNECTORS__GMAIL__RUN_BUDGET_BYTES67108864 (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_SECONDS60Intervalo tras una sincronización que encontró cambios.
CAMPBOOKS_CONNECTORS__POLL__MAX_SECONDS14400 (4 horas)Intervalo más largo de un buzón inactivo.
CAMPBOOKS_CONNECTORS__GOOGLE__UNITS_PER_SECOND5000Unidades 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_DAYS90Hasta dónde lee un buzón nuevo de Zoho, en días. De 1 a 3650.
CAMPBOOKS_CONNECTORS__ZOHO__MAX_MESSAGE_BYTES52428800 (50 MiB)Los mensajes más grandes se omiten y se registran como demasiado grandes.
CAMPBOOKS_CONNECTORS__ZOHO__RUN_BUDGET_BYTES67108864 (64 MiB)Igual que en Gmail.
CAMPBOOKS_CONNECTORS__ZOHO__REQUESTS_PER_MINUTE60Peticiones que cada inicio de sesión de Zoho puede hacer por minuto, compartidas por todos los procesos.
CAMPBOOKS_CONNECTORS__ZOHO__SWEEP_MINUTES360Minutos entre relecturas completas de la ventana de un buzón de Zoho.
CAMPBOOKS_CONNECTORS__FAILING_AFTER5Ejecuciones fallidas seguidas antes de que un buzón aparezca con fallos.
CAMPBOOKS_CONNECTORS__BATCH_RETENTION_DAYS7Días que se guarda un lote de cambios producido para poder repetirlo.

Política de registro​

VariableValor por defectoQué hace
CAMPBOOKS_SIGNUP__POLICYopenQuié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__CODESsin definirCó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.

VariableValor por defectoQué hace
CAMPBOOKS_JOBS__CONCURRENCY4Tareas que un proceso ejecuta a la vez.
CAMPBOOKS_JOBS__PER_WORKSPACE2Tareas de un mismo espacio de trabajo que pueden ejecutarse a la vez por cola.
CAMPBOOKS_JOBS__POLL_INTERVAL_MS5000Sondeo en reposo. Las tareas nuevas despiertan al worker de inmediato de todos modos.
CAMPBOOKS_JOBS__RETENTION_HOURS168Cuánto se conservan las tareas completadas. Las fallidas se conservan hasta que las borras.
CAMPBOOKS_JOBS__SHUTDOWN_GRACE_SECONDS8Cuánto espera un worker que se detiene a las tareas en ejecución. Mantenlo por debajo del tiempo de parada.
CAMPBOOKS_JOBS__LEASE_SECONDS60Duración del arrendamiento de una tarea.
CAMPBOOKS_JOBS__RETRY_BASE_MS1000Retardo base de reintento.
CAMPBOOKS_JOBS__RETRY_MAX_SECONDS3600Retardo máximo de reintento.

Almacenamiento de blobs​

Consulta Almacenamiento y base de datos.

VariableValor por defectoQué hace
CAMPBOOKS_BLOBS__BACKENDfsfs (disco local) o s3.
CAMPBOOKS_BLOBS__PATH/data/blobsDirectorio para el backend fs (el volumen blobs-data).
CAMPBOOKS_BLOBS__MAX_OBJECT_BYTES52428800 (50 MiB)Archivo más grande aceptado.
CAMPBOOKS_BLOBS__SWEEP_GRACE_HOURS24Cuánto se conserva un archivo que nada usa antes de borrarlo.
CAMPBOOKS_BLOBS__S3__BUCKETsin definirNombre del bucket.
CAMPBOOKS_BLOBS__S3__ENDPOINTsin definir (AWS)URL del almacén. Se acepta http:// en una red privada.
CAMPBOOKS_BLOBS__S3__REGIONsin definirRegión que espera tu almacén.
CAMPBOOKS_BLOBS__S3__ACCESS_KEY_IDsin definirClave de acceso.
CAMPBOOKS_BLOBS__S3__SECRET_ACCESS_KEYsin definirClave secreta.
CAMPBOOKS_BLOBS__S3__PATH_STYLEfalsetrue 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.

VariableValor por defectoQué hace
CAMPBOOKS_AI__DECIDE__PROTOCOLlayalaya u openai.
CAMPBOOKS_AI__DECIDE__BASE_URLhttp://laya:8000/v1Dónde se sirve el modelo decide.
CAMPBOOKS_AI__DECIDE__MODELconvaiinnovations/laya-multilingualEl modelo decide.
CAMPBOOKS_AI__DECIDE__API_KEYvacíoObligatoria para Laya. Genérala con openssl rand -hex 32.
CAMPBOOKS_AI__DECIDE__LOGPROBStruePonlo en false para servidores que rechazan el parámetro logprobs (protocolo openai).
CAMPBOOKS_AI__DECIDE__CALIBRATION__*1.0Una temperatura por tipo de pregunta (NOUL, CHOICE, CHOICE_2, SCORE). Por encima de 1 las probabilidades son menos seguras.
CAMPBOOKS_CONVERSATIONS__DECIDE_BACKFILL_DAYS14El correo con más de estos días no recibe llamada a decide.
CAMPBOOKS_AI__COMPLETE__BASE_URLhttp://ollama:11434/v1Dónde se sirve el modelo complete.
CAMPBOOKS_AI__COMPLETE__MODELqwen3:8bEl modelo complete.
CAMPBOOKS_AI__EMBED__BASE_URLhttp://embeddings:80/v1Dónde se sirve el modelo embed.
CAMPBOOKS_AI__EMBED__MODELBAAI/bge-m3El modelo embed (1024 dimensiones).
CAMPBOOKS_AI__VISION__BASE_URLsin definirRol vision opcional, por ejemplo http://ollama:11434/v1.
CAMPBOOKS_AI__VISION__MODELsin definirOpcional, 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 respuestas text/event-stream.
  • Monitorización: CAMPBOOKS_TELEMETRY__METRICS_ADDR, CAMPBOOKS_TELEMETRY__OTLP_ENDPOINT, CAMPBOOKS_TELEMETRY__OTLP_HEADERS y CAMPBOOKS_TELEMETRY__SAMPLE_RATIO. Desactivada por defecto.