PatchMon : Monitoring de Mises à Jour Linux
Tutoriel complet pour installer PatchMon, une solution Open Source moderne permettant de centraliser l'état des correctifs de sécurité de tout votre parc de serveurs (Debian, Ubuntu, RHEL) via une interface web.
1. Préparation des Dossiers
Nous allons organiser les fichiers proprement sur le serveur Docker.
# Création du dossier principal mkdir -p /opt/docker-compose/patchmon # On se place dans le dossier cd /opt/docker-compose/patchmon # Création des sous-dossiers pour les volumes persistants mkdir agent_files postgres_data redis_data
2. Génération des Mots de Passe
Pour sécuriser l'installation, nous devons générer 3 clés secrètes hexadécimales.
openssl rand -hex 64 trois fois de suite dans votre terminal.
Notez les 3 résultats, vous en aurez besoin pour :
- Le mot de passe de la Base de données (Postgres).
- Le mot de passe du Cache (Redis).
- Le secret JWT (Sécurité API).
3. Fichier Docker Compose
Créez le fichier docker-compose.yml. Copiez le contenu ci-dessous et remplacez les mentions VOTRE_... par vos clés générées à l'étape précédente.
name: patchmon
services:
# 1. BASE DE DONNEES POSTGRESQL
database:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: patchmon_db
POSTGRES_USER: patchmon_user
# --- REMPLACER PAR LE MDP N°1 ---
POSTGRES_PASSWORD: VOTRE_MOT_DE_PASSE_DB_ICI
volumes:
- ./postgres_data:/var/lib/postgresql/data
networks:
- patchmon-internal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U patchmon_user -d patchmon_db"]
interval: 3s
timeout: 5s
retries: 7
# 2. CACHE REDIS
redis:
image: redis:7-alpine
restart: unless-stopped
# --- REMPLACER PAR LE MDP N°2 ---
command: redis-server --requirepass VOTRE_MOT_DE_PASSE_REDIS_ICI
volumes:
- ./redis_data:/data
networks:
- patchmon-internal
healthcheck:
test: ["CMD", "redis-cli", "--no-auth-warning", "-a", "VOTRE_MOT_DE_PASSE_REDIS_ICI", "ping"]
interval: 3s
timeout: 5s
retries: 7
# 3. BACKEND (Serveur API)
backend:
image: ghcr.io/patchmon/patchmon-backend:latest
restart: unless-stopped
environment:
LOG_LEVEL: info
# --- REMPLACER PAR LE MDP N°1 ---
DATABASE_URL: postgresql://patchmon_user:VOTRE_MOT_DE_PASSE_DB_ICI@database:5432/patchmon_db
# --- REMPLACER PAR LE MDP N°3 ---
JWT_SECRET: VOTRE_JWT_SECRET_ICI
# Configuration Réseau (IMPORTANT)
SERVER_PROTOCOL: http
SERVER_HOST: 192.168.1.200 # <--- METTRE L'IP DE VOTRE SERVEUR
SERVER_PORT: 3000
CORS_ORIGIN: http://192.168.1.200:3000 # <--- URL D'ACCES DANS LE NAVIGATEUR
# Configuration Redis
REDIS_HOST: redis
REDIS_PORT: 6379
# --- REMPLACER PAR LE MDP N°2 ---
REDIS_PASSWORD: VOTRE_MOT_DE_PASSE_REDIS_ICI
REDIS_DB: 0
volumes:
- ./agent_files:/app/agents
networks:
- patchmon-internal
depends_on:
database:
condition: service_healthy
redis:
condition: service_healthy
# 4. FRONTEND (Interface Web)
frontend:
image: ghcr.io/patchmon/patchmon-frontend:latest
restart: unless-stopped
ports:
- "3000:3000"
networks:
- patchmon-internal
depends_on:
backend:
condition: service_healthy
networks:
patchmon-internal:
driver: bridge
4. Lancement et Permissions
Nous allons démarrer les conteneurs. Une correction de permission est souvent nécessaire pour le dossier des agents.
# 1. Démarrer les conteneurs docker compose up -d # 2. Corriger les permissions (Si le backend redémarre en boucle) sudo chown -R 1000:1000 ./agent_files # 3. Redémarrer le backend pour appliquer docker compose restart backend
5. Configuration Web et Ajout d'Hôte
Accédez à l'interface via http://VOTRE_IP:3000 et créez le compte administrateur.
Ajouter un serveur à surveiller
- Allez dans le menu Hosts.
- Cliquez sur Add Host.
- Donnez un nom (ex:
SRV-PROD-01). - L'interface vous donne une commande
curlunique contenant votre clé API.
Connectez-vous sur le serveur Linux client (celui que vous voulez surveiller) et collez la commande fournie par l'interface :
# Exemple de structure (Utilisez votre propre commande !) curl -s http://192.168.1.200:3000/api/v1/hosts/install -H "X-API-ID: patchmon_xxx" | sh
6. Vérification et Commandes Agent
Une fois l'agent installé sur le client, vérifiez qu'il communique bien avec le serveur central.
# Tester la connexion au serveur patchmon-agent ping # Forcer l'envoi du rapport de mises à jour patchmon-agent report # Voir les logs et le statut détaillé patchmon-agent diagnostics