Aller au contenu principal

Vue d'ensemble du déploiement

:::warning Ancienne version Rails Cette page documente l'ancienne version Rails de Campbooks. Elle est instable, n'est plus maintenue et ne reçoit plus de correctifs. Campbooks est en cours de reconstruction complète en Rust : pour les nouvelles installations, consultez Auto-hébergement. :::

Campbooks se déploie sous forme de pile Docker Compose autonome. docker compose up fait tourner toute l'application sur un seul serveur — pas de build Node, pas de Redis, et aucun service externe à configurer en dehors d'un reverse proxy terminant TLS.

Vous voulez la marche à suivre détaillée ? Cette page donne une vue d'ensemble. Le Guide d'auto-hébergement vous accompagne pas à pas sur un vrai serveur de production.

La pile​

docker compose up démarre trois conteneurs :

ServiceCe que c'est
postgresPostgreSQL avec l'extension pgvector (obligatoire — il contient les données applicatives, le cache, les jobs, Action Cable et les embeddings vectoriels)
webL'application Rails — Puma derrière Thruster
workerTâches en arrière-plan — analyse des e-mails, IA, indexation, synchronisation du calendrier (Solid Queue)

Un quatrième service, opensearch, est optionnel (activé avec le profil search) et ne sert qu'à l'autocomplétion en texte intégral des contacts. Tout le reste — recherche dans les e-mails, recherche dans les documents, la palette Cmd+K — utilise Postgres + pgvector.

Les fichiers téléversés (pièces jointes d'e-mails enregistrées en tant que documents) vivent sur un volume Docker local par défaut, ou dans un stockage d'objets compatible S3 si vous le configurez.

Ce dont vous avez besoin​

  • Un serveur avec Docker et le plugin Docker Compose (Docker Engine ≥ 24)
  • Environ 2 Go de RAM pour la pile par défaut (ajoutez ~1 Go si vous activez OpenSearch)
  • Un nom de domaine et un reverse proxy qui termine TLS (Caddy, Traefik ou nginx)

Configuration​

Tout est configuré via des variables d'environnement dans .env. bin/generate-secrets renseigne les secrets obligatoires ; le reste est optionnel et chacun déverrouille une intégration. La liste annotée se trouve dans .env.example.

VariableObligatoireRôle
SECRET_KEY_BASEOuiClé de session/signature Rails
ACTIVE_RECORD_PRIMARY_KEYOuiChiffre les tokens OAuth et les clés IA au repos
ACTIVE_RECORD_DETERMINISTIC_KEYOuiIdem
ACTIVE_RECORD_KEY_DERIVATION_SALTOuiIdem
CAMPBOOKS_DATABASE_PASSWORDOuiMot de passe pour le Postgres intégré
APP_HOSTOuiLe nom d'hôte sur lequel vous accédez à l'application (doit correspondre à l'en-tête Host)
FORCE_SSLOuitrue derrière un proxy TLS, false pour une utilisation locale en HTTP simple
SELF_HOSTEDOui1 — inscription ouverte + lecture des clés IA depuis l'environnement

Vous n'avez pas besoin de config/master.key. L'auto-hébergement lit SECRET_KEY_BASE depuis l'environnement. Générez les secrets requis avec bin/generate-secrets.

Passer en production​

  1. Pointez un domaine vers le serveur et définissez APP_HOST, FORCE_SSL=true et WEB_PORT dans .env.
  2. Placez un reverse proxy terminant TLS devant (avec Caddy, c'est une configuration de deux lignes — HTTPS automatique).
  3. docker compose up -d --build. Le point d'entrée exécute les migrations de base de données au démarrage.

N'exposez jamais l'application en HTTP simple sur Internet. Avec FORCE_SSL=false, les sessions et les cookies voyagent non chiffrés. Placez toujours un proxy TLS devant en production.

Mises à jour​

git pull
docker compose up -d --build # the entrypoint runs migrations on boot

Sauvegardez la base de données au préalable.

Vérification de l'état​

Campbooks expose un point de terminaison de santé sur /up (renvoie 200 quand tout est sain). Utilisez-le pour les sondes de load-balancer et la surveillance — il reste accessible en HTTP simple même avec FORCE_SSL=true.

Consultez le Guide d'auto-hébergement pour la procédure complète, y compris les sauvegardes et chaque intégration.