From a755b6fa118beeeee626a6468b55d75bcf13c8e6 Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Mon, 21 Sep 2026 17:56:35 +0800 Subject: [PATCH] feat(youko): move the service data from the HDD to the SSD The services now run directly on the host, so their state does not belong on the HDD behind the flaky USB-SATA bridge: /data/apps was small-file heavy and latency/consistency sensitive. Point every dataDir at /persistent/apps (the LUKS nvme) instead. The HDD keeps the bulk data that suits it: /data/fileshare (173G) and /data/backups (24G). The HDD's old @apps subvolume and its data are left in place for now. --- hosts/12kingdoms-youko/homelab-services/caddy.nix | 14 +++++++------- hosts/12kingdoms-youko/homelab-services/gitea.nix | 2 +- .../homelab-services/grafana/default.nix | 2 +- .../monitoring/victoriametrics.nix | 6 +++--- .../oci-containers/homepage/default.nix | 2 +- .../oci-containers/uptime-kuma/default.nix | 2 +- .../homelab-services/postgresql.nix | 4 ++-- hosts/12kingdoms-youko/homelab-services/sftpgo.nix | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/hosts/12kingdoms-youko/homelab-services/caddy.nix b/hosts/12kingdoms-youko/homelab-services/caddy.nix index cab95e33..1f404ebd 100644 --- a/hosts/12kingdoms-youko/homelab-services/caddy.nix +++ b/hosts/12kingdoms-youko/homelab-services/caddy.nix @@ -22,7 +22,7 @@ in # Reload Caddy instead of restarting it when configuration file changes. enableReload = true; user = "caddy"; # User account under which caddy runs. - dataDir = "/data/apps/caddy"; + dataDir = "/persistent/apps/caddy"; logDir = "/var/log/caddy"; # Additional lines of configuration appended to the global config section of the Caddyfile. @@ -41,7 +41,7 @@ in # https://caddyserver.com/docs/caddyfile/directives/file_server virtualHosts."file.writefor.fun".extraConfig = '' - root * /data/apps/caddy/fileserver/ + root * /persistent/apps/caddy/fileserver/ ${hostCommonConfig} file_server browse { hide .git @@ -110,15 +110,15 @@ in # Create Directories # https://www.freedesktop.org/software/systemd/man/latest/tmpfiles.d.html#Type systemd.tmpfiles.rules = [ - "d /data/apps/caddy/fileserver/ 0755 caddy caddy" + "d /persistent/apps/caddy/fileserver/ 0755 caddy caddy" # directory for virtual machine's images - "d /data/apps/caddy/fileserver/vms 0755 caddy caddy" + "d /persistent/apps/caddy/fileserver/vms 0755 caddy caddy" ]; - # Add all my wallpapers into /data/apps/caddy/fileserver/wallpapers + # Add all my wallpapers into /persistent/apps/caddy/fileserver/wallpapers # Install the homepage-dashboard configuration files system.activationScripts.installCaddyWallpapers = '' - mkdir -p /data/apps/caddy/fileserver/wallpapers - ${pkgs.rsync}/bin/rsync -avz --chmod=D2755,F644 ${wallpapers}/ /data/apps/caddy/fileserver/wallpapers/ + mkdir -p /persistent/apps/caddy/fileserver/wallpapers + ${pkgs.rsync}/bin/rsync -avz --chmod=D2755,F644 ${wallpapers}/ /persistent/apps/caddy/fileserver/wallpapers/ ''; } diff --git a/hosts/12kingdoms-youko/homelab-services/gitea.nix b/hosts/12kingdoms-youko/homelab-services/gitea.nix index d3167847..a03b1ed2 100644 --- a/hosts/12kingdoms-youko/homelab-services/gitea.nix +++ b/hosts/12kingdoms-youko/homelab-services/gitea.nix @@ -5,7 +5,7 @@ enable = true; user = "gitea"; group = "gitea"; - stateDir = "/data/apps/gitea"; + stateDir = "/persistent/apps/gitea"; appName = "Ryan Yin's Gitea Service"; lfs.enable = true; # Enable a timer that runs gitea dump to generate backup-files of the current gitea database and repositories. diff --git a/hosts/12kingdoms-youko/homelab-services/grafana/default.nix b/hosts/12kingdoms-youko/homelab-services/grafana/default.nix index 4492eeb9..b6bbda51 100644 --- a/hosts/12kingdoms-youko/homelab-services/grafana/default.nix +++ b/hosts/12kingdoms-youko/homelab-services/grafana/default.nix @@ -13,7 +13,7 @@ services.grafana = { enable = true; - dataDir = "/data/apps/grafana"; + dataDir = "/persistent/apps/grafana"; provision.enable = true; settings = { server = { diff --git a/hosts/12kingdoms-youko/homelab-services/monitoring/victoriametrics.nix b/hosts/12kingdoms-youko/homelab-services/monitoring/victoriametrics.nix index 9aa828bc..a13cb1a7 100644 --- a/hosts/12kingdoms-youko/homelab-services/monitoring/victoriametrics.nix +++ b/hosts/12kingdoms-youko/homelab-services/monitoring/victoriametrics.nix @@ -19,20 +19,20 @@ let in { # Since victoriametrics use DynamicUser, the user & group do not exists before the service starts. - # this group is used as a supplementary Unix group for the service to access our data dir(/data/apps/xxx) + # this group is used as a supplementary Unix group for the service to access our data dir(/persistent/apps/xxx) users.groups.victoriametrics-data = { }; # Workaround for victoriametrics to store data in another place # https://www.freedesktop.org/software/systemd/man/latest/tmpfiles.d.html#Type systemd.tmpfiles.rules = [ - "d /data/apps/victoriametrics 0770 root victoriametrics-data - -" + "d /persistent/apps/victoriametrics 0770 root victoriametrics-data - -" ]; # Symlinks do not work with DynamicUser, so we should use bind mount here. # https://github.com/systemd/systemd/issues/25097#issuecomment-1929074961 systemd.services.victoriametrics.serviceConfig = { SupplementaryGroups = [ "victoriametrics-data" ]; - BindPaths = [ "/data/apps/victoriametrics:/var/lib/victoriametrics:rbind" ]; + BindPaths = [ "/persistent/apps/victoriametrics:/var/lib/victoriametrics:rbind" ]; }; # https://victoriametrics.io/docs/victoriametrics/latest/configuration/configuration/ diff --git a/hosts/12kingdoms-youko/homelab-services/oci-containers/homepage/default.nix b/hosts/12kingdoms-youko/homelab-services/oci-containers/homepage/default.nix index 64fc5e05..38050973 100644 --- a/hosts/12kingdoms-youko/homelab-services/oci-containers/homepage/default.nix +++ b/hosts/12kingdoms-youko/homelab-services/oci-containers/homepage/default.nix @@ -5,7 +5,7 @@ }: let user = "homepage"; - configDir = "/data/apps/homepage-dashboard"; + configDir = "/persistent/apps/homepage-dashboard"; in { users.groups.${user} = { }; diff --git a/hosts/12kingdoms-youko/homelab-services/oci-containers/uptime-kuma/default.nix b/hosts/12kingdoms-youko/homelab-services/oci-containers/uptime-kuma/default.nix index 095c12f5..33c8cfa5 100644 --- a/hosts/12kingdoms-youko/homelab-services/oci-containers/uptime-kuma/default.nix +++ b/hosts/12kingdoms-youko/homelab-services/oci-containers/uptime-kuma/default.nix @@ -1,7 +1,7 @@ { config, ... }: let user = "kuma"; - dataDir = "/data/apps/uptime-kuma"; + dataDir = "/persistent/apps/uptime-kuma"; in { users.groups.${user} = { }; diff --git a/hosts/12kingdoms-youko/homelab-services/postgresql.nix b/hosts/12kingdoms-youko/homelab-services/postgresql.nix index ac35aa28..ef3a1ffb 100644 --- a/hosts/12kingdoms-youko/homelab-services/postgresql.nix +++ b/hosts/12kingdoms-youko/homelab-services/postgresql.nix @@ -11,13 +11,13 @@ let user = "postgres"; # postgresql's default system user package = pkgs.postgresql_16; - dataDir = "/data/apps/postgresql/${package.psqlSchema}"; + dataDir = "/persistent/apps/postgresql/${package.psqlSchema}"; in { # Create Directories # https://www.freedesktop.org/software/systemd/man/latest/tmpfiles.d.html#Type systemd.tmpfiles.rules = [ - "d /data/apps/postgresql 0700 ${user} ${user}" + "d /persistent/apps/postgresql 0700 ${user} ${user}" "d ${dataDir} 0700 ${user} ${user}" ]; diff --git a/hosts/12kingdoms-youko/homelab-services/sftpgo.nix b/hosts/12kingdoms-youko/homelab-services/sftpgo.nix index da3841b1..abe24760 100644 --- a/hosts/12kingdoms-youko/homelab-services/sftpgo.nix +++ b/hosts/12kingdoms-youko/homelab-services/sftpgo.nix @@ -1,7 +1,7 @@ { config, lib, ... }: let user = "sftpgo"; - dataDir = "/data/apps/sftpgo"; + dataDir = "/persistent/apps/sftpgo"; in { # Read SFTPGO_DEFAULT_ADMIN_USERNAME and SFTPGO_DEFAULT_ADMIN_PASSWORD from a file