682 lines
62 KiB
HTML
682 lines
62 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" dir="ltr"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="robots" content="noindex, nofollow" />
|
||
<link rel="icon shortcut" href="/favicon.ico" sizes="32x32" />
|
||
<link rel="icon" href="/favicon.svg" type="image/svg+xml" id="favicon-svg" />
|
||
<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" />
|
||
<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" />
|
||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" />
|
||
<link fetchpriority="low" href="/site.webmanifest" rel="manifest" />
|
||
<title>Room Server – MeshEro</title>
|
||
<meta name="description" content="Le Room Server MeshCore : un espace de messages partagé, façon forum ou BBS, accessible par radio." /><link rel="canonical" href="http://localhost:1313/documentation/room-server/" itemprop="url" />
|
||
|
||
<meta property="og:title" content="Room Server">
|
||
<meta
|
||
property="og:description"
|
||
content="
|
||
Le Room Server MeshCore : un espace de messages partagé, façon forum ou BBS, accessible par radio.
|
||
">
|
||
<meta
|
||
property="og:type"
|
||
content="
|
||
article
|
||
">
|
||
<meta property="og:url" content="http://localhost:1313/documentation/room-server/"><meta property="article:section" content="documentation">
|
||
|
||
<meta
|
||
property="article:published_time"
|
||
content="2026-10-23T16:20:00+02:00">
|
||
|
||
|
||
<meta
|
||
property="article:modified_time"
|
||
content="2026-10-23T16:20:00+02:00">
|
||
|
||
|
||
|
||
<meta itemprop="name" content="Room Server">
|
||
<meta itemprop="description" content="Le Room Server MeshCore : un espace de messages partagé, façon forum ou BBS, accessible par radio.">
|
||
<meta itemprop="datePublished" content="2026-10-23T16:20:00+02:00">
|
||
<meta itemprop="dateModified" content="2026-10-23T16:20:00+02:00">
|
||
<meta itemprop="wordCount" content="594">
|
||
<meta name="twitter:card" content="summary">
|
||
<meta name="twitter:title" content="Room Server">
|
||
<meta name="twitter:description" content="Le Room Server MeshCore : un espace de messages partagé, façon forum ou BBS, accessible par radio.">
|
||
<link href="/css/compiled/main.css" rel="stylesheet" />
|
||
<link href="/css/variables.css" rel="stylesheet" />
|
||
<link href="/css/custom.css" rel="stylesheet" />
|
||
|
||
|
||
<script src="/js/main-head.js" integrity=""></script>
|
||
|
||
|
||
|
||
</head>
|
||
<body>
|
||
<a href="#content" class="hx:sr-only hx:focus-visible:not-sr-only hx:focus-visible:fixed hx:focus-visible:z-50 hx:focus-visible:top-2 hx:focus-visible:left-2 hx:focus-visible:bg-primary-500 hx:focus-visible:text-white hx:focus-visible:px-4 hx:focus-visible:py-2 hx:focus-visible:rounded-md hx:focus-visible:text-sm hx:focus-visible:font-medium">Skip to content</a><div class="hextra-nav-container hx:sticky hx:top-0 hx:z-20 hx:w-full hx:bg-transparent hx:print:hidden">
|
||
<div
|
||
class="hextra-nav-container-blur hx:pointer-events-none hx:absolute hx:z-[-1] hx:h-full hx:w-full hx:bg-white hx:dark:bg-dark hx:shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] hx:contrast-more:shadow-[0_0_0_1px_#000] hx:dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] hx:contrast-more:dark:shadow-[0_0_0_1px_#fff]"
|
||
></div>
|
||
|
||
<nav class="hextra-max-navbar-width hx:mx-auto hx:flex hx:items-center hx:justify-end hx:gap-1 hx:md:gap-2 hx:h-[var(--hextra-navbar-height)] hx:px-6">
|
||
<a class="hx:flex hx:items-center hx:hover:opacity-75 hx:ltr:mr-auto hx:rtl:ml-auto" href="/">
|
||
<img class="hx:mr-2 hx:block hx:dark:hidden" src="/images/logo.svg" alt="Logo" height="20" width="20" />
|
||
<img class="hx:mr-2 hx:hidden hx:dark:block" src="/images/logo.svg" alt="Dark Logo" height="20" width="20" />
|
||
<span class="hx:mr-2 hx:font-extrabold hx:inline hx:select-none">MeshEro</span>
|
||
</a>
|
||
<a
|
||
title=""
|
||
href="/documentation"
|
||
|
||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:font-medium"
|
||
><span class="hx:text-center">Documentation</span>
|
||
</a><a
|
||
title=""
|
||
href="/materiel"
|
||
|
||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"
|
||
><span class="hx:text-center">Matériel</span>
|
||
</a><a
|
||
title=""
|
||
href="/repeteurs"
|
||
|
||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"
|
||
><span class="hx:text-center">Carte des répéteurs</span>
|
||
</a><a
|
||
title=""
|
||
href="/a-propos"
|
||
|
||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"
|
||
><span class="hx:text-center">À propos</span>
|
||
</a><button
|
||
type="button"
|
||
class="hextra-search-trigger"
|
||
data-search-open
|
||
aria-haspopup="dialog"
|
||
aria-controls="hextra-search-dialog"
|
||
aria-label="Search..."
|
||
><svg class="hextra-search-trigger-icon" focusable="false" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/></svg><span class="hextra-search-trigger-label">Search...</span>
|
||
<kbd class="hextra-search-trigger-kbd">CTRL K</kbd>
|
||
</button><button type="button" aria-label="Menu" aria-expanded="false" class="hextra-hamburger-menu hx:cursor-pointer hx:-mr-1 hx:rounded-sm hx:p-1 hx:active:bg-gray-400/20 hx:md:hidden hx:hextra-focus-visible-inset"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button>
|
||
</nav>
|
||
</div>
|
||
|
||
<div class="hx:mx-auto hx:flex hextra-max-page-width">
|
||
<aside class="hextra-sidebar-container hx:flex hx:flex-col hx:print:hidden hx:md:top-[var(--hextra-navbar-height)] hx:md:shrink-0 hx:md:w-64 hx:md:self-start hx:max-md:[transform:translate3d(0,-100%,0)] hx:md:sticky">
|
||
<div class="hextra-scrollbar hx:overflow-y-auto hx:overflow-x-hidden hx:p-4 hx:grow hx:md:h-[calc(100vh-var(--hextra-navbar-height)-var(--menu-height))]">
|
||
<ul class="hx:flex hx:flex-col hx:gap-1 hx:md:hidden">
|
||
|
||
|
||
<li class="open"><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:ltr:pr-8 hx:rtl:pl-8 hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/documentation/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Documentation</span>
|
||
</a>
|
||
<button type="button" class="hextra-sidebar-collapsible-button hx:absolute hx:top-1/2 hx:-translate-y-1/2 hx:ltr:right-2 hx:rtl:left-2 hx:shrink-0 hx:cursor-pointer hx:p-0 hx:text-gray-500 hx:dark:text-neutral-400 hx:group-hover:text-gray-900 hx:dark:group-hover:text-gray-50 hx:group-data-[active=true]:text-primary-800 hx:group-data-[active=true]:dark:text-primary-600 hx:hextra-focus-visible-inset" aria-label="Toggle section" aria-expanded="true"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true" focusable="false" class="hx:h-[18px] hx:min-w-[18px] hx:rounded-xs hx:p-0.5 hx:hover:bg-gray-800/5 hx:dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="hx:origin-center hx:transition-transform hx:rtl:-rotate-180"></path></svg></button>
|
||
</div><div class="hextra-sidebar-children hx:ltr:pr-0 hx:rtl:pl-0 hx:overflow-hidden">
|
||
<ul class='hx:relative hx:flex hx:flex-col hx:gap-1 hx:before:absolute hx:before:inset-y-1 hx:before:w-px hx:before:bg-gray-200 hx:before:content-[""] hx:ltr:ml-3 hx:ltr:pl-3 hx:ltr:before:left-0 hx:rtl:mr-3 hx:rtl:pr-3 hx:rtl:before:right-0 hx:dark:before:bg-neutral-800'><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/documentation/meshcore/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Introduction à MeshCore</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/documentation/companion/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Companion</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/documentation/repeater/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Repeater</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col open"><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="true">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hextra-sidebar-active-item hx:bg-primary-100 hx:font-semibold hx:text-primary-800 hx:contrast-more:border hx:contrast-more:border-primary-500 hx:dark:bg-primary-400/10 hx:dark:text-primary-600 hx:contrast-more:dark:border-primary-500"
|
||
href="/documentation/room-server/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Room Server</span>
|
||
</a>
|
||
</div>
|
||
|
||
|
||
|
||
<ul
|
||
class='hx:flex hx:flex-col hx:gap-1 hx:relative hx:before:absolute hx:before:inset-y-1 hx:before:w-px hx:before:bg-gray-200 hx:before:content-[""] hx:dark:before:bg-neutral-800 hx:ltr:pl-3 hx:ltr:before:left-0 hx:rtl:pr-3 hx:rtl:before:right-0 hx:ltr:ml-3 hx:rtl:mr-3'
|
||
><li>
|
||
<a
|
||
href="#%c3%a0-quoi-%c3%a7a-sert"
|
||
class="hx:flex hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [word-break:break-word] hx:cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:contrast-more:border hx:gap-2 hx:before:opacity-25 hx:before:content-['#'] hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:text-gray-900 hx:contrast-more:dark:text-gray-50 hx:contrast-more:border-transparent hx:contrast-more:hover:border-gray-900 hx:contrast-more:dark:hover:border-gray-50"
|
||
>À quoi ça sert</a>
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="#comment-%c3%a7a-marche"
|
||
class="hx:flex hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [word-break:break-word] hx:cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:contrast-more:border hx:gap-2 hx:before:opacity-25 hx:before:content-['#'] hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:text-gray-900 hx:contrast-more:dark:text-gray-50 hx:contrast-more:border-transparent hx:contrast-more:hover:border-gray-900 hx:contrast-more:dark:hover:border-gray-50"
|
||
>Comment ça marche</a>
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="#acc%c3%a8s-et-mots-de-passe"
|
||
class="hx:flex hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [word-break:break-word] hx:cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:contrast-more:border hx:gap-2 hx:before:opacity-25 hx:before:content-['#'] hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:text-gray-900 hx:contrast-more:dark:text-gray-50 hx:contrast-more:border-transparent hx:contrast-more:hover:border-gray-900 hx:contrast-more:dark:hover:border-gray-50"
|
||
>Accès et mots de passe</a>
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="#mise-en-service"
|
||
class="hx:flex hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [word-break:break-word] hx:cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:contrast-more:border hx:gap-2 hx:before:opacity-25 hx:before:content-['#'] hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:text-gray-900 hx:contrast-more:dark:text-gray-50 hx:contrast-more:border-transparent hx:contrast-more:hover:border-gray-900 hx:contrast-more:dark:hover:border-gray-50"
|
||
>Mise en service</a>
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="#peut-il-aussi-faire-r%c3%a9p%c3%a9teur-"
|
||
class="hx:flex hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [word-break:break-word] hx:cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:contrast-more:border hx:gap-2 hx:before:opacity-25 hx:before:content-['#'] hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:text-gray-900 hx:contrast-more:dark:text-gray-50 hx:contrast-more:border-transparent hx:contrast-more:hover:border-gray-900 hx:contrast-more:dark:hover:border-gray-50"
|
||
>Peut-il aussi faire répéteur ?</a>
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="#administration-%c3%a0-distance"
|
||
class="hx:flex hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [word-break:break-word] hx:cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:contrast-more:border hx:gap-2 hx:before:opacity-25 hx:before:content-['#'] hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:text-gray-900 hx:contrast-more:dark:text-gray-50 hx:contrast-more:border-transparent hx:contrast-more:hover:border-gray-900 hx:contrast-more:dark:hover:border-gray-50"
|
||
>Administration à distance</a>
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="#bon-%c3%a0-savoir"
|
||
class="hx:flex hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [word-break:break-word] hx:cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:contrast-more:border hx:gap-2 hx:before:opacity-25 hx:before:content-['#'] hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:text-gray-900 hx:contrast-more:dark:text-gray-50 hx:contrast-more:border-transparent hx:contrast-more:hover:border-gray-900 hx:contrast-more:dark:hover:border-gray-50"
|
||
>Bon à savoir</a>
|
||
</li>
|
||
</ul>
|
||
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/documentation/ota_update/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">OTA Update</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li></ul>
|
||
</div></li>
|
||
<li class=""><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:ltr:pr-8 hx:rtl:pl-8 hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/materiel/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Matériel</span>
|
||
</a>
|
||
<button type="button" class="hextra-sidebar-collapsible-button hx:absolute hx:top-1/2 hx:-translate-y-1/2 hx:ltr:right-2 hx:rtl:left-2 hx:shrink-0 hx:cursor-pointer hx:p-0 hx:text-gray-500 hx:dark:text-neutral-400 hx:group-hover:text-gray-900 hx:dark:group-hover:text-gray-50 hx:group-data-[active=true]:text-primary-800 hx:group-data-[active=true]:dark:text-primary-600 hx:hextra-focus-visible-inset" aria-label="Toggle section" aria-expanded="false"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true" focusable="false" class="hx:h-[18px] hx:min-w-[18px] hx:rounded-xs hx:p-0.5 hx:hover:bg-gray-800/5 hx:dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="hx:origin-center hx:transition-transform hx:rtl:-rotate-180"></path></svg></button>
|
||
</div><div class="hextra-sidebar-children hx:ltr:pr-0 hx:rtl:pl-0 hx:overflow-hidden">
|
||
<ul class='hx:relative hx:flex hx:flex-col hx:gap-1 hx:before:absolute hx:before:inset-y-1 hx:before:w-px hx:before:bg-gray-200 hx:before:content-[""] hx:ltr:ml-3 hx:ltr:pl-3 hx:ltr:before:left-0 hx:rtl:mr-3 hx:rtl:pr-3 hx:rtl:before:right-0 hx:dark:before:bg-neutral-800'><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/materiel/wio-tracker-l1-pro/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Wio Tracker L1 Pro</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/materiel/wio-tracker-l2-pro/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Wio Tracker L2 Pro</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/materiel/sensecap-t1000e/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">SenseCAP T1000E</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/materiel/sensecap-x1/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">SenseCAP X1</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/materiel/sensecap-p1pro/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">SenseCAP P1Pro</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/materiel/heltec-v4/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Heltec v4</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/materiel/sensecap3dbi/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Sensecap 3dBi</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li><li class="hx:flex hx:flex-col "><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/materiel/mcgill9dbi/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">McGill 9dBi</span>
|
||
</a>
|
||
</div>
|
||
|
||
</li></ul>
|
||
</div></li>
|
||
<li class=""><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/repeteurs/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Carte des répéteurs</span>
|
||
</a>
|
||
</div></li>
|
||
<li class=""><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/a-propos/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">À propos</span>
|
||
</a>
|
||
</div></li>
|
||
</ul>
|
||
|
||
<ul class="hx:flex hx:flex-col hx:gap-1 hx:max-md:hidden">
|
||
|
||
<li class=""><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/documentation/meshcore/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Introduction à MeshCore</span>
|
||
</a>
|
||
</div></li>
|
||
<li class=""><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/documentation/companion/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Companion</span>
|
||
</a>
|
||
</div></li>
|
||
<li class=""><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/documentation/repeater/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Repeater</span>
|
||
</a>
|
||
</div></li>
|
||
<li class="open"><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="true">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hextra-sidebar-active-item hx:bg-primary-100 hx:font-semibold hx:text-primary-800 hx:contrast-more:border hx:contrast-more:border-primary-500 hx:dark:bg-primary-400/10 hx:dark:text-primary-600 hx:contrast-more:dark:border-primary-500"
|
||
href="/documentation/room-server/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">Room Server</span>
|
||
</a>
|
||
</div></li>
|
||
<li class=""><div class="hextra-sidebar-item hx:group hx:relative hx:flex hx:items-center" data-active="false">
|
||
<a
|
||
class="hx:flex hx:items-center hx:justify-between hx:gap-2 hx:grow hx:cursor-pointer hx:rounded-sm hx:px-2 hx:py-1.5 hx:text-sm hx:transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] hx:hextra-focus-visible-inset hx:text-gray-500 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:contrast-more:border hx:contrast-more:border-transparent hx:contrast-more:text-gray-900 hx:contrast-more:hover:border-gray-900 hx:dark:text-neutral-400 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:contrast-more:dark:text-gray-50 hx:contrast-more:dark:hover:border-gray-50"
|
||
href="/documentation/ota_update/"
|
||
|
||
>
|
||
<span class="hx:min-w-0 [word-break:break-word]">OTA Update</span>
|
||
</a>
|
||
</div></li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
<div class=" hx:sticky hx:bottom-0 hx:max-h-(--menu-height) hx:bg-white hx:dark:bg-dark hx:mx-4 hx:py-4 hx:shadow-[0_-12px_16px_#fff] hx:flex hx:items-center hx:gap-2 hx:border-gray-200 hx:dark:border-neutral-800 hx:dark:shadow-[0_-12px_16px_#111] hx:contrast-more:border-neutral-400 hx:contrast-more:shadow-none hx:contrast-more:dark:shadow-none hx:border-t" data-toggle-animation="show"><div class="hx:flex hx:grow hx:flex-col"><div class="hx:flex hx:justify-items-start hx:group" data-theme="light">
|
||
<button
|
||
title="Change theme"
|
||
data-state="closed"
|
||
data-location="bottom"
|
||
class="hextra-theme-toggle hx:cursor-pointer hx:rounded-md hx:text-left hx:font-medium hx:h-7 hx:px-2 hx:text-xs hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:font-medium hx:text-gray-600 hx:transition-colors hx:dark:text-gray-400 hx:grow"
|
||
type="button"
|
||
aria-label="Change theme"
|
||
aria-expanded="false"
|
||
aria-haspopup="menu"
|
||
>
|
||
<div class="hx:flex hx:items-center hx:gap-2 hx:capitalize"><svg height=12 class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=system]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=system]:hidden">Light</span><svg height=12 class="hx:group-data-[theme=light]:hidden hx:group-data-[theme=system]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="hx:group-data-[theme=light]:hidden hx:group-data-[theme=system]:hidden">Dark</span><svg height=12 class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
|
||
<path d="M 11.996094,2 C 6.4986225,2.0192368 2.03125,6.5024993 2.03125,12 c 0,5.497501 4.4673725,9.980763 9.964844,10 H 12 12.0039 c 5.497471,-0.01924 9.964844,-4.502499 9.964844,-10 0,-5.4975007 -4.467373,-9.9807632 -9.964844,-10 H 12 Z M 12,4 c 4.417218,0.017598 7.96875,3.5822356 7.96875,8 0,4.417764 -3.551532,7.982402 -7.96875,8 z" />
|
||
</svg>
|
||
<span class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=light]:hidden">System</span></div>
|
||
</button>
|
||
<ul
|
||
class="hextra-theme-toggle-options hx:hidden hx:z-20 hx:max-h-64 hx:overflow-auto hx:rounded-lg hx:border hx:border-gray-200 hx:bg-white hx:p-1 hx:text-sm hx:shadow-lg hx:dark:border-neutral-700 hx:dark:bg-neutral-900"
|
||
style="position: fixed; inset: auto auto 0px 0px; margin: 0px; min-width: 100px;"
|
||
data-theme="light"
|
||
role="menu"
|
||
>
|
||
<li role="none" class="hx:flex hx:flex-col">
|
||
<button
|
||
type="button"
|
||
role="menuitemradio"
|
||
aria-checked="true"
|
||
tabindex="-1"
|
||
data-item="light"
|
||
class="hx:text-gray-700 hx:dark:text-gray-300 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:hover:bg-neutral-800 hx:dark:hover:text-gray-100 hx:relative hx:cursor-pointer hx:whitespace-nowrap hx:rounded-sm hx:py-1.5 hx:transition-colors hx:ltr:pl-3 hx:ltr:pr-9 hx:rtl:pr-3 hx:rtl:pl-9 hx:text-left hx:w-full hx:bg-transparent hx:border-0"
|
||
>
|
||
Light
|
||
<span class="hx:absolute hx:inset-y-0 hx:flex hx:items-center hx:ltr:right-3 hx:rtl:left-3 hx:group-data-[theme=dark]:hidden hx:group-data-[theme=system]:hidden"><svg height=1em width=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg></span>
|
||
</button>
|
||
</li>
|
||
<li role="none" class="hx:flex hx:flex-col">
|
||
<button
|
||
type="button"
|
||
role="menuitemradio"
|
||
aria-checked="false"
|
||
tabindex="-1"
|
||
data-item="dark"
|
||
class="hx:text-gray-700 hx:dark:text-gray-300 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:hover:bg-neutral-800 hx:dark:hover:text-gray-100 hx:relative hx:cursor-pointer hx:whitespace-nowrap hx:rounded-sm hx:py-1.5 hx:transition-colors hx:ltr:pl-3 hx:ltr:pr-9 hx:rtl:pr-3 hx:rtl:pl-9 hx:text-left hx:w-full hx:bg-transparent hx:border-0"
|
||
>
|
||
Dark
|
||
<span class="hx:absolute hx:inset-y-0 hx:flex hx:items-center hx:ltr:right-3 hx:rtl:left-3 hx:group-data-[theme=light]:hidden hx:group-data-[theme=system]:hidden"><svg height=1em width=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg></span>
|
||
</button>
|
||
</li>
|
||
<li role="none" class="hx:flex hx:flex-col">
|
||
<button
|
||
type="button"
|
||
role="menuitemradio"
|
||
aria-checked="false"
|
||
tabindex="-1"
|
||
data-item="system"
|
||
class="hx:text-gray-700 hx:dark:text-gray-300 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:hover:bg-neutral-800 hx:dark:hover:text-gray-100 hx:relative hx:cursor-pointer hx:whitespace-nowrap hx:rounded-sm hx:py-1.5 hx:transition-colors hx:ltr:pl-3 hx:ltr:pr-9 hx:rtl:pr-3 hx:rtl:pl-9 hx:text-left hx:w-full hx:bg-transparent hx:border-0"
|
||
>
|
||
System
|
||
<span class="hx:absolute hx:inset-y-0 hx:flex hx:items-center hx:ltr:right-3 hx:rtl:left-3 hx:group-data-[theme=dark]:hidden hx:group-data-[theme=light]:hidden"><svg height=1em width=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg></span>
|
||
</button>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div></div></aside>
|
||
|
||
<nav class="hextra-toc hx:order-last hx:hidden hx:w-64 hx:shrink-0 hx:xl:block hx:print:hidden hx:px-4" aria-label="Table of contents">
|
||
<div class="hextra-scrollbar hx:sticky hx:top-[var(--hextra-navbar-height)] hx:overflow-y-auto hx:pr-4 hx:pt-6 hx:text-sm [hyphens:auto] hx:max-h-[calc(100vh-var(--hextra-navbar-height)-env(safe-area-inset-bottom))] hx:ltr:-mr-4 hx:rtl:-ml-4"><p class="hx:mb-4 hx:font-semibold hx:tracking-tight">On this page</p><ul>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:font-medium hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#%c3%a0-quoi-%c3%a7a-sert">À quoi ça sert
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:font-medium hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#comment-%c3%a7a-marche">Comment ça marche
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:font-medium hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#acc%c3%a8s-et-mots-de-passe">Accès et mots de passe
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:font-medium hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#mise-en-service">Mise en service
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:ltr:pl-4 hx:rtl:pr-4 hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#flasher-le-firmware-room-server">Flasher le firmware Room Server
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:ltr:pl-4 hx:rtl:pr-4 hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#configurer-la-radio-et-les-mots-de-passe">Configurer la radio et les mots de passe
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:ltr:pl-4 hx:rtl:pr-4 hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#envoyer-un-advert">Envoyer un advert
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:ltr:pl-4 hx:rtl:pr-4 hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#se-connecter-depuis-un-companion">Se connecter depuis un companion
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:font-medium hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#peut-il-aussi-faire-r%c3%a9p%c3%a9teur-">Peut-il aussi faire répéteur ?
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:font-medium hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#administration-%c3%a0-distance">Administration à distance
|
||
</a>
|
||
</li>
|
||
<li class="hx:my-2 hx:scroll-my-6 hx:scroll-py-6">
|
||
<a class="hx:font-medium hx:inline-block hx:rounded-sm hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-300 hx:contrast-more:text-gray-900 hx:contrast-more:underline hx:contrast-more:dark:text-gray-50 hx:w-full hx:wrap-break-word hx:hextra-focus-visible-inset" href="#bon-%c3%a0-savoir">Bon à savoir
|
||
</a>
|
||
</li></ul>
|
||
<div class="hx:mt-8 hx:border-t hx:bg-white hx:pt-8 hx:shadow-[0_-12px_16px_white] hx:dark:bg-dark hx:dark:shadow-[0_-12px_16px_#111] hx:sticky hx:bottom-0 hx:flex hx:flex-col hx:items-start hx:gap-2 hx:pb-8 hx:border-gray-200 hx:dark:border-neutral-800 hx:contrast-more:border-t hx:contrast-more:border-neutral-400 hx:contrast-more:shadow-none hx:contrast-more:dark:border-neutral-400">
|
||
<button id="backToTop" tabindex="-1" class="hx:cursor-pointer hx:transition-all hx:duration-75 hx:opacity-0 hx:text-xs hx:font-medium hx:text-gray-500 hx:hover:text-gray-900 hx:dark:text-gray-400 hx:dark:hover:text-gray-100 hx:contrast-more:text-gray-800 hx:contrast-more:dark:text-gray-50">
|
||
<span>Scroll to top</span>
|
||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" focusable="false" class="hx:inline hx:ltr:ml-1 hx:rtl:mr-1 hx:h-3.5 hx:w-3.5 hx:rounded-full hx:border hx:border-gray-500 hx:hover:border-gray-900 hx:dark:border-gray-400 hx:dark:hover:border-gray-100 hx:contrast-more:border-gray-800 hx:contrast-more:dark:border-gray-50">
|
||
<path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" />
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
|
||
<article class="hx:w-full hx:break-words hx:flex hx:min-h-[calc(100vh-var(--hextra-navbar-height))] hx:min-w-0 hx:justify-center hx:pb-8 hx:pr-[calc(env(safe-area-inset-right)-1.5rem)]">
|
||
<main id="content" class="hx:w-full hx:min-w-0 hextra-max-content-width hx:px-6 hx:pt-4 hx:md:px-12">
|
||
|
||
<div class="hx:mt-1.5 hx:flex hx:items-center hx:gap-1 hx:overflow-hidden hx:text-sm hx:text-gray-500 hx:dark:text-gray-400 hx:contrast-more:text-current">
|
||
<div class="hx:whitespace-nowrap hx:transition-colors hx:min-w-[24px] hx:overflow-hidden hx:text-ellipsis hx:hover:text-gray-900 hx:dark:hover:text-gray-100">
|
||
<a href="/documentation/" class="hx:inline-block hx:rounded-sm hx:hextra-focus-visible-inset">Documentation</a>
|
||
</div><svg class="hx:w-3.5 hx:shrink-0 hx:rtl:-rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="hx:whitespace-nowrap hx:transition-colors hx:font-medium hx:text-gray-700 hx:contrast-more:font-bold hx:contrast-more:text-current hx:dark:text-gray-100 hx:contrast-more:dark:text-current">Room Server</div>
|
||
</div>
|
||
|
||
<div class="content">
|
||
|
||
<div class="hx:flex hx:flex-col hx:sm:flex-row hx:items-start hx:sm:items-center hx:sm:justify-between hx:gap-4 hx:mb-4">
|
||
<h1 class="hx:mb-0">Room Server</h1>
|
||
|
||
</div>
|
||
|
||
|
||
<p>Le <strong>Room Server</strong> est le rôle le plus particulier de MeshCore. C’est un petit <strong>serveur de messages</strong> de type forum : les gens s’y connectent depuis leur <a href="/documentation/companion/">companion</a>, déposent des messages dans un espace partagé et lisent ceux des autres, même s’ils n’étaient pas connectés au moment de leur publication.</p>
|
||
<h2 data-hextra-search-id="à-quoi-ça-sert">À quoi ça sert<span class="hx:absolute hx:-mt-20" id="à-quoi-ça-sert"></span>
|
||
<a href="#%c3%a0-quoi-%c3%a7a-sert" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Un canal classique ne garde rien : si tu n’es pas à l’écoute, tu rates le message. Un room server <strong>conserve</strong> les messages, ce qui le rend utile pour :</p>
|
||
<ul>
|
||
<li>un <strong>tableau d’affichage</strong> local (infos pratiques, météo, annonces) ;</li>
|
||
<li>un <strong>groupe</strong> ou une association qui veut un fil de discussion persistant ;</li>
|
||
<li>un <strong>événement</strong> (randonnée, rassemblement) où tout le monde n’est pas toujours à portée.</li>
|
||
</ul>
|
||
<h2 data-hextra-search-id="comment-ça-marche">Comment ça marche<span class="hx:absolute hx:-mt-20" id="comment-ça-marche"></span>
|
||
<a href="#comment-%c3%a7a-marche" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><ul>
|
||
<li>Le room server est un <strong>nœud fixe</strong>, installé comme un répéteur, que l’on contacte par radio.</li>
|
||
<li>Le client s’y <strong>connecte</strong> avec un mot de passe, puis peut lire et poster.</li>
|
||
<li>À la connexion, le client reçoit les <strong>32 derniers messages qu’il n’avait pas encore vus</strong>.</li>
|
||
<li>Les messages d’un room server sont limités à 150 caractères.</li>
|
||
</ul>
|
||
<h2 data-hextra-search-id="accès-et-mots-de-passe">Accès et mots de passe<span class="hx:absolute hx:-mt-20" id="accès-et-mots-de-passe"></span>
|
||
<a href="#acc%c3%a8s-et-mots-de-passe" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><table>
|
||
<thead>
|
||
<tr>
|
||
<th>Mot de passe</th>
|
||
<th>Droits</th>
|
||
<th>Restriction de connexion</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><strong>Admin</strong></td>
|
||
<td>Administrer le room server (réglages, accès)</td>
|
||
<td>Y appliquer un mot de passe fort</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Invité</strong></td>
|
||
<td>Se connecter à la room et y poster</td>
|
||
<td><strong>NE PAS</strong> appliquer de mot de passe</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div
|
||
data-alert="note" class="hextra-alert"
|
||
>
|
||
<p class="hextra-alert-title"><svg height=16px class="hextra-alert-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/></svg><span class="hextra-alert-title-text">Note</span>
|
||
</p>
|
||
|
||
<div class="hextra-alert-content"><p>Le room server peut aussi être réglé en <strong>lecture seule</strong>, ce qui autorise une connexion sans mot de passe sans pouvoir poster.</p></div>
|
||
</div>
|
||
<h2 data-hextra-search-id="mise-en-service">Mise en service<span class="hx:absolute hx:-mt-20" id="mise-en-service"></span>
|
||
<a href="#mise-en-service" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><!-- raw HTML omitted -->
|
||
<h3 data-hextra-search-id="flasher-le-firmware-room-server">Flasher le firmware Room Server<span class="hx:absolute hx:-mt-20" id="flasher-le-firmware-room-server"></span>
|
||
<a href="#flasher-le-firmware-room-server" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Pour flasher votre équipement, choisissez votre modèle d’appareil et le firmware <strong>Room Server</strong>.
|
||
Deux possibilités :</p>
|
||
<ul>
|
||
<li>Le flasher officiel : Rien de spécial</li>
|
||
<li>Le flasher <a href="https://observer.gessaman.com/" target="_blank" rel="noopener">communautaire gessman</a> : Flasher interressant si vous souhaitez envoyer des <a href="https://livemap.mesh.chaun14.fr/" target="_blank" rel="noopener">données sur internet</a>. Cela permet de monitorer le réseau afin de voir se qui passe et ou par exemple. L’avantage de ce flasher, c’est que des <strong>preset</strong> sont pré-installer.
|
||
Un preset est une pré-configuration qui permet à notre room serveur d’etre aussi un <strong>Observer</strong> et d’envoyé des <a href="https://analyzer.letsmesh.net/packets" target="_blank" rel="noopener">données sur internet</a>. Necessite un equipement connecté à internet (par exemple un Heltec v4 connecté au <a href="https://observer.gessaman.com/webconfig" target="_blank" rel="noopener">wifi</a>)
|
||
Il vous suffit de suivre la <a href="https://observer.gessaman.com/docs#broker-presets" target="_blank" rel="noopener">documentation officiel</a> pour les activé en cli.
|
||
Vous avez plusierus emplacement de preset</li>
|
||
</ul>
|
||
<p>Pour configurer meshmapper sur le slot 3 :</p>
|
||
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">
|
||
|
||
<div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>set mqtt3.preset meshmapper</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
|
||
<button
|
||
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
|
||
title="Copy code"
|
||
aria-label="Copy code"
|
||
data-copied-label="Copied!"
|
||
>
|
||
<div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
|
||
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<h3 data-hextra-search-id="configurer-la-radio-et-les-mots-de-passe">Configurer la radio et les mots de passe<span class="hx:absolute hx:-mt-20" id="configurer-la-radio-et-les-mots-de-passe"></span>
|
||
<a href="#configurer-la-radio-et-les-mots-de-passe" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Comme pour un <a href="/documentation/repeater/">répéteur</a> : preset <strong>EU/UK (Narrow)</strong>, nom du nœud, mot de passe admin, mot de passe invité vide.</p>
|
||
<h3 data-hextra-search-id="envoyer-un-advert">Envoyer un advert<span class="hx:absolute hx:-mt-20" id="envoyer-un-advert"></span>
|
||
<a href="#envoyer-un-advert" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Envoyez un advert pour que les companions voient la room dans leur liste de contacts.</p>
|
||
<h3 data-hextra-search-id="se-connecter-depuis-un-companion">Se connecter depuis un companion<span class="hx:absolute hx:-mt-20" id="se-connecter-depuis-un-companion"></span>
|
||
<a href="#se-connecter-depuis-un-companion" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Ajoutez le room server comme contact, ouvrez-le et saisissez le mot de passe. Les messages en attente arrivent ensuite.</p>
|
||
<!-- raw HTML omitted -->
|
||
<h2 data-hextra-search-id="peut-il-aussi-faire-répéteur-">Peut-il aussi faire répéteur ?<span class="hx:absolute hx:-mt-20" id="peut-il-aussi-faire-répéteur-"></span>
|
||
<a href="#peut-il-aussi-faire-r%c3%a9p%c3%a9teur-" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Techniquement oui, avec la commande <code>set repeat on</code>. Ce n’est <strong>ni recommandé ni encouragé</strong> : un room server qui répète n’a pas toutes les fonctions du firmware Repeater, notamment en administration à distance. Le plus simple et le plus fiable est de dédier un appareil au <a href="/documentation/repeater/">répéteur</a> et un autre au room server.</p>
|
||
<h2 data-hextra-search-id="administration-à-distance">Administration à distance<span class="hx:absolute hx:-mt-20" id="administration-à-distance"></span>
|
||
<a href="#administration-%c3%a0-distance" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Comme pour un répéteur, on peut administrer un room server à distance depuis un companion, ou par USB avec la console série. Les commandes sont en grande partie les mêmes que celles du répéteur : voir la <a href="https://docs.meshcore.io/cli_commands" target="_blank" rel="noopener">documentation officielle</a>.</p>
|
||
<h2 data-hextra-search-id="bon-à-savoir">Bon à savoir<span class="hx:absolute hx:-mt-20" id="bon-à-savoir"></span>
|
||
<a href="#bon-%c3%a0-savoir" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><ul>
|
||
<li>Un room server ne sert à rien tout seul : il faut des gens à portée, directement ou via des répéteurs.</li>
|
||
<li>Il stocke des messages</li>
|
||
<li>Placez-le comme un répéteur, en hauteur et bien dégagé, si vous voulez qu’il soit joignable de loin.</li>
|
||
</ul>
|
||
|
||
|
||
</div>
|
||
<div class="hx:mt-16"></div><div class="hx:mb-8 hx:flex hx:items-center hx:border-t hx:pt-8 hx:border-gray-200 hx:dark:border-neutral-800 hx:contrast-more:border-neutral-400 hx:dark:contrast-more:border-neutral-400 hx:print:hidden"><a
|
||
href="/documentation/repeater/"
|
||
title="Repeater"
|
||
class="hx:flex hx:max-w-[50%] hx:items-center hx:gap-1 hx:py-4 hx:text-base hx:font-medium hx:text-gray-600 hx:transition-colors [word-break:break-word] hx:hover:text-primary-600 hx:dark:text-gray-300 hx:md:text-lg hx:ltr:pr-4 hx:rtl:pl-4"
|
||
><svg class="hx:inline hx:h-5 hx:shrink-0 hx:ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Repeater</a><a
|
||
href="/documentation/ota_update/"
|
||
title="OTA Update"
|
||
class="hx:flex hx:max-w-[50%] hx:items-center hx:gap-1 hx:py-4 hx:text-base hx:font-medium hx:text-gray-600 hx:transition-colors [word-break:break-word] hx:hover:text-primary-600 hx:dark:text-gray-300 hx:md:text-lg hx:ltr:ml-auto hx:ltr:pl-4 hx:ltr:text-right hx:rtl:mr-auto hx:rtl:pr-4 hx:rtl:text-left"
|
||
>OTA Update<svg class="hx:inline hx:h-5 hx:shrink-0 hx:rtl:-rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div>
|
||
|
||
</main>
|
||
</article>
|
||
</div>
|
||
|
||
<footer class="hextra-footer hx:bg-gray-100 hx:pb-[env(safe-area-inset-bottom)] hx:dark:bg-neutral-900 hx:print:bg-transparent"><div class="hextra-custom-footer hextra-max-footer-width hx:mx-auto hx:pl-[max(env(safe-area-inset-left),1.5rem)] hx:pr-[max(env(safe-area-inset-right),1.5rem)] hx:text-gray-600 hx:dark:text-gray-400"></div><div
|
||
class="hextra-max-footer-width hx:mx-auto hx:flex hx:justify-center hx:py-12 hx:pl-[max(env(safe-area-inset-left),1.5rem)] hx:pr-[max(env(safe-area-inset-right),1.5rem)] hx:text-gray-600 hx:dark:text-gray-400 hx:md:justify-start"
|
||
>
|
||
<div class="hx:flex hx:w-full hx:flex-col hx:items-center hx:sm:items-start"><div class="hx:mt-6 hx:text-xs">© 2026 Hextra Project.</div></div>
|
||
</div></footer>
|
||
|
||
<dialog
|
||
id="hextra-search-dialog"
|
||
class="hextra-search-dialog"
|
||
aria-label="Search..."
|
||
>
|
||
<div class="hextra-search">
|
||
<div class="hextra-search-input-wrapper"><svg class="hextra-search-input-icon" focusable="false" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/></svg><input
|
||
class="hextra-search-input"
|
||
type="search"
|
||
role="combobox"
|
||
autocomplete="off"
|
||
autocorrect="off"
|
||
autocapitalize="off"
|
||
spellcheck="false"
|
||
placeholder="Search..."
|
||
aria-label="Search..."
|
||
aria-controls="hextra-search-results"
|
||
aria-expanded="false"
|
||
/><button
|
||
type="button"
|
||
class="hextra-search-input-kbd"
|
||
data-search-close
|
||
aria-label="Close"
|
||
>ESC</button>
|
||
</div>
|
||
<div class="hextra-search-results-viewport" data-search-viewport>
|
||
<div class="hextra-search-results-inner hextra-scrollbar" data-search-inner>
|
||
<ul
|
||
id="hextra-search-results"
|
||
class="hextra-search-results"
|
||
role="listbox"
|
||
aria-label="Search results"
|
||
></ul>
|
||
<div class="hextra-search-empty" data-search-empty hidden>No results found.</div>
|
||
</div>
|
||
</div>
|
||
<div class="hextra-search-status hx:sr-only" aria-live="polite" role="status"></div>
|
||
</div>
|
||
</dialog>
|
||
<script defer src="/js/main.js" integrity=""></script>
|
||
<script defer src="/js/flexsearch.9f5b5908f93ae86f1ecd4b043b799f580c2d1654e703dd9357d568ac41b2547a.js" integrity="sha256-n1tZCPk66G8ezUsEO3mfWAwtFlTnA92TV9VorEGyVHo=" crossorigin="anonymous"></script><script defer src="/en.search.js" integrity=""></script>
|
||
<script defer src="/en.search-dialog.js" integrity=""></script>
|
||
</body>
|
||
</html>
|