Référence de configuration
Tous les réglages se trouvent dans deploy/.env, copié depuis .env.example. Seuls POSTGRES_PASSWORD et CAMPBOOKS_PUBLIC_URL sont obligatoires. Tout le reste est facultatif, et les valeurs par défaut ci-dessous s'appliquent quand un réglage n'est pas défini. Après avoir modifié .env, relancez docker compose up -d.
Général
| Variable | Valeur par défaut | Rôle |
|---|---|---|
POSTGRES_PASSWORD | change-me (exemple) | Mot de passe du compte propriétaire du Postgres inclus. Obligatoire. Caractères sûrs pour une URL uniquement. |
CAMPBOOKS_PUBLIC_URL | https://campbooks.example.com (exemple) | L'adresse que les gens utilisent pour joindre cette instance. Obligatoire. Les liens d'invitation en sont issus. |
CAMPBOOKS_PORT | 8080 | Port de l'hôte pour l'application web et l'API. |
CAMPBOOKS_LOG_FORMAT | json | json ou pretty. |
CAMPBOOKS_RUN_MIGRATIONS | true | Applique les migrations de la base de données au démarrage. |
RUST_LOG | non défini | Filtre de niveau de journal, par exemple info. |
CAMPBOOKS_ENV | non défini | development écrit les liens d'invitation dans les journaux. Ne le définissez jamais sur un serveur utilisé par d'autres personnes. |
Comptes de base de données
Le fichier compose inclus les configure pour vous. Ils ne comptent que si vous utilisez votre propre Postgres. Voir Stockage et base de données.
| Variable | Valeur par défaut | Rôle |
|---|---|---|
CAMPBOOKS_DATABASE_URL | défini par compose | Compte d'exécution, sans droits de superutilisateur. |
CAMPBOOKS_DATABASE_PASSWORD_FILE | défini par compose | Fichier contenant le mot de passe du compte d'exécution (facultatif). |
CAMPBOOKS_DATABASE_MIGRATION_URL | défini par compose | Compte propriétaire, utilisé uniquement pour exécuter les migrations. |
CAMPBOOKS_DATABASE_ROLE | campbooks_app | Avec une seule URL privilégiée, le rôle vers lequel chaque connexion bascule. Gardez la valeur par défaut sauf si votre administrateur de base de données en a créé un autre. |
CAMPBOOKS_DATABASE_ALLOW_RLS_BYPASS | false | Démarre même si le compte contourne la sécurité au niveau des lignes. L'isolation des espaces de travail repose alors sur les requêtes seules. |
CAMPBOOKS_DATABASE_MAX_CONNECTIONS | 10 | Taille du pool de la base de données. Gardez-la au-dessus de CAMPBOOKS_JOBS__CONCURRENCY. |
Connexion
Campbooks assure lui-même la connexion. Laissez CAMPBOOKS_AUTH__ISSUER non défini. Voir Connexion pour le tableau complet. Chaque secret client est un fichier de deploy/secrets/, monté dans le serveur à /run/secrets/campbooks.
| Variable | Valeur par défaut | Rôle |
|---|---|---|
CAMPBOOKS_GOOGLE__CLIENT_ID | non défini | Active la connexion Google et la liaison de Gmail. La Gmail API doit être activée dans le même projet Google. URI de redirection : ${CAMPBOOKS_PUBLIC_URL}/auth/callback/google. |
CAMPBOOKS_GOOGLE__CLIENT_SECRET_FILE | non défini | Par exemple /run/secrets/campbooks/google-client-secret. |
CAMPBOOKS_MICROSOFT__CLIENT_ID | non défini | Active la connexion Microsoft. URI de redirection : ${CAMPBOOKS_PUBLIC_URL}/auth/callback/microsoft. |
CAMPBOOKS_MICROSOFT__CLIENT_SECRET_FILE | non défini | Par exemple /run/secrets/campbooks/microsoft-client-secret. |
CAMPBOOKS_MICROSOFT__TENANT | common | common, organizations, consumers, ou l'identifiant d'un tenant. |
CAMPBOOKS_ZOHO__CLIENT_ID | non défini | Active la connexion Zoho et la liaison de Zoho Mail. URI de redirection : ${CAMPBOOKS_PUBLIC_URL}/auth/callback/zoho. |
CAMPBOOKS_ZOHO__CLIENT_SECRET_FILE | non défini | Par exemple /run/secrets/campbooks/zoho-client-secret. |
CAMPBOOKS_ZOHO__ACCOUNTS_SERVER | https://accounts.zoho.com | Le serveur de comptes du centre de données où votre application Zoho est enregistrée, par exemple https://accounts.zoho.eu. Ne gardez la valeur par défaut que si l'application a Multi-DC activé. |
CAMPBOOKS_<PROVIDER>__REDIRECT_PATH | /auth/callback/<provider> | Seulement si votre application OAuth a enregistré un autre chemin de retour que votre reverse proxy réécrit. |
CAMPBOOKS_TRUSTED_PROXIES | non défini | Adresses ou blocs CIDR des reverse proxies dont le X-Forwarded-For désigne le client. Sans cela, les limites de débit de la connexion comptent tous les clients comme un seul. |
CAMPBOOKS_AUTH__AUDIENCE | campbooks-api | Seulement avec un émetteur externe : l'audience que l'API doit trouver dans le champ aud du jeton. |
CAMPBOOKS_AUTH__LEEWAY_SECONDS | 60 | Seulement avec un émetteur externe : décalage d'horloge toléré. |
CAMPBOOKS_BFF__IDLE_TIMEOUT_MINUTES | 2880 | Les sessions web se terminent après cette durée d'inactivité. |
CAMPBOOKS_BFF__ABSOLUTE_TIMEOUT_HOURS | 720 | Les sessions web se terminent au plus tard après cette durée depuis la connexion. |
CAMPBOOKS_BFF__ROTATE_MINUTES | 60 | Fréquence de remplacement de la valeur du cookie d'une session. |
CAMPBOOKS_BFF__LOGIN_TIMEOUT_SECONDS | 600 | Durée maximale d'une connexion commencée chez le fournisseur. |
CAMPBOOKS_BFF__SCOPES | openid profile email offline_access plus tous les scopes de l'API | Scopes à demander. |
Boîtes mail
Tous facultatifs. Voir Relier des boîtes mail. Les réglages des clients Google et Zoho sont dans le tableau Connexion ci-dessus. Les réglages IMAP (CAMPBOOKS_CONNECTORS__IMAP__*) sont listés dans Boîtes mail IMAP.
| Variable | Valeur par défaut | Rôle |
|---|---|---|
CAMPBOOKS_CONNECTORS__GMAIL__BACKFILL_DAYS | 90 | Jusqu'où lit une nouvelle liaison Gmail, en jours. De 1 à 3650. |
CAMPBOOKS_CONNECTORS__GMAIL__MAX_MESSAGE_BYTES | 52428800 (50 Mio) | Les messages plus gros sont ignorés et enregistrés comme trop volumineux. |
CAMPBOOKS_CONNECTORS__GMAIL__RUN_BUDGET_BYTES | 67108864 (64 Mio) | Une exécution de synchronisation ne lance plus de téléchargement après ce nombre d'octets et continue à l'exécution suivante. Cela borne la mémoire. |
CAMPBOOKS_CONNECTORS__POLL__MIN_SECONDS | 60 | Intervalle après une synchronisation qui a trouvé des changements. |
CAMPBOOKS_CONNECTORS__POLL__MAX_SECONDS | 14400 (4 heures) | Intervalle le plus long d'une boîte mail inactive. |
CAMPBOOKS_CONNECTORS__GOOGLE__UNITS_PER_SECOND | 5000 | Unités de quota de l'API Google par seconde, partagées par tous les processus du serveur. Une valeur basse ralentit seulement les gros envois. |
CAMPBOOKS_CONNECTORS__ZOHO__BACKFILL_DAYS | 90 | Jusqu'où lit une nouvelle boîte Zoho, en jours. De 1 à 3650. |
CAMPBOOKS_CONNECTORS__ZOHO__MAX_MESSAGE_BYTES | 52428800 (50 Mio) | Les messages plus gros sont ignorés et enregistrés comme trop volumineux. |
CAMPBOOKS_CONNECTORS__ZOHO__RUN_BUDGET_BYTES | 67108864 (64 Mio) | Comme pour Gmail. |
CAMPBOOKS_CONNECTORS__ZOHO__REQUESTS_PER_MINUTE | 60 | Requêtes que chaque identifiant Zoho peut faire par minute, partagées par tous les processus. |
CAMPBOOKS_CONNECTORS__ZOHO__SWEEP_MINUTES | 360 | Minutes entre deux relectures complètes de la fenêtre d'une boîte Zoho. |
CAMPBOOKS_CONNECTORS__FAILING_AFTER | 5 | Exécutions échouées de suite avant qu'une boîte mail s'affiche en échec. |
CAMPBOOKS_CONNECTORS__BATCH_RETENTION_DAYS | 7 | Jours pendant lesquels un lot de changements produit est gardé pour être rejoué. |
Politique d'inscription
| Variable | Valeur par défaut | Rôle |
|---|---|---|
CAMPBOOKS_SIGNUP__POLICY | open | Qui peut créer un espace de travail : open, invite_only, approval ou code. Le premier utilisateur de l'instance peut toujours en créer un. |
CAMPBOOKS_SIGNUP__CODES | non défini | Codes séparés par des virgules acceptés avec code. Chacun est réutilisable. À traiter comme un secret. |
Tâches et worker
Le serveur exécute le worker de tâches à côté de l'API. Chaque tâche en cours peut occuper une connexion à la base de données.
| Variable | Valeur par défaut | Rôle |
|---|---|---|
CAMPBOOKS_JOBS__CONCURRENCY | 4 | Tâches qu'un processus exécute en même temps. |
CAMPBOOKS_JOBS__PER_WORKSPACE | 2 | Tâches d'un même espace de travail qui peuvent tourner en même temps par file. |
CAMPBOOKS_JOBS__POLL_INTERVAL_MS | 5000 | Interrogation au repos. Les nouvelles tâches réveillent quand même le worker aussitôt. |
CAMPBOOKS_JOBS__RETENTION_HOURS | 168 | Durée de conservation des tâches réussies. Les tâches en échec sont conservées jusqu'à ce que vous les supprimiez. |
CAMPBOOKS_JOBS__SHUTDOWN_GRACE_SECONDS | 8 | Durée d'attente d'un worker à l'arrêt pour les tâches en cours. Gardez-la sous le délai d'arrêt. |
CAMPBOOKS_JOBS__LEASE_SECONDS | 60 | Durée du bail d'une tâche. |
CAMPBOOKS_JOBS__RETRY_BASE_MS | 1000 | Délai de base entre deux tentatives. |
CAMPBOOKS_JOBS__RETRY_MAX_SECONDS | 3600 | Délai maximal entre deux tentatives. |
Stockage des blobs
Voir Stockage et base de données.
| Variable | Valeur par défaut | Rôle |
|---|---|---|
CAMPBOOKS_BLOBS__BACKEND | fs | fs (disque local) ou s3. |
CAMPBOOKS_BLOBS__PATH | /data/blobs | Répertoire du backend fs (le volume blobs-data). |
CAMPBOOKS_BLOBS__MAX_OBJECT_BYTES | 52428800 (50 Mio) | Taille maximale d'un fichier accepté. |
CAMPBOOKS_BLOBS__SWEEP_GRACE_HOURS | 24 | Durée de conservation d'un fichier inutilisé avant sa suppression. |
CAMPBOOKS_BLOBS__S3__BUCKET | non défini | Nom du bucket. |
CAMPBOOKS_BLOBS__S3__ENDPOINT | non défini (AWS) | URL du stockage. http:// est accepté sur un réseau privé. |
CAMPBOOKS_BLOBS__S3__REGION | non défini | Région attendue par votre stockage. |
CAMPBOOKS_BLOBS__S3__ACCESS_KEY_ID | non défini | Clé d'accès. |
CAMPBOOKS_BLOBS__S3__SECRET_ACCESS_KEY | non défini | Clé secrète. |
CAMPBOOKS_BLOBS__S3__PATH_STYLE | false | true pour des URL <endpoint>/<bucket> (la plupart des stockages auto-hébergés). |
Rôles d'IA
Voir IA locale. Un rôle non défini est simplement indisponible.
| Variable | Valeur par défaut | Rôle |
|---|---|---|
CAMPBOOKS_AI__DECIDE__PROTOCOL | laya | laya ou openai. |
CAMPBOOKS_AI__DECIDE__BASE_URL | http://laya:8000/v1 | Où le modèle decide est servi. |
CAMPBOOKS_AI__DECIDE__MODEL | convaiinnovations/laya-multilingual | Le modèle decide. |
CAMPBOOKS_AI__DECIDE__API_KEY | vide | Obligatoire pour Laya. À générer avec openssl rand -hex 32. |
CAMPBOOKS_AI__DECIDE__LOGPROBS | true | Mettez false pour les serveurs qui rejettent le paramètre logprobs (protocole openai). |
CAMPBOOKS_AI__DECIDE__CALIBRATION__* | 1.0 | Une température par type de question (NOUL, CHOICE, CHOICE_2, SCORE). Au-dessus de 1, les probabilités sont moins assurées. |
CAMPBOOKS_CONVERSATIONS__DECIDE_BACKFILL_DAYS | 14 | Les messages plus anciens que ce nombre de jours ne déclenchent aucun appel decide. |
CAMPBOOKS_AI__COMPLETE__BASE_URL | http://ollama:11434/v1 | Où le modèle complete est servi. |
CAMPBOOKS_AI__COMPLETE__MODEL | qwen3:8b | Le modèle complete. |
CAMPBOOKS_AI__EMBED__BASE_URL | http://embeddings:80/v1 | Où le modèle embed est servi. |
CAMPBOOKS_AI__EMBED__MODEL | BAAI/bge-m3 | Le modèle embed (1024 dimensions). |
CAMPBOOKS_AI__VISION__BASE_URL | non défini | Rôle vision facultatif, par exemple http://ollama:11434/v1. |
CAMPBOOKS_AI__VISION__MODEL | non défini | Facultatif, par exemple qwen2.5vl:7b. |
Chaque rôle accepte aussi CAMPBOOKS_AI__<ROLE>__API_KEY pour un fournisseur hébergé.
Autres réglages de .env.example
.env.example documente aussi ces domaines. Leurs valeurs par défaut y figurent.
- Mises à jour en direct (flux de changements) : le bloc
CAMPBOOKS_CHANGES__*. Un reverse proxy placé devant le serveur ne doit pas mettre en mémoire tampon les réponsestext/event-stream. - Supervision :
CAMPBOOKS_TELEMETRY__METRICS_ADDR,CAMPBOOKS_TELEMETRY__OTLP_ENDPOINT,CAMPBOOKS_TELEMETRY__OTLP_HEADERSetCAMPBOOKS_TELEMETRY__SAMPLE_RATIO. Désactivée par défaut.