From 9017181db2ae6172b05fac304f16d3ea14f4f738 Mon Sep 17 00:00:00 2001 From: DuN0z Date: Wed, 24 Sep 2025 23:33:06 +0200 Subject: [PATCH] Add: goaccess for blog --- modules/services/goaccess.nix | 38 ++++++++++++++++++++++++++++ modules/services/nextcloud.nix | 31 ----------------------- modules/sites/levr.porzh.me.nix | 44 ++++++++++++++++++--------------- profiles/server-selfhosted.nix | 2 +- 4 files changed, 63 insertions(+), 52 deletions(-) create mode 100644 modules/services/goaccess.nix delete mode 100644 modules/services/nextcloud.nix diff --git a/modules/services/goaccess.nix b/modules/services/goaccess.nix new file mode 100644 index 0000000..34613b0 --- /dev/null +++ b/modules/services/goaccess.nix @@ -0,0 +1,38 @@ +{ 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 + + ${builtins.readFile ../../secrets/admin-passwd} + ''; + }; + }; + }; + + } + diff --git a/modules/services/nextcloud.nix b/modules/services/nextcloud.nix deleted file mode 100644 index 7d22da6..0000000 --- a/modules/services/nextcloud.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ pkgs, ...}: -{ - services.nginx.enable = false ; - services.phpfpm.pools.nextcloud.settings."listen.owner" = "nextcloud"; - services.phpfpm.pools.nextcloud.settings."listen.group" = "caddy"; - services.phpfpm.pools.nextcloud.settings."listen.mode" = "0660"; - services.caddy.virtualHosts."koum.porzh.me".extraConfig = '' - root * ${pkgs.nextcloud31}/ - php_fastcgi unix//run/phpfpm/nextcloud.sock - file_server - - header { - Strict-Transport-Security "max-age=31536000; includeSubDomains" - X-Content-Type-Options" "nosniff" - X-Frame-Options "SAMEORIGIN" - X-XSS-Protection "1; mode=block" - Referrer-Policy "same-origin" -# Permission-Policy "camera=(), moicrophone=(), geolocation=()" - } - ''; - services.nextcloud = { - enable = true ; - package = pkgs.nextcloud31; - hostName = "koum.porzh.me"; - database.createLocally = true ; - config = { - dbtype = "sqlite"; - adminpassFile="/home/lomig/.config/nextcloud.pass"; - }; - }; -} diff --git a/modules/sites/levr.porzh.me.nix b/modules/sites/levr.porzh.me.nix index fc27389..c5c5ee2 100644 --- a/modules/sites/levr.porzh.me.nix +++ b/modules/sites/levr.porzh.me.nix @@ -1,45 +1,49 @@ { config, pkgs, ... }: { - # ----------------------------------------------------------------- - # 1️⃣ Caddy (reverse‑proxy / serveur web statique) - # ----------------------------------------------------------------- +# ----------------------------------------------------------------- +# 1️⃣ Caddy (reverse‑proxy / serveur web statique) +# ----------------------------------------------------------------- services.caddy = { enable = true; - # Caddy démarre en tant qu’utilisateur « caddy ». - # On lui donne accès au répertoire du blog via les ACL créées plus haut. - # (Pas besoin de config supplémentaire côté OS.) +# Caddy démarre en tant qu’utilisateur « caddy ». +# On lui donne accès au répertoire du blog via les ACL créées plus haut. +# (Pas besoin de config supplémentaire côté OS.) - # ----------------------------------------------------------------- - # 2️⃣ Sites gérés par Caddy (Caddyfile intégré) - # ----------------------------------------------------------------- +# ----------------------------------------------------------------- +# 2️⃣ Sites gérés par Caddy (Caddyfile intégré) +# ----------------------------------------------------------------- virtualHosts = { "levr.porzh.me" = { - # Le domaine sera automatiquement provisionné avec TLS via ACME - # (Let's Encrypt) grâce à l’option `autoHTTPS = true` (défaut). - # Aucun certificat manuel n’est requis. +# Le domaine sera automatiquement provisionné avec TLS via ACME +# (Let's Encrypt) grâce à l’option `autoHTTPS = true` (défaut). +# Aucun certificat manuel n’est requis. - # Le répertoire contenant les fichiers générés par Hugo +# Le répertoire contenant les fichiers générés par Hugo - # (Optionnel) Rediriger HTTP → HTTPS – Caddy le fait déjà, - # mais on le rend explicite pour la clarté. +# (Optionnel) Rediriger HTTP → HTTPS – Caddy le fait déjà, +# mais on le rend explicite pour la clarté. extraConfig = '' @http { protocol http } - redir @http https://{host}{uri} permanent + redir @http https://{host}{uri} permanent root * /srv/blog/public file_server + + log { + output file /var/log/caddy/access-levr.porzh.me.log + } ''; }; }; }; - # ----------------------------------------------------------------- - # 3️⃣ Ouverture du firewall (ports 80 et 443) - # ----------------------------------------------------------------- +# ----------------------------------------------------------------- +# 3️⃣ Ouverture du firewall (ports 80 et 443) +# ----------------------------------------------------------------- networking.firewall.allowedTCPPorts = [ 80 # HTTP (pour la redirection ACME) - 443 # HTTPS (site final) + 443 # HTTPS (site final) ]; } diff --git a/profiles/server-selfhosted.nix b/profiles/server-selfhosted.nix index e0e483d..3243482 100644 --- a/profiles/server-selfhosted.nix +++ b/profiles/server-selfhosted.nix @@ -4,7 +4,7 @@ ../modules/common/base.nix ../modules/common/networking.nix ../modules/services/printing.nix - ../modules/services/nextcloud.nix + ../modules/services/goaccess.nix ../modules/sites/porzh.me.nix ../modules/sites/levr.porzh.me.nix ];