Plateforme

Auto-hébergement

La même image s’exécute sur votre hôte ou sur le nôtre. Cette page est la vue de l’exploitant : quoi configurer, quoi placer devant, et comment le maintenir en fonctionnement sans que rien ne quitte le bâtiment.

Architecture

  • Un seul processus Python exécute l’écouteur de messagerie, le planificateur et l’API avec le tableau de bord dans une seule boucle d’événements.
  • Le conteneur n’écoute que sur l’interface de bouclage ; un reverse proxy (Nginx ou Caddy) termine le TLS et lui transmet le trafic.
  • L’état réside dans un répertoire de données : la base SQLite, les téléversements, les données GeoIP, les clés générées et les poids du modèle. Pointez DATABASE_URL vers Postgres pour les déploiements multi-hôtes ; le jeu de migrations additives fonctionne sur les deux.
  • Le serveur de messagerie (Synapse ou un autre serveur d’accueil Matrix) peut se trouver n’importe où d’accessible.

Environnement

MATRIX_HOMESERVER, MATRIX_USER_ID, MATRIX_ACCESS_TOKENle compte du bot
MATRIX_STANDUP_ROOM_IDle salon de points quotidiens par défaut
MATRIX_ADMIN_TOKENjeton d’administration du serveur d’accueil pour le provisionnement et les recherches ; environnement uniquement, jamais persisté
SECRET_KEYune chaîne aléatoire de 64 caractères ou plus signant les sessions du tableau de bord
DATABASE_URLsqlite par défaut, ou une URL Postgres
BOOTSTRAP_ADMIN_MATRIX_IDle premier administrateur, promu au démarrage
AI_PROVIDER et la clé du fournisseurvoir Fournisseurs d’IA
INTEGRATION_VAULT_KEYla clé chiffrant les identifiants d’intégration stockés
TZ, MAX_BODY_BYTES, AI_REASONING_MODELoptionnels

Reverse proxy

  • Transmettez X-Forwarded-For et X-Forwarded-Proto ; sans ce dernier, le produit ne peut pas distinguer HTTP de HTTPS et omet l’en-tête HSTS.
  • Activez la compression des réponses relayées et HTTP/2 ; le tableau de bord charge des dizaines de ressources à froid.
  • Ne compressez ni ne mettez jamais en tampon le point de terminaison du flux d’événements ; les mises à jour en direct sont des événements envoyés par le serveur.
  • La limitation de débit par IP relève du proxy ; le produit limite lui-même les demandes de code et les connexions.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
gzip_proxied any;
http2 on;

En-têtes de sécurité et limites

Chaque réponse porte nosniff, un refus d’encadrement, une politique sans referrer, une politique de permissions restrictive, un HSTS de deux ans sur TLS et une politique de sécurité du contenu. Les corps de requête sont plafonnés à 5 Mio par défaut. Chaque entrée est validée par schéma avant l’exécution d’un gestionnaire ; les identifiants de messagerie sont vérifiés par expression régulière avant tout appel au serveur d’accueil ; le HTTP sortant est épinglé au serveur d’accueil et à l’hôte du fournisseur configuré.

Exploiter

  • Mise à niveau : pull, rebuild, redémarrage. Les migrations s’exécutent au démarrage et ignorent ce qui existe déjà.
  • Sauvegardez le répertoire de données chaque nuit ; pour Postgres, utilisez pg_dump.
  • Santé : un point de terminaison de vivacité rapide et non authentifié pour le contrôle du conteneur, et un point détaillé réservé aux administrateurs avec la durée de fonctionnement, la taille de la base et l’état des fournisseurs.
  • GeoIP : exécutez le script d’actualisation chaque semaine (db-ip Lite sans clé, ou MaxMind avec une clé gratuite) ; une copie dans le volume de données est prise en compte au redémarrage sans configuration.
  • Le planificateur rythme la journée de travail : échantillons de présence toutes les cinq minutes, contrôles d’absence toutes les quinze, agrégations nocturnes et matérialisation des scores, résumés et rapports selon leurs cadences.
docker compose up -d --build
docker exec inroots sqlite3 /app/data/standup.db ".backup /tmp/backup.db"
GEO_DATA_DIR=/app/data/geo scripts/update_geoip.sh

Isolé du réseau

Avec un serveur Matrix auto-hébergé, Ollama comme fournisseur, une base IP locale sur l’hôte, les réponses vocales désactivées et aucune intégration activée, le produit n’a besoin d’aucun accès à internet. Il n’y a pas de télémétrie, pas de balise d’usage et pas de rapport de plantage sortant ; aucun octet ne sort tant que vous n’avez pas configuré de destination.