Files
s-informer-sur-la-tech-www/articles/2026/Installer un service ntfy dans votre domaine.md

6.2 KiB

title, description, tags, date, lastmod, type, category, status
title description tags date lastmod type category status
Installer un service ntfy dans votre domaine
2026-03-08 16:47 2026-03-08 18:11
article
Guide
brouillon

Installer son propre serveur ntfy sur Proxmox est une excellente idée pour reprendre le contrôle de ses notifications sans dépendre de services tiers.

Voici un tutoriel pas à pas pour configurer cela dans un conteneur LXC Debian sur ProxMox.


1. Création du conteneur LXC sur Proxmox

  1. Créez un nouveau conteneur :

    • Hostname : ntfy

    • Ressources conseillées : 1 vCPU, 512 Mo de RAM, et 8 Go de disque (ntfy est très léger).

    • Réseau : Attribuez une IP statique ou une réservation DHCP.

    • Template : Debian 13.

  2. Démarrez le conteneur et connectez-vous en SSH ou via la console.


2. Installation de ntfy

Nous allons utiliser le dépôt officiel pour faciliter les mises à jour.

# Mise à jour du système
sudo apt update && sudo apt upgrade -y

# Installation des dépendances
sudo apt install -y curl debian-archive-keyring

# Créer le dossier pour les clés s'il n'existe pas
sudo mkdir -p /etc/apt/keyrings

# Télécharger la nouvelle clé
sudo curl -L -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/ntfy.gpg] https://archive.ntfy.sh/apt stable main" | sudo tee /etc/apt/sources.list.d/ntfy.list

sudo apt update
sudo apt install ntfy -y

# Activation du service au démarrage
sudo systemctl enable ntfy

3. Configurer le reverseProxy avec le nom public

1. Publication sur mon-domaine.fr

Pour que cela fonctionne depuis l'extérieur, vous devez configurer votre Reverse Proxy (qui doit se trouver sur une autre machine ou un autre LXC) :

  1. Pointage DNS : Faites pointer ntfy.mon-domaine.fr vers votre IP publique.

  2. NAT/Port Forwarding : Sur votre box/routeur, redirigez les ports 80 et 443 vers l'IP de votre Reverse Proxy.

  3. Config Proxy : Redirigez les requêtes arrivant sur ntfy.mon-domaine.fr vers l'IP locale de votre LXC ntfy sur le port 8080.

    • Note importante : Assurez-vous d'activer le support des WebSockets et de passer les headers Upgrade et Connection, sinon les notifications sur smartphone ne seront pas instantanées.

2. Le "piège" du Reverse Proxy (Headers)

Comme vous publiez sur mon-domaine.fr, votre Reverse Proxy (Nginx, Traefik ou autre) doit impérativement transmettre l'IP réelle du visiteur à ntfy, sinon ntfy croira que toutes les requêtes viennent de votre proxy.

Si vous utilisez Nginx, votre bloc de configuration devrait ressembler à ceci pour gérer les WebSockets (indispensables pour l'app Android/iOS) :

location / {
    proxy_pass http://IP_DU_LXC_NTFY:80;
    proxy_http_version 1.1;

    # Ces lignes sont vitales pour les notifications en temps réel
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Host $host;  
	proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    
    proxy_connect_timeout 1h;
    proxy_send_timeout 1h;
    proxy_read_timeout 1h;
}

4. Configuration de ntfy

Avant de modifier la configuration, nous devons préparer l'environnement de stockage pour que ntfy puisse enregistrer ses utilisateurs et le cache des messages de manière persistante.

Exécutez ces commandes pour créer le répertoire de données et attribuer les permissions correctes à l'utilisateur système ntfy :

sudo mkdir -p /var/lib/ntfy  
sudo chown ntfy:ntfy /var/lib/ntfy
sudo chmod 700 /var/lib/ntfy

Le fichier de configuration principal se trouve dans /etc/ntfy/server.yml.

  1. Ouvrez le fichier : nano /etc/ntfy/server.yml

  2. Modifiez les lignes suivantes pour correspondre à votre domaine ntfy.mon-domaine.fr :

# L'URL de base est cruciale pour les liens dans les notifications
base-url: "https://ntfy.mon-domaine.fr"

# Écoute sur le port 80 (derrière un reverse proxy)
listen-http: ":8080"

# Lien avec votre broker MQTT existant
mqtt-helper-url: "tcp://mqtt.workgroup.lan:1883"
mqtt-helper-subscriptions:
  - topic: "ntfy/#"

# Recommandé : Activer l'authentification pour éviter les abus sur votre domaine
auth-file: "/var/lib/ntfy/user.db"
auth-default-access: "deny-all"  
enable-login: true

cache-file: "/var/lib/ntfy/cache.db"  
auth-file: "/var/lib/ntfy/user.db"
  1. Redémarrez le service : systemctl restart ntfy

Note : Si le service refuse de démarrer, vérifiez les logs avec journalctl -u ntfy -f. Une erreur de syntaxe dans le fichier .yml (comme un espace en trop) est souvent la cause.

1. La gestion du cache (Indispensable)

Par défaut, si votre téléphone est hors ligne au moment de l'envoi, le message est perdu. Pour éviter cela, assurez-vous que la base de données de cache est activée dans /etc/ntfy/server.yml :

# Permet de conserver les messages si le destinataire est hors ligne
cache-file: "/var/lib/ntfy/cache.db"
cache-duration: "12h" # Garde les messages 12h par exemple

2. Gestion des utilisateurs (Sécurité)

Puisque vous avez activé auth-default-access: "deny-all", vous devez créer votre premier utilisateur administrateur pour pouvoir envoyer des messages :

# Créer un utilisateur admin
ntfy user add --role=admin votre_nom_utilisateur

# Redémarrer le service pour appliquer les changements
systemctl restart ntfy

5. Test de fonctionnement

Une fois le domaine et le proxy configurés, vous pouvez tester l'envoi d'une notification via un simple curl depuis n'importe quel terminal :

curl -u votre_user:votre_password \ -d "Test de notification sécurisée" \ https://ntfy.mon-domaine.fr/test

Si vous allez sur https://ntfy.mon-domaine.fr/test, vous devriez voir votre message apparaître.

Note : N'oubliez pas d'ouvrir le port 80/443 sur votre box/firewall vers votre Reverse Proxy !