From e3593466d776834b3551684edc046ec1c47ce24a Mon Sep 17 00:00:00 2001 From: "sascha.koenig" Date: Wed, 3 Sep 2025 14:20:31 +0200 Subject: [PATCH] +LibreChat +pgadmin --- home/features/cli/default.nix | 2 +- home/features/desktop/default.nix | 7 +- home/features/desktop/hyprland.nix | 9 +- home/features/desktop/office.nix | 2 + hosts/AZ-CLD-1/secrets.nix | 11 +- .../AZ-CLD-1/services/containers/default.nix | 8 +- .../services/containers/librechat.nix | 109 ++++ hosts/AZ-CLD-1/services/postgres.nix | 67 ++- hosts/AZLT124-L/default.nix | 1 + secrets.nix | 1 + secrets/librechat-env.age | 542 +++++++++++++++++- secrets/pgadmin-pw.age | 11 + 12 files changed, 713 insertions(+), 57 deletions(-) create mode 100644 hosts/AZ-CLD-1/services/containers/librechat.nix create mode 100644 secrets/pgadmin-pw.age diff --git a/home/features/cli/default.nix b/home/features/cli/default.nix index f328f47..381e263 100644 --- a/home/features/cli/default.nix +++ b/home/features/cli/default.nix @@ -71,7 +71,7 @@ fd gcc go - htop + btop httpie jq just diff --git a/home/features/desktop/default.nix b/home/features/desktop/default.nix index 8f929ff..9d9d31b 100644 --- a/home/features/desktop/default.nix +++ b/home/features/desktop/default.nix @@ -73,6 +73,12 @@ cliphist = { enable = true; }; + remmina = { + enable = true; + systemdService = { + enable = true; + }; + }; }; home.packages = with pkgs; [ @@ -112,7 +118,6 @@ # unzip # usbutils # v4l-utils - remmina slack telegram-desktop vivaldi diff --git a/home/features/desktop/hyprland.nix b/home/features/desktop/hyprland.nix index b54b171..732153e 100644 --- a/home/features/desktop/hyprland.nix +++ b/home/features/desktop/hyprland.nix @@ -191,13 +191,14 @@ in { ]; "$mainMod" = "SUPER"; + "$terminal" = "uwsm app -- kitty"; bind = [ "$mainMod, return, exec, nu -c zellij-ps" # "$mainMod, t, exec, warp-terminal" - "$mainMod, t, exec, kitty -e nu -c 'nitch; exec nu'" + "$mainMod, t, exec, $terminal -e nu -c 'nitch; exec nu'" "$mainMod SHIFT, t, exec, launch-timer" - "$mainMod SHIFT, e, exec, kitty -e zellij_nvim" + "$mainMod SHIFT, e, exec, $terminal -e zellij_nvim" "$mainMod, o, exec, hyprctl setprop activewindow opaque toggle" "$mainMod, r, exec, hyprctl dispatch focuswindow \"initialtitle:.*alert-box.*\" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow \"initialtitle:.*chat-box.*\" && hyprctl dispatch moveactive exact 4300 512" "$mainMod, b, exec, thunar" @@ -205,7 +206,9 @@ in { "$mainMod, Escape, exec, wlogout -p layer-shell" "$mainMod, Space, togglefloating" "$mainMod, q, killactive" - "$mainMod, M, exit" + "$mainMod, M, exec, $terminal -e btop" + "$mainMod, N, exec, $terminal -e nvim" + "$mainMod, Z, exec, uwsm app -- zeditor" "$mainMod, F, fullscreen" "$mainMod SHIFT, V, togglefloating" "$mainMod, D, exec, rofi -show" diff --git a/home/features/desktop/office.nix b/home/features/desktop/office.nix index 0eddd32..9244a32 100644 --- a/home/features/desktop/office.nix +++ b/home/features/desktop/office.nix @@ -12,7 +12,9 @@ in { config = mkIf cfg.enable { home.packages = with pkgs; [ + evince libreoffice-fresh + xournalpp ]; }; } diff --git a/hosts/AZ-CLD-1/secrets.nix b/hosts/AZ-CLD-1/secrets.nix index 1993e95..e90ce70 100644 --- a/hosts/AZ-CLD-1/secrets.nix +++ b/hosts/AZ-CLD-1/secrets.nix @@ -7,19 +7,26 @@ baserow-env = { file = ../../secrets/baserow-env.age; }; + librechat-env = { + file = ../../secrets/librechat-env.age; + }; n8n-env = { file = ../../secrets/n8n-env.age; }; outline-env = { file = ../../secrets/outline-env.age; - owner = "outline"; + owner = "outline"; + }; + pgadmin-pw = { + file = ../../secrets/pgadmin-pw.age; + owner = "pgadmin"; }; vaultwarden-env = { file = ../../secrets/vaultwarden-env.age; }; hetzner-s3-az-intern-secret-key = { file = ../../secrets/hetzner-s3-az-intern-secret-key.age; - owner = "outline"; + owner = "outline"; }; hetzner-s3-az-intern-access-key = { file = ../../secrets/hetzner-s3-az-intern-access-key.age; diff --git a/hosts/AZ-CLD-1/services/containers/default.nix b/hosts/AZ-CLD-1/services/containers/default.nix index ebc78f5..9802a65 100644 --- a/hosts/AZ-CLD-1/services/containers/default.nix +++ b/hosts/AZ-CLD-1/services/containers/default.nix @@ -1,6 +1,12 @@ -{ +{lib, ...}: { imports = [ ./baserow.nix + ./librechat.nix ./portainer.nix ]; + system.activationScripts.createPodmanNetworkWeb = lib.mkAfter '' + if ! /run/current-system/sw/bin/podman network exists web; then + /run/current-system/sw/bin/podman network create web --subnet=10.89.0.0/24 --internal + fi + ''; } diff --git a/hosts/AZ-CLD-1/services/containers/librechat.nix b/hosts/AZ-CLD-1/services/containers/librechat.nix new file mode 100644 index 0000000..00e24c6 --- /dev/null +++ b/hosts/AZ-CLD-1/services/containers/librechat.nix @@ -0,0 +1,109 @@ +{ + config, + pkgs, + ... +}: let + envFile = config.age.secrets.librechat-env.path; +in { + virtualisation.oci-containers = { + containers.meilisearch = { + image = "getmeili/meilisearch:v1.12.3"; + autoStart = true; + volumes = ["librechat_meili:/meili_data"]; + environment = { + MEILI_HTTP_ADDR = "0.0.0.0:7700"; + MEILI_NO_ANALYTICS = "true"; + }; + environmentFiles = [envFile]; + extraOptions = ["--ip=10.89.0.20" "--network=web"]; + }; + + containers.rag_api = { + image = "ghcr.io/danny-avila/librechat-rag-api-dev-lite:latest"; + autoStart = true; + environment = { + RAG_PORT = "8000"; + # pgvector connection to host Postgres + DB_HOST = "10.89.0.1"; # your host on the 'web' network + DB_PORT = "5432"; + # embeddings: pick one (OpenAI default, or HF/Ollama per docs) + # EMBEDDINGS_PROVIDER = "openai"; + # RAG_OPENAI_API_KEY is read by RAG API (can also use OPENAI_API_KEY). + }; + environmentFiles = [envFile]; + dependsOn = ["meilisearch"]; + extraOptions = ["--add-host=postgres:10.89.0.1" "--ip=10.89.0.21" "--network=web"]; + ports = ["127.0.0.1:8000:8000"]; # optional: expose to host for debugging + }; + + containers.mongodb = { + image = "mongo:7"; + autoStart = true; + volumes = [ + "librechat_mongo:/data/db" + "/var/backup/mongodb:/data/backups" + ]; + # Enable auth once users exist; see Mongo auth doc. + # command = [ "mongod", "--auth" ]; + extraOptions = ["--ip=10.89.0.22" "--network=web"]; + }; + + containers.librechat = { + image = "ghcr.io/danny-avila/librechat-dev-api:latest"; + autoStart = true; + ports = ["127.0.0.1:3040:3080"]; + dependsOn = ["mongodb" "rag_api" "meilisearch"]; + environment = { + HOST = "0.0.0.0"; + NODE_ENV = "production"; + # Mongo URI (start without auth; switch to mongodb://user:pass@mongodb:27017/LibreChat after Step 4) + MONGO_URI = "mongodb://mongodb:27017/LibreChat"; + MEILI_HOST = "http://meilisearch:7700"; + RAG_PORT = "8000"; + RAG_API_URL = "http://rag_api:8000"; + }; + environmentFiles = [envFile]; + volumes = [ + # Config file still needs to be a bind mount for host management + "/var/lib/librechat/librechat.yaml:/app/librechat.yaml:ro" + # Use named volumes for application data + "librechat_images:/app/client/public/images" + "librechat_uploads:/app/uploads" + "librechat_logs:/app/api/logs" + ]; + extraOptions = ["--ip=10.89.0.23" "--network=web"]; + }; + }; + + systemd.services."mongo-nightly-dump" = { + serviceConfig = { + Type = "oneshot"; + ExecStart = '' + ${pkgs.podman}/bin/podman exec mongodb \ + sh -lc 'mongodump --uri="mongodb://adminUser:securePassword@localhost:27017/?authSource=admin" \ + --out /data/backups/$(date +%F)' + ''; + ExecStartPost = '' + # Clean up old backups from within the container + ${pkgs.podman}/bin/podman exec mongodb \ + sh -lc 'find /data/backups -maxdepth 1 -type d -mtime +14 -exec rm -rf {} +' + ''; + }; + }; + + systemd.timers."mongo-nightly-dump" = { + wantedBy = ["timers.target"]; + timerConfig.OnCalendar = "daily"; + timerConfig.RandomizedDelaySec = "15m"; + }; + + services.traefik.dynamicConfigOptions.http = { + services.librechat.loadBalancer.servers = [{url = "http://localhost:3040/";}]; + routers.librechat = { + rule = "Host(`chat.az-gruppe.com`)"; + tls.certResolver = "ionos"; + service = "librechat"; + entrypoints = "websecure"; + }; + }; +} diff --git a/hosts/AZ-CLD-1/services/postgres.nix b/hosts/AZ-CLD-1/services/postgres.nix index 859df7e..0755294 100644 --- a/hosts/AZ-CLD-1/services/postgres.nix +++ b/hosts/AZ-CLD-1/services/postgres.nix @@ -1,10 +1,14 @@ -{pkgs, ...}: { +{ + config, + pkgs, + ... +}: { services.postgresql = { enable = true; enableTCPIP = true; package = pkgs.postgresql_17; settings = { - ssl = true; + ssl = true; }; extensions = with pkgs.postgresql17Packages; [ pgvector @@ -18,6 +22,10 @@ CREATE DATABASE kestra; ALTER DATABASE kestra OWNER to kestra; + CREATE USER librechat_rag WITH ENCRYPTED PASSWORD 'librechat_rag'; + CREATE DATABASE librechat_rag; + ALTER DATABASE librechat_rag OWNER to librechat_rag; + CREATE USER n8n WITH ENCRYPTED PASSWORD 'n8n'; CREATE DATABASE n8n; ALTER DATABASE n8n OWNER to n8n; @@ -32,38 +40,55 @@ ''; authentication = pkgs.lib.mkOverride 10 '' # Local connections (Unix socket) - local all postgres peer - local n8n n8n scram-sha-256 - local outline outline scram-sha-256 - local vaultwarden vaultwarden scram-sha-256 + local all postgres peer + local n8n n8n scram-sha-256 + local outline outline scram-sha-256 + local vaultwarden vaultwarden scram-sha-256 # Localhost connections (IPv4 and IPv6) - host all postgres 127.0.0.1/32 scram-sha-256 - host all postgres ::1/128 scram-sha-256 - - host outline outline 127.0.0.1/32 scram-sha-256 - host outline outline ::1/128 scram-sha-256 + host all postgres 127.0.0.1/32 scram-sha-256 + host all postgres ::1/128 scram-sha-256 - host n8n n8n 127.0.0.1/32 scram-sha-256 - host n8n n8n ::1/128 scram-sha-256 + host outline outline 127.0.0.1/32 scram-sha-256 + host outline outline ::1/128 scram-sha-256 - host vaultwarden vaultwarden 127.0.0.1/32 scram-sha-256 - host vaultwarden vaultwarden ::1/128 scram-sha-256 + host n8n n8n 127.0.0.1/32 scram-sha-256 + host n8n n8n ::1/128 scram-sha-256 + + host vaultwarden vaultwarden 127.0.0.1/32 scram-sha-256 + host vaultwarden vaultwarden ::1/128 scram-sha-256 # Podman network connections for Baserow - host baserow baserow 10.89.0.0/24 scram-sha-256 - host kestra kestra 10.89.0.0/24 scram-sha-256 + host baserow baserow 10.89.0.0/24 scram-sha-256 + host kestra kestra 10.89.0.0/24 scram-sha-256 + host librechat_rag librechat_rag 10.89.0.0/24 scram-sha-256 # Deny all other connections - local all all reject - host all all 0.0.0.0/0 reject - host all all ::/0 reject + local all all reject + host all all 0.0.0.0/0 reject + host all all ::/0 reject ''; }; services.postgresqlBackup = { enable = true; startAt = "03:10:00"; - databases = ["baserow" "kestra" "n8n" "outline" "vaultwarden"]; + databases = ["baserow" "kestra" "librechat_rag" "n8n" "outline" "vaultwarden"]; + }; + services.pgadmin = { + enable = true; + initialPasswordFile = "${config.age.secrets.pgadmin-pw.path}"; + initialEmail = "sascha.koenig@azintec.com"; + }; + + # Traefik configuration specific to baserow + services.traefik.dynamicConfigOptions.http = { + services.pgadmin.loadBalancer.servers = [{url = "http://localhost:5050/";}]; + routers.pgadmin = { + rule = "Host(`pg.az-gruppe.com`)"; + tls.certResolver = "ionos"; + service = "pgadmin"; + entrypoints = "websecure"; + }; }; networking.firewall = { extraCommands = '' diff --git a/hosts/AZLT124-L/default.nix b/hosts/AZLT124-L/default.nix index f0ee1b7..e36bd2c 100644 --- a/hosts/AZLT124-L/default.nix +++ b/hosts/AZLT124-L/default.nix @@ -21,6 +21,7 @@ users.users."sascha.koenig" = { hashedPassword = "$y$j9T$ORX4btVZgs9Xjq2oIvzJm0$lXiPwaa0D6t.eMDIx1UBesEAMOkWXBoGwpeI7X0aS8D"; isNormalUser = true; + shell = pkgs.nushell; group = "sascha.koenig"; extraGroups = [ "wheel" diff --git a/secrets.nix b/secrets.nix index d43850c..604abaf 100644 --- a/secrets.nix +++ b/secrets.nix @@ -18,6 +18,7 @@ in { "secrets/n8n-env.age".publicKeys = systems ++ users; "secrets/n8n-db.age".publicKeys = systems ++ users; "secrets/outline-env.age".publicKeys = systems ++ users; + "secrets/pgadmin-pw.age".publicKeys = systems ++ users; "secrets/vaultwarden-env.age".publicKeys = systems ++ users; "secrets/vaultwarden-db.age".publicKeys = systems ++ users; } diff --git a/secrets/librechat-env.age b/secrets/librechat-env.age index 79b0528..ffe84b7 100644 --- a/secrets/librechat-env.age +++ b/secrets/librechat-env.age @@ -1,30 +1,516 @@ -----BEGIN AGE ENCRYPTED FILE----- -YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFpoVnNlZyBBN3d1 -NS9RQWw2VUM1QysrQ0dNQ0h1RHd0bnU3OTE2TDlKeEQ3d1lKazNrCnM4NHozM244 -Ym13WVV2bVl0cVJaOUlzR1lyTklHWTZFUnROMHJmeXNnekUKLT4gc3NoLWVkMjU1 -MTkgQ1NNeWhnIFlxNGthM0JzQU9kdGxJR0gvL0NSQW5aMFFvWmRuYk91WDh0UHhv -RCtsQlUKUndkZUpaNm41MjZHR0pNajRVbnNyaUNld0lVN3E0TkFVL3FWenBPc2t2 -awotPiByIidnKi1ncmVhc2UgRyBoIGBiClJkYXFaT2dKdUdpQlYySUh2MkxzUWhq -UlloTEdOeE5LUzc1TwotLS0gNytOS05WWW91T0pDbk5sZFVmOW1Za0RiZmpucnRm -VEZZV3JLRm5YMHh6WQp6c7dlv1yOwJJW6/ShUQxszI9OZ61EJFOgRLpS12MAEo9F -ZEsGrHN2NpQB6m0G920kz1dZlURcDWbzrKFPWGJbrAnGbmKsOejfx8B41H6aEode -/0cHdTndj+Ev4SJZ9AAYpJR3shOGy/0165IBWBejw6hNs1pEfQ1JxMszleVMenYh -jArOrsYaMWLzd2jgfc2eQm0LiAHDYeE8A/ozwcUMB2FQhcCXxVmhIgEuq882lRTz -DAHWASCXqg7hG0J1RZ5J29xijEKlGJ8a6seS0ZFeQy39of9FCp4TJaslsukRlJ/b -rMWb0S0sNbakDXF+gZL6TBs5D96460eg9+Z6pv4bjeuiGJW2Pn4n3odXqwElDekx -FmHGn9YbUd/7xb/fu+b/UmN1MPXEetEt1mAc4QyjywRrZ4mTq3sxWCjhIdv2oNaS -Fq9RMOB5JDbTujvQHImnJoiLOQWTrHP1O2oYFqp+RF5+R5yfeRW4NVG3Jqp8BJJ2 -YUDg2vpXUzDZU4aLZVdIKV2LIAlKdU3azkVaFbYhaaSYIs7jIj7Eu8N2b8v6sgaJ -wqAo0nEnLj+oqy9Sz+K1GwermTIRTNgcdI9vbLQ4b5LQfYREIeXfjvTLioBbHfs+ -u0PAblOJjrytNLpLKbdoEfVCqsOg4VnqkDP5hXtbxLZgOmIqpVDAW6cO/kpuifAk -ABqMrzwLw/mOKPGHnUSul0ysU+Xn35kKC5cyxV+IGrO+AHG3SGQUBTBrsuYuM3W/ -2D9Y668udq/ljpprhwy6rxWRqFk7teaYPMhWqw5KAlt69bZgElT6ndrgruxzCV0h -CLoXjgziFG0BrYexQOio9+IsSxXlSq524+RMI50SljD1wIvXemMxn2qO4Sc38aPQ -xlceF76TMBS0+1UCFxnkRRO35YABoW3jsFGkImhXqAvyf/k/HCFECKr1eqkv2d/q -Lz+7LJ5+l4oFUrmKk8+t4uXhMvdADZwIwqISLccjSkxv5ysBRdhqqrFsPiCXTlN8 -H505chs3Dh9u5nBNK7PlU7FzwGREzao0gHraSJ/BuHDwSo8shDMh+MZ9hcSZRIzY -Q3eo72UI4mXfihXvHfrCk0ZfnvA1bNpclKrev1sNgVDm7Rg8bNBJy9E+4AamXbxq -Gfss4/SugPB6D0/OpxNcZPK4KkFWf+HyG5nnWPWh3tJFvx4yGxGZEpyXzhTWMTIz -eKq2G1UHph37nLNhFl6+uf1xMCnDKxefo6X+7fOTL5EfGMuYsSDVxEA+3RSudTUY -rWyfPUPlQPeQ89umw5S5PDv7Unku1+FkYsSRUzfPtJU9auatJrIVmw3y4Q== +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFpoVnNlZyAzd1Fq +ZXhkOGZubDRkK09FTUZxMHBCNDRTbTVhMkZ5L2t6KzBYSSsvRWtrCmhIMndKNTl1 +bTc3S0J5bWVla2ZXQXJHblNMSDhtWi9uL0dWaTMwODRHVlkKLT4gc3NoLWVkMjU1 +MTkgQ1NNeWhnIGVrVTRWeWNFYTlKZkFKcEpsaThpR3lucHgwTXd0djdvazUzV2Ji +YlZWQVkKK3cyclY2cmRNSktFMkVJTmE1dXBQQzVwdXU4aUdVUyt1cG94a1dZamx6 +MAotPiBlYHRBRnUtLWdyZWFzZSBfUGc4b24gaSsjClgxSjEyNUtyeW9JOGZxSm1z +OWFtVG5QUGNuaExoRnp5RWd6bDhrcGlZa2dnZGtEdHhxbUQwSkVEbk01ZFhmUU4K +NEI0ejdOWGNBKzA4bFYyK1RoUkVITHpvbEJLTGQxTURmWmNZMmdISG1kemlic1JD +eXNyOW9nCi0tLSBqSElTWnpKVEM1Z0I1QldDWitFbnFEaFJqTjdKTW95U3FFMElq +VWNTZzFZCnsjyx/n5k3Ezgb4OevjovrOPJEq59l3zmaS5ur6uog4yeeqzMPFIIdp +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 +XyCv8Gub0S70BhjOH3t67J8xfP0sHbw= -----END AGE ENCRYPTED FILE----- diff --git a/secrets/pgadmin-pw.age b/secrets/pgadmin-pw.age new file mode 100644 index 0000000..2167a5a --- /dev/null +++ b/secrets/pgadmin-pw.age @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFpoVnNlZyA5SWxZ +bEp2QXh0RkwwQUVtYmRvN0FoZ0NrK0dkdTlCQTlGc3hVcUsrSVZnCjMzeGFvZDls +MnZGT1Y5Rjdqc2ttYWxpZWsyMXNhSncvUEt5bEdScHRiQzgKLT4gc3NoLWVkMjU1 +MTkgQ1NNeWhnIFRsaXhkVTQxS2ZHMVpWZUlERmJsTU1sVWhkbzdFVGJoaXFsdmI4 +My92RVEKdnZJdE9vREtYZWx1RDJzTFBHNDl4RC90dzg5emJHTHZjNWVtMWtXR25Q +NAotPiBFVG18SjchOy1ncmVhc2UgK1d6KyBMSm1uWgozYitEL2ZvWmJkUUNFUzlT +SXhKWlRKNTV2UGMreGRsSEJHWWhBdm1kaTNJeWpDSQotLS0gbnZVWnBRNDUxZFd5 +RjNnUGU4dHkxeGlueXZ6b21ZTS8yZDlZZGk4UE5EVQomIhAbsHPHWfyG3gniaOJ5 +7r6dq2UzBrSFC5SfguKEbqJjd9GxUaeRmBM8trPAQK00MKofcIk= +-----END AGE ENCRYPTED FILE-----