Aller au contenu principal

Installer sur un VPS

Installer la passerelle sur un serveur loué (Hetzner, OVH, DigitalOcean...) en une commande : choix de l'offre, DNS, pare-feu, installation, vérifications, démarrage automatique, serveur web existant et sauvegardes hors de la machine.

Ce guide installe la passerelle sur un serveur loué chez un hébergeur, comme Hetzner Cloud, OVH ou DigitalOcean. Il suppose une machine neuve sous Debian 12, ou Ubuntu 22.04 ou plus récent, et un accès SSH avec sudo.

À la fin, la passerelle est joignable en HTTPS sur votre propre nom de domaine, redémarre seule après un redémarrage de la machine, et les téléphones peuvent s'appairer depuis n'importe quel réseau, 4G comprise.

En bref, une fois le DNS configuré et les ports 80 et 443 ouverts :

curl -fsSL https://sms-gateway.araylab.com/install.sh | sudo bash -s -- --domain sms.example.com --yes

La suite de cette page couvre ce qui est propre à un VPS. Le parcours complet (achat, clé, premier compte, activation, appairage) est dans Installation.


1. Choisir l'offre

La plus petite offre de votre hébergeur suffit pour commencer. Rien n'est compilé sur le serveur : la passerelle est téléchargée prête à l'emploi.

Ressource Ce qu'il faut savoir
Mémoire La passerelle en consomme très peu. Le serveur HTTPS à côté en ajoute un peu
Processeur Les offres x86 (amd64) et ARM (arm64) fonctionnent toutes les deux
Disque La base grossit avec votre historique de messages. Quelques gigaoctets couvrent un long historique ; gardez de la place pour les sauvegardes
Autre Aucun serveur de base de données, aucun cache, aucun service tiers à louer

2. Le nom de domaine

Créez un enregistrement A pointant vers l'adresse IP du VPS (et un enregistrement AAAA si vous utilisez aussi IPv6). Un sous-domaine dédié, par exemple sms.votre-entreprise.com, est le plus simple.

Attendez qu'il soit résolu avant d'installer :

dig +short sms.example.com

La réponse doit être l'adresse IP du VPS. Le script d'installation fait la même vérification et vous prévient si elle diffère ; le certificat est obtenu automatiquement dès que le DNS est correct.

Si le domaine passe par un proxy comme Cloudflare, désactivez le proxy (DNS seulement) le temps d'obtenir le certificat.


3. Le pare-feu

Trois ports ouverts, et pas un de plus :

Port Pourquoi il est ouvert
22 Votre accès SSH. Fermez-le et vous perdez l'accès à la machine
80 Obtenir et renouveler le certificat, et rediriger les visiteurs vers HTTPS
443 Tout le reste : tableau de bord, API, et connexion des téléphones

Avec ufw :

sudo apt install -y ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

N'ouvrez pas le port 8080. En mode domaine, la passerelle n'écoute que sur la machine elle-même ; seul le serveur HTTPS est exposé.

Le port 80 doit rester joignable depuis internet, même si tout votre trafic utile passe en HTTPS : il sert à prouver que le domaine vous appartient.

Si votre hébergeur a son propre pare-feu (pare-feu Hetzner Cloud, pare-feu réseau OVH, DigitalOcean Cloud Firewall), il s'applique en plus de ufw : ouvrez-y aussi les trois mêmes ports.

Bon à savoir : Docker publie les ports 80 et 443 par ses propres règles, qui s'appliquent même si ufw ne les liste pas. C'est voulu pour ces deux ports, et c'est pourquoi la passerelle elle-même n'est publiée que sur l'adresse interne de la machine.


4. Installer

Connectez-vous en SSH, puis :

curl -fsSL https://sms-gateway.araylab.com/install.sh | sudo bash -s -- --domain sms.example.com --yes
Partie de la commande Par défaut, sans elle Effet
--domain <nom> le script demande le mode HTTPS sur ce nom, téléphones joignables de partout
--yes le script demande avant chaque étape Installe Docker sans demander s'il manque, et passe outre les avertissements (DNS, ports occupés). Retirez-le pour confirmer vous-même chaque étape

Les autres options (--port, --dir, --version, --no-docker-install) et leurs valeurs par défaut sont dans Installation, les options.

Le script écrit la configuration dans /opt/sms-gateway/.env, y compris l'adresse publique https://sms.example.com que les QR codes d'appairage donneront aux téléphones. Vous n'avez rien à ajouter.


5. Vérifier

sms-gateway status
sms-gateway url
curl -fsS https://sms.example.com/health
curl -fsS https://sms.example.com/ready
Adresse Réponse attendue Ce qu'elle prouve
/health {"status":"ok","version":"..."} La passerelle tourne, et affiche sa version
/ready {"status":"ready","schemaVersion":N} La base est ouverte et à jour

Ouvrez ensuite https://sms.example.com dans votre navigateur : créez le premier compte avec le code d'installation affiché par le script (sms-gateway setup-code le réaffiche), connectez-vous, et collez la clé de licence. La suite est à l'étape 4 de Installation.

Si le navigateur signale un certificat invalide, c'est qu'il n'a pas encore été obtenu. Les journaux du serveur HTTPS disent pourquoi :

sms-gateway logs caddy

Les deux causes habituelles sont un DNS pas encore propagé et un port 80 fermé chez l'hébergeur.


6. Démarrage automatique

Rien à faire : les deux niveaux sont en place après l'installation.

  • Docker démarre avec la machine. Vérifiez-le avec sudo systemctl is-enabled docker (réponse : enabled).
  • La passerelle redémarre seule après un plantage ou un redémarrage, sauf si vous l'avez arrêtée vous-même avec sms-gateway stop (sms-gateway start la relance alors).

Vérifiez-le une fois pour de vrai :

sudo reboot

Reconnectez-vous une minute plus tard et lancez sms-gateway status.


7. Si le VPS fait déjà tourner un serveur web

Si Apache, Nginx ou un panneau d'hébergement occupe déjà les ports 80 et 443, le script vous prévient : le serveur HTTPS intégré ne peut pas démarrer à côté. Deux issues :

  • Une machine dédiée à la passerelle : la solution sans surprise, et la seule que l'installeur prend en charge.

  • Placer la passerelle derrière votre propre serveur web, sous votre responsabilité :

    1. Installez avec --lan, qui laisse le serveur HTTPS intégré éteint (ajoutez --port <n> si 8080 est déjà pris ; les étapes suivantes utilisent alors ce port).
    2. Dans /opt/sms-gateway/.env, réglez GATEWAY_BIND=127.0.0.1 (pour que la passerelle ne soit pas exposée en HTTP simple), GATEWAY_PUBLIC_URL=https://sms.example.com (l'adresse HTTPS servie par votre serveur web) et GATEWAY_INSECURE_COOKIES=false, puis sms-gateway restart.
    3. Configurez votre serveur web pour relayer https://sms.example.com vers http://127.0.0.1:8080, avec deux exigences : le flux en direct /events ne doit pas être mis en tampon, et la connexion des téléphones /ws/device est un WebSocket, que votre serveur doit laisser passer (en-têtes Upgrade et Connection).
    4. Réglez GATEWAY_TRUSTED_PROXIES dans .env sur l'adresse depuis laquelle la passerelle voit votre serveur web. Sans cela, tous les visiteurs semblent venir de la même adresse, et ils partagent tous les mêmes blocages de connexion et limites de débit.

    Ne relancez pas ensuite l'installeur avec --lan : il réécrirait l'adresse sous la forme .local. Les mises à jour par sms-gateway update conservent vos réglages.


8. Sauvegarder hors de la machine

Toute l'installation vit dans son dossier de données : la base, la clé maîtresse et les sauvegardes faites depuis le tableau de bord. sms-gateway backup en écrit une archive dans le dossier courant, en arrêtant la passerelle les quelques secondes de la copie.

La passerelle sauvegarde aussi sa base automatiquement, chaque jour à 03:00 dans le fuseau de la plateforme, sept copies conservées (Paramètres > Sauvegarde et export). Ces copies restent dans le dossier de données, sur le même disque.

Copiez régulièrement une sauvegarde hors de la machine (un autre serveur, un stockage objet) : une sauvegarde qui reste sur le disque qu'elle protège ne survit pas à la perte de ce disque. Téléchargez une sauvegarde automatique depuis le tableau de bord, ou lancez sms-gateway backup et copiez l'archive ; supprimez de temps en temps les anciennes archives, car la commande les garde toutes. Voir Sauvegarde et restauration.

Deux avertissements importants. L'archive contient la clé maîtresse et la base : qui la détient détient tout. Chiffrez-la avant de l'envoyer ailleurs. Détails dans Sauvegarde et restauration.


9. VPS ou Oracle Cloud

Sujet VPS loué Oracle Cloud Always Free
Coût Facturé chaque mois Gratuit
Processeur Le plus souvent amd64 arm64 sur les instances Ampere A1. Les deux fonctionnent
Pare-feu ufw sur la machine, parfois aussi un pare-feu de l'hébergeur Le filtrage réseau d'Oracle et le pare-feu de l'instance
Ressources Ce que vous payez, et extensibles Un plafond fixe
Récupération Jamais, tant que vous payez Oracle peut récupérer une instance qu'il juge inactive

Voir Oracle Cloud Always Free.

Pages liées

Vous voulez Allez à
Le parcours complet Installation
Sauvegarder et restaurer Sauvegarde et restauration
Passer sur un autre serveur Migrer vers un autre serveur
Savoir ce qui protège vos données Sécurité

Rechercher dans la documentation

Saisissez quelques mots, puis choisissez une page.