01 Présentation
Kelra Room est une couche logicielle qui transforme n'importe quelle dalle tactile de salle de réunion — module Windows OPS, Huawei IdeaHub, écran de constructeur générique — en un poste de salle unifié : planning, jointure de visioconférence en un geste, et tableau blanc collaboratif.
Le produit répond à un problème simple : un parc de salles n'est jamais homogène. Des écrans achetés à des années d'écart, des marques différentes, des télécommandes différentes. Chaque réunion commence par cinq minutes de dépannage. Kelra Room impose la même interface, les mêmes gestes et la même visio sur tout le parc, quel que soit le matériel dessous.
Ce qui compose une installation
Un écran par salle
Une application Windows autonome, plein écran, sans navigateur visible. Elle affiche la salle, son planning, et ouvre les visios. Un seul exécutable à installer, rien d'autre sur la machine.
Un serveur central
Une machine Linux, chez vous. Elle interroge les calendriers, sert la console d'administration, relaie le tableau blanc en temps réel et conserve toute la configuration.
Vos calendriers
Microsoft 365 (Exchange Online) et/ou Google Workspace. Kelra Room lit les boîtes de ressource de vos salles — celles que vos collaborateurs réservent déjà.
Les principes de conception
| Principe | Ce que cela signifie concrètement |
|---|---|
| Autonomie | Tout tourne sur votre infrastructure. Aucun contenu de réunion, aucun tableau blanc, aucun compte-rendu ne transite par un service tiers. Le seul trafic sortant va vers vos propres fournisseurs de calendrier. |
| Indépendance matérielle | Aucun matériel propriétaire à acheter. Kelra Room s'installe sur les écrans que vous avez déjà, du moment qu'ils embarquent un Windows 10/11. |
| Empreinte minimale | Un seul service serveur, une base de données embarquée, aucune dépendance externe à installer. Un parc de 50 salles tient sur un mini-PC. |
| Résilience réseau | Polices et ressources graphiques auto-hébergées : le kiosque ne dépend d'aucun CDN. Serveur injoignable, l'écran continue d'afficher les dernières données reçues, horodatées. |
| Propriété | Licence perpétuelle par écran, sans abonnement obligatoire. Le code source est fourni et auditable. |
Ce que Kelra Room ne fait pas
Pour cadrer une évaluation, autant être direct sur les limites de périmètre :
- Kelra Room ne remplace pas votre solution de visioconférence. Il détecte le lien Teams, Meet ou Zoom de l'invitation et l'ouvre en plein écran — la réunion reste chez son éditeur.
- Il ne pilote pas le matériel audio/vidéo de la salle (caméra, barre de son, contrôle de la dalle). Ceux-ci restent gérés par leurs pilotes Windows habituels.
- Il ne mesure pas la durée réelle des appels : les statistiques reposent sur les créneaux planifiés au calendrier (voir Exploitation).
- La console d'administration multi-sites hébergée est une option commerciale distincte ; un déploiement standard administre chaque serveur individuellement.
02 Fonctionnalités
Le cycle complet d'une réunion, de l'affichage du planning au compte-rendu envoyé aux participants.
Écran de salle
L'écran affiche en permanence l'heure, le nom de la salle, son statut et le planning du jour. Le statut est lisible depuis le couloir : vert quand la salle est libre, rouge quand elle est occupée, avec l'heure de libération ou le prochain créneau.
| Élément | Détail |
|---|---|
| Deux dispositions | Standard (liste des réunions + tuiles d'action) ou Agenda (calendrier plein écran). Le choix se fait sur l'écran et y est mémorisé. |
| Tuiles d'action | Rejoindre la visio · Nouveau tableau · Réunion instantanée · Calendrier. Les tuiles sans objet sont masquées plutôt que grisées. |
| Fonds d'écran | Bibliothèque d'images 4K servie par le serveur, avec mode diaporama aléatoire, ou fond du thème de la salle. Le choix est mémorisé par écran. |
| 8 langues | Français, anglais, polonais, espagnol, portugais, chinois, roumain, ukrainien. Sélecteur dans la barre du bas ; à défaut, la langue du navigateur décide. |
| Thème & logo | 6 préréglages (bleu, violet, vert — sombre ou clair) et votre logo à la place de celui de Kelra Room, réglés par salle depuis la console. |
| Panneau de diagnostic | Accessible depuis l'écran : adresse IP, passerelle, joignabilité du serveur, sortie Internet, état de chaque calendrier, contrôle de l'horloge, version de l'écran et du serveur. |
| Mode dégradé | Serveur injoignable, l'écran conserve l'affichage et signale « Données de hh:mm » plutôt que de se vider. Une vue incomplète (un calendrier sur deux injoignable) est signalée comme telle. |
Rejoindre une visioconférence
Kelra Room analyse l'invitation de réunion et en extrait le lien de visio, quel que soit le format — corps HTML Exchange, description Google, lien collé à la main. Un bouton géant « Rejoindre la visio » apparaît dès qu'une réunion démarre.
Plateformes reconnues
Microsoft Teams · Zoom · Google Meet · Cisco Webex · Whereby · Jitsi Meet · Proton Meet · BlueJeans · GoTo Meeting · RingCentral · Livestorm.
Un repli générique reconnaît les liens de réunion des plateformes non répertoriées — outil interne d'un grand compte, solution régionale. Il est volontairement conservateur : mieux vaut ne pas proposer de bouton que d'en proposer un qui ouvre la politique de confidentialité de l'organisateur.
La visio s'ouvre dans un vrai navigateur
Quand un participant appuie sur « Rejoindre », l'application lance Microsoft Edge en plein écran, dans un profil dédié et isolé. C'est un choix imposé par les plateformes elles-mêmes : Google et Microsoft refusent la participation depuis un navigateur embarqué dans une application. Edge est présent d'origine sur Windows — rien à installer.
Pendant l'appel, une barre flottante reste au-dessus de toutes les fenêtres, déplaçable, traduite dans la langue de l'écran. Elle porte deux actions volontairement distinctes :
- « Retour au kiosque » — ramène l'écran de salle devant sans toucher à la réunion, qui continue derrière, audio et caméra compris. C'est ce qui permet d'ouvrir le tableau blanc en séance puis de revenir à l'appel : le bouton devient alors « Retour à la visio ».
- « Quitter la visio » — termine réellement la réunion et revient à l'écran de salle. Couleur et zone différentes : c'est la seule des deux qui coupe l'appel.
Fermer la fenêtre soi-même déclenche le même nettoyage : aucune fenêtre ni processus ne s'accumule d'une réunion à l'autre.
Deux modes d'identité en réunion
| Invité défaut | Compte de salle | |
|---|---|---|
| Configuration côté tenant | aucune | connexion interactive + licence Teams Rooms |
| Identité affichée | « Invité » | le nom de la salle |
| Hall d'attente | selon la politique de l'organisateur | contourné pour les réunions internes |
| Réunion instantanée | indisponible | disponible |
| Annuaire, appel d'un collaborateur | non | oui |
Le mode se règle par salle dans la console. La connexion du compte de salle se fait une seule fois, à l'installation, depuis l'écran lui-même ; la session est conservée dans le profil de visio.
Réunion instantanée
Un appui crée à la volée une réunion Teams ou Google Meet dans le calendrier de la salle, réserve la salle pour une heure et ouvre l'appel. Disponible uniquement en mode « compte de salle » : un participant anonyme n'aurait ni annuaire ni possibilité d'inviter, et la salle risquerait de rester dans son propre hall d'attente.
Tableau blanc collaboratif
Un tableau blanc plein écran, partagé en temps réel, ouvert depuis l'écran de salle en un geste. Moteur Excalidraw, relais de scène hébergé sur votre serveur.
Rejoindre par QR code
Un QR code au coin du tableau ouvre la session sur le téléphone ou le portable de chacun. Aucune application à installer, aucun compte à créer.
Compte-rendu PDF
Le tableau est exporté en haute résolution, assemblé en PDF, téléchargé ou envoyé par email à tous les participants de la réunion en un geste.
Envoi du lien
Pendant une visio, les participants distants ne peuvent pas scanner le QR affiché dans la salle : un bouton leur envoie le lien du tableau par email.
Clôture par l'hôte
L'écran de salle est l'hôte de la session. Il clôture le tableau en fin de réunion : les invités voient un message de fin, la scène cesse d'être accessible.
L'application Windows place un relais devant son propre service : le téléphone d'un invité ne parle qu'à l'écran de la salle, sur le réseau local, et l'écran parle au serveur. Un serveur central derrière un VPN reste donc utilisable depuis un mobile posé dans la salle, sans exposer la console d'administration au réseau des invités.
Broker multi-tenant — arbitrage des réservations
Cas d'usage : un bâtiment partagé par deux organisations, l'une sur Microsoft 365, l'autre sur Google Workspace. Les deux veulent réserver la même salle physique, chacune depuis son propre calendrier de ressource. Sans arbitrage, les deux acceptent — et deux réunions se présentent à la même heure.
Le broker de Kelra Room agrège les calendriers de toutes les organisations reliées à une salle et arbitre les invitations en attente :
- Premier arrivé, premier servi — les invitations sont traitées dans l'ordre de réception.
- Créneau libre sur l'ensemble des calendriers → l'invitation est acceptée, l'organisateur reçoit la confirmation habituelle.
- Conflit avec une réservation déjà acceptée, y compris sur l'autre organisation → l'invitation est refusée avec un motif, visible par l'organisateur dans la réponse.
Miroirs d'occupation
Un refus arrive après coup : jusque-là, le Room Finder d'Outlook et le sélecteur de salles Google annoncent la salle libre — ils ne lisent que leur propre calendrier. Dès qu'une réservation est acceptée, Kelra Room pose donc sur les autres calendriers de la salle un événement d'occupation neutre, intitulé « Réservé — autre organisation ». La salle apparaît occupée dans l'outil que l'utilisateur consulte réellement, avant toute tentative.
- Le sujet et l'organisateur ne franchissent jamais la frontière entre organisations. Le miroir ne porte qu'un titre neutre, que vous choisissez.
- Les miroirs sont réconciliés à chaque passe : réservation déplacée → miroir déplacé ; annulée → miroir supprimé.
- Ils n'apparaissent pas sur l'écran de salle, qui montre déjà la réunion d'origine, mais sont visibles et étiquetés dans la console.
- Le mécanisme est désactivable ; l'arbitrage, lui, continue de refuser les conflits.
Console d'administration
Une interface web servie par le serveur, accessible depuis n'importe quel poste du réseau autorisé. Neuf onglets :
| Onglet | Contenu |
|---|---|
| Vue d'ensemble | État du déploiement, salles et écrans en un coup d'œil, version du serveur. |
| Salles | Création et modification : nom, description, adresse du calendrier de ressource, organisation, thème, logo, mode de jointure. |
| Appareils | Les écrans provisionnés, leur salle, leur clé, leur dernier contact. Suppression = révocation immédiate. |
| Organisations | Connexions Microsoft 365 et Google Workspace, avec vérification des identifiants à l'enregistrement. |
| Broker | Connexions salle ↔ organisation, synchronisation manuelle, journal des décisions d'arbitrage avec leur motif. |
| Comptes | Comptes nominatifs d'administration. Tous ont un accès complet. |
| Journal | 90 jours d'actions de modification et de tentatives de connexion, attribuées à leur auteur. |
| Statistiques | Usage sur 7, 30 ou 90 jours : réunions tenues, durée moyenne, participants, heures occupées, répartition par salle et par plateforme. |
| Licence | Client, sièges utilisés et disponibles, échéance, activation et retrait de clé. |
Langue de la console : français et anglais. L'écran de salle en parle huit — il est vu par vos visiteurs, la console ne l'est que par vos équipes informatiques.
03 Architecture
Un serveur central, un écran par salle, et les appareils des participants qui rejoignent le tableau blanc. Rien d'autre.
Le serveur
Un service unique, livré sous forme de conteneur, qui rassemble quatre rôles :
| Rôle | Description |
|---|---|
| API des écrans | Planning de la salle, informations de la salle, réunion instantanée, export PDF. Authentifiée par une clé propre à chaque écran. |
| Console d'administration | Interface web complète, authentifiée par compte nominatif. |
| Relais temps réel | Diffusion des tableaux blancs entre les participants d'une même session, avec resynchronisation des arrivants tardifs. |
| Connecteurs calendrier | Lecture des boîtes de ressource Microsoft 365 et Google Workspace, fusion des vues, arbitrage du broker. |
Toutes les données persistantes — salles, écrans, organisations, licence, réservations arbitrées, logos — tiennent dans un seul volume : une base de données embarquée et un dossier de fichiers. Il n'y a pas de serveur de base de données externe à installer, à sauvegarder ou à mettre à jour.
L'écran de salle
Un exécutable Windows unique, qui embarque tout ce dont il a besoin. Il s'installe pour la machine entière — nécessaire, puisqu'en mode kiosque Windows l'écran tourne sous un compte dédié, distinct de celui du technicien qui installe. Trois emplacements sur la machine, qui survivent à une désinstallation : l'adresse du serveur, la bibliothèque de fonds d'écran, et la clé d'identification de l'écran. Une mise à jour n'oblige donc jamais à reprovisionner la salle.
Authentification, en résumé
| Lien | Mécanisme |
|---|---|
| Écran → serveur | Clé d'appareil, obtenue par scan d'un QR code au provisionnement, stockée sur la machine et jamais transmise par fichier de configuration. Révocable à tout instant depuis la console. |
| Administrateur → serveur | Compte nominatif (identifiant + mot de passe), avec changement de mot de passe imposé au premier accès et journal d'audit attribué. |
| Serveur → Google Workspace | OAuth 2.0 avec jeton de rafraîchissement ; le jeton d'accès est renouvelé automatiquement. |
| Serveur → Microsoft 365 | Flux client credentials au niveau application — aucun utilisateur n'a besoin de se connecter. Jeton renouvelé automatiquement chaque heure. |
| Participants → tableau blanc | Lien de session, transmis par QR code ou par email. Aucun compte, aucune application. |
04 Prérequis
Ce qu'il faut avoir en place avant l'installation, côté serveur, côté écran et côté réseau.
Serveur
| Composant | Version minimale | Notes |
|---|---|---|
| Linux | Ubuntu 22.04 LTS ou Debian 12 | Toute distribution disposant d'un moteur de conteneurs stable convient. |
| Moteur de conteneurs | Docker Engine 24+ | Le moteur seul suffit ; aucune édition de bureau n'est requise ni recommandée. |
| Compose | v2 (greffon) | Fourni avec les paquets Docker actuels. |
Écran de salle
| Composant | Requis |
|---|---|
| Windows 10 ou 11 | Sur le module OPS ou le PC de la salle. Éditions Enterprise, Education ou IoT Enterprise recommandées pour le verrouillage complet du poste (voir Installation de l'écran). |
| Microsoft Edge | Pour les visioconférences. Présent d'origine sur Windows. À défaut, le navigateur par défaut est utilisé, sans plein écran forcé. |
| Rien d'autre | L'application autonome embarque son service et son moteur d'exécution. Aucun prérequis logiciel supplémentaire, aucune couche de virtualisation. |
Calendriers
- Une boîte de ressource (compte de salle) par salle physique, dans Microsoft 365 et/ou Google Workspace — celle que vos collaborateurs réservent déjà.
- Pour Microsoft : une inscription d'application dans votre annuaire, avec consentement administrateur. Pour Google : un projet Cloud avec l'API Calendar activée.
- Pour la réunion instantanée : une licence incluant Teams sur la boîte de la salle (Teams Rooms Basic, gratuite jusqu'à 25 salles, suffit) ou l'API Google Meet activée.
Réseau
| Contrainte | Détail |
|---|---|
| Protocole ouvert | TCP 4001 vers le serveur, depuis les écrans et les postes d'administration. |
| Sortie du serveur | HTTPS 443 vers graph.microsoft.com et googleapis.com pour la lecture des calendriers. |
| Joignabilité | Les écrans doivent atteindre le serveur : même LAN, VPN d'entreprise, ou nom public avec TLS. |
| TLS | Recommandé. Autorité locale intégrée au serveur, certificat d'entreprise, ou reverse proxy. Voir Chiffrement. |
| SMTP | Optionnel — port 587 ou 465 vers votre relais, pour l'envoi des comptes-rendus. |
La matrice complète, flux par flux, figure au chapitre 6.
05 Dimensionnement du serveur
Quatre paliers, du site pilote au parc de 500 écrans. Le dimensionnement est volontairement confortable : l'empreinte réelle est plus légère.
Palier 1 — jusqu'à 50 écrans
Déploiement pilote, bureau unique.
| Ressource | Minimum | Recommandé |
|---|---|---|
| CPU | 2 vCPU | 2 vCPU |
| RAM | 2 Go | 4 Go |
| Stockage | 20 Go SSD | 40 Go SSD |
| Réseau | 10 Mbps | 100 Mbps |
Charge estimée : ~1 requête/s, 50 connexions temps réel actives. Un VPS d'entrée de gamme ou un mini-PC en local convient parfaitement.
Palier 2 — 50 à 150 écrans
Site unique ou multi-sites modeste.
| Ressource | Minimum | Recommandé |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 Go | 8 Go |
| Stockage | 40 Go SSD | 80 Go SSD |
| Réseau | 100 Mbps | 100 Mbps |
Charge estimée : 3 à 5 requêtes/s, 150 connexions temps réel, arbitrage du broker toutes les 60 s. Un VPS standard est idéal.
Palier 3 — 150 à 300 écrans
Campus ou multi-sites actifs.
| Ressource | Minimum | Recommandé |
|---|---|---|
| CPU | 4 vCPU | 8 vCPU |
| RAM | 8 Go | 16 Go |
| Stockage | 80 Go SSD NVMe | 150 Go SSD NVMe |
| Réseau | 100 Mbps | 1 Gbps |
Charge estimée : 5 à 10 requêtes/s, 300 connexions temps réel, broker sur plusieurs organisations. Serveur dédié ou VPS « CPU optimisé » recommandé, avec sauvegarde quotidienne automatisée.
Palier 4 — 300 à 500 écrans
| Ressource | Minimum | Recommandé |
|---|---|---|
| CPU | 8 vCPU | 16 vCPU |
| RAM | 16 Go | 32 Go |
| Stockage | 150 Go SSD NVMe | 300 Go SSD NVMe (RAID-1) |
| Réseau | 1 Gbps | 1 Gbps |
Charge estimée à 450 écrans : ~15 requêtes/s en continu, 450 connexions temps réel permanentes, broker sur potentiellement des dizaines de salles multi-organisations. La RAM est le facteur dimensionnant principal.
Recommandations supplémentaires à ce palier :
- Serveur dédié (bare metal ou instance cloud compute-optimisée) plutôt qu'un VPS partagé.
- Sauvegarde quotidienne automatisée hors-site — un seul volume contient l'intégralité de l'état.
- Supervision de disponibilité sur le point de contrôle
/health. - TLS obligatoire.
- Onduleur ou redémarrage automatique du service (déjà configuré par défaut).
Récapitulatif
| Palier | Écrans | CPU | RAM | Stockage | Profil |
|---|---|---|---|---|---|
| Starter | < 50 | 2 vCPU | 2–4 Go | 20–40 Go | VPS entrée de gamme / mini-PC |
| Standard | 50–150 | 2–4 vCPU | 4–8 Go | 40–80 Go | VPS standard |
| Pro | 150–300 | 4–8 vCPU | 8–16 Go | 80–150 Go | Dédié ou VPS CPU-optimisé |
| Enterprise | 300–500 | 8–16 vCPU | 16–32 Go | 150–300 Go NVMe | Dédié ou cloud compute |
L'empreinte serveur est intentionnellement légère : base de données embarquée, un seul conteneur, zéro dépendance tierce à installer. Le dimensionnement ci-dessus est volontairement confortable — en pratique, plusieurs centaines de connexions simultanées tiennent sans difficulté sur du matériel modeste.
06 Matrice de flux réseau
Tous les flux, source par destination, à remettre telle quelle à votre équipe réseau ou sécurité.
| Symbole | Sens |
|---|---|
| → | Flux sortant — la source initie la connexion |
| ↔ | Flux bidirectionnel persistant (WebSocket) |
1 · Écrans → Serveur (réseau interne)
| Port | Proto | Sens | Objet | Fréquence | Requis |
|---|---|---|---|---|---|
| 4001 | TCP / HTTP(S) | → | Vérification de connectivité | ~10 s | Oui |
| 4001 | TCP / HTTP(S) | → | Version du serveur | Au démarrage | Oui |
| 4001 | TCP / HTTP(S) | → | Vérification de la clé d'appareil | Au démarrage | Oui |
| 4001 | TCP / HTTP(S) | → | Relevé du planning de la salle | ~30 s | Oui |
| 4001 | TCP / WS(S) | ↔ | Canal temps réel de la salle | Persistante | Oui |
| 4001 | TCP / WS(S) | ↔ | Tableau blanc collaboratif | À l'ouverture | Oui |
| 4001 | TCP / HTTP(S) | → | Création d'une réunion instantanée | Sur demande | Oui |
| 4001 | TCP / HTTP(S) | → | Compte-rendu PDF | Fin de réunion | Optionnel |
| 4001 | TCP / HTTP(S) | → | Envoi du lien du tableau par email | Sur demande | Optionnel |
2 · Poste d'administration → Serveur (réseau interne)
| Port | Proto | Sens | Objet | Fréquence | Requis |
|---|---|---|---|---|---|
| 4001 | TCP / HTTP(S) | → | Chargement de la console | Session | Oui |
| 4001 | TCP / HTTP(S) | → | Authentification | Session | Oui |
| 4001 | TCP / HTTP(S) | → | Gestion des salles | Session | Oui |
| 4001 | TCP / HTTP(S) | → | Gestion des appareils | Session | Oui |
| 4001 | TCP / HTTP(S) | → | Gestion des organisations | Session | Oui |
| 4001 | TCP / HTTP(S) | → | Journal d'audit | Session | Oui |
| 4001 | TCP / HTTP(S) | → | Arbitrage multi-organisations | Session | Optionnel |
| 4001 | TCP / HTTP(S) | → | Gestion de la licence | Session | Oui |
| 4001 | TCP / HTTP(S) | → | Statistiques d'usage | Session | Oui |
| 4001 | TCP / HTTP(S) | → | Bilan de santé du déploiement | Session | Oui |
3 · Provisionnement & tableau blanc (réseau interne)
| Source | Port | Proto | Sens | Objet | Fréquence | Requis |
|---|---|---|---|---|---|---|
| Mobile / PC technicien | 4001 | TCP / HTTP(S) | → | Scan du QR de provisionnement | À chaque enrôlement | Oui |
| Mobile / PC technicien | 4001 | TCP / HTTP(S) | → | Association salle ↔ écran | À chaque enrôlement | Oui |
| Participants | 4001 | TCP / HTTP(S) | → | Page du tableau blanc | Sur invitation | Optionnel |
| Participants | 4001 | TCP / WS(S) | ↔ | Collaboration sur le tableau | Pendant la réunion | Optionnel |
Les participants se connectent au serveur (directement, ou via le relais de l'écran de salle) et jamais à un service tiers. Un seul port à ouvrir : 4001.
4 · Serveur → Fournisseurs de calendrier (sortant Internet)
| Destination | Port | Proto | Sens | Objet | Fréquence | Requis |
|---|---|---|---|---|---|---|
oauth2.googleapis.com | 443 | TCP / HTTPS | → | Renouvellement du jeton d'accès Google | ~1 h | Si Google |
www.googleapis.com | 443 | TCP / HTTPS | → | Lecture du planning de la salle | À chaque relevé | Si Google |
meet.googleapis.com | 443 | TCP / HTTPS | → | Création d'une réunion Meet instantanée | Sur demande | Si réunion instantanée |
login.microsoftonline.com | 443 | TCP / HTTPS | → | Acquisition du jeton applicatif | ~1 h | Si Microsoft |
graph.microsoft.com | 443 | TCP / HTTPS | → | Lecture du planning Exchange | À chaque relevé | Si Microsoft |
graph.microsoft.com | 443 | TCP / HTTPS | → | Création d'une réunion Teams instantanée | Sur demande | Si réunion instantanée |
graph.microsoft.com | 443 | TCP / HTTPS | → | Réponse aux invitations (arbitrage) et miroirs d'occupation | 60 s (réglable) | Si broker |
4 bis · Quand cette sortie passe par un proxy
Sur un réseau fermé, les flux ci-dessus ne partent pas en direct : ils traversent un proxy d'entreprise, parfois doublé d'une inspection TLS. Deux points décident du succès de l'installation, et aucun des deux ne se devine.
Le proxy se déclare dans le bloc environment: du service server — et non dans le seul fichier .env, dont le contenu n'atteint pas le conteneur :
environment:
HTTPS_PROXY: http://proxy.entreprise.local:8080
HTTP_PROXY: http://proxy.entreprise.local:8080
NO_PROXY: localhost,127.0.0.1,10.0.0.0/8
Le serveur tunnelise toutes ses requêtes par CONNECT en 443, y compris celles adressées à des URL en http://. Un proxy qui ne relaierait que du HTTP en clair ne convient pas : sa liste blanche doit nommer login.microsoftonline.com, graph.microsoft.com, oauth2.googleapis.com et www.googleapis.com.
Derrière une inspection TLS (Zscaler, Netskope, Fortinet…), l'équipement présente un certificat signé par une autorité interne. Il faut la donner au serveur — monter le fichier, puis pointer son chemin dans le conteneur :
volumes:
- /etc/ssl/certs/ca-entreprise.crt:/app/ca-entreprise.crt:ro
environment:
NODE_EXTRA_CA_CERTS: /app/ca-entreprise.crt
Désactiver la vérification des certificats à la place reviendrait à ouvrir le trafic — jetons de calendrier compris — à quiconque se trouve sur le trajet. Kelra Room ne propose pas ce réglage.
5 · Serveur → Relais SMTP (sortant)
| Destination | Port | Proto | Sens | Objet | Fréquence | Requis |
|---|---|---|---|---|---|---|
| Relais SMTP client | 587 | TCP / STARTTLS | → | Compte-rendu PDF et liens de tableau blanc | Sur demande | Optionnel |
| Relais SMTP client | 465 | TCP / TLS | → | Idem, variante TLS implicite | Sur demande | Optionnel |
6 · Écrans → Plateformes de visioconférence (sortant Internet)
Ces flux partent du réseau de l'écran de salle, via le navigateur, et jamais du serveur.
| Destination | Port | Proto | Sens | Objet |
|---|---|---|---|---|
meet.google.com | 443 | TCP / HTTPS | → | Interface Google Meet |
| Serveurs STUN/TURN Google | 443 / 19302 | TCP + UDP | ↔ | Média WebRTC Google Meet |
teams.microsoft.com | 443 | TCP / HTTPS | → | Interface Microsoft Teams |
| Serveurs média Microsoft Teams | 443 / 3478-3481 | TCP + UDP | ↔ | Média WebRTC Teams |
zoom.us | 443 | TCP / HTTPS | → | Interface Zoom |
| Serveurs média Zoom | 443 / 8801-8802 | TCP + UDP | ↔ | Média Zoom |
Microsoft publie la liste exhaustive de ses plages d'adresses et ports Teams sur aka.ms/ipurlsplan. À intégrer à la politique de filtrage si les écrans passent par un proxy ou un pare-feu applicatif. Il en va de même pour les plages publiées par Google et Zoom.
Résumé des règles de pare-feu
| Règle | Destination | Port | Sens | Priorité |
|---|---|---|---|---|
| Écrans → serveur | Serveur Kelra Room | TCP 4001 | Entrant serveur | Obligatoire |
| Admins → serveur | Serveur Kelra Room | TCP 4001 | Entrant serveur | Obligatoire |
| Serveur → Google | *.googleapis.com, *.google.com | TCP 443 | Sortant serveur | Si Google |
| Serveur → Microsoft | login.microsoftonline.com, graph.microsoft.com | TCP 443 | Sortant serveur | Si Microsoft 365 |
| Serveur → SMTP | Relais SMTP | TCP 587 ou 465 | Sortant serveur | Optionnel |
| Écrans → visio | Internet (Meet / Teams / Zoom…) | TCP 443 + UDP média | Sortant écrans | Obligatoire pour les appels |
07 Installation
Compter une demi-journée pour le serveur et la première salle, puis une dizaine de minutes par salle supplémentaire.
Serveur
Le serveur est livré sous forme de bundle de déploiement contenant l'image du service et son fichier d'orchestration. La mise en service tient en trois temps :
- Déposer le bundle sur la machine Linux et renseigner le fichier de configuration
.env— au minimum un secret d'administration long et aléatoire. - Démarrer le service. Il se relance automatiquement au redémarrage de la machine.
Démarrage
docker compose up server -d - Vérifier. L'API répond sur
http://<IP_SERVEUR>:4001, la console surhttp://<IP_SERVEUR>:4001/admin. Le point/healthrenvoie la version exacte déployée.
Le port 4001 est celui exposé sur la machine hôte. S'il est déjà pris, il se change dans le fichier d'orchestration sans rien reconstruire — pensez alors à reporter le nouveau port dans l'adresse renseignée sur les écrans.
Chiffrement des échanges (TLS)
Le serveur sait servir la console et l'API en https sans composant supplémentaire. Trois modes, choisis dans le fichier .env :
| Mode | Réglage | Usage |
|---|---|---|
| Clair | défaut, rien à déclarer | Le serveur écoute en http. Acceptable sur un LAN d'entreprise maîtrisé. |
| Autorité locale | TLS_SELF_SIGNED=1 + TLS_NAMES | Le serveur crée sa propre autorité de certification et son certificat au premier démarrage. Aucun domaine public, aucune sortie Internet nécessaire. |
| Certificat fourni | TLS_CERT_PATH + TLS_KEY_PATH | Votre certificat, émis par votre PKI d'entreprise ou par une autorité publique. |
L'autorité locale, en pratique
TLS_NAMES énumère les noms et adresses sous lesquels le serveur sera joint — par exemple 192.168.1.10,salles.interne,localhost. Ils sont inscrits dans le certificat : une adresse absente de cette liste sera refusée par le navigateur. L'autorité créée reste stable, et survit au renouvellement du certificat serveur : les écrans déjà déployés n'ont rien à refaire.
- Postes d'administration — l'autorité se télécharge sur
/tls/ca.crtet s'installe une fois dans le magasin de certificats du poste ou du domaine. La console est ensuite servie sans avertissement. - Écrans de salle — l'application Windows récupère l'autorité au premier contact avec le serveur et l'épingle. Elle refuse ensuite toute autorité différente : un serveur substitué en cours de route est rejeté, pas accepté en silence. L'empreinte est affichée au démarrage du serveur et journalisée par l'application au moment de l'épinglage — les comparer une fois vaut vérification.
Un écran servi en https qui appellerait un serveur en http verrait ses requêtes bloquées par le navigateur. Les deux basculent ensemble : trancher avant l'enrôlement évite de repasser sur chaque salle.
Si l'adresse du kiosque est restée en http
C'est l'oubli le plus courant après une bascule. Une adresse restée en http:// face à un serveur qui écoute en HTTPS rendait l'écran inutilisable sans qu'aucun message ne désigne la cause : le lien du QR code aboutissait sur un 404 — souvent celui du proxy d'entreprise, qui semblait donc accuser l'application — et le compte à rebours de l'écran continuait de tourner pendant que la console répondait « Lien expiré ».
Trois garde-fous rattrapent l'oubli. Ils ne le remplacent pas.
- Le kiosque corrige l'adresse tout seul. Il interroge le serveur au démarrage, puis à nouveau depuis le navigateur de l'écran, et emploie le schéma réellement servi. La correction vaut pour la session en cours et n'est pas enregistrée.
- L'écran l'affiche, et le journal le répète. Un bandeau annonce la correction ;
docker compose logs kioskdonne l'adresse configurée, celle employée, et la variable à corriger. CorrigerOPENROOM_SERVER_URLreste nécessaire — sinon le décalage revient au prochain déploiement. - Le serveur nomme la panne. Une requête en clair sur un port HTTPS n'aboutit à aucune réponse : le handshake échoue avant que l'application existe, et aucune redirection ne peut être renvoyée.
docker compose logs serverporte désormais une ligne[tls] ⚠ une requête en CLAIR est arrivée sur ce port.
Si l'écran a déjà épinglé l'autorité d'un autre serveur — écran déplacé, serveur réinstallé — il refuse le nouveau. Le refus est voulu et ne changera pas : accepter en silence une autorité différente annulerait le bénéfice du chiffrement.
Jusqu'en 1.0.5, ce refus s'affichait « Serveur injoignable » et envoyait chercher un problème de réseau inexistant. Depuis la 1.0.6, l'écran affiche « Certificat du serveur refusé », les deux empreintes — celle qu'il a épinglée, celle que le serveur présente — et le bouton « Changer l'adresse du serveur », qui efface l'adresse et l'épinglage puis redémarre.
Comparer l'empreinte présentée avec celle que le serveur journalise à son démarrage ([tls] empreinte de l'autorité) tranche la question : si elle correspond, le serveur a bien été réinstallé et le déblocage est légitime ; si elle diffère, l'écran ne parle pas au serveur qu'on croit.
Il ne décompte que si le jeton est enregistré côté serveur. Un affichage --:-- accompagné de « En attente du serveur » signifie que l'écran ne joint pas le serveur — et non que le lien est encore valide. C'est le premier endroit où regarder.
Derrière un reverse proxy qui termine le TLS (Caddy, Traefik, Tailscale), le serveur écoute en clair alors que ses clients parlent en HTTPS. Il suit alors l'en-tête x-forwarded-proto, que ces proxys posent par défaut, et annonce bien https://. L'en-tête n'est consulté que lorsque le serveur n'assure pas lui-même le chiffrement : aucune requête forgée ne peut faire annoncer une URL en clair par un serveur chiffré.
Les autres voies
Réseau privé chiffré
Sur un parc distribué : si vos machines sont déjà sur un maillage privé (type Tailscale), le certificat est fourni et le serveur devient joignable sous un nom stable, sans exposition Internet.
Reverse proxy public
Un proxy à certificat automatique (Caddy, Traefik) devant le serveur. Nécessite un nom de domaine résolvable et le port 443 accessible pour la validation du certificat.
Écran de salle
Un installeur Windows unique, fourni par Kelra. Il embarque l'application, son service et son moteur d'exécution : rien d'autre à installer sur la machine, aucune couche de virtualisation.
Ce que fait l'installeur
- Installation par machine, dans
Program Files— une élévation est demandée une fois. C'est nécessaire : en mode kiosque, l'écran tourne sous un compte dédié, distinct de celui du technicien. - Au premier lancement, l'application inscrit son démarrage à l'ouverture de session. Neutralisable si vous pilotez le lancement par une stratégie Windows.
- L'application est déjà en plein écran, sans barre d'adresse ni onglets.
Premier lancement
- Renseigner l'adresse du serveur sur l'écran de premier lancement, au doigt. Un bouton « Tester la connexion » valide l'adresse ; l'enregistrement n'est possible qu'après un test réussi, et une seule fois — un enregistrement modifiable à tout moment permettrait à n'importe quel poste du réseau de rediriger l'écran vers un serveur qu'il contrôle.
- Provisionner l'écran : il affiche alors un QR code, valable 5 minutes et renouvelé automatiquement. Le scanner avec un téléphone (ou ouvrir l'URL affichée dessous depuis un poste ayant accès au serveur), choisir la salle dans la liste, valider. L'écran se configure seul dans les secondes qui suivent.
- Régler l'horloge et le fuseau horaire de la machine — voir l'encadré ci-dessous.
Les horaires affichés sont calculés avec l'horloge et le fuseau du système Windows de l'écran. Un module OPS sorti d'usine est fréquemment réglé sur un fuseau par défaut : l'écran affiche alors des créneaux décalés de plusieurs heures, et personne ne pense à incriminer la pendule. Le panneau de diagnostic du kiosque compare en permanence l'heure de l'écran à celle du serveur et signale tout écart supérieur à deux minutes.
Verrouiller Windows par-dessus
L'application est déjà verrouillée en plein écran. Le mode kiosque de Windows n'ajoute que trois choses : empêcher l'évasion vers le bureau, relancer l'application si elle se ferme, et interdire les autres programmes.
| Édition Windows | Ce qui est possible |
|---|---|
| Enterprise / Education / IoT Enterprise | Shell Launcher : l'application remplace l'explorateur Windows. Le verrouillage le plus complet, et la configuration recommandée. |
| Pro | Shell Launcher indisponible. Deux replis : ouverture de session automatique sur un compte dédié avec démarrage de l'application (le plus simple, et suffisant puisque la fenêtre est déjà verrouillée), ou l'expérience utilisateur restreinte de l'accès assigné, qui laisse un bureau bridé plutôt qu'un vrai shell. |
Un script de diagnostic fourni avec le produit répond d'un coup à toutes les questions d'édition, de version d'Edge et de stratégie applicable sur la machine.
Supprimer les sollicitations du navigateur
À faire une fois par machine. Un écran de salle ne doit rien demander : on appuie sur « Rejoindre » et on est dans la réunion. L'application prépare déjà le profil de visio à chaque lancement — traduction désactivée, notifications et géolocalisation bloquées, caméra et micro accordés d'office aux plateformes connues, bannières de premier lancement écartées.
Reste une boîte de dialogue que seule une stratégie d'entreprise peut supprimer : « Ce site tente d'ouvrir Microsoft Teams ». La page web de Teams cherche à lancer l'application lourde, qui n'a pas à être installée sur un écran de salle. Une stratégie Edge bloquant les protocoles msteams:, msteams-enterprise:, zoommtg: et zoomus: l'élimine sans rien afficher — la procédure exacte est fournie avec le produit.
Cette stratégie vaut pour toutes les instances du navigateur, pas seulement pour la nôtre. Une application qui modifierait les stratégies du navigateur au démarrage, sans que l'exploitant le sache, serait un mauvais voisin sur un poste géré. C'est une étape d'installation, assumée comme telle.
Ce qui subsiste : Teams affiche sa propre page « Comment voulez-vous rejoindre votre réunion ? » avec un bouton « Continuer sur ce navigateur ». Ce n'est pas une boîte de dialogue du navigateur mais le contenu de la page Microsoft — aucune stratégie ne l'atteint. Un clic reste donc nécessaire sur les réunions Teams. Des paramètres d'URL circulent pour la contourner, mais ils ne sont pas documentés par Microsoft : les câbler en dur ferait dépendre l'ouverture des réunions, sur tout un parc, d'un comportement modifiable sans préavis.
Adresses utilisées par les QR codes
Les URL partagées (QR du tableau blanc, QR de provisionnement) ne doivent jamais contenir localhost. L'écran détecte automatiquement son adresse locale, en écartant les cartes virtuelles. Si la détection choisit la mauvaise interface, l'adresse peut être forcée par configuration. Pensez à autoriser les ports concernés dans le pare-feu Windows, sinon les participants qui scannent le QR n'atteindront pas le tableau.
08 Configuration
Tout se règle depuis la console d'administration, sauf les prérequis à créer chez Microsoft et Google.
Console et comptes
La console s'ouvre sur http://<IP_SERVEUR>:4001/admin.
- Première connexion — le serveur crée au premier démarrage un compte
admin/admin. Un changement de mot de passe est imposé immédiatement, et tant qu'il n'est pas fait l'API entière refuse de répondre. Un couple d'identifiants par défaut connu est ce que les robots tentent en premier ; le verrou existe pour qu'un déploiement oublié ne reste pas ouvert. - Comptes nominatifs — onglet Comptes : un compte par administrateur. Tous ont un accès complet ; pour cloisonner plusieurs entités, déployez une instance par entité plutôt que de partager celle-ci.
- Connecter une organisation — onglet Organisations : Microsoft 365 et/ou Google Workspace (sections suivantes).
- Créer les salles — onglet Salles : nom, description, adresse du calendrier de ressource (par ex.
salle-a@monentreprise.com), organisation, thème, logo. - Provisionner les écrans — par QR code depuis chaque écran, ou en créant l'appareil à la main dans l'onglet Appareils.
L'onglet Journal conserve 90 jours d'actions de modification et de tentatives de connexion, attribuées à leur auteur. Les libellés y restent en français : ils sont composés au moment de l'écriture et stockés tels quels — un journal doit se lire tel qu'il a été écrit, pas être retraduit après coup.
Il n'existe pas de « mot de passe oublié » par email sur une installation auto-hébergée. Le recours est une commande de réinitialisation à lancer depuis la machine du serveur, documentée dans le guide d'exploitation fourni. Conservez le secret d'administration défini à l'installation dans votre coffre-fort d'entreprise.
Certains navigateurs — Brave notamment — bloquent par défaut les requêtes vers les adresses IP privées. Pour la console, préférez Firefox, Edge ou Chrome.
Connecter Google Workspace
Côté Google Cloud
- Créer un projet (ou en réutiliser un) sur la console Google Cloud.
- Activer l'API Google Calendar. Pour la réunion instantanée, activer également l'API Google Meet.
- Créer des identifiants OAuth 2.0 de type « Application Web » et noter l'identifiant client et le secret client.
- Obtenir un jeton de rafraîchissement avec le compte ayant accès aux calendriers de ressource. Les portées nécessaires : lecture du calendrier, et création d'espaces Meet si la réunion instantanée est souhaitée. Pour l'arbitrage multi-organisations, la portée d'écriture complète du calendrier est requise.
Côté Kelra Room
Onglet Organisations → Nouvelle organisation :
| Champ | Valeur |
|---|---|
| Fournisseur | |
| Nom de l'organisation | Votre entreprise |
| Domaine | monentreprise.com |
| Identifiant client / Secret client | Depuis la console Google Cloud |
| Jeton de rafraîchissement | Obtenu à l'étape précédente |
« Vérifier et enregistrer » teste réellement les identifiants avant de les accepter. Le jeton de rafraîchissement reste valable tant que l'accès n'est pas révoqué ; le jeton d'accès est renouvelé automatiquement.
Connecter Microsoft 365
Côté Azure / Entra ID
- Inscrire une application — Inscriptions d'applications → Nouvelle inscription. Comptes dans cet annuaire organisationnel uniquement ; aucune URI de redirection. Noter l'ID de locataire et l'ID d'application.
- Choisir le moyen d'authentification — deux options, pour un fonctionnement identique. Secret client : Certificats et secrets → durée 24 mois → copier la valeur (et non l'identifiant) du secret. Certificat : charger un certificat public dans l'onglet Certificats de la même page. Le certificat est recommandé, et devient indispensable si votre politique interne interdit les secrets clients.
- Accorder la permission
Calendars.ReadWritede type Application sur Microsoft Graph, puis cliquer Accorder le consentement administrateur. Une seule permission couvre l'affichage du planning, la réunion instantanée et l'arbitrage. La permission en lecture seule afficherait le calendrier mais ferait échouer la création de réunion.
Ces permissions sont de type Application, pas déléguée : aucun utilisateur n'a besoin de se connecter, et aucune session utilisateur n'est stockée. La boîte de la salle doit disposer d'une licence incluant Teams pour que les réunions créées portent un lien de visio.
Authentification par certificat — sans secret partagé
Beaucoup d'organisations interdisent les secrets clients par politique : un secret est une chaîne durable, recopiée dans un fichier de configuration, que rien ne distingue dans un journal d'audit. Avec un certificat, Kelra Room signe un jeton de courte durée avec une clé privée qui ne quitte jamais votre serveur ; seule la partie publique est déposée dans Entra.
Entra ne valide pas la chaîne de confiance d'un certificat d'authentification d'application : il enregistre la clé publique et retrouve le certificat par son empreinte. Un certificat auto-signé est donc un cas nominal, et un certificat délivré par votre PKI interne convient tout autant — avec l'avantage de votre gouvernance existante : inventaire, alertes d'expiration, révocation.
Sans PKI, l'utilitaire est embarqué dans l'image du serveur :
docker compose exec server node scripts/generer-certificat-entra.mjs kelra-room 2
Il produit un .cer — le certificat public, à charger dans Entra — et un .key, la clé privée, à renseigner dans la console d'administration et à ne transmettre à personne. L'empreinte affichée doit correspondre à celle qu'affiche le portail Azure après chargement.
Deux contraintes imposées par Entra, et non par Kelra Room : la clé doit être RSA de 2048 bits au minimum — les certificats ECDSA sont refusés, alors qu'un profil PKI moderne les délivre souvent par défaut — et elle doit être sans mot de passe, le serveur démarrant sans intervention humaine. La console signale ces deux cas à l'enregistrement, ainsi qu'un certificat et une clé qui ne formeraient pas une paire.
Ce certificat n'a aucun rapport avec le certificat TLS qui chiffre les échanges entre les écrans et le serveur. Celui-ci authentifie l'application auprès de Microsoft ; l'autre protège le transport. Les deux coexistent sans se connaître.
Optionnel — accueillir les participants externes
Par défaut, Teams place les participants hors de votre annuaire en salle d'attente — or personne n'est connecté côté écran pour les admettre. Pour ouvrir automatiquement la salle d'attente sur les réunions instantanées, une permission supplémentaire (OnlineMeetings.ReadWrite.All) et une Application Access Policy Teams sont nécessaires. Sans cette configuration, la réunion instantanée fonctionne quand même : les participants internes entrent directement, seuls les externes doivent être admis.
Côté Kelra Room
| Champ | Valeur |
|---|---|
| Fournisseur | Microsoft |
| Nom de l'organisation | Votre entreprise |
| ID de locataire | Directory (tenant) ID |
| ID client | Application (client) ID |
| Secret client | Valeur du secret créé |
Broker multi-organisations
Par défaut, un calendrier de ressource accepte automatiquement les invitations, avant que Kelra Room ait pu arbitrer. Ce comportement doit être désactivé sur chaque calendrier de ressource relié au broker — dans Exchange Online pour Microsoft, dans les paramètres de la ressource pour Google Workspace. Les invitations doivent rester en attente tant que le broker n'a pas répondu. Si l'acceptation automatique reste active, tout semble fonctionner mais les conflits entre organisations ne sont jamais refusés.
Permissions
| Fournisseur | Permission | Remarque |
|---|---|---|
| Microsoft | Calendars.ReadWrite (Application) | Déjà accordée à l'étape précédente : rien à ajouter. Sert à répondre aux invitations et à poser les miroirs d'occupation. |
| Portée d'écriture du calendrier | La portée de lecture seule ne suffit pas. Le compte doit en outre disposer du droit « Apporter des modifications aux événements » sur le calendrier de ressource. |
Relier une salle à ses organisations
- Onglet Broker → Relier un calendrier : choisir la salle, l'organisation, et saisir l'adresse de la boîte de ressource dans cette organisation. Chaque organisation a la sienne pour la même salle physique.
- Recommencer pour la seconde organisation. Tant qu'une salle n'a qu'un calendrier relié, le broker n'a rien à arbitrer et le signale.
- Synchroniser force un relevé immédiat et rend compte des réservations vues, des décisions prises et des erreurs rencontrées.
- Réservations déplie ce que le broker a vu et décidé pour cette salle : acceptée, refusée avec le motif et l'organisation concurrente, en attente, annulée.
Une salle n'accepte qu'une connexion par organisation, et un calendrier de ressource ne peut être relié qu'à une seule salle d'une même organisation — la console refuse explicitement les doublons, qui rendraient l'arbitrage contradictoire.
Réglages du broker
| Réglage | Défaut | Description |
|---|---|---|
| Intervalle d'arbitrage | 60 s | Période du relevé des invitations en attente. Le mécanisme ne tourne que si au moins une salle a des connexions broker — aucun coût tant que la fonction n'est pas utilisée. |
| Miroirs d'occupation | activés | Pose d'un événement d'occupation neutre sur les autres calendriers de la salle. Désactivable ; l'arbitrage reste actif. |
| Titre des miroirs | « Réservé — autre organisation » | Tel que le voient les utilisateurs de l'autre organisation. N'y injectez jamais le sujet réel : il appartient à l'autre organisation. |
Les miroirs réduisent la fenêtre pendant laquelle la salle apparaît libre chez le second demandeur, sans la fermer complètement : elle vaut au plus un cycle d'arbitrage. Une réservation lancée sur la seconde organisation dans cet intervalle reçoit encore un refus motivé.
La synchronisation couvre une fenêtre allant de 1 jour en arrière à 60 jours en avant. Retirer une connexion nettoie ses miroirs avant de la supprimer.
Envoi d'emails et export PDF
Le téléchargement du PDF fonctionne sans configuration. L'envoi par email nécessite un relais SMTP, déclaré côté serveur :
| Réglage | Rôle |
|---|---|
| Hôte SMTP | Obligatoire pour activer l'envoi. Sans lui, l'écran indique « SMTP non configuré » et le téléchargement direct reste disponible. |
| Port | 587 par défaut (STARTTLS), ou 465 en TLS implicite. |
| Identifiants | Utilisateur et mot de passe du relais. |
| Adresse d'expédition | L'adresse qui apparaîtra dans les emails envoyés aux participants. |
Le SMTP sert à deux usages : l'envoi du compte-rendu PDF en fin de réunion, et l'envoi du lien du tableau blanc aux participants — utile pendant une visio, quand les participants distants ne peuvent pas scanner le QR affiché dans la salle.
Le panneau de diagnostic de l'écran teste la configuration SMTP (connexion et authentification, sans envoyer de message). Un résultat positif prouve que le relais accepte la connexion et les identifiants, pas que le message sera distribué : relais refusé, classement en indésirable et quotas ne se voient qu'à l'usage réel.
Apparence des écrans
| Réglage | Où | Détail |
|---|---|---|
| Thème | Console, par salle | 6 préréglages : bleu, violet et vert, en sombre ou clair. |
| Logo | Console, par salle | Fichier PNG ou SVG jusqu'à 2 Mo, en remplacement du logo Kelra Room dans l'en-tête. |
| Fond d'écran | Sur l'écran | Bibliothèque d'images servie par le serveur, ou diaporama aléatoire. Le choix est mémorisé sur l'écran. |
| Disposition | Sur l'écran | Standard ou Agenda. |
| Langue | Sur l'écran | 8 langues, sélecteur dans la barre du bas. |
| Mode de jointure | Console, par salle | Invité ou compte de salle — voir Rejoindre une visio. |
Les changements d'apparence sont appliqués au prochain chargement de l'écran.
09 Exploitation
Sauvegarde, mise à jour, supervision et statistiques d'usage.
Sauvegarde
Tout l'état du serveur tient dans un seul volume : la base de données (salles, écrans, organisations, licence, réservations arbitrées) et les logos téléversés. Sauvegarder ce volume suffit.
Ne s'y trouvent pas, et sont à sauvegarder séparément : le fichier de configuration .env (secrets des organisations, secret d'administration, SMTP) et votre bibliothèque de fonds d'écran.
La base n'utilise pas de journal d'écriture différée : une copie à froid, service arrêté quelques secondes, est propre et suffisante. Pour une sauvegarde quotidienne, planifiez-la en dehors des heures de réunion. Une copie à chaud fonctionne dans l'immense majorité des cas mais peut capturer une écriture en cours — acceptable comme filet de sécurité, à proscrire pour une migration.
Migration vers un autre serveur
Restaurer l'archive sur la nouvelle machine et y recopier la configuration suffit. La licence continue de fonctionner : elle est stockée en base et n'est liée à aucun matériel. L'ancre de la période d'évaluation est également préservée — restaurer une sauvegarde ne redonne pas 30 jours d'essai. Pensez à reporter la nouvelle adresse du serveur sur les écrans si elle change.
Mise à jour
Un script de mise à jour fourni récupère la nouvelle version, reconstruit l'image et redémarre le service. Il refuse de partir si un fichier influant sur le déploiement a été modifié localement, plutôt que de l'écraser en silence.
Ne modifiez jamais un fichier du produit sur une machine de déploiement. Tout ce qui doit varier d'une machine à l'autre a sa place hors du produit : les réglages, secrets et adresses dans le fichier .env ; les ports, volumes et options dans un fichier de surcharge dédié. Les deux survivent à toute mise à jour.
Côté écran, la mise à jour consiste à réinstaller l'exécutable fourni. Adresse du serveur, clé d'appareil et fonds d'écran survivent à la réinstallation : une mise à jour n'oblige jamais à reprovisionner une salle.
Savoir ce qui tourne
Version et empreinte de build sont visibles à cinq endroits : bannière de démarrage du serveur, point /health, barre latérale de la console (y compris avant connexion), panneau de diagnostic de l'écran — qui affiche les deux versions, la sienne et celle du serveur qu'il interroge — et journal de l'application Windows. Un écran à jour parlant à un serveur périmé se voit ainsi immédiatement.
Supervision
Le point de contrôle /health est public et sans authentification : il se branche directement sur votre supervision (Uptime Kuma, Grafana, Zabbix…). Il renvoie l'état du service, sa version et son empreinte de build.
Statistiques d'usage
Onglet Statistiques, sur 7, 30 ou 90 jours : réunions tenues, durée moyenne, participants en moyenne, heures occupées, répartition par jour, par salle et par plateforme de visioconférence.
Les durées sont celles planifiées au calendrier, pas la durée réelle des appels : la visioconférence s'ouvre dans un navigateur séparé que le serveur ne voit pas.
Seules les réunions terminées sont comptées — les écrans relèvent une fenêtre de 24 h glissante, qui contient aussi des réunions à venir.
L'historique commence à la mise en service du collecteur, pas à l'installation du serveur. L'onglet affiche la date de démarrage de la collecte et signale les fenêtres qui la dépassent.
Les chiffres portent sur ce déploiement. Un client multi-sites exploitant un serveur par site n'a pas de vue consolidée — c'est l'objet de la console d'administration hébergée, proposée en option.
10 Sécurité & données
Ce qui est stocké, où, et ce qui ne sort jamais de votre réseau.
Où vivent les données
| Donnée | Emplacement | Sort de votre réseau ? |
|---|---|---|
| Configuration des salles et des écrans | Base du serveur | Non |
| Contenu des tableaux blancs | Mémoire du serveur pendant la session | Non |
| Comptes-rendus PDF | Générés à la volée, envoyés par votre relais SMTP | Non — sauf via votre propre relais |
| Identifiants d'accès aux calendriers | Base du serveur | Non — utilisés uniquement vers Microsoft et Google |
| Plannings des salles | Lus à la demande, non archivés | Non |
| Statistiques d'usage | Base du serveur, agrégées | Non |
| Journal d'audit | Base du serveur, 90 jours glissants | Non |
Aucune télémétrie n'est émise vers Kelra. Un déploiement sans connexion Internet fonctionne, à ceci près qu'il ne peut évidemment pas lire de calendrier hébergé ni ouvrir de visioconférence.
Contrôles d'accès
- Écrans — clé d'appareil unique, obtenue par QR code, jamais inscrite dans un fichier de configuration ni dans le code servi au navigateur. Révocable instantanément depuis la console : l'écran repasse alors sur son écran de provisionnement.
- Administrateurs — comptes nominatifs, changement de mot de passe imposé au premier accès, journal d'audit attribué à chaque auteur.
- Participants au tableau blanc — accès par lien de session ; le relais de l'écran de salle ne transmet que les routes strictement nécessaires au tableau, et la console d'administration reste hors de portée du réseau des invités. Toute route refusée est journalisée.
- Écran de premier lancement — l'adresse du serveur ne peut être enregistrée qu'une fois, et seulement après un test de connexion réussi, pour qu'aucun poste du réseau ne puisse rediriger un écran vers un serveur qu'il contrôle.
Sur le franchissement des frontières entre organisations
Dans un déploiement multi-organisations, seule l'occupation d'un créneau traverse la frontière. Le sujet de la réunion, l'organisateur et la liste des participants ne sont jamais répliqués : le miroir posé sur l'autre calendrier ne porte qu'un titre neutre, que vous choisissez.
Composants tiers
Kelra Room intègre des composants open source, chacun conservant sa propre licence — notamment le moteur de tableau blanc Excalidraw, sous licence MIT. La liste exhaustive des composants et de leurs licences est fournie avec le produit et régénérée à chaque version.
11 Dépannage
Les symptômes les plus fréquents et leur cause réelle. Le panneau de diagnostic de l'écran répond à la plupart de ces questions sans quitter la salle.
| Symptôme | Cause probable et résolution |
|---|---|
| L'écran affiche « Kelra Room » au lieu du nom de la salle | L'écran n'est pas provisionné, ou sa clé a été révoquée (appareil supprimé de la console). Vérifier l'onglet Appareils ; l'écran réaffiche son QR code dès qu'il n'est plus reconnu. |
| « Écran non reconnu » | L'appareil a été supprimé de la console. Le bouton « Reprovisionner cet écran » relance le parcours par QR code. |
| L'écran redemande l'adresse du serveur à chaque démarrage | La configuration est écrite dans un emplacement non persistant. Vérifier le stockage de configuration de l'écran, ou fixer l'adresse par variable d'environnement — elle prime alors sur le fichier. |
| Le bouton « Enregistrer » du premier lancement reste grisé | Le test de connexion n'a pas abouti. C'est délibéré : une adresse fautive ne serait plus modifiable depuis l'écran. Vérifier que le serveur répond depuis cette machine et que le port est autorisé dans le pare-feu. |
| « Erreur : fetch failed » à la création d'une organisation | Le message vient du serveur, pas du navigateur, et ne concerne pas les identifiants saisis : le serveur n'a pas pu ouvrir la connexion vers le fournisseur. L'échec simultané sur Microsoft et Google le confirme — deux tenants, deux jeux de secrets, une seule sortie réseau. Reprendre la section Matrice de flux : ouverture des quatre domaines en 443, proxy déclaré dans le bloc environment:, autorité d'entreprise fournie au serveur. Depuis la 1.0.5, ce message est remplacé par une phrase qui nomme la cause et le geste à faire. |
| Le planning n'apparaît pas | Vérifier que l'organisation est connectée (statut vert dans la console), que l'adresse du calendrier de ressource de la salle est correcte, et que les permissions ont bien reçu le consentement administrateur. |
| Le bouton « Rejoindre » est absent ou grisé | L'invitation ne contient pas de lien de visio exploitable. Côté Google : éditer l'événement et y ajouter une visioconférence Meet. Côté Microsoft : le lien Teams doit figurer dans l'invitation. |
| Les horaires affichés sont décalés | Fuseau horaire ou horloge de la machine Windows mal réglés. La ligne Horloge du diagnostic compare l'écran au serveur et signale l'écart. |
| Le tableau blanc affiche « socket KO » chez un invité | L'adresse du serveur n'est pas joignable depuis l'appareil de l'invité — typiquement une adresse de réseau privé virtuel, une adresse interne de conteneur, ou localhost. Vérifier que le serveur répond depuis un téléphone du même réseau. |
| Le QR code du tableau n'est pas scannable par les invités | Le port du kiosque n'est pas autorisé dans le pare-feu Windows de l'écran, ou l'adresse détectée est celle d'une carte réseau virtuelle. L'adresse peut être forcée par configuration. |
| La console est inaccessible depuis un poste donné | Certains navigateurs bloquent les requêtes vers les adresses IP privées. Utiliser Firefox, Edge ou Chrome. |
| Les conflits entre organisations ne sont jamais refusés | L'acceptation automatique native du calendrier de ressource est encore active : le fournisseur répond avant l'arbitrage. La désactiver sur chaque calendrier relié au broker. |
| Une boîte de dialogue « Ce site tente d'ouvrir Microsoft Teams » s'affiche | La stratégie de blocage des protocoles applicatifs n'a pas été appliquée sur cette machine (voir Installation de l'écran). |
| L'écran est verrouillé par un message de licence | Période d'évaluation terminée ou licence expirée. La console reste toujours accessible : c'est par elle qu'on saisit la clé qui débloque. |
12 Licences & tarifs
Une licence perpétuelle par écran, sans abonnement obligatoire. L'administration hébergée est une option, pas un péage.
On-Premise — 499 € / écran
Licence perpétuelle, paiement unique. Toutes les fonctionnalités : écran de salle, calendriers, tableau blanc temps réel, compte-rendu PDF et envoi par email. Serveur hébergé chez vous, aucune donnée ne quitte votre réseau.
+ Console hébergée — 8,99 € / mois / écran
La licence perpétuelle, augmentée d'une console d'administration centralisée pour piloter tout le parc à distance : supervision, déploiement de configuration, mises à jour continues et support prioritaire.
Tarifs HT. Dégressif à partir de 20 écrans.
Fonctionnement de la licence
| Règle | Détail |
|---|---|
| Évaluation | 30 jours par déploiement, sans clé et sans restriction fonctionnelle. |
| Sièges | Un siège = un écran provisionné. Un dépassement ne coupe jamais un écran déjà en service : il empêche seulement d'en enrôler un nouveau, et se signale dans la console. |
| Activation | Onglet Licence → coller la clé → activer. La console affiche ensuite le client, les sièges utilisés et disponibles, et l'échéance éventuelle. |
| Transfert | La licence se retire depuis la console pour transférer un déploiement vers un autre serveur. Elle n'est liée à aucun matériel. |
| Licence perpétuelle | Pas d'échéance. L'écran continue de fonctionner indéfiniment, y compris sans connexion à Kelra. |
| Licence à durée déterminée | Offre avec console hébergée uniquement. À l'expiration, les écrans continuent 10 jours de plus ; la console signale le retard et refuse l'enrôlement de nouveaux écrans. Un avertissement apparaît dès qu'il reste moins de 30 jours. |
Le kiosque ne montre rien pendant le délai de tolérance : un client ne doit pas apprendre un retard de renouvellement par une salle de réunion éteinte devant ses visiteurs. L'alerte est le rôle de la console.
Licence du logiciel
Kelra Room est distribué sous Business Source License 1.1 — le même modèle que MariaDB, HashiCorp ou Sentry :
- Le code source est fourni, auditable et modifiable.
- L'usage non-production est libre : développement, test, démonstration, évaluation.
- L'usage en production requiert une licence commerciale, vendue par écran, au-delà d'une période d'évaluation de 30 jours par déploiement.
- Chaque version bascule automatiquement en Apache License 2.0 quatre ans après sa publication — un déploiement n'est jamais bloqué, quoi qu'il advienne de l'éditeur.
Le texte de la licence, fourni avec le produit, fait foi ; le résumé ci-dessus ne s'y substitue pas. Les composants tiers conservent leurs propres licences.
13 Support
Avant de nous écrire, trois éléments accélèrent nettement le diagnostic.
- Le panneau de diagnostic de l'écran — une photo suffit. Il donne l'adresse IP, la passerelle, l'état du serveur, la sortie Internet, l'état de chaque calendrier, l'horloge, et les deux versions (écran et serveur).
- La version exacte du serveur, lisible dans la barre latérale de la console ou sur le point
/health— version, empreinte de build et date. - Ce qui a changé récemment : mise à jour, changement d'adresse de serveur, modification de permissions côté Microsoft ou Google, intervention réseau.
Contact
hello@kelralabs.com — questions produit, devis, licences commerciales.
Démonstration
20 minutes, sur l'écran de votre choix — y compris le vôtre. Demander une démo.
Documentation détaillée
Le guide d'installation complet, la liste des composants tiers et le texte de licence sont fournis avec le produit et versionnés avec lui.