Ce parcours installe la passerelle sur une machine qui vous appartient, dans vos locaux, sur votre propre réseau. Rien n'est publié sur l'internet : aucun SMS, aucun contact et aucun journal ne quitte le bâtiment.
En résumé, sur la machine (Linux amd64 ou arm64) :
curl -fsSL https://sms-gateway.araylab.com/install.sh | sudo bash -s -- --lan --yes
Sous Windows, avec Docker Desktop, dans PowerShell ouvert en administrateur (le mode réseau local y est le mode par défaut) :
irm https://sms-gateway.araylab.com/install.ps1 | iex
À la fin, le script affiche l'adresse du tableau de bord et le code d'installation demandé par
l'écran de création du compte (sms-gateway setup-code le réaffiche tant qu'aucun compte n'existe).
Le parcours complet (achat, clé, premier compte, activation, appairage) est dans Installation. Cette page se concentre sur le seul point qui peut échouer en silence dans ce parcours : l'adresse par laquelle les téléphones joignent la passerelle.
1. Ce que vous gagnez, et ce que vous acceptez
| Ce que vous gagnez | Ce que vous acceptez |
|---|---|
| Aucune donnée hors de votre réseau | Le service s'arrête avec le bâtiment : courant, box internet, machine |
| Aucun coût d'hébergement | Aucune bascule automatique : une machine, une base |
| Téléphones et serveur côte à côte | Les téléphones doivent être sur le même réseau que la machine |
| Aucune dépendance à un tiers, hors vérification de licence | Le trafic n'est pas chiffré sur votre réseau local, session du tableau de bord comprise |
2. Ce que --lan règle pour vous
| Réglage | Valeur | Pourquoi |
|---|---|---|
Adresse publique (GATEWAY_PUBLIC_URL) |
http://<nom-de-la-machine>.local:8080 |
C'est l'adresse écrite dans les QR codes d'appairage. Voir la section 3 |
Écoute (GATEWAY_BIND) |
0.0.0.0 : toutes les interfaces réseau |
Les téléphones et les ordinateurs du réseau doivent joindre la passerelle |
GATEWAY_INSECURE_COOKIES |
true |
Sans lui, la connexion au tableau de bord échoue en HTTP. Voir la section 4 |
| Serveur HTTPS | Éteint | Aucun certificat ne peut être obtenu sans nom de domaine public |
Sous Linux, le script installe aussi avahi-daemon, qui annonce <nom-de-la-machine>.local sur le
réseau. --port <n> change le port si 8080 est pris (par défaut 8080) ; le port fait alors partie
de l'adresse inscrite dans les QR codes. Toutes les options et leurs valeurs par défaut sont dans
Installation.
Comprenez ce que vous ouvrez : le port répond en HTTP simple à tous les appareils de votre réseau.
Les comptes et les clés API protègent toujours tout, sauf les redirections des liens courts
(/l/...) et les contrôles de santé (/health, /ready), publics par nature. Votre réseau local
devient la frontière de sécurité de l'installation.
3. Pourquoi un nom .local, et pas une adresse IP
L'adresse publique est la seule source de deux choses : l'adresse écrite dans le QR code d'appairage, et la base de vos liens courts. Elle est lue au démarrage de la passerelle, et ne peut pas être modifiée depuis le tableau de bord.
L'application Android, de son côté, refuse les connexions non chiffrées, sauf vers :
- les noms qui se terminent par
.local, commepasserelle.local; localhostet10.0.2.2(utiles seulement pour tester sur un émulateur).
La conséquence va contre l'intuition : une adresse IP privée comme http://192.168.1.20:8080 est
refusée par le téléphone, aussi bon que soit le réseau. C'est pourquoi l'installeur utilise le nom
de la machine suivi de .local.
| Adresse publique | Tableau de bord depuis un ordinateur du réseau | Téléphone Android |
|---|---|---|
http://localhost:8080 |
Depuis la machine elle-même seulement | Non : le téléphone s'appellerait lui-même |
http://192.168.1.20:8080 |
Non : la passerelle refuse de démarrer avec une adresse en HTTP simple qui n'est pas en .local |
Non : refusée par l'application |
http://passerelle.local:8080 (ce que règle --lan) |
Oui, si le nom est résolu | Oui, si le nom est résolu. À vérifier, voir la section 6 |
https://sms.example.com |
Oui | Oui, de partout |
4. GATEWAY_INSECURE_COOKIES=true, et ce que cela coûte
Ce réglage ne change qu'une seule chose : il permet aux navigateurs de conserver votre session du tableau de bord en HTTP simple. Sans lui, la page s'affiche mais la connexion échoue sans message clair, car les navigateurs ne renvoient un cookie de session protégé qu'en HTTPS.
Le prix : la session circule en clair sur votre réseau. Quiconque peut capturer ce trafic pourrait prendre le contrôle d'une session ouverte. C'est acceptable sur un réseau d'entreprise que vous maîtrisez, pas sur un réseau partagé. Sur un réseau que vous ne maîtrisez pas, préférez le mode domaine.
Ne le confondez pas avec GATEWAY_DEV, un réglage de développement qui affaiblirait aussi les
vérifications de licence : il n'est jamais nécessaire, et l'installation ne le transmet pas à la
passerelle.
5. Garder un nom de machine stable
<nom-de-la-machine>.local est écrit dans chaque QR code d'appairage, et le téléphone le conserve.
Si le nom change, les téléphones appairés ne trouvent plus la passerelle. Choisissez-le avant
d'installer :
sudo hostnamectl set-hostname passerelle
L'adresse IP, en revanche, peut changer sans rien casser, puisque le téléphone résout le nom à chaque connexion. Une réservation DHCP sur votre routeur (une adresse fixe pour la machine) reste une bonne pratique : elle facilite le dépannage.
6. Vérifier depuis le téléphone lui-même
Le test qui compte se fait depuis le téléphone, pas depuis la machine. Sur le téléphone, connecté au wifi du bureau, ouvrez dans le navigateur :
http://passerelle.local:8080/health
Une réponse {"status":"ok","version":"..."} signifie que le téléphone trouve la passerelle :
l'appairage fonctionnera. Si la page ne s'ouvre pas, aucun téléphone ne s'appairera. Causes
possibles, dans l'ordre :
- Le téléphone est sur un autre réseau (4G, wifi invité). Voir la section 7.
- Le nom
.localn'est pas résolu. Sous Linux, vérifiez qu'avahi-daemontourne (systemctl status avahi-daemon). Certains routeurs et points d'accès filtrent ces annonces. - Un pare-feu sur la machine bloque le port depuis le réseau local.
Si vous saisissez l'adresse à la main dans l'application au lieu de scanner le QR code, tapez-la en
entier : http://passerelle.local:8080. Sans http://, l'application suppose une connexion
chiffrée, qui échoue dans ce parcours.
7. Wifi invité et isolation des appareils
Beaucoup de réseaux d'entreprise, et la plupart des réseaux invités, isolent leurs appareils : chacun atteint l'internet, mais aucun n'atteint les autres. Sur un tel réseau, le téléphone affiche une connexion parfaite et n'atteindra jamais la passerelle. Le test de la section 6 le révèle.
Trois solutions, de la plus robuste à la moins robuste :
- Mettre les téléphones sur le réseau interne, celui des ordinateurs. La bonne réponse dans presque tous les cas.
- Créer un réseau wifi dédié sans isolation, réservé aux téléphones de la passerelle.
- Désactiver l'isolation sur le réseau existant, ce qui touche tous ses appareils : à discuter avec la personne qui le gère.
8. Sous Windows
- Le script ouvre le port de la passerelle dans le pare-feu Windows pour les réseaux privés seulement. Si Windows considère votre réseau comme public, les téléphones ne peuvent pas se connecter : passez le profil réseau en Privé dans les paramètres réseau de Windows.
- L'adresse utilise le nom de l'ordinateur (
<COMPUTERNAME>.local). Que Windows réponde pour ce nom sur votre réseau dépend de sa version et de sa configuration : faites le test de la section 6. - La passerelle ne tourne que tant que Docker Desktop tourne : réglez Docker Desktop pour qu'il démarre avec Windows, et gardez l'ordinateur allumé et hors veille.
9. Accès depuis l'extérieur, si vous en avez besoin
Ce parcours ne demande aucune exposition. Si vous voulez ouvrir le tableau de bord hors du bureau, appeler l'API depuis un autre site, ou utiliser des téléphones hors du réseau local, passez en mode domaine :
-
Un nom de domaine qui pointe vers l'adresse publique de votre site (fixe, ou tenue à jour par un service de DNS dynamique).
-
Redirigez les ports 80 et 443 de votre box internet vers la machine.
-
Relancez l'installation avec
--domain:curl -fsSL https://sms-gateway.araylab.com/install.sh | sudo bash -s -- --domain sms.example.com --yesL'adresse publique passe en
https://,GATEWAY_INSECURE_COOKIESrepasse àfalse, le port est fermé au réseau local, et le certificat est obtenu automatiquement. Vos données sont conservées. -
Appairez à nouveau les téléphones. Les téléphones déjà appairés gardent l'ancienne adresse
.local.
Le certificat exige que les ports 80 et 443 soient joignables depuis l'internet : sans redirection de ports, le mode domaine ne peut pas en obtenir.
10. Disponibilité
La passerelle est un seul programme avec une seule base : pas de grappe, pas de réplique.
Ce qui est couvert. La passerelle redémarre seule après un plantage et après un redémarrage de la machine, sauf si vous l'avez arrêtée vous-même.
Ce qui ne l'est pas. Une passerelle qui tourne mais se comporte mal est signalée comme en mauvaise
santé dans sms-gateway status, mais elle n'est pas redémarrée automatiquement : lancez
sms-gateway restart.
Pendant une panne, les messages ne sont pas perdus. Les téléphones gardent les messages sortants et entrants dans leur propre file et les transmettent au retour de la passerelle. Un SMS reçu pendant que le serveur est éteint est conservé sur le téléphone.
Alimentation. Une coupure de courant brutale ne corrompt pas la base, mais peut faire perdre les dernières secondes d'écriture. Un petit onduleur supprime ce risque.
Sauvegardes, dès le premier jour. La passerelle sauvegarde sa base automatiquement chaque nuit
(03:00 dans le fuseau de la plateforme par défaut, Paramètres > Sauvegarde et export), sur la
même machine. Copiez régulièrement une sauvegarde hors du bâtiment, une copie téléchargée ou une
archive de sms-gateway backup : une sauvegarde rangée à côté de la machine ne survit ni à un
incendie ni à un vol. Voir Sauvegarde et restauration.
11. La clé maîtresse
Au premier démarrage, la passerelle crée une clé maîtresse, secret.key, dans son dossier de
données. Elle protège les secrets des téléphones appairés, les secrets des webhooks et votre clé de
licence enregistrée. La perdre oblige à appairer à nouveau chaque téléphone et à saisir de nouveau
la clé de licence. L'archive de sms-gateway backup la contient, avec la base : rangez cette
archive en conséquence.
Pour aller plus loin
- Installation : le parcours complet, la commande
sms-gatewayet tous les réglages - Appareils : appairage, cartes SIM, garder les téléphones éveillés
- Sécurité : ce qui protège vos données, et ce qui vous revient
- Sauvegarde et restauration