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 :
| Service | Ce que c'est |
|---|---|
postgres | PostgreSQL avec l'extension pgvector (obligatoire — il contient les données applicatives, le cache, les jobs, Action Cable et les embeddings vectoriels) |
web | L'application Rails — Puma derrière Thruster |
worker | Tâ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.
| Variable | Obligatoire | Rôle |
|---|---|---|
SECRET_KEY_BASE | Oui | Clé de session/signature Rails |
ACTIVE_RECORD_PRIMARY_KEY | Oui | Chiffre les tokens OAuth et les clés IA au repos |
ACTIVE_RECORD_DETERMINISTIC_KEY | Oui | Idem |
ACTIVE_RECORD_KEY_DERIVATION_SALT | Oui | Idem |
CAMPBOOKS_DATABASE_PASSWORD | Oui | Mot de passe pour le Postgres intégré |
APP_HOST | Oui | Le nom d'hôte sur lequel vous accédez à l'application (doit correspondre à l'en-tête Host) |
FORCE_SSL | Oui | true derrière un proxy TLS, false pour une utilisation locale en HTTP simple |
SELF_HOSTED | Oui | 1 — 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
- Pointez un domaine vers le serveur et définissez
APP_HOST,FORCE_SSL=trueetWEB_PORTdans.env. - Placez un reverse proxy terminant TLS devant (avec Caddy, c'est une configuration de deux lignes — HTTPS automatique).
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.