tuto raspisms installation et configuration
  • 5 novembre 2025
  • ComputaSYS
  • 0


I. Présentation

Dans ce tutoriel, nous allons voir comment mettre en place RaspiSMS sur Raspberry Pi OS, dans le but d’envoyer des SMS. Cela va transformer votre Raspberry Pi en passerelle SMS avec laquelle vous pouvez interagir via une API.

RaspiSMS est une application libre et open source, développée en Symfony, permettant d’envoyer des SMS depuis une interface web ou en utilisant son API. Il est possible d’utiliser l’application en mode SaaS (Software as a Service) ou en auto-hébergé. Dans ce tutoriel, nous allons privilégier la deuxième méthode.

Cet article explique comment effectuer l’installation et la configuration de RaspiSMS sur un Raspberry. Nous aborderons également la configuration d’un téléphone dans l’application et l’envoi de SMS par différentes méthodes.

II. Installation de RaspiSMS sur Rasbian

A. Prérequis

Pour mettre en place RaspiSMS, il est nécessaire d’avoir des équipements hardware comme :

Un Raspberry PI 4 ou 5 avec Raspberry PI OS installé dessus (pour ce tutoriel, j’utilise un Raspberry PI 4 et le système d’exploitation est basé sur Debian Bookworm (Debian 12)).

Une carte SD d’une capacité minimale de 32 ou 64 Go

Une clé 3G

Une carte SIM (pour ce tutoriel, une carte SIM avec un forfait professionnel a été utilisée)

Si vous souhaitez installer un système d’exploitation sur un Raspberry, mais que vous ne savez pas comment faire, je vous laisse aller consulter le tutoriel IT-Connect suivant :

Une fois tous ces composants en votre possession, vous devez au minimum avoir configuré les points suivants sur votre Raspberry :

Un utilisateur possédant les droits “sudo” (normalement créés lors de l’installation de l’OS sur le Raspberry)

Une adresse IP fixe (avec la commande “nmtui” par exemple)

Un accès SSH pour faciliter la saisie des commandes

B. Installation des prérequis RaspiSMS

Connectez-vous en SSH sur le Raspberry avec le compte créé par défaut lors de l’installation ou avec un autre compte possédant les droits “sudo” au minimum, puis mettez à jour les sources :

Note : les commandes sont exécutées directement avec un utilisateur nommé pi, des fichiers seront stockés dans le répertoire courant de cet utilisateur. Pensez bien à mettre les chemins que vous souhaitez.

sudo apt-get update

Ensuite, installez les paquets prérequis pour la suite de l’installation.

sudo apt-get install ca-certificates apt-transport-https software-properties-common wget curl lsb-release gnupg2 git -y

Installez MariaDB, Apache ainsi que Gammu pour la connexion avec la clé 3G.

sudo apt install apache2 mariadb-server gammu gammu-smsd python3-gammu -y

Puis, installez PHP 8.4 sur le Raspberry, ce composant étant indispensable pour faire fonctionner l’interface d’administration de RaspiSMS.

curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x
sudo apt-get update
sudo apt install php8.4 php8.4-common php8.4-cli php8.4-mysql php8.4-mysqli php8.4-curl php8.4-mbstring php8.4-xml -y

C. Création de la base de données pour RaspiSMS

Vous avez procédé à l’installation de MariaDB lors des commandes précédentes. Avant de créer la base de données, sécurisez MariaDB avec ce script de base livré avec le paquet, il sert notamment à définir un mot de passe root.

sudo mysql_secure_installation

Une fois MariaDB sécurisé, connectez-vous à l’instance MariaDB avec le compte “root” (en principe, à l’étape précédente, vous avez déterminé un mot de passe).

sudo mysql -u root -p

Les commandes ci-dessous vous permettent de créer la base de données raspisms, ainsi que l’utilisateur raspismsuser avec son mot de passe. Ensuite, affectez les droits sur la base de données à l’utilisateur. Je vous invite à personnaliser le mot de passe P@ssword!.

CREATE DATABASE raspisms CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER ‘raspismsuser’@’localhost’ IDENTIFIED BY ‘P@ssword!’;
GRANT ALL PRIVILEGES ON raspisms.* TO ‘raspismsuser’@’localhost’;
FLUSH PRIVILEGES;
QUIT;

D. Installation de RaspiSMS

Pour l’installation de RaspiSMS, il existe deux solutions :

Depuis le gestionnaire de paquets APT

Depuis le dépôt GitHub du projet

La première solution étant encore basée sur PHP 7.4 (obsolète depuis le 28/11/2022), l’installation se fera selon la deuxième solution.

Commencez par cloner le dépôt GitHub du projet dans le dossier /usr/share/raspisms.

sudo git clone https://github.com/RaspbianFrance/raspisms.git /usr/share/raspisms

Rendez-vous dans le dossier contenant les données de RaspiSMS. Les prochaines commandes seront à exécuter depuis ce dossier.

cd /usr/share/raspisms

Créez une copie de tous les fichiers ayant pour extension .dist (la copie à l’extension d’origine du modèle).

sudo cp phinx.yml.dist phinx.yml
sudo cp env.php.dist env.php
sudo cp env.prod.php.dist env.prod.php

Pour chacun des fichiers que vous avez copiés, vous devez changer toutes les valeurs du type %VALUE_NAME% pour faire fonctionner l’application. Pour commencer, éditez le fichier nommé phinx.yml.

sudo nano phinx.yml

Le fichier phinx.yml permet de définir les informations liées à la base de données de RaspiSMS. Vous devez changer les champs suivants dans le fichier avec les valeurs suivantes :

migrations: ‘/usr/share/raspisms/db/migrations’

seeds: ‘/usr/share/raspisms/db/seeds’

host: ‘localhost’

name: ‘raspisms’

user: ‘raspismsuser’

pass: ‘P@ssword !’

Note : si vous avez des valeurs différentes de celles données, pensez à renseigner vos valeurs.

À la fin, votre fichier phinx.yml doit ressembler à ceci :

Dans le deuxième fichier, vous devez renseigner un champ nommé APP_SECRET. Ce champ permet de sécuriser la navigation dans l’application RaspiSMS. Pour avoir une valeur robuste dans ce champ, générez une chaine de caractères avec la commande suivante :

cat /dev/urandom | tr -dc ‘a-zA-Z0-9’ | fold -w 32 | head -n 1

Note : copiez la chaine de caractères dans un bloc-notes pour la réutiliser ensuite.

Une fois la clé/chaine de caractères générée, éditez le fichier env.php.

sudo nano env.php

Le fichier env.php sert de fichier d’environnement pour l’application RaspiSMS. Tous les paramètres de l’application et du code source de RaspiSMS sont définis pour faire fonctionner l’application correctement. Dans ce fichier, vous devez changer les champs suivants :

‘ENV’ => ‘prod’

‘APP_SECRET’ => ‘votre_chaine_de_caractère_générée’

‘ENABLE_URL_SHORTENER’ => false

Note : on désactive le paramètre lié au raccourcissement des URL car nous n’utiliserons pas de raccourcis d’URL sur RaspiSMS.

À la fin, votre fichier env.php doit ressembler à ceci :

Pour finir, éditez le dernier fichier nommé env.prod.php.

sudo nano env.prod.php

Le fichier est divisé en 5 parties :

URL d’accès à la page web

Informations pour la connexion à la base de données

Paramétrage d’un serveur de mail

Utilisation de raccourci d’URL

Utilisation de Redis

Pour la partie liée à l’accès à la page web, vous devez configurer la ligne comme ceci :

‘STATIC_HTTP_URL’ => ‘http://IP/raspisms’

Pour la partie de connexion à la base de données, vous devez renseigner les mêmes informations que dans le fichier phinx.yml.

Pour la partie liée au serveur de mail, il n’a pas été configuré pour ce tutoriel mais vous pouvez le configurer pour, par exemple, recevoir des e-mails pour changer son mot de passe s’il a été oublié.

Pour la partie URL_SHORTENER, comme pour le fichier env.php, nous n’allons pas l’utiliser. Pour désactiver le paramètre, laissez les champs vides.

Pour finir, aucun serveur Redis n’a été configuré sur le Raspberry. Pour désactiver la partie Redis, définissez le champ USE_REDIS_QUEUES à false et laissez les autres champs à vide.

Dans ce fichier, vous devez modifier l’ensemble des champs. À la fin, votre fichier doit ressembler à ceci :

Installez les dépendances nécessaires au fonctionnement de l’application RaspiSMS.

sudo php composer.phar self-update
# (Ignorer les lignes en jaune)

sudo php composer.phar install

Pour la seconde commande, lors de la question “Continue as root/super user [yes] ?”, répondez “yes”.

Une fois les dépendances installées, vous devez importer la structure de la base de données dans celle que vous avez créée précédemment.

sudo php vendor/bin/phinx migrate

Pour finir, créez votre utilisateur pour vous connecter plus tard sur l’interface web. Ici, nous créons le compte [email protected] avec le mot de passe changeme.

php console.php controllers/internals/Console.php create_update_user –email=”[email protected]” –password=”changeme” –admin=”true”

À ce stade, vous avez fini l’installation de l’application RaspiSMS. Toutefois, pour accéder à l’application, vous devez encore réaliser les étapes suivantes :

Configuration d’Apache2

Mise en place des droits sur les dossiers et fichiers de l’application RaspiSMS

Création du service “raspisms”

Mise en place d’une rotation du fichier de log de RaspiSMS.

C’est ce que nous allons faire dès la partie suivante.

E. Configuration d’Apache2 pour RaspiSMS

RaspiSMS fournit déjà dans son dépôt GitHub le fichier de configuration d’Apache. Copiez ce fichier dans le bon dossier.

sudo cp confs/apache2/raspisms.conf /etc/apache2/sites-available/

Activez l’hôte virtuel pour RaspiSMS.

sudo a2ensite enable raspisms

Activez le module rewrite d’Apache.

sudo a2enmod rewrite

Redémarrez le service apache2 pour prendre en compte nos deux modifications.

sudo systemctl restart apache2

F. Sécurisation des dossiers de RaspiSMS

Dans un premier temps, créez un utilisateur nommé raspisms. Ce compte n’aura pas de mot de passe, car il sera utilisé uniquement par le compte root.

sudo useradd -M raspisms

Donnez les droits sur le dossier /usr/share/raspisms à l’utilisateur raspisms et au groupe www-data.

sudo find “/usr/share/raspisms” -type f -exec chown “raspisms:www-data” {} ;
sudo find “/usr/share/raspisms” -type d -exec chown “raspisms:www-data” {} ;
sudo find “/usr/share/raspisms” -type d -exec chown “raspisms:www-data” {} ;

Créez un dossier pour les logs de RaspiSMS.

sudo mkdir /var/log/raspisms

Appliquer les bonnes permissions sur chaque dossier et certains fichiers.

sudo find “/usr/share/raspisms” -type f -exec chmod 664 {} ;
sudo find “/usr/share/raspisms” -type d -exec chmod 775 {} ;
sudo find “/var/log/raspisms” -type d -exec chmod 775 {} ;
sudo chmod -f 751 scripts
sudo find “console.php” -exec chmod 754 {} ;
sudo find “bin” -exec chmod 754 {} ;
sudo find “vendor/bin” -exec chmod 754 {} ;
sudo chmod -f 640 env.*php phinx.yml

G. Création du service “raspisms”

Comme pour Apache, RaspiSMS fournit le fichier pour créer le service rapsisms. Copiez ce fichier dans le bon dossier.

sudo cp confs/systemd/raspisms.service /etc/systemd/system/

Appliquez les bons droits sur ce fichier.

sudo chmod 644 “/etc/systemd/system/raspisms.service”

Activez le démarrage automatique du service raspisms.

sudo systemctl enable raspisms

Démarrez le service raspisms.

sudo systemctl start raspisms

H. Mise en place d’une rotation des fichiers de log

Pour éviter que le fichier log de RaspiSMS ne prenne trop de place, nous allons configurer une rotation des logs de RaspiSMS avec le service logrotate.

Commencez par créer un fichier dans le répertoire logrotate.d.

sudo nano /etc/logrotate.d/raspisms

Ajoutez les lignes suivantes pour paramétrer la rotation du fichier toutes les semaines, dans la limite de 8 fichiers :

/var/log/raspisms/daemon.log {
weekly
missingok
rotate 8
compress
notifempty
create 700 root root
su root root
}

/home/pi/gammu.log {
weekly
missingok
rotate 8
compress
notifempty
create 700 pi pi
su pi pi
}

Forcez le redémarrage de logrotate pour la rotation des logs de RaspiSMS.

sudo /usr/sbin/logrotate -f /etc/logrotate.d/raspisms -v

Forcez le redémarrage de logrotate pour la rotation de tous les logs.

sudo /usr/sbin/logrotate -f /etc/logrotate.conf -v

III. Configuration de RaspiSMS

A. Détection et configuration de la clé 3G

Pour détecter la clé 3G, mais aussi configurer les informations de la carte SIM, comme le code PIN ou le code PUK, nous allons utiliser le logiciel Gammu.

Connectez votre clé 3G au Raspberry avec la carte SIM installée dedans.

Dans un premier temps, nous allons valider que le Raspberry détecte bien la clé 3G en exécutant la commande suivante :

gammu-detect

Vous devez obtenir un résultat similaire :

Utilisez la commande gammu-config pour commencer à configurer la clé 3G dans Gammu puis renseignez les informations comme l’image ci-dessous :

gammu-config

Cliquez sur Save pour que le fichier de configuration soit créé.

Éditez le fichier de configuration créé précédemment pour terminer la configuration de la clé 3G.

sudo nano /home/pi/.gammurc

Faites correspondre la configuration à celle ci-dessous :

[gammu]

port = /dev/ttyUSB0
model =
connection = at
synchronizetime = yes
logfile = /home/pi/gammu.log
logformat = textall
use_locking = yes
gammucoding = utf8
gammuloc = en_GB.utf8

Note : vous devez laisser le champ “gammuloc” avec la valeur “en_GB.utf8”, comme dans l’exemple. Le code source est configuré pour attendre un mot en anglais lors de la configuration de la carte SIM, c’est pour cela que ce paramètre est forcé dans le fichier de configuration de Gammu, pour utiliser l’encodage en anglais et en UTF-8.

Éditez ou créez le fichier nommé gammu-smsdrc pour configurer les informations de la carte SIM.

sudo nano /etc/gammu-smsdrc

Modifiez le fichier pour le faire correspondre à la configuration suivante :

Note : pensez à renseigner les informations liées à votre carte SIM pour les champs pin et puk Dans ce tutoriel, la carte SIM n’avait pas de code PIN configuré.

# Configuration file for Gammu SMS Daemon
# Gammu library configuration, see gammurc(5)
[gammu]

# Please configure this!
port = /dev/ttyUSB0
connection = at
# Debbuging
logformat = textall

# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
#pin =
puk = 12345678
logfile = syslog

# Increase for debugging information
debuglevel = 4

# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

Pour finir, redémarrez le service de RaspiSMS pour prendre en compte les modifications apportées.

sudo systemctl restart raspisms

B. Modification des informations du compte administrateur

Connectez-vous sur l’interface graphique avec les identifiants récupérés lors de l’installation de RaspiSMS.

En haut à droite de la page, cliquez sur “[email protected]” puis sur “Profil”.

Définissez l’adresse e-mail que vous souhaitez utiliser, puis cliquez sur “Mettre à jour les données”. Faites la même chose pour le mot de passe.

C. Création de la clef 3G

Rendez-vous sur l’interface graphique de RaspiSMS.

Sur le menu de droite, déroulez le menu “Téléphones” puis cliquez sur “Téléphones”. Ensuite, cliquez sur le bouton “Ajouter”.

Renseignez les informations suivantes sur la page :

Nom du téléphone : par exemple, le modèle de la clé

Le type de téléphone : Gammu

Le fichier de configuration : /etc/gammu-smsdrc

Le code PIN de la carte SIM : renseigner celui dans le fichier gammu-smsdrc

Puis cliquez sur “Enregistrer le téléphone”.

IV. Envoi de SMS avec RaspiSMS

Maintenant que nous avons installé RaspiSMS, configuré Gammu et créé un téléphone dans RaspiSMS, nous pouvons envoyer des SMS.

Il est possible d’envoyer des SMS avec RaspiSMS de deux façons différentes :

Soit par l’interface web (interface graphique)

Soit en ligne de commande avec l’API mise à disposition par l’application

A. Avec l’interface web

Rendez-vous sur l’interface graphique de RaspiSMS.

Déroulez le menu “SMS” puis cliquez sur “Nouveau SMS”. Ensuite, cliquez sur le bouton vert “Créer un nouveau SMS”.

Renseignez au minimum les champs suivants pour envoyer un SMS :

Texte du SMS

Numéro cible en renseignant le numéro dans ce format : 0123456789

Contact cible en renseignant le numéro dans ce format : 0123456789

Numéro à employer : sélectionnez le téléphone

Cliquez sur “Enregistrer le SMS” pour envoyer le SMS.

Pour vérifier si votre SMS a été envoyé, cliquez sur “SMS envoyés” dans la section “SMS”.

B. Avec l’API en ligne de commande

Pour envoyer des SMS en ligne de commande, RaspiSMS met à disposition une API lors de son installation. Pour utiliser l’API, nous avons besoin d’une clef, qui est propre à chaque compte.

Pour récupérer la clef API, connectez-vous sur RaspiSMS puis rendez-vous sur votre profil (comme pour modifier le mot de passe et l’adresse e-mail).

Dans la section “Mes données”, cliquez sur “Cliquer pour afficher la clef API”. Copiez la clé dans un bloc-notes pour l’utiliser ultérieurement.

Utilisation de l’API sous Linux

Sur un serveur Linux, vous pouvez utiliser l’API avec la commande curl.

La commande suivante permet d’envoyer un SMS à un numéro donné (comme en passant par l’interface graphique) :

Note : pensez à mettre votre clé API et un numéro de téléphone valide. Le numéro de téléphone est obligé de commencer avec l’indicatif du pays (+33 pour la France).

curl -X POST http://192.168.1.101/raspisms/api/scheduled/ -H ‘X-Api-Key: c6b3ca0803727a24228f0e7bb99d0b16’ -d “text=test RaspiSMS” -d ‘numbers=%2B33123456789’

Retournez sur l’interface graphique de RaspiSMS et connectez-vous, si ce n’est pas fait. Déroulez le menu “SMS” puis cliquez sur “SMS envoyés”.

Le SMS envoyé via l’API est présent. Si le statut du SMS est égal à “Inconnu” alors votre SMS a été envoyé avec succès à son destinataire.

Utilisation de l’API sous Windows

Pour envoyer un SMS avec Windows, ce sont les mêmes étapes que sous Linux. À défaut d’utiliser curl, nous utilisons la commande PowerShell Invoke-WebRequest.

Voici un exemple de la commande sous Windows :

Invoke-WebRequest -Uri “http://192.168.65.3/raspisms/api/scheduled/” -Method Post -Headers @{“X-Api-Key”=” c6b3ca0803727a24228f0e7bb99d0b16″} -Body @{“text”=”test”;”‘numbers”=”%2B33123456789″}

Note : pensez à mettre votre clé API et un numéro de téléphone valide. Le numéro de téléphone est obligé de commencer avec l’indicatif du pays (+33 pour la France).

V. Conclusion

En suivant ce tutoriel, vous êtes en mesure d’installer, de configurer et d’envoyer des SMS avec RaspiSMS.

Avec l’API, il est possible de faire plus de choses comme la gestion des téléphones, des SMS programmés… Si cela vous intéresse, voici le lien vers la documentation officielle pour vous aider :

Diplômé par l’état en Informatique et Cybersécurité. Ayant une appétence pour les logiciels Open-Source et l’automatisation, je souhaite partager mes connaissances et mes expériences sur ces sujets.



Source link

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *