Documentation produit · version 1.0.6

Kelra Room,
de A à Z.

Tout ce qu'il faut pour évaluer, dimensionner, déployer et exploiter Kelra Room dans votre parc de salles : fonctionnement, architecture, prérequis matériels, matrice de flux réseau, configuration des calendriers et exploitation au quotidien.

Écrans Windows OPS & dalles tactiles Serveur Linux, auto-hébergé Calendriers Microsoft 365 & Google Workspace Licence perpétuelle, par écran

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

PrincipeCe que cela signifie concrètement
AutonomieTout 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érielleAucun 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 minimaleUn 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éseauPolices 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émentDétail
Deux dispositionsStandard (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'actionRejoindre la visio · Nouveau tableau · Réunion instantanée · Calendrier. Les tuiles sans objet sont masquées plutôt que grisées.
Fonds d'écranBibliothè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 languesFranç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 & logo6 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 diagnosticAccessible 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.

Plateforme non listée

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éfautCompte de salle
Configuration côté tenantaucuneconnexion interactive + licence Teams Rooms
Identité affichée« Invité »le nom de la salle
Hall d'attenteselon la politique de l'organisateurcontourné pour les réunions internes
Réunion instantanéeindisponibledisponible
Annuaire, appel d'un collaborateurnonoui

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.

Topologie réseau des invités

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 :

OngletContenu
Vue d'ensembleÉtat du déploiement, salles et écrans en un coup d'œil, version du serveur.
SallesCréation et modification : nom, description, adresse du calendrier de ressource, organisation, thème, logo, mode de jointure.
AppareilsLes écrans provisionnés, leur salle, leur clé, leur dernier contact. Suppression = révocation immédiate.
OrganisationsConnexions Microsoft 365 et Google Workspace, avec vérification des identifiants à l'enregistrement.
BrokerConnexions salle ↔ organisation, synchronisation manuelle, journal des décisions d'arbitrage avec leur motif.
ComptesComptes nominatifs d'administration. Tous ont un accès complet.
Journal90 jours d'actions de modification et de tentatives de connexion, attribuées à leur auteur.
StatistiquesUsage sur 7, 30 ou 90 jours : réunions tenues, durée moyenne, participants, heures occupées, répartition par salle et par plateforme.
LicenceClient, 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.

RÉSEAU INTERNE Serveur Kelra Room Linux · conteneur unique · port 4001 API salles & calendriers Console d'administration Relais temps réel du tableau blanc Base embarquée + logos téléversés Écran de salle Windows · application autonome Planning + statut de la salle Tableau blanc Lance la visio dans Edge Appareils des participants mobile · portable · aucun logiciel Rejoignent le tableau blanc par QR code ou par lien via le relais de l'écran Vos calendriers HTTPS sortant uniquement Microsoft 365 / Graph Google Workspace Relais SMTP (option) Plateformes visio Teams · Meet · Zoom… L'écran s'y connecte directement, en HTTPS et média WebRTC HTTP + WebSocket · 4001 HTTPS 443 HTTPS 443 + média UDP · depuis l'écran, jamais depuis le serveur

Le serveur

Un service unique, livré sous forme de conteneur, qui rassemble quatre rôles :

RôleDescription
API des écransPlanning de la salle, informations de la salle, réunion instantanée, export PDF. Authentifiée par une clé propre à chaque écran.
Console d'administrationInterface web complète, authentifiée par compte nominatif.
Relais temps réelDiffusion des tableaux blancs entre les participants d'une même session, avec resynchronisation des arrivants tardifs.
Connecteurs calendrierLecture 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é

LienMécanisme
Écran → serveurClé 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 → serveurCompte nominatif (identifiant + mot de passe), avec changement de mot de passe imposé au premier accès et journal d'audit attribué.
Serveur → Google WorkspaceOAuth 2.0 avec jeton de rafraîchissement ; le jeton d'accès est renouvelé automatiquement.
Serveur → Microsoft 365Flux client credentials au niveau application — aucun utilisateur n'a besoin de se connecter. Jeton renouvelé automatiquement chaque heure.
Participants → tableau blancLien 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

ComposantVersion minimaleNotes
LinuxUbuntu 22.04 LTS ou Debian 12Toute distribution disposant d'un moteur de conteneurs stable convient.
Moteur de conteneursDocker Engine 24+Le moteur seul suffit ; aucune édition de bureau n'est requise ni recommandée.
Composev2 (greffon)Fourni avec les paquets Docker actuels.

Écran de salle

ComposantRequis
Windows 10 ou 11Sur 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 EdgePour les visioconférences. Présent d'origine sur Windows. À défaut, le navigateur par défaut est utilisé, sans plein écran forcé.
Rien d'autreL'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

ContrainteDétail
Protocole ouvertTCP 4001 vers le serveur, depuis les écrans et les postes d'administration.
Sortie du serveurHTTPS 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.
TLSRecommandé. Autorité locale intégrée au serveur, certificat d'entreprise, ou reverse proxy. Voir Chiffrement.
SMTPOptionnel — 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.

RessourceMinimumRecommandé
CPU2 vCPU2 vCPU
RAM2 Go4 Go
Stockage20 Go SSD40 Go SSD
Réseau10 Mbps100 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.

RessourceMinimumRecommandé
CPU2 vCPU4 vCPU
RAM4 Go8 Go
Stockage40 Go SSD80 Go SSD
Réseau100 Mbps100 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.

RessourceMinimumRecommandé
CPU4 vCPU8 vCPU
RAM8 Go16 Go
Stockage80 Go SSD NVMe150 Go SSD NVMe
Réseau100 Mbps1 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

RessourceMinimumRecommandé
CPU8 vCPU16 vCPU
RAM16 Go32 Go
Stockage150 Go SSD NVMe300 Go SSD NVMe (RAID-1)
Réseau1 Gbps1 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ÉcransCPURAMStockageProfil
Starter< 502 vCPU2–4 Go20–40 GoVPS entrée de gamme / mini-PC
Standard50–1502–4 vCPU4–8 Go40–80 GoVPS standard
Pro150–3004–8 vCPU8–16 Go80–150 GoDédié ou VPS CPU-optimisé
Enterprise300–5008–16 vCPU16–32 Go150–300 Go NVMeDédié ou cloud compute
Point clé

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

SymboleSens
Flux sortant — la source initie la connexion
Flux bidirectionnel persistant (WebSocket)

1 · Écrans → Serveur (réseau interne)

PortProtoSensObjetFréquenceRequis
4001TCP / HTTP(S)Vérification de connectivité~10 sOui
4001TCP / HTTP(S)Version du serveurAu démarrageOui
4001TCP / HTTP(S)Vérification de la clé d'appareilAu démarrageOui
4001TCP / HTTP(S)Relevé du planning de la salle~30 sOui
4001TCP / WS(S)Canal temps réel de la sallePersistanteOui
4001TCP / WS(S)Tableau blanc collaboratifÀ l'ouvertureOui
4001TCP / HTTP(S)Création d'une réunion instantanéeSur demandeOui
4001TCP / HTTP(S)Compte-rendu PDFFin de réunionOptionnel
4001TCP / HTTP(S)Envoi du lien du tableau par emailSur demandeOptionnel

2 · Poste d'administration → Serveur (réseau interne)

PortProtoSensObjetFréquenceRequis
4001TCP / HTTP(S)Chargement de la consoleSessionOui
4001TCP / HTTP(S)AuthentificationSessionOui
4001TCP / HTTP(S)Gestion des sallesSessionOui
4001TCP / HTTP(S)Gestion des appareilsSessionOui
4001TCP / HTTP(S)Gestion des organisationsSessionOui
4001TCP / HTTP(S)Journal d'auditSessionOui
4001TCP / HTTP(S)Arbitrage multi-organisationsSessionOptionnel
4001TCP / HTTP(S)Gestion de la licenceSessionOui
4001TCP / HTTP(S)Statistiques d'usageSessionOui
4001TCP / HTTP(S)Bilan de santé du déploiementSessionOui

3 · Provisionnement & tableau blanc (réseau interne)

SourcePortProtoSensObjetFréquenceRequis
Mobile / PC technicien4001TCP / HTTP(S)Scan du QR de provisionnementÀ chaque enrôlementOui
Mobile / PC technicien4001TCP / HTTP(S)Association salle ↔ écranÀ chaque enrôlementOui
Participants4001TCP / HTTP(S)Page du tableau blancSur invitationOptionnel
Participants4001TCP / WS(S)Collaboration sur le tableauPendant la réunionOptionnel

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)

DestinationPortProtoSensObjetFréquenceRequis
oauth2.googleapis.com443TCP / HTTPSRenouvellement du jeton d'accès Google~1 hSi Google
www.googleapis.com443TCP / HTTPSLecture du planning de la salleÀ chaque relevéSi Google
meet.googleapis.com443TCP / HTTPSCréation d'une réunion Meet instantanéeSur demandeSi réunion instantanée
login.microsoftonline.com443TCP / HTTPSAcquisition du jeton applicatif~1 hSi Microsoft
graph.microsoft.com443TCP / HTTPSLecture du planning ExchangeÀ chaque relevéSi Microsoft
graph.microsoft.com443TCP / HTTPSCréation d'une réunion Teams instantanéeSur demandeSi réunion instantanée
graph.microsoft.com443TCP / HTTPSRéponse aux invitations (arbitrage) et miroirs d'occupation60 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 proxy doit autoriser CONNECT

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)

DestinationPortProtoSensObjetFréquenceRequis
Relais SMTP client587TCP / STARTTLSCompte-rendu PDF et liens de tableau blancSur demandeOptionnel
Relais SMTP client465TCP / TLSIdem, variante TLS impliciteSur demandeOptionnel

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.

DestinationPortProtoSensObjet
meet.google.com443TCP / HTTPSInterface Google Meet
Serveurs STUN/TURN Google443 / 19302TCP + UDPMédia WebRTC Google Meet
teams.microsoft.com443TCP / HTTPSInterface Microsoft Teams
Serveurs média Microsoft Teams443 / 3478-3481TCP + UDPMédia WebRTC Teams
zoom.us443TCP / HTTPSInterface Zoom
Serveurs média Zoom443 / 8801-8802TCP + UDPMédia Zoom
Filtrage applicatif

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ègleDestinationPortSensPriorité
Écrans → serveurServeur Kelra RoomTCP 4001Entrant serveurObligatoire
Admins → serveurServeur Kelra RoomTCP 4001Entrant serveurObligatoire
Serveur → Google*.googleapis.com, *.google.comTCP 443Sortant serveurSi Google
Serveur → Microsoftlogin.microsoftonline.com, graph.microsoft.comTCP 443Sortant serveurSi Microsoft 365
Serveur → SMTPRelais SMTPTCP 587 ou 465Sortant serveurOptionnel
Écrans → visioInternet (Meet / Teams / Zoom…)TCP 443 + UDP médiaSortant écransObligatoire 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 :

  1. 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.
  2. Démarrer le service. Il se relance automatiquement au redémarrage de la machine. Démarrage
    docker compose up server -d
  3. Vérifier. L'API répond sur http://<IP_SERVEUR>:4001, la console sur http://<IP_SERVEUR>:4001/admin. Le point /health renvoie la version exacte déployée.
Port déjà occupé

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 :

ModeRéglageUsage
Clairdéfaut, rien à déclarerLe serveur écoute en http. Acceptable sur un LAN d'entreprise maîtrisé.
Autorité localeTLS_SELF_SIGNED=1 + TLS_NAMESLe serveur crée sa propre autorité de certification et son certificat au premier démarrage. Aucun domaine public, aucune sortie Internet nécessaire.
Certificat fourniTLS_CERT_PATH + TLS_KEY_PATHVotre 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.crt et 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.
À décider avant de déployer les écrans

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 kiosk donne l'adresse configurée, celle employée, et la variable à corriger. Corriger OPENROOM_SERVER_URL reste 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 server porte désormais une ligne [tls] ⚠ une requête en CLAIR est arrivée sur ce port.
« Serveur injoignable » ne veut pas toujours dire « injoignable »

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.

Lire le compte à rebours de l'écran d'enrôlement

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

  1. 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.
  2. 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.
  3. Régler l'horloge et le fuseau horaire de la machine — voir l'encadré ci-dessous.
Horloge de la machine · à vérifier systématiquement

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 WindowsCe qui est possible
Enterprise / Education / IoT EnterpriseShell Launcher : l'application remplace l'explorateur Windows. Le verrouillage le plus complet, et la configuration recommandée.
ProShell 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.

Pourquoi l'application ne le fait pas elle-même

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.

  1. 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.
  2. 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.
  3. Connecter une organisation — onglet Organisations : Microsoft 365 et/ou Google Workspace (sections suivantes).
  4. Créer les salles — onglet Salles : nom, description, adresse du calendrier de ressource (par ex. salle-a@monentreprise.com), organisation, thème, logo.
  5. Provisionner les écrans — par QR code depuis chaque écran, ou en créant l'appareil à la main dans l'onglet Appareils.
Journal d'audit

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.

Perte d'accès

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

  1. Créer un projet (ou en réutiliser un) sur la console Google Cloud.
  2. Activer l'API Google Calendar. Pour la réunion instantanée, activer également l'API Google Meet.
  3. Créer des identifiants OAuth 2.0 de type « Application Web » et noter l'identifiant client et le secret client.
  4. 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 OrganisationsNouvelle organisation :

ChampValeur
FournisseurGoogle
Nom de l'organisationVotre entreprise
Domainemonentreprise.com
Identifiant client / Secret clientDepuis la console Google Cloud
Jeton de rafraîchissementObtenu à 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

  1. 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.
  2. 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.
  3. Accorder la permission Calendars.ReadWrite de 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

ChampValeur
FournisseurMicrosoft
Nom de l'organisationVotre entreprise
ID de locataireDirectory (tenant) ID
ID clientApplication (client) ID
Secret clientValeur du secret créé

Broker multi-organisations

Prérequis indispensable

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

FournisseurPermissionRemarque
MicrosoftCalendars.ReadWrite (Application)Déjà accordée à l'étape précédente : rien à ajouter. Sert à répondre aux invitations et à poser les miroirs d'occupation.
GooglePortée d'écriture du calendrierLa 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

  1. Onglet BrokerRelier 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.
  2. Recommencer pour la seconde organisation. Tant qu'une salle n'a qu'un calendrier relié, le broker n'a rien à arbitrer et le signale.
  3. Synchroniser force un relevé immédiat et rend compte des réservations vues, des décisions prises et des erreurs rencontrées.
  4. 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églageDéfautDescription
Intervalle d'arbitrage60 sPé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'occupationactivésPose 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.
Fenêtre de course

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églageRôle
Hôte SMTPObligatoire pour activer l'envoi. Sans lui, l'écran indique « SMTP non configuré » et le téléchargement direct reste disponible.
Port587 par défaut (STARTTLS), ou 465 en TLS implicite.
IdentifiantsUtilisateur et mot de passe du relais.
Adresse d'expéditionL'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.

Vérification

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églageDétail
ThèmeConsole, par salle6 préréglages : bleu, violet et vert, en sombre ou clair.
LogoConsole, par salleFichier PNG ou SVG jusqu'à 2 Mo, en remplacement du logo Kelra Room dans l'en-tête.
Fond d'écranSur l'écranBibliothèque d'images servie par le serveur, ou diaporama aléatoire. Le choix est mémorisé sur l'écran.
DispositionSur l'écranStandard ou Agenda.
LangueSur l'écran8 langues, sélecteur dans la barre du bas.
Mode de jointureConsole, par salleInvité 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.

Règle d'exploitation

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.

Trois réserves à connaître avant de présenter ces chiffres

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éeEmplacementSort de votre réseau ?
Configuration des salles et des écransBase du serveurNon
Contenu des tableaux blancsMémoire du serveur pendant la sessionNon
Comptes-rendus PDFGénérés à la volée, envoyés par votre relais SMTPNon — sauf via votre propre relais
Identifiants d'accès aux calendriersBase du serveurNon — utilisés uniquement vers Microsoft et Google
Plannings des sallesLus à la demande, non archivésNon
Statistiques d'usageBase du serveur, agrégéesNon
Journal d'auditBase du serveur, 90 jours glissantsNon

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ômeCause 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ègleDétail
Évaluation30 jours par déploiement, sans clé et sans restriction fonctionnelle.
SiègesUn 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.
ActivationOnglet Licence → coller la clé → activer. La console affiche ensuite le client, les sièges utilisés et disponibles, et l'échéance éventuelle.
TransfertLa 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étuellePas d'échéance. L'écran continue de fonctionner indéfiniment, y compris sans connexion à Kelra.
Licence à durée déterminéeOffre 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.
Un principe de conception

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.

  1. 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).
  2. 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.
  3. 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.