From 29119bf74ff7d961c4482ff8ca7b7c903a01d1f2 Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Sat, 6 Jun 2026 17:25:16 +0200 Subject: [PATCH] metrics --- nixos/desktop.nix | 83 +++++++++++++++++++++++++++++++++++++++++++-- nixos/paperless.nix | 46 ------------------------- 2 files changed, 81 insertions(+), 48 deletions(-) delete mode 100644 nixos/paperless.nix diff --git a/nixos/desktop.nix b/nixos/desktop.nix index 8cdefb9..58f1b48 100644 --- a/nixos/desktop.nix +++ b/nixos/desktop.nix @@ -1,7 +1,6 @@ { pkgs, config, ... }: { imports = [ ./desktop-hardware-configuration.nix - ./paperless.nix ./configuration.nix ]; @@ -43,6 +42,82 @@ programs.coolercontrol.enable = true; + # it would be cool if this didnt use up so many different ports... + # maybe a network namespace and bridge or something?? + # unix sockets dont appear to be supported sadly + services.victoriametrics.enable = true; + services.vmagent = { + enable = true; + remoteWrite.url = "http://127.0.0.1:8428/api/v1/write"; + prometheusConfig = { + scrape_configs = [ + { + job_name = "node-exporter"; + static_configs = [{ targets = [ "127.0.0.1:9100" ]; }]; + } + { + job_name = "cadvisor"; + static_configs = [{ targets = [ "127.0.0.1:8080" ]; }]; + } + { + job_name = "systemd"; + static_configs = [{ targets = [ "127.0.0.1:9558" ]; }]; + } + { + job_name = "coolercontrol"; + authorization = { + type = "Bearer"; + credentials = "cc_5fed8f3b7bd44424b7ffc67cce940e55"; + }; + static_configs = [{ targets = [ "127.0.0.1:11987" ]; }]; + } + ]; + }; + }; + services.prometheus.exporters = { + node.enable = true; + systemd.enable = true; + }; + services.cadvisor = { + enable = true; + extraOptions = [ + # significantly decreases CPU usage (https://github.com/google/cadvisor/issues/2523) + "--housekeeping_interval=30s" + ]; + }; + services.grafana = { + enable = true; + + settings = { + security = { + # here are my secrets, use them while they're hot + admin_user = "admin"; + admin_password = "admin"; + secret_key = "SW2YcwTIb9zpOOhoPsMm"; + }; + server.http_port = 4444; + }; + + declarativePlugins = [ + pkgs.grafanaPlugins.victoriametrics-metrics-datasource + ]; + + provision = { + enable = true; + datasources.settings = { + apiVersion = 1; + datasources = [ + { + name = "victoriametrics"; + type = "victoriametrics-metrics-datasource"; + access = "proxy"; + url = "http://127.0.0.1:8428"; + } + ]; + }; + }; + }; + services.tailscale = { enable = true; useRoutingFeatures = "both"; @@ -80,7 +155,11 @@ networking.firewall = { trustedInterfaces = [ "tailscale0" ]; allowedUDPPorts = [ config.services.tailscale.port ]; - allowedTCPPorts = [ /*SSH*/ 22 ]; + allowedTCPPorts = [ + /*SSH*/ + 22 + 11434 + ]; # https://github.com/tailscale/tailscale/issues/4432#issuecomment-1112819111 checkReversePath = "loose"; diff --git a/nixos/paperless.nix b/nixos/paperless.nix deleted file mode 100644 index cdcee4e..0000000 --- a/nixos/paperless.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ lib, pkgs, ... }: -let localDir = "/home/nora/.local/share/paperless-ngx"; nasDir = "/mnt/nas/HEY/_Nora/paperless"; in { - services.paperless = { - enable = true; - dataDir = "${localDir}/data"; - mediaDir = "${localDir}/media"; - consumptionDir = "${nasDir}/consume"; - address = "0.0.0.0"; - port = 8010; - user = "nora"; - environmentFile = "${localDir}/secrets-environment"; - settings = { - PAPERLESS_TIME_ZONE = "Europe/Zurich"; - PAPERLESS_ADMIN_USER = "nora"; - PAPERLESS_OCR_LANGUAGE = "deu+eng"; - }; - exporter = { - enable = true; - directory = "${nasDir}/export"; - }; - }; - - - systemd.services.paperless-ngx-backup = { - description = "paperless-ngx data backup to NAS"; - serviceConfig = { - Type = "oneshot"; - User = "nora"; - ExecStart = '' - ${lib.getExe pkgs.rsync} -a -v --delete --exclude=redis ${localDir}/ ${nasDir}/backup - ''; - }; - }; - systemd.timers.paperless-ngx-backup = { - description = "paperless-ngx data backup to NAS"; - wantedBy = [ "timers.target" ]; - after = [ "mnt-nas.mount" ]; - timerConfig = { - Unit = "paperless-ngx-backup.service"; - OnCalendar = "daily UTC"; - RandomizedDelaySec = 1800; - FixedRandomDelay = true; - Persistent = true; # ensure it still runs if the computer was down at the timer of trigger - }; - }; -}