Aller au contenu principal

Vue d'ensemble du déploiement

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.