Uptime Kuma – Installation et exploitation via Docker Compose sur la machine uptimekuma

Table des matières

Introduction, contexte, définitions et objectifs

Cette documentation décrit l’installation, la configuration, l’exploitation et l’architecture de déploiement de Uptime Kuma sur la machine uptimekuma.

Objectif

Mettre en place une solution de supervision accessible via interface web permettant : - La surveillance de services, serveurs, ports, DNS, HTTP(S), etc. - La publication d’une page de statut publique - L’administration sécurisée via une interface interne dédiée - L’isolation de l’application via conteneurisation Docker Compose - La persistance des données sur un stockage dédié - L’exposition web sécurisée via Nginx Proxy Manager (NPM)

Architecture fonctionnelle

  • Machine hôte : uptimekuma
  • Application : Uptime Kuma
  • Mode de déploiement : Docker Compose
  • Fichier de composition : /compose/uptime-kuma/docker-compose.yml
  • Données persistantes : /data/uptimekuma
  • Reverse Proxy : Nginx Proxy Manager
  • Domaine public : status.edu-kit.fr
  • Domaine interne / administration : uptimekuma.int.edu-kit.fr

Sécurité

Deux niveaux d’accès sont mis en place :

Public : - status.edu-kit.fr - Accessible uniquement pour consultation de la page de statut - Protégé par règles Nginx custom empêchant l’accès à l’interface d’administration

Interne : - uptimekuma.int.edu-kit.fr - Réservé à l’administration complète de la plateforme

Prérequis

Environnement système

  • Nom d’hôte : uptimekuma
  • OS : Linux (Debian 13)
  • CPU : 1 vCPU
  • RAM : 2 Go
  • Stockage système : 8 Go
  • Stockage :
    • /compose : composition
    • /data : données persistantes
  • Réseau :
    • DNS configuré
    • Accès HTTP/HTTPS
    • Reverse proxy opérationnel

Dépendances logicielles

  • Docker Engine
  • Docker Compose Plugin
  • Nginx Proxy Manager
  • Accès root ou

Installation et configuration

Installation de Docker

Mise à jour système

 apt update &&  apt upgrade -y

Installation Docker + Compose

 apt install docker.io docker-compose-plugin -y

Vérification

docker --version
docker compose version

Création de l’arborescence

 mkdir -p /compose/uptime-kuma
 mkdir -p /data/uptimekuma

Création du fichier Docker Compose

 nano /compose/uptime-kuma/docker-compose.yml
services:
  uptimekuma:
    image: louislam/uptime-kuma:2
    container_name: uptimekuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - "/data/uptimekuma:/app/data"
    environment:
      - UPTIME_KUMA_PORT=3001
      - TZ=Europe/Paris
      - UPTIME_KUMA_IN_CONTAINER=1
      - UPTIME_KUMA_DISABLE_FRAME_SAMEORIGIN=true
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3001"]
      interval: 30s
      retries: 3
      start_period: 10s
      timeout: 5s

Déploiement du service

cd /compose/uptime-kuma
 docker compose up -d

Configuration Nginx Proxy Manager

Proxy Host public

  • Domaine : status.edu-kit.fr
  • Forward Port : 3001

Règles custom

location ~ ^/(dashboard|manage-status-page|settings|api|login|register|setup) {
    deny all;
    return 403;
}

Proxy Host interne

  • Domaine : uptimekuma.int.edu-kit.fr
  • Usage : administration complète

Sauvegarde

tar -czf /backup/uptimekuma_$(date +%F).tar.gz /data/uptimekuma

Mise à jour

cd /compose/uptime-kuma
 docker compose pull
 docker compose up -d
 docker image prune -f

Problèmes rencontré :

Port 3001 déjà utilisé

 ss -tulpn | grep 3001

Permissions

 chown -R 1000:1000 /data/uptimekuma

Sources :

  • Documentation officielle Uptime Kuma : https://github.com/louislam/uptime-kuma
  • Documentation Docker : https://docs.docker.com/
  • Documentation Nginx Proxy Manager : https://nginxproxymanager.com/
  • Documentation Nginx : https://nginx.org/en/docs/