Add: installation de Goaccess sur NixOs

This commit is contained in:
DuN0z 2025-10-08 22:47:32 +02:00
parent 90e8b8ed21
commit e7bd1de251
2 changed files with 166 additions and 0 deletions

View file

@ -0,0 +1,84 @@
+++
date = '2025-10-06T01:00:51+02:00'
title = 'Goaccess install on NixOs'
tags = [ "nixos","statistics" ]
+++
When you self-host, there comes a moment when curiosity takes over.
Who visits my site? At what time? Which pages actually get attention?
And, sooner or later, the big question:
Is anyone, anywhere, really reading what I write?
You could go for Google Analytics or Matomo — but that comes with its own baggage:
- Questionable privacy practices,
- Third-party scripts injected into your site,
- Extra weight on every page,
- And a dependency on services I dont want.
GoAccess, on the other hand, takes the minimalist route.
No scripts, no tracking, no cookie banner — it reads directly from the web server logs (in my case, Caddy) and generates a clear, efficient report.
Thats the kind of philosophy I like:
- Privacy-friendly — nothing leaves my server, no profiling.
- Simple — I dont touch my site, I just process the logs.
- Fast — one command and I instantly see who visited and how.
- Self-hosting friendly — no database, no bloated setup.
In short, GoAccess fits perfectly with what I look for in my homelab:
→ Getting visibility into my services without turning it into a Rube Goldberg machine.
Minimal setup on NixOS
GoAccess is available directly from the official repository.
I just added the package and a small systemd service to generate a static report every hour:
```
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
goaccess
];
# Service for generation the GoAccess static report
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 to regénérate the report every hour
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
'';
};
};
};
}
```
Whats next?
In the second part, Ill go a bit further:
- filtering out local network IPs,
- generating daily, weekly, and monthly reports,
- and explaining why I chose not to use the “live” mode.
Because yes — even analytics deserve a bit of restraint.

View file

@ -0,0 +1,82 @@
+++
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 quon se pose tôt ou tard : est-ce que quelquun, 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, cest 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.
Cest 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 jai une vue immédiate sur qui est passé et comment.
- **Self-hosting friendly** : pas besoin dune base de données ni dun 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.
Jai 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 jai décidé de **ne pas** utiliser le mode “live”.
Parce que oui, même les stats méritent un peu de sobriété.