Héberger Ronde soi-même
Ronde tourne sur n'importe quelle machine équipée de Docker : l'application, une base PostgreSQL et un conteneur ponctuel qui applique les migrations de la base à chaque version. Tout ce que contient l'édition Community est gratuit, sans limite de réunions ni de personnes. Une clé de licence active les fonctions Team ou Enterprise.
Démarrer
Récupérez les fichiers d'une version :
mkdir ronde && cd ronde curl -fsSLO https://raw.githubusercontent.com/joinronde/ronde/main/docker/compose.yml curl -fsSL https://raw.githubusercontent.com/joinronde/ronde/main/docker/.env.example -o .envRemplissez
.env: l'adresse que les gens ouvriront (RONDE_URL) et trois secrets.for v in POSTGRES_PASSWORD AUTH_SECRET SECRET_KEY; do sed -i "s|^$v=.*|$v=$(openssl rand -base64 32 | tr -d '/+=')|" .env; doneDémarrez :
docker compose up -dOuvrez
RONDE_URLet créez le premier compte : il devient l'administrateur de l'instance.
HTTPS
Faites pointer un domaine vers la machine, renseignez RONDE_DOMAIN=ronde.example.com et
RONDE_URL=https://ronde.example.com dans .env, puis démarrez avec le profil https. Caddy obtient et
renouvelle le certificat.
docker compose --profile https up -d
Derrière votre propre proxy inverse, redirigez plutôt vers le port RONDE_PORT (3000 par défaut) et
conservez les en-têtes X-Forwarded-*. Les Server-Sent Events ne doivent pas être mis en tampon
(proxy_buffering off avec nginx).
Les liens de connexion, les invitations et les rappels ont besoin d'un serveur SMTP :
SMTP_URL=smtp://user:password@smtp.example.com:587 et MAIL_FROM. Pour un essai, le profil mail
démarre Mailpit, qui intercepte tous les e-mails :
echo "SMTP_URL=smtp://mail:1025" >> .env
docker compose --profile mail up -d # emails at http://localhost:8025
Pour que chacun puisse remplir sa fiche en répondant à la relance, donnez à Ronde une boîte à lire : INBOUND_IMAP_URL=imaps://user:password@imap.example.com:993/INBOX, et INBOUND_ADDRESS quand l'identifiant n'est pas l'adresse e-mail. Les réponses y sont envoyées ; chaque minute, Ronde lit celles qui répondent à une relance, ajoute leurs lignes à la fiche, confirme par e-mail et les range dans un dossier Ronde. Les autres messages de la boîte restent tels quels : ce peut être votre adresse de contact habituelle.
Les notifications push (votre tour qui approche, les relances de fiche, la cloche) demandent une paire de clés pour l'instance : npx web-push generate-vapid-keys, puis WEB_PUSH_PUBLIC_KEY et WEB_PUSH_PRIVATE_KEY. Conservez-les : les appareils qui ont activé les notifications en dépendent. Ronde doit être servi en HTTPS ; sur iPhone, chacun l'ajoute d'abord à l'écran d'accueil.
Connexion
Les comptes locaux et les liens magiques fonctionnent d'emblée. SIGNUP_POLICY décide qui peut créer un
compte : invite-only (par défaut), open, ou domains avec SIGNUP_ALLOWED_DOMAINS. Un fournisseur
OpenID Connect (Keycloak, Authentik, Entra ID, Okta…) se configure avec les variables OIDC_* ; Google,
GitHub et Microsoft avec leurs <PROVIDER>_CLIENT_ID et <PROVIDER>_CLIENT_SECRET. URI de redirection :
<RONDE_URL>/api/auth/callback/<provider>.
Transcriptions sans envoyer le son ailleurs
Les transcriptions (Team) utilisent un service de reconnaissance vocale compatible avec l'API d'OpenAI.
Pour garder le son sur vos serveurs, démarrez le profil whisper et indiquez-le à Ronde :
cat >> .env <<'ENV'
TRANSCRIPTION_URL=http://whisper:8000/v1
TRANSCRIPTION_MODEL=Systran/faster-whisper-small
ENV
docker compose --profile whisper up -d
Slack
Avec une licence Team ou Enterprise, les espaces de travail peuvent ajouter Ronde à Slack : rappels de
fiche en message privé, fiches remplies depuis un formulaire Slack, notifications dans un canal et
commande /ronde. L'instance a besoin de sa propre app Slack, créée une seule fois. Slack doit pouvoir
joindre RONDE_URL en HTTPS.
Récupérez le manifeste de l'app et remplacez-y chaque
https://ronde.example.compar votreRONDE_URL:curl -fsSLO https://raw.githubusercontent.com/joinronde/ronde/main/docker/slack-manifest.ymlSur api.slack.com/apps : Create New App › From a manifest, choisissez votre espace Slack et collez le fichier.
Copiez les clés de Basic Information › App Credentials dans
.env(SLACK_CLIENT_ID,SLACK_CLIENT_SECRET,SLACK_SIGNING_SECRET), puis lancezdocker compose up -d.Dans Ronde, un propriétaire ou administrateur de chaque espace ouvre Paramètres › Slack › Ajouter à Slack.
Pour ajouter l'app à plusieurs espaces Slack, activez Manage Distribution dans les réglages de l'app.
Microsoft Teams
Avec une licence Team ou Enterprise, les espaces de travail peuvent ajouter Ronde à Microsoft Teams : rappels
de fiche par message personnel, fiches remplies depuis une carte, notifications dans un canal, et la commande
ronde. L'instance a besoin de sa propre app Teams, un Azure Bot enregistré une fois dans votre organisation
Microsoft. Microsoft doit joindre RONDE_URL en HTTPS.
- Dans le portail Azure : Create a resource › Azure Bot, avec un identifiant
(
ronde), l'offre gratuite F0, Type of App: Single Tenant et Create new Microsoft App ID. - Dans le bot, Settings › Configuration : indiquez comme Messaging endpoint
https://ronde.example.com/api/teams/messages(votreRONDE_URL), enregistrez, et copiez le Microsoft App ID et l'App Tenant ID. - Manage Password, sur la même page, ouvre l'inscription de l'application : Certificates & secrets › New client secret, puis copiez sa Value (affichée une seule fois).
- Dans le bot, Settings › Channels : ajoutez Microsoft Teams et acceptez ses conditions.
- Mettez les trois valeurs dans
.env(TEAMS_APP_ID,TEAMS_TENANT_ID,TEAMS_APP_PASSWORD), puis lancezdocker compose up -d. - Dans Ronde, un propriétaire ou un administrateur d'un espace ouvre Réglages › Microsoft Teams et télécharge l'app. Un administrateur Teams la charge (centre d'administration Teams › Applications Teams › Gérer les applications › Charger une nouvelle application) et l'ajoute à une équipe : Ronde publie une carte dans son canal, et Lier à Ronde choisit l'espace.
Le secret client expire au bout de 6 à 24 mois : créez le suivant avant, et remplacez TEAMS_APP_PASSWORD. Un
bot single-tenant sert les personnes de votre propre organisation Microsoft ; pour proposer l'app à d'autres
organisations, elle est publiée dans le Teams Store.
Mettre à jour
docker compose pull && docker compose up -d
Le conteneur migrate applique les migrations de la nouvelle version avant le démarrage de l'application.
Fixez une version avec RONDE_VERSION=1.0.0-beta.3 dans .env pour choisir quand mettre à jour.
Sauvegardes
Tout se trouve dans le volume PostgreSQL :
docker compose exec db pg_dump -U ronde ronde | gzip > ronde-$(date +%F).sql.gz
Images
| Image | Ce que c'est |
|---|---|
ghcr.io/joinronde/ronde |
L'application, toutes éditions confondues (fonctions payantes désactivées sans licence) |
ghcr.io/joinronde/ronde-ce |
L'application sans le code des éditions payantes (AGPL uniquement) |
ghcr.io/joinronde/ronde-migrate |
Les migrations de la base pour la même version |
Chaque variable secrète accepte aussi <NAME>_FILE (secrets Docker). Éducation : les écoles et les
universités obtiennent gratuitement les offres payantes, demandez-les sur https://joinronde.com/fr/education.