Skip to content

Erreur32/LogviewR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LogviewR - Log Viewer Application

Important

PRE-REALEASE BETA , NOT FINISH !

‼️ En cour de developpement ACTIF , Version BETA ‼️

LogviewR

LogviewR Status Docker React TypeScript License

Application de visualisation de logs en temps réel pour Apache, Nginx, NPM, logs système et Fail2ban

Installation | Plugins | Configuration | Documentation


🚀 Installation

# 1. Créer le fichier .env
echo "JWT_SECRET=$(openssl rand -base64 32)" > .env

# 2. Lancer
docker compose up -d

Dashboard disponible sur http://your-ip:7500


📋 Table des matières


🎯 À propos

LogviewR — visualisation de logs en temps réel pour Apache, Nginx, NPM, logs système et Fail2ban.

  • 🚀 Temps réel via WebSocket
  • 🔍 Filtres : niveau, date, IP, méthode HTTP…
  • 📊 Statistiques et tableaux de bord par plugin
  • 🔐 Auth JWT, gestion des rôles
  • 🐳 Docker-ready

🔌 Plugins

🖥️ Host System — logs système Linux/Unix
  • Syslog, auth, kernel, daemon, mail, logs personnalisés
  • Détection automatique de l'environnement Docker
  • Support RFC 3164 / RFC 5424
  • Chemin de base configurable (/var/log ou /host/logs en Docker)
🌐 Apache — logs Apache HTTP Server
  • Access logs (Combined, Common, VHost) + Error logs
  • Extraction IP, timestamp, méthode HTTP, code statut, referer, user-agent
  • Regex par défaut modifiables, support .gz
🚀 Nginx — logs Nginx
  • Access logs (Combined, Common, Main, Extended) + Error logs
  • Parsing timestamps avec gestion timezones
  • Regex compatibles fail2ban et ELK, support .gz
🔄 Nginx Proxy Manager (NPM) — logs NPM
  • 5 formats supportés avec détection automatique
  • Champs : cache, upstream status, gzip ratio, sous-domaines
  • Support .gz
🛡️ Fail2ban — surveillance des jails et IPs bannies

Onglets : Jails · Filtres · Actions · Tracker IPs · Carte · Ban Manager · Stats · IPTables · IPSet · NFTables · Config · Audit

Prérequis : Fail2ban installé et actif sur le host.

Setup (une seule fois sur le host) :

sudo bash <(curl -fsSL https://raw.githubusercontent.com/Erreur32/LogviewR/main/scripts/setup-fail2ban-access.sh)

Ce script crée le groupe fail2ban, installe le drop-in systemd pour que le socket soit accessible au conteneur, et ajuste les permissions SQLite. Le conteneur détecte ensuite automatiquement le GID au démarrage — aucune variable .env supplémentaire requise.

Pour vérifier l'état : Administration → Plugins → Fail2ban → Diagnostic.


⚙️ Configuration

Variables d'environnement

Variable Description Défaut Requis
JWT_SECRET Secret pour signer les tokens JWT ✅ Oui
DASHBOARD_PORT Port du dashboard 7500 Non
HOST_IP IP de la machine hôte Auto-détection Non
CONFIG_FILE_PATH Chemin du fichier de configuration externe /app/config/logviewr.conf Non
ADM_GID GID du groupe adm sur l'hôte (logs système) 4 Non
HOST_ROOT_PATH Chemin racine hôte monté dans le conteneur /host Non

docker-compose.yml

services:
  logviewr:
    image: ghcr.io/erreur32/logviewr:latest
    container_name: logviewr
    restart: unless-stopped
    ports:
      - "${DASHBOARD_PORT:-7500}:3000"
    environment:
      JWT_SECRET: ${JWT_SECRET}
      DASHBOARD_PORT: ${DASHBOARD_PORT:-7500}
      HOST_IP: ${HOST_IP:-}
    group_add:
      - "${ADM_GID:-4}"           # groupe adm — lecture des logs système
    volumes:
      - ./data:/app/data
      - /var/run/fail2ban/fail2ban.sock:/var/run/fail2ban/fail2ban.sock
      - /:/host:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3000/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

Le fichier complet avec tous les commentaires est dans docker-compose.yml à la racine du projet.

Accès aux logs système

Le plugin Host System nécessite l'accès aux fichiers appartenant à root:adm (permissions 640). Le conteneur ajoute automatiquement node au groupe adm (GID 4).

Si votre système utilise un GID différent :

getent group adm | cut -d: -f3   # vérifier le GID sur le host
echo "ADM_GID=votre_gid" >> .env
Fichiers avec permissions restrictives (600)

Certains fichiers (/var/log/php8.0-fpm.log, /var/log/rkhunter.log) appartiennent à root:root 600. Solution :

sudo chgrp adm /var/log/php8.0-fpm.log* && sudo chmod 640 /var/log/php8.0-fpm.log*

Développement local

npm run dev   # démarre backend (port 3004) + frontend Vite (port 5175)

📚 Documentation


🤝 Contribution

Les contributions sont les bienvenues !


📄 Licence

Ce projet est sous licence MIT. Voir LICENSE.


Fait avec ❤️ pour les administrateurs système et développeurs

Issues | Discussions | Wiki

About

visualisation de logs en temps réel pour Apache, Nginx, NPM et logs système

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors