# Installation

[![image.png](https://docs.rakouns.bzh/uploads/images/gallery/2025-10/scaled-1680-/wPiimage-png.png)](https://docs.rakouns.bzh/uploads/images/gallery/2025-10/scaled-1680-/wPiimage-png.png)

### Fichier docker-compose

Dans cette procédure, nous allons utiliser **Docker**. Une documentation préalable à ce sujet est disponible [ici](https://docs.rakouns.bzh/books/docker).  
Commençons par créer un fichier `docker-compose.yaml`, adapté à nos besoins :

```bash
services:
  ntfy:
    image: binwiederhier/ntfy  # On utilise l'image officielle du service Ntfy, un serveur de notification en temps réel (push).
    container_name: ntfy       # On nomme le container "ntfy" pour le retrouver plus facilement via Docker ou Portainer.
        command:
      - serve                  # On lance le service avec la commande "serve", qui démarre le serveur Ntfy.
    environment:
      - TZ=UTC+01:00           # On définit le fuseau horaire (ici UTC+1, soit Paris/Bruxelles en hiver).
    user: 1000:1000            # Le container s'exécute avec l'UID et GID 1000 (souvent le premier utilisateur local), pour éviter les droits root.
    volumes:
      - /var/cache/ntfy:/var/cache/ntfy  # Volume pour stocker les données en cache (messages, abonnements…).
      - /etc/ntfy:/etc/ntfy              # Volume pour les fichiers de configuration personnalisés de Ntfy.
    ports:
      - 8080:80                # On expose le port interne 80 du container sur le port 8080 de l'hôte (http://localhost:8080).
    healthcheck:              # Vérification régulière que le service fonctionne bien :
      test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"]
      interval: 60s           # Le test est exécuté toutes les 60 secondes.
      timeout: 10s            # Il échoue si le test ne répond pas en moins de 10 secondes.
      retries: 3              # Après 3 échecs consécutifs, Docker considère que le container est "unhealthy".
      start_period: 40s       # On attend 40 secondes après le démarrage avant de commencer les vérifications.
    restart: unless-stopped   # Le container redémarre automatiquement sauf si on l'arrête manuellement (bon compromis pour la stabilité).

```

<div class="_tableContainer_16hzy_1" id="bkmrk-port-protocole-descr"></div>## Démarrage

Une fois le fichier `docker-compose.yaml` créé, nous pouvons **lancer NTFY** avec la commande suivante :

```
docker compose up -d
```