đ Ntfy service de notification
Ntfy, qui se prononce ânotifyâ, est un service de notification ultra lĂ©ger, permettant dâenvoyer des messages vers un smartphone ou un ordinateur via de simples scripts, sans besoin de compte et totalement gratuitement !
Ntfy Installation
Le CLI de ntfy vous permet de publier des messages, de vous abonner Ă des sujets et dâhĂ©berger vous-mĂȘme votre propre serveur ntfy. Câest trĂšs simple. Il suffit dâinstaller le binaire, le paquet ou lâimage Docker, de le configurer et de lâexĂ©cuter.
Les Ă©tapes suivantes ne sont nĂ©cessaires que si vous voulez hĂ©berger votre propre serveur ntfy ou si vous voulez utiliser le CLI ntfy. Si vous voulez juste envoyer des messages en utilisant ntfy.sh, vous nâavez pas besoin dâinstaller quoi que ce soit. Vous pouvez simplement utiliser curl.
Le serveur ntfy se prĂ©sente sous la forme dâun binaire liĂ© statiquement et est livrĂ© sous forme de paquetage tarball, deb/rpm et sous forme dâimage Docker. Nous supportons amd64, armv7 et arm64.
Veuillez consulter la page des versions pour les binaires et les paquets deb/rpm.
Debian
manuellement
1
2
3
wget https://github.com/binwiederhier/ntfy/releases/download/v2.8.0/ntfy_2.8.0_linux_amd64.deb
sudo dpkg -i ntfy_*.deb
sudo systemctl enable ntfy
Avec le dépÎt
1
2
3
4
5
6
7
8
9
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://archive.heckel.io/apt/pubkey.txt | sudo gpg --dearmor -o /etc/apt/keyrings/archive.heckel.io.gpg
sudo apt install apt-transport-https
sudo sh -c "echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/archive.heckel.io.gpg] https://archive.heckel.io/apt debian main' \
> /etc/apt/sources.list.d/archive.heckel.io.list"
sudo apt update
sudo apt install ntfy
sudo systemctl enable ntfy
sudo systemctl start ntfy
Arch Linux
2 méthodes
Méthode 1
Vous pouvez récupérer le fichier binaire ntfy depuis le dépÎt GitHub
CrĂ©er un utilisateur systĂšme nommĂ© ântfyâ
Utilisez lâoption -r (âsystem) pour crĂ©er un compte dâutilisateur systĂšme
1
sudo useradd -r ntfy
Télécharger la derniÚre version, décompresser, copier binaire dans /usr/local/bin et modifier les droits
1
2
3
4
5
6
7
8
# Téléchargement
wget https://github.com/binwiederhier/ntfy/releases/download/v2.11.0/ntfy_2.11.0_linux_amd64.tar.gz
# Décompresser
tar xzvf ntfy_2.11.0_linux_amd64.tar.gz
# copier binaire
sudo cp ntfy_2.11.0_linux_amd64/ntfy /usr/local/bin/
# modifier les droits
sudo chown ntfy:ntfy /usr/local/bin/ntfy
Méthode 2
installer le paquet
1
yay -S --noconfirm ntfysh-bin
CrĂ©ation groupe et utilisateur Ă lâinstallation
1
2
Creating group 'ntfy' with GID 951.
Creating user 'ntfy' (ntfy user) with UID 951 and GID 951.
Alpine Linux
DépÎt communautaire activé
1
sudo apk add ntfy
Configuration du serveur ntfy
Le serveur ntfy peut ĂȘtre configurĂ© de trois maniĂšres :
- Par défaut, en utilisant un fichier de configuration (typiquement dans
/etc/ntfy/server.yml) - via des arguments de ligne de commande
- ou en utilisant des variables dâenvironnement.
ntfy derriĂšre un proxy
Si vous exĂ©cutez ntfy derriĂšre un proxy, vous devez activer le drapeau behind-proxy. Cela demandera Ă la logique de limitation de taux dâutiliser lâen-tĂȘte X-Forwarded-For comme identifiant principal dâun visiteur, plutĂŽt que lâadresse IP distante. Si lâindicateur âbehind-proxyâ nâest pas activĂ©, tous les visiteurs seront comptĂ©s comme un seul, car du point de vue du serveur ntfy, ils partagent tous lâadresse IP du proxy.
Fichier /etc/ntfy/server.yml, les modifications
1
2
3
listen-http: "127.0.0.1:8100"
behind-proxy: true
Démarrer le service
1
sudo systemctl start ntfy
Proxy Nginx
Le fichier proxy /etc/nginx/conf.d/noti.rnmkcy.eu.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server {
listen 80;
listen [::]:80;
server_name noti.rnmkcy.eu;
# redirect all plain HTTP requests to HTTPS
return 301 https://noti.rnmkcy.eu$request_uri;
}
server {
# ipv4 listening port/protocol
listen 443 ssl http2;
# ipv6 listening port/protocol
listen [::]:443 ssl http2;
server_name noti.rnmkcy.eu;
include /etc/nginx/conf.d/security.conf.inc;
location / {
proxy_pass http://127.0.0.1:8100;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 3m;
proxy_send_timeout 3m;
proxy_read_timeout 3m;
client_max_body_size 0; # Stream request body to backend
}
}
Vérifier et recharger nginx
1
sudo nginx -t && sudo systemctl reload nginx
PremiĂšre connexion depuis un navigateur firefox https://noti.rnmkcy.eu

AprÚs avoir installé le serveur ntfy, accessibilité lien https://noti.rnmkcy.eu
Instance publique
Application android ntfy
Installer lâapplication android ntfy
Pour sâabonner Ă un sujet, il suffit de lancer lâapplication et de cliquer sur le bouton +

Nous Ă©crivons ensuite le nom du sujet auquel nous voulons nous abonner (le nom est complĂštement arbitraire), et, pour utiliser notre instance Ntfy auto-hĂ©bergĂ©e, nous cochons « Utiliser un serveur diffĂ©rent » et entrons lâIP de notre serveur ; enfin, nous cliquons sur « ABONNER »

Pour envoyer une notification au sujet, il suffit dâenvoyer une requĂȘte POST ou PUT au serveur, en utilisant le langage de programmation de notre choix ou notre outil de ligne de commande prĂ©fĂ©rĂ© (commande ntfy pub ou une requĂȘte POST via curl).
1
2
curl -d "Ceci est une notification ntfy" https://noti.rnmkcy.eu/notif_infos
ntfy pub notif_infos "Ceci est une notification ntfy"
La notification push devrait apparaĂźtre sur notre appareil client android

Affichage des messages au format JSON
1
{"topic":"monsujet","message":"Ceci est une notification ntfy","time":1622656800}
Exemples dâutilisation
Recevoir une alerte Ă chaque connexion SSH en utilisant ntfy
Instance ntfy privée
Configurer server.yml
La façon la plus simple de configurer une instance privée est de définir auth-default-access: deny-all dans le fichier /etc/ntfy/server.yml :
1
2
auth-file: /var/lib/ntfy/user.db
auth-default-access: "deny-all"
Le fichier de configuration /etc/ntfy/server.yml
1
2
3
4
5
listen-http: "127.0.0.1:8100"
auth-file: /var/lib/ntfy/user.db
auth-default-access: "deny-all"
behind-proxy: true
# web-root: "disable"
Explications
- Listen-http - Le port sur lequel le serveur Web HTTP écoute (par défaut = 80). Vous pouvez également ajouter une adresse IP à laquelle vous connecter (
listen-http : "127.0.0.1:8100") - auth-file - Emplacement du user.dbfichier dâauthentification.
- auth-default-access - DĂ©finir ceci sur âdeny-allâ forcera tous les sujets Ă ĂȘtre privĂ©s par dĂ©faut.
- behind-proxy - Si ntfy est dĂ©ployĂ© derriĂšre un proxy comme Caddy, nginx, etc., alors cela doit ĂȘtre dĂ©fini sur true.
- web-root - Emplacement du répertoire racine pour ntfy. Le réglage sur « désactiver » désactive le client Web.
Redémarrer le serveur ntfy
1
sudo systemctl restart ntfy
Créer utilisateur
Passer en mode su : sudo -s
Créer utilisateur dans NTFY (Users and roles)
Puisque nous avons dĂ©jĂ dĂ©fini lâ attribut auth-file et auth-default-access, nous pouvons passer Ă lâajout de notre premier utilisateur administrateur ânotifâ.
1
ntfy user add --role=admin notif
Lâappel de cette commande avec un nom dâutilisateur vous invitera automatiquement Ă crĂ©er un mot de passe pour le nouvel utilisateur.
Saisir un mot de passe pour ânotifâ
user leno added with role admin
Une fois lâutilisateur créé, nous pouvons lâabonner Ă notre premier sujet de notification.
1
ntfy access notif notif_infos rw
Explications
- rw spĂ©cifie le niveau dâaccĂšs de lâutilisateur notif pour le sujet notif_infos. Puisque cet utilisateur sera utilisĂ© pour envoyer des notifications, nous devons lui donner la possibilitĂ© dâĂ©crire sur le sujet.
- wo âwrite-onlyâ (Ă©criture seule)
- rw âread-writeâ (lecture-Ă©criture)
- ro âread-onlyâ (lecture seule)
Vous pouvez modifier les autorisations dâaccĂšs Ă tout moment, en rĂ©exĂ©cutant la commande ci-dessus avec un niveau dâaccĂšs diffĂ©rent.
Créez maintenant un deuxiÚme utilisateur notifmob avec les autorisations sur le sujet en lecture seul.
Ce deuxiÚme utilisateur sera utilisé pour notre application mobile.
1
2
ntfy user add notifmob
ntfy access notifmob notif_infos ro
Liste des commandes pour la gestion des utilisateurs
1
2
3
4
5
6
7
sudo ntfy user list # Shows list of users (alias: 'ntfy access')
sudo ntfy user add phil # Add regular user phil
sudo ntfy user add --role=admin phil # Add admin user phil
sudo ntfy user del phil # Delete user phil
sudo ntfy user change-pass phil # Change password for user phil
sudo ntfy user change-role phil admin # Make user phil an admin
sudo ntfy user change-tier phil pro # Change phil's tier to "pro"
Une fois que vous avez fait cela, vous pouvez publier et vous abonner en utilisant lâauthentification de base avec le nom dâutilisateur/mot de passe donnĂ©. Veillez Ă utiliser HTTPS pour Ă©viter les Ă©coutes et lâexposition de votre mot de passe.
Authentification
A - Utilisateur et mot de passe
Username + password
Lorsque lâagent utilisateur souhaite envoyer des informations dâauthentification au serveur, il peut utiliser le champ dâen-tĂȘte Authorization
Le champ dâen-tĂȘte Authorization est construit comme suit :
- Le nom dâutilisateur et le mot de passe sont combinĂ©s avec un seul deux-points (
:). Cela signifie que le nom dâutilisateur lui-mĂȘme ne peut pas contenir de deux points. - La chaĂźne rĂ©sultante est encodĂ©e en une sĂ©quence dâoctets. Le jeu de caractĂšres Ă utiliser pour cet encodage est par dĂ©faut non spĂ©cifiĂ©, tant quâil est compatible avec US-ASCII, mais le serveur peut suggĂ©rer lâutilisation dâUTF-8 en envoyant le paramĂštre charset.
- La chaĂźne rĂ©sultante est encodĂ©e Ă lâaide dâune variante de Base64 (+/ et avec remplissage).
- La mĂ©thode dâautorisation et un caractĂšre dâespacement (par exemple âBasic â) sont ensuite ajoutĂ©s Ă la chaĂźne encodĂ©e.
Par exemple, si le navigateur utilise Aladdin comme nom dâutilisateur et open sesame comme mot de passe, la valeur du champ est le codage Base64 de Aladdin:open sesame, ou QWxhZGRpbjpvcGVuIHNlc2FtZQ==. Le champ dâen-tĂȘte Authorization se prĂ©sente alors comme suit :
1
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Pour gĂ©nĂ©rer lâen-tĂȘte dâautorisation, utilisez la norme base64 pour encoder les <nom d'utilisateur>:<mot de passe> sĂ©parĂ©s par deux points et ajoutez-y le mot Basic, câest-Ă -dire Authorization : Basic base64(<username>:<password>).
Voici un pseudo-code qui, je lâespĂšre, lâexplique mieux :
1
2
3
username = "testuser"
password = "fakepassword"
authHeader = "Basic " + base64(username + " :" + password) // -> Basic dGVzdHVzZXI6ZmFrZXBhc3N3b3Jk
La commande suivante génÚre la valeur appropriée pour vous sur les systÚmes *nix :
1
echo "Basic $(echo -n 'testuser:fakepassword' | base64)"
INFO: EntĂȘte autorisation au format utilisateur:Mot_de_passe base 64
echo -n 'leno:mot de passe' | base64
Renvoie â> eWFubjptb3QgZGUgcGFzc2U=
curl
1
2
3
4
curl \
-u leno:mypass \
-d "accĂšs avec authentification" \
https://noti.rnmkcy.eu/yan_infos
POST http
1
2
3
curl \
-i -s -X POST -H "Authorization: Basic bGVubzpRpbjpvsZW5vNDk=" \
-d "POST/HTTP accĂšs avec authentification" "https://noti.rnmkcy.eu/yan_infos"
JavaScript
1
2
3
4
5
6
7
fetch('https://ntfy.example.com/mysecrets', {
method: 'POST', // PUT works too
body: 'Look ma, with auth',
headers: {
'Authorization': 'Basic cGhpbDpteXBhc3M='
}
})
Go
1
2
3
4
req, _ := http.NewRequest("POST", "https://ntfy.example.com/mysecrets",
strings.NewReader("Look ma, with auth"))
req.Header.Set("Authorization", "Basic cGhpbDpteXBhc3M=")
http.DefaultClient.Do(req)
Python
1
2
3
4
5
requests.post("https://ntfy.example.com/mysecrets",
data="Look ma, with auth",
headers={
"Authorization": "Basic cGhpbDpteXBhc3M="
})
PHP
1
2
3
4
5
6
7
8
9
file_get_contents('https://ntfy.example.com/mysecrets', false, stream_context_create([
'http' => [
'method' => 'POST', // PUT also works
'header' =>
'Content-Type: text/plain\r\n' .
'Authorization: Basic cGhpbDpteXBhc3M=',
'content' => 'Look ma, with auth'
]
]));
ntfy CLI
1
2
3
4
ntfy publish \
-u phil:mypass \
ntfy.example.com/mysecrets \
"Look ma, with auth"
B - Jetons (Tokens)
Le jeton peut ĂȘtre utilisĂ© Ă la place du nom dâutilisateur et du mot de passe lors de lâenvoi de messages. (Access tokens)
En plus de lâauthentification par nom dâutilisateur/mot de passe, ntfy fournit Ă©galement une authentification par jetons dâaccĂšs. Les jetons dâaccĂšs sont utiles pour Ă©viter dâavoir Ă configurer votre mot de passe dans plusieurs applications de publication/abonnement. Par exemple, vous pouvez utiliser un jeton dĂ©diĂ© pour publier Ă partir de votre hĂŽte de sauvegarde, et un autre Ă partir de votre systĂšme domotique.
Vous pouvez crĂ©er des jetons dâaccĂšs en utilisant la commande ntfy token, ou dans lâapplication web dans la section âCompteâ (lorsque vous ĂȘtes connectĂ©). Voir les jetons dâaccĂšs pour plus de dĂ©tails.
Une fois le jeton dâaccĂšs créé, vous pouvez lâutiliser pour vous authentifier auprĂšs du serveur ntfy, par exemple lorsque vous publiez ou vous abonnez Ă des sujets.
La commande ntfy token permet de gĂ©rer les jetons dâaccĂšs des utilisateurs. Les jetons peuvent avoir des Ă©tiquettes, et ils peuvent expirer automatiquement (ou ne jamais expirer). Chaque utilisateur peut avoir jusquâĂ 20 jetons (codĂ©s en dur).
Exemples de commandes (tapez ntfy token âhelp ou ntfy token COMMAND âhelp pour plus de dĂ©tails)
1
2
3
4
5
ntfy token list # Affiche la liste des jetons pour tous les utilisateurs
ntfy token list phil # Affiche la liste des jetons de l'utilisateur phil
ntfy token add phil # Crée un jeton pour l'utilisateur phil qui n'expire jamais
ntfy token add --expires=2d phil # Crée un jeton pour l'utilisateur phil qui expire dans 2 jours
ntfy token remove phil tk_th2sxr... # Supprimer le jeton
CrĂ©ation dâun jeton dâaccĂšs :
1
2
3
4
5
ntfy token add notif
ntfy token add --expires=30d --label="backups" notif
ntfy token list
utilisateur notif
- tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2 (sauvegardes), expire le 15 mars 23 14:33 EDT, accédé depuis 0.0.0.0 le 13 février 23 13:33 EST
Une fois le jeton dâaccĂšs créé, vous pouvez lâutiliser pour vous authentifier auprĂšs du serveur ntfy, par exemple lorsque vous publiez ou vous abonnez Ă des sujets.
Voici un exemple utilisant Bearer auth, avec le jeton tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2 :
curl
1
2
3
4
curl \
-H "Authorization: Bearer tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2" \
-d "Look ma, with auth" \
https://ntfy.example.com/mysecrets
POST http
1
2
3
4
5
POST /mysecrets HTTP/1.1
Host: ntfy.example.com
Authorization: Bearer tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2
Look ma, with auth
JavaScript
1
2
3
4
5
6
7
fetch('https://ntfy.example.com/mysecrets', {
method: 'POST', // PUT works too
body: 'Look ma, with auth',
headers: {
'Authorization': 'Bearer tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2'
}
})
Go
1
2
3
4
req, _ := http.NewRequest("POST", "https://ntfy.example.com/mysecrets",
strings.NewReader("Look ma, with auth"))
req.Header.Set("Authorization", "Bearer tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2")
http.DefaultClient.Do(req)
Python
1
2
3
4
5
requests.post("https://ntfy.example.com/mysecrets",
data="Look ma, with auth",
headers={
"Authorization": "Bearer tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2"
})
PHP
1
2
3
4
5
6
7
8
9
file_get_contents('https://ntfy.example.com/mysecrets', false, stream_context_create([
'http' => [
'method' => 'POST', // PUT also works
'header' =>
'Content-Type: text/plain\r\n' .
'Authorization: Bearer tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2',
'content' => 'Look ma, with auth'
]
]));
ntfy CLI
1
2
3
4
ntfy publish \
--token tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2 \
ntfy.example.com/mysecrets \
"Look ma, with auth"
Android ntfy (PRIVE)
Installer android ntfy
Installer lâapplication ntfy disponible sur F-Droid
AprĂšs ouverture de lâapplication

Il faut saisir utilisateur et mot de passe car notification privée
Configurer application mobile ntfy
Configuration de lâapplication mobile Android
TĂ©lĂ©chargez dâabord lâapplication depuis f-droid , et aprĂšs son installation, lancez-la.

Au premier lancement, vous serez accueilli par un Ă©cran vide sans aucun sujet. Pour configurer lâapplication pour votre instance auto-hĂ©bergĂ©e, ouvrez le menu des paramĂštres (menu Ă 3 points > paramĂštres)

et accédez à « Gérer les utilisateurs » sous Général.

Appuyez sur « Ajouter un nouvel utilisateur » et dans le Service URLchamp, entrez lâURL que vous avez utilisĂ©e pour votre instance ntfy ci-dessus . Les champs Nom dâutilisateur et Mot de passe seront le deuxiĂšme utilisateur que vous avez créé prĂ©cĂ©demment
Une fois les champs remplis, appuyez sur « AJOUTER UN UTILISATEUR ».

Votre section utilisateur devrait alors ressembler Ă lâimage suivante

Appuyez sur la flĂšche de retour (ou faites glisser votre doigt vers lâarriĂšre), entrez le paramĂštre Serveur par dĂ©faut et saisissez Ă nouveau votre URL ntfy.

Maintenant, appuyez ou faites glisser votre doigt pour revenir Ă lâĂ©cran dâaccueil. Pour dĂ©sactiver la notification de livraison instantanĂ©e, qui sâaffiche dans votre tiroir de notification, faites glisser votre doigt vers le sĂ©lecteur dâapplication et appuyez longuement sur lâicĂŽne de lâapplication ntfy ![]()
Appuyez ensuite sur « Informations sur lâapplication ».

Sur la page des paramĂštres de lâapplication, appuyez sur Notifications et dĂ©sactivez la notification « Service dâabonnement » sous « Autre » ???.

Sâabonner Ă un sujet
ATTENTION :Pour s'abonner Ă un sujet, il faut que le sujet existe.
Sur lâĂ©cran dâaccueil de lâapplication, appuyez sur le bouton vert « + » et saisissez le nom du sujet que vous avez créé prĂ©cĂ©demment lors de lâ Ă©tape dâaccĂšs utilisateur . Appuyez ensuite sur « SâABONNER ».

Si cela est fait correctement, votre nouveau sujet devrait apparaĂźtre sur lâĂ©cran dâaccueil de votre application.
Les paramĂštres de lâabonnement peuvent ĂȘtre ajustĂ©s en appuyant dessus puis en appuyant sur le menu Ă 3 points. Appuyez ensuite sur « ParamĂštres dâabonnement » dans le menu. Ici, vous pouvez modifier les prĂ©fĂ©rences de notification ainsi que lâicĂŽne et le nom dâaffichage de lâabonnement.
ntfy - Ligne de commande
Sécuriser
Pour Ă©viter que nâimporte qui puisse envoyer ou recevoir des messages, vous pouvez utiliser un mot de passe.
1
2
ntfy publish -u admin:myp@ssw0rd ntfy.example.com/monsujet "This is a message"
curl -u admin:myp@ssw0rd -d "This is a message" https://ntfy.example.com/monsujet
Cela implique un hébergement du serveur ntfy
Envoi
1
ntfy publish -u utilisateur:mot_de_passe ntfysrv.eu/test "Nouveau test depuis PC1 en ligne de commande" |jq
Affichage message expédié
1
2
3
4
5
6
7
8
{
"id": "WqRBXcEmOoqv",
"time": 1708692353,
"expires": 1708735553,
"event": "message",
"topic": "test",
"message": "Nouveau test depuis PC1 en ligne de commande"
}
Réception
Se mettre en attente dâun message
1
2
3
4
# Mot de passe sur serveur privé
ntfy sub -u utilisateur:mot_de_passe ntfysrv.eu/test |jq
# Clé token tk_xxxxxxxxxxx
ntfy sub -s all --token tk_xxxxxxxxxxx https://ntfysrv.eu/test |jq
Affichage Ă la rĂ©ception dâun message
1
2
3
4
5
6
7
8
9
{
"id": "BY9zD5GQqCI9",
"time": 1708693062,
"expires": 1708736262,
"event": "message",
"topic": "test",
"title": "Firefox PC1",
"message": "Nouvel essai depuis le navigateur"
}
Utilitaire jq pour un affichage au format json
Réception avec notify-send
Pour afficher vos notifications directement sur votre environnement de bureau, vous pouvez utiliser la commande ntfy sub avec notify-send.
1
2
3
4
# Mot de passe sur serveur privé
ntfy sub -u utilisateur:mot_de_passe ntfysrv.eu/test 'notify-send -t 0 "ntfy" "$m"'
# Clé token tk_xxxxxxxxxxx
ntfy sub --token tk_xxxxxxxxxxx https://ntfysrv.eu/test 'notify-send -t 0 "ntfy" "$m"'
Voir tous les anciens messages
Si vous souhaitez voir lâhistorique des messages, vous pouvez utiliser le paramĂštre -s all
1
ntfy sub -s all monsujet
Notification token + curl
Lâutilisateur notif a les droits en lecture/Ă©criture et possĂšde une clĂ© token qui englobe utilisateur/mot de passe
Ligne de commande
1
curl -H "Title: Test envoi notification" -u :token_utilisateur_notif https://noti.rnmkcy.eu/notif_infos -d "ceci est un message de test"
Différentes publications Publishing
1
2
3
4
5
6
7
8
9
10
11
12
curl \
-H "Title: Alerte!" \
-H "Authorization: Bearer tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2" \
-H "X-Tags: warning,mailsrv13,daily-backup" \
-d "Envoi en cas d'erreur!" \
https://noti.rnmkcy.eu/notif_infos
curl \
-H "Authorization: Bearer tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2" \
-d "Look ma, with auth" \
https://ntfy.example.com/mysecrets
Alerte sur connexion SSH
Alerte en cas de connexion SSH
Le fichier /etc/pam.d/sshd
1
2
# Ă la fin du fichier
session optional pam_exec.so /usr/bin/ntfy-ssh-login.sh
Le fichier /usr/bin/ntfy-ssh-login.sh
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
if [ "${PAM_TYPE}" = "open_session" ]; then
curl \
-H "Title: Alerte connexion SSH!" \
-H "Authorization: Bearer tk_cpifjh59xo3zu2bgi2jyfkif4wsbf" \
-H prio:high \
-H tags:warning \
-d "SSH ${HOSTNAME} user: ${PAM_USER} from ${PAM_RHOST}" \
https://noti.rnmkcy.eu/notif_infos
fi
Le rendre exécutable : chmod +x /usr/bin/ntfy-ssh-login.sh
Web Push (INACTIF)
Description
Web Push (RFC8030) permet Ă ntfy de recevoir des notifications push, mĂȘme lorsque lâapplication web ntfy (ou mĂȘme le navigateur, selon la plateforme) est fermĂ©e. Une fois activĂ©, lâutilisateur peut activer les notifications de fond pour leurs sujets dans lâapplication Web sous ParamĂštres. Une fois activĂ© par lâutilisateur, ntfy transmettra les messages publiĂ©s au paramĂštre push, qui les transmettra ensuite au navigateur.
Pour configurer Web Push, vous devez générer et configurer un keypair VAPID (via ntfy webpush keys), une base de données pour suivre les abonnements du navigateur et une adresse email admin (vous):
Web-push-public-keyest la clĂ© publique VAPID gĂ©nĂ©rĂ©e, exemple: AA1234BBCCddvveekaabcdfqwertyuiopasdfghjklzxcvbnm1234567890Web-push-private-keyest la clĂ© privĂ©e VAPID gĂ©nĂ©rĂ©e, exemple: AA2BB1234567890abcdefzxcvbnm1234567890web-push-fileest un fichier de base de donnĂ©es pour suivre les paramĂštres dâabonnement du navigateur, exemple:
/var/lib/ntfy/webpush.dbWeb-push-email-addressest lâadresse email dâadministration envoyĂ©e au fournisseur push, exemple:
sysadmin@exemple.comweb-push-startup-queriesest une liste optionnelle de requĂȘtes Ă exĂ©cuter au dĂ©marrage
Limites:
- Comme les notifications de navigateur de premier plan, les notifications de poussĂ©e de fond exigent que lâapplication web soit desservie par HTTPS. Un certificat valide est requis, car les travailleurs de services ne fonctionneront pas sur des origines avec des certificats non fiables.
- Web Push nâest supportĂ© que pour le mĂȘme serveur. Vous ne pouvez pas utiliser sâabonner Ă web push sur un sujet sur un autre serveur. Ceci est dĂ» Ă une limitation de lâAPI Push, qui nâautorise pas plusieurs serveurs push pour la mĂȘme origine.
Mise en place
Sur le serveur ntfy
Pour configurer les clĂ©s VAPID, les gĂ©nĂ©rer dâabord : ntfy webpush keys
Ensuite copiez les valeurs gĂ©nĂ©rĂ©es dans le fichier serveur.yml ou utilisez les variables dâenvironnement correspondantes ou les arguments en ligne de commande
1
2
3
4
web-push-public-key: AA1234BBCCddvveekaabcdfqwertyuiopasdfghjklzxcvbnm1234567890
web-push-private-key: AA2BB1234567890abcdefzxcvbnm1234567890
web-push-file: /var/cache/ntfy/webpush.db
web-push-email-address: sysadmin@example.com
- Le web-push-file est utilisĂ© pour stocker les abonnements push. Les abonnements inutilisĂ©s envoient un avertissement aprĂšs 7 jours et expirent automatiquement aprĂšs 9 jours (non configurable). Si la passerelle renvoie une erreur (par exemple 410 Gone quand un utilisateur sâest dĂ©sabonnĂ©), les abonnements sont Ă©galement supprimĂ©s automatiquement.
- Lâapplication web rafraĂźchit les abonnements au dĂ©but et rĂ©guliĂšrement sur un intervalle, mais ce fichier doit ĂȘtre maintenu Ă travers les redĂ©marrages. Si le fichier dâabonnement est supprimĂ© ou perdu, les applications web qui ne sont pas ouvertes ne recevront pas de nouvelles notifications de poussĂ©e web avant dâouvrir.
- Il n'est pas recommandĂ© de changer votre paire de clĂ©s publique/privĂ©e. Les navigateurs nâautorisent quâune seule identitĂ© de serveur (clĂ© publique) par origine, et si vous les modifiez, les clients ne pourront pas sâabonner via la poussĂ©e web jusquâĂ ce que lâutilisateur efface manuellement la permission de notification.
ntfy - Application bureau
Utilisation application web progressive (PWA)
Bien que ntfy nâait pas dâapplication de bureau native, il est construit comme une application web progressive (PWA) et peut donc ĂȘtre installĂ© sur les appareils de bureau et mobiles.
Cela lui donne son propre lanceur (par exemple raccourci sur Windows, application sur macOS, raccourci de lancement sur Linux, icĂŽne dâĂ©cran dâaccueil sur iOS et icĂŽne de lancement sur Android), une fenĂȘtre autonome, des notifications de poussĂ©e et un badge dâapplication avec le compte de notification non lu.
Lâinstallation de lâapplication Web est prise en charge sur (voir tableau de compatibilitĂ© pour plus de dĂ©tails):
- Chrome: Android, Windows, Linux, macOS
- Safari : iOS 16.4+, macOS 14+
- Edge : Windows
- Firefox: Android, ainsi que sur Windows/Linux via une extension
Notez que pour les serveurs auto-organisĂ©s, Web Push doit ĂȘtre configurĂ© pour que le PWA fonctionne.
Installation
Chrome sur le bureau
Pour installer et enregistrer lâapplication web via Chrome, cliquez sur lâicĂŽne âinstall appâ . AprĂšs lâinstallation, vous pouvez trouver lâapplication dans votre tiroir :

Chrome/Firefox sur Android
Pour Chrome sur Android, soit cliquez sur la banniĂšre âAjouter Ă lâĂ©cran dâaccueilâ au bas de lâĂ©cran, ou sĂ©lectionnez âInstaller lâapplicationâ dans le menu, puis cliquez sur âInstallerâ dans le menu contextuel. AprĂšs lâinstallation, vous pouvez trouver lâapplication dans votre tiroir et sur votre Ă©cran dâaccueil.

Pour Firefox, sĂ©lectionnez âInstallerâ dans le menu, puis cliquez sur âAjouterâ pour ajouter une icĂŽne Ă votre Ă©cran dâaccueil:

Firefox archlinux bureau
via une extension

Setup Progressive Web Apps for Firefox â> Accept agreement


Installer le paquet archlinux : sudo pacman -S firefoxpwa


Notifications arriĂšre-plan
Les notifications de fond via le web push sont activĂ©es par dĂ©faut et ne peuvent pas ĂȘtre dĂ©sactivĂ©es lorsque lâapplication est installĂ©e, car les notifications ne seraient pas livrĂ©es de maniĂšre fiable autrement. Vous pouvez muter des sujets pour lesquels vous ne voulez pas recevoir de notifications.
Sur le bureau, vous avez gĂ©nĂ©ralement besoin de votre navigateur ou de lâapplication Web ouverte pour recevoir des notifications, bien que lâonglet ntfy nâait pas besoin dâĂȘtre ouvert. Sur mobile, vous nâavez pas besoin dâavoir lâapplication Web ouverte pour recevoir des notifications. Regardez les documents web pour une ventilation dĂ©taillĂ©e.
Ntfy Alpine Linux
Alpine Linux, processus dâinstallation de ntfy, un outil qui envoie des notifications de bureau quand une commande Ă long terme finit dâexĂ©cuter
Installer ntfy
Outils
1
sudo apk add curl net-tools
installer ntfy
1
sudo apk add ntfy
Activer et lancer le service ntfy
1
2
3
4
# syntaxe commande
sudo rc-update add ntfy
# OU
sudo rc-update add ntfy default
Renvoie le résultat suivant
* service ntfy added to runlevel default
Démarrer le service ntfy
1
2
3
sudo rc-service ntfy start
# OU
sudo service ntfy start
Renvoie le résultat suivant
1
2
3
4
5
6
* Caching service dependencies ... [ ok ]
* /var/log/ntfy.log: creating file
* /var/log/ntfy.log: correcting owner
* /var/lib/ntfy: creating directory
* /var/lib/ntfy: correcting owner
* Starting ntfy ... [ ok ]
Port en écoute : 8080
Créer une instance ntfy privée
Voir doc Instance privée
Configurer server.yml
Le fichier de configuration /etc/ntfy/server.yml
1
2
3
4
5
listen-http: ":8083"
auth-file: /var/lib/ntfy/user.db
auth-default-access: "deny-all"
behind-proxy: true
- Listen-http - Le port sur lequel le serveur Web HTTP Ă©coute (par dĂ©faut = 80). Vous pouvez Ă©galement ajouter une adresse IP Ă laquelle vous connecter (listen-http : â127.0.0.1:8080â)
- auth-file - Emplacement du user.dbfichier dâauthentification.
- auth-default-access - DĂ©finir ceci sur âdeny-allâ forcera tous les sujets Ă ĂȘtre privĂ©s par dĂ©faut.
- behind-proxy - Si ntfy est dĂ©ployĂ© derriĂšre un proxy comme Caddy, nginx, etc., alors cela doit ĂȘtre dĂ©fini sur true.
Redémarrer le serveur ntfy
1
sudo service ntfy restart
Proxy nginx noti.rnmkcy.eu
/etc/nginx/conf.d/noti.rnmkcy.eu.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server {
listen 80;
listen [::]:80;
server_name noti.rnmkcy.eu;
# redirect all plain HTTP requests to HTTPS
return 301 https://noti.rnmkcy.eu$request_uri;
}
server {
# ipv4 listening port/protocol
listen 443 ssl;
# ipv6 listening port/protocol
listen [::]:443 ssl;
server_name noti.rnmkcy.eu;
include /etc/nginx/conf.d/ssl-modern.inc;
location / {
proxy_pass http://192.168.0.223:8083;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 3m;
proxy_send_timeout 3m;
proxy_read_timeout 3m;
client_max_body_size 0; # Stream request body to backend
}
}
Créer utilisateur
Passer en mode su : sudo -s
Créer utilisateur dans NTFY (Users and roles)
Puisque nous avons dĂ©jĂ dĂ©fini lâ attribut auth-file et auth-default-access
Ajout de notre premier utilisateur administrateur ânotifâ.
1
ntfy user add --role=admin notif
Second utilisateur ânotifmobâ
1
ntfy user add notifmob
Une fois lâutilisateur créé, nous pouvons lâabonner Ă notre premier sujet de notification.
1
ntfy access notifmob yan_infos rw
1
2
3
4
granted read-write access to topic yan_infos
user notifmob (role: user, tier: none)
- read-write access to topic yan_infos
Jetons (Tokens)
Le jeton peut ĂȘtre utilisĂ© Ă la place du nom dâutilisateur et du mot de passe lors de lâenvoi de messages. (Access tokens)
1
ntfy token add notif
Une fois le jeton dâaccĂšs créé, vous pouvez lâutiliser pour vous authentifier auprĂšs du serveur ntfy, par exemple lorsque vous publiez ou vous abonnez Ă des sujets.
ntfy curl + token
1
2
3
4
5
6
7
curl \
-H "Title: Information!" \
-H "Authorization: Bearer tk_fjh5bfo3zu2cpibgi2jyfkif49xws" \
-H prio:low \
-H tags:info \
-d "Notification utilisant un jeton d'accĂšs" \
https://noti.rnmkcy.eu/yan_infos
ntfy CLI + token
1
2
3
4
ntfy publish \
--token tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2 \
ntfy.example.com/mysecrets \
"Look ma, with auth"
Notifications par courriel
Pour permettre la transmission de messages par e-mail, vous pouvez configurer un serveur SMTP pour les messages sortants. Une fois configurĂ©, vous pouvez dĂ©finir lâen-tĂȘte X-Email pour envoyer des messages par e-mail (par exemple curl -d âhi hereâ -H âX-Email: phil@example.comâ ntfy.sh/mytopic).
Ă ce jour, seuls les serveurs SMTP avec PLAIN auth et STARTLS sont pris en charge. Pour activer lâenvoi dâe-mails, vous devez dĂ©finir les paramĂštres suivants :
- base-url est lâURL racine du serveur ntfy; cela est nĂ©cessaire pour le pied de page de messagerie
- smtp-sender-addr est le nom dâhĂŽte:port du serveur SMTP
- smtp-sender-user et smtp-sender-pass sont le nom dâutilisateur et le mot de passe de lâutilisateur SMTP
- smtp-sender-from est lâadresse Ă©lectronique de lâexpĂ©diteur
Ajouter ce qui suit au fichier de configuration /etc/ntfy/serveur.yml pour le courrier sortant
1
2
3
4
5
base-url: "https://noti.rnmkcy.eu"
smtp-sender-addr: "mx1.xoyize.xyz:587"
smtp-sender-user: "yack@cinay.eu"
smtp-sender-pass: "Abd13Kf+sfAk2Dzifjafldk"
smtp-sender-from: "yack@cinay.eu"
Redémarrer le service ntfy
1
sudo service ntfy restart
Tester
1
2
3
4
5
6
7
8
curl \
-H "X-Email: ntfy@cinay.eu" \
-H "Title: Information!" \
-H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxx" \
-H prio:low \
-H tags:info \
-d "Notification utilisant un jeton d'accĂšs" \
https://noti.rnmkcy.eu/yan_infos





