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 :
| 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.