82 lines
2.9 KiB
Markdown
82 lines
2.9 KiB
Markdown
+++
|
||
date = '2025-10-06T01:00:51+02:00'
|
||
title = 'Installation de goaccess sur NixOs'
|
||
tags = [ "nixos","statistiques" ]
|
||
+++
|
||
|
||
Quand on auto-héberge, il y a un moment où la curiosité prend le dessus.
|
||
Qui visite mon site ? À quelle heure ? Quelles pages intéressent vraiment ?
|
||
Et la question qu’on se pose tôt ou tard : est-ce que quelqu’un, quelque part, lit vraiment ce que j’écris ?
|
||
|
||
On peut se tourner vers Google Analytics ou Matomo, mais ça vient avec son lot de complications :
|
||
- Respect de la vie privée discutable,
|
||
- Scripts tiers à injecter dans le site,
|
||
- Poids supplémentaire sur chaque page,
|
||
- Et une dépendance à des services dont je ne veux pas.
|
||
|
||
GoAccess, lui, c’est un peu la voie minimaliste.
|
||
Pas de scripts, pas de traçage, pas de cookie banner : il lit **directement les logs du serveur web** (dans mon cas, Caddy) et me génère un rapport clair et efficace.
|
||
|
||
C’est la philosophie qui me plaît :
|
||
- **Respectueux de la vie privée** : rien ne sort de mon serveur, aucun profilage.
|
||
- **Simple** : je ne change rien à mon site, je traite juste mes journaux de logs.
|
||
- **Rapide** : une commande, et j’ai une vue immédiate sur qui est passé et comment.
|
||
- **Self-hosting friendly** : pas besoin d’une base de données ni d’un monstre à maintenir.
|
||
|
||
En gros, GoAccess répond parfaitement à ce que je cherche dans mon homelab :
|
||
|
||
→ Avoir de la visibilité sur mes services **sans transformer ça en usine à gaz**.
|
||
|
||
## Mise en place minimale sous NixOS
|
||
|
||
GoAccess est disponible directement via le dépôt officiel.
|
||
J’ai ajouté le paquet et un petit service systemd pour générer un rapport statique toutes les heures :
|
||
|
||
```
|
||
{pkgs, ...}: {
|
||
environment.systemPackages = with pkgs; [
|
||
goaccess
|
||
];
|
||
|
||
# Service pour générer le rapport statique GoAccess
|
||
systemd.services.goaccess-report = {
|
||
description = "Generate GoAccess HTML report";
|
||
serviceConfig = {
|
||
ExecStart = "${pkgs.goaccess}/bin/goaccess /var/log/caddy/access-levr.porzh.me.log --log-format=CADDY -o /var/www/goaccess/index.html";
|
||
};
|
||
};
|
||
|
||
# Timer pour régénérer le rapport toutes les heures
|
||
systemd.timers.goaccess-report = {
|
||
description = "Hourly GoAccess report generation";
|
||
wantedBy = ["timers.target"];
|
||
timerConfig = {
|
||
OnCalendar = "hourly";
|
||
Persistent = true;
|
||
};
|
||
};
|
||
services.caddy = {
|
||
virtualHosts = {
|
||
"koum.porzh.me" = {
|
||
extraConfig = ''
|
||
root * /var/www/goaccess
|
||
file_server browse
|
||
try_files {path} {path}/ /index.html
|
||
|
||
'';
|
||
};
|
||
};
|
||
};
|
||
}
|
||
```
|
||
|
||
|
||
## Et la suite ?
|
||
|
||
|
||
|
||
Dans la deuxième partie, je montrerai comment aller plus loin :
|
||
- filtrer les IP du réseau local,
|
||
- générer des rapports **quotidiens, hebdomadaires et mensuels**,
|
||
- et pourquoi j’ai décidé de **ne pas** utiliser le mode “live”.
|
||
Parce que oui, même les stats méritent un peu de sobriété.
|