From 5879c0bed869493e28ff3758b582375c7bbac17d Mon Sep 17 00:00:00 2001 From: Chris Toph Date: Mon, 2 Jun 2025 18:02:00 -0400 Subject: [PATCH] Initial Setup for Sock host; Docker environment, secrets, and backups - Introduces new Nix modules for comprehensive backup configuration using Borg - Implements orchestrated backup chain with logging, status tracking, and notifications - Establishes Docker container service definitions and network configurations for Komodo services - Updates host and service secrets, including firewall and Docker credentials --- hosts/nixos/sock/config/backups/borg.nix | 193 ++++++++++++++++++++ hosts/nixos/sock/config/backups/default.nix | 184 +++++++++++++++++++ hosts/nixos/sock/config/default.nix | 4 + hosts/nixos/sock/config/komodo/default.nix | 183 +++++++++++++++++++ hosts/nixos/sock/default.nix | 69 +++++++ hosts/nixos/sock/hardware.nix | 21 +++ secrets.nix | Bin 20503 -> 22814 bytes 7 files changed, 654 insertions(+) create mode 100644 hosts/nixos/sock/config/backups/borg.nix create mode 100644 hosts/nixos/sock/config/backups/default.nix create mode 100644 hosts/nixos/sock/config/default.nix create mode 100644 hosts/nixos/sock/config/komodo/default.nix create mode 100644 hosts/nixos/sock/default.nix create mode 100644 hosts/nixos/sock/hardware.nix diff --git a/hosts/nixos/sock/config/backups/borg.nix b/hosts/nixos/sock/config/backups/borg.nix new file mode 100644 index 0000000..a9edcb2 --- /dev/null +++ b/hosts/nixos/sock/config/backups/borg.nix @@ -0,0 +1,193 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + # Common repositories + ochreStorageRepo = "/pool/Backups/OchreStorage"; + + # Shared environment setup + borgCommonSettings = '' + # Don't use cache to avoid issues with concurrent backups + export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes + export BORG_NON_INTERACTIVE=yes + ''; + + # Common packages needed for backups + commonBorgPath = with pkgs; [ + borgbackup + coreutils + apprise + gnugrep + hostname + util-linux + gawk + ]; + + # Repository initialization + initRepo = repo: '' + if [ ! -d "${repo}" ]; then + mkdir -p "${repo}" + ${pkgs.borgbackup}/bin/borg init --encryption=none "${repo}" + fi + ''; + + # Notification system + apprise-url = config.secretsSpec.users.admin.smtp.notifyUrl; + sendNotification = title: message: '' + ${pkgs.apprise}/bin/apprise -t "${title}" -b "${message}" "${apprise-url}" || true + ''; + + # Statistics generation + extractBorgStats = logFile: repoPath: '' + { + echo -e "\n==== BACKUP SUMMARY ====\n" + grep -A10 "Archive name:" ${logFile} || echo "No archive stats found" + echo -e "\n=== Compression ===\n" + grep "Compressed size:" ${logFile} || echo "No compression stats found" + echo -e "\n=== Duration ===\n" + grep "Duration:" ${logFile} || echo "No duration stats found" + grep "Throughput:" ${logFile} || echo "No throughput stats found" + echo -e "\n=== Repository ===\n" + ${pkgs.borgbackup}/bin/borg info ${repoPath} --last 1 2>/dev/null || echo "Could not get repository info" + echo -e "\n=== Storage Space ===\n" + df -h ${repoPath} | grep -v "Filesystem" || echo "Could not get storage info" + } > ${logFile}.stats + STATS=$(cat ${logFile}.stats || echo "No stats available") + ''; + + # Unified backup service generator with optional features + mkBorgBackupService = + { + name, + title, + repo, + sourcePath, + keepDaily, + keepWeekly, + keepMonthly, + schedule ? null, + enableNotifications ? true, + verbose ? false, + }: + let + maybeCreateTimer = lib.optionalAttrs (schedule != null) { + timers."backup-${name}" = { + description = "Timer for ${title} Backup"; + wantedBy = [ "timers.target" ]; + timerConfig = { + OnCalendar = schedule; + Persistent = true; + RandomizedDelaySec = "5min"; + }; + }; + }; + + logPrefix = if verbose then "set -x;" else ""; + in + { + services."backup-${name}" = { + description = "Backup ${title} with Borg"; + inherit (commonServiceConfig) path serviceConfig; + + script = '' + ${borgCommonSettings} + ${logPrefix} # Add verbose logging if enabled + + LOG_FILE="/tmp/borg-${name}-backup-$(date +%Y%m%d-%H%M%S).log" + ${initRepo repo} + + echo "Starting ${title} backup at $(date)" > $LOG_FILE + ARCHIVE_NAME="${name}-$(date +%Y-%m-%d_%H%M%S)" + START_TIME=$(date +%s) + + # Add verbose output redirection if enabled + ${if verbose then "exec 3>&1 4>&2" else ""} + ${pkgs.borgbackup}/bin/borg create \ + --stats \ + --compression zstd,15 \ + --exclude '*.tmp' \ + --exclude '*/tmp/*' \ + ${repo}::$ARCHIVE_NAME \ + ${sourcePath} >> $LOG_FILE 2>&1 ${if verbose then "| tee /dev/fd/3" else ""} + + BACKUP_STATUS=$? + END_TIME=$(date +%s) + DURATION=$((END_TIME - START_TIME)) + echo "Total time: $DURATION seconds ($(date -d@$DURATION -u +%H:%M:%S))" >> $LOG_FILE + + ${extractBorgStats "$LOG_FILE" "${repo}"} + + echo -e "\nPruning old backups..." >> $LOG_FILE + ${pkgs.borgbackup}/bin/borg prune \ + --keep-daily ${toString keepDaily} \ + --keep-weekly ${toString keepWeekly} \ + --keep-monthly ${toString keepMonthly} \ + ${repo} >> $LOG_FILE 2>&1 ${if verbose then "| tee /dev/fd/3" else ""} + + PRUNE_STATUS=$? + + echo -e "\nRemaining archives after pruning:" >> $LOG_FILE + ${pkgs.borgbackup}/bin/borg list ${repo} >> $LOG_FILE 2>&1 || true + + ${ + if enableNotifications then + '' + if [ $BACKUP_STATUS -eq 0 ] && [ $PRUNE_STATUS -eq 0 ]; then + ${sendNotification "✅ ${title} Backup Complete" "${title} backup completed successfully on $(hostname) at $(date)\nDuration: $(date -d@$DURATION -u +%H:%M:%S)\n\n$STATS"} + else + ${sendNotification "❌ ${title} Backup Failed" "${title} backup failed on $(hostname) at $(date)\n\nBackup Status: $BACKUP_STATUS\nPrune Status: $PRUNE_STATUS\n\nPartial Stats:\n$STATS\n\nSee $LOG_FILE for details"} + fi + '' + else + "echo 'Notifications disabled' >> $LOG_FILE" + } + + rm -f $LOG_FILE.stats + exit $BACKUP_STATUS + ''; + }; + + } + // maybeCreateTimer; + + # Common service configuration + commonServiceConfig = { + path = commonBorgPath; + serviceConfig = { + Type = "oneshot"; + IOSchedulingClass = "idle"; + CPUSchedulingPolicy = "idle"; + Nice = 19; + }; + }; + +in +{ + environment.systemPackages = with pkgs; [ + borgbackup + ]; + + systemd = lib.mkMerge [ + (mkBorgBackupService { + name = "ochre-storage"; + title = "Ochre Storage"; + repo = ochreStorageRepo; + sourcePath = "/OchreStorage"; + # INFO: This shit confusing but basically + # keeps the last 7 days, + # then keeps AT LEAST ONE for last 4 weeks + # and finally AT LEAST ONE for the last 3 months + keepDaily = 7; + keepWeekly = 4; + keepMonthly = 3; + # No schedule = no timer created + # schedule = "*-*-* 03:00:00"; + enableNotifications = false; + verbose = true; + }) + ]; +} diff --git a/hosts/nixos/sock/config/backups/default.nix b/hosts/nixos/sock/config/backups/default.nix new file mode 100644 index 0000000..4e72634 --- /dev/null +++ b/hosts/nixos/sock/config/backups/default.nix @@ -0,0 +1,184 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + # Shared configuration + logDir = "/var/log/backups"; + backupServices = [ + { + name = "ochre_storage"; + title = "Ochre Storage"; + service = "backup-ochre-storage.service"; + logPattern = "borg-ochre-storage-backup-*.log"; + } + ]; + + # Helper functions + users = config.secretsSpec.users; + notify = + title: message: logFile: + let + attachArg = if logFile == "" then "" else "--attach \"file://${logFile}\""; + appriseUrl = lib.custom.mkAppriseUrl users.admin.smtp "relay@ryot.foo"; + in + '' + ${pkgs.apprise}/bin/apprise -vv -i "markdown" -t "${title}" \ + -b "${message}" \ + ${attachArg} \ + "${appriseUrl}" || true + ''; + + findLatestLog = pattern: path: '' + find "${path}" -name "${pattern}" -type f -printf "%T@ %p\\n" 2>/dev/null \ + | sort -nr | head -1 | cut -d' ' -f2 + ''; + + # Generate safe variable name (replace hyphens with underscores) + safeName = name: lib.replaceStrings [ "-" ] [ "_" ] name; + + # Generate status variable references + statusVarName = name: "STATUS_${safeName name}"; + + # Common script utilities + scriptPrelude = '' + set -uo pipefail + LOG_FILE="${logDir}/backup-chain-$(date +%Y%m%d-%H%M%S).log" + mkdir -p "${logDir}" + exec > >(tee -a "$LOG_FILE") 2>&1 + + log() { + echo "[$(date "+%Y-%m-%d %H:%M:%S")] $1" + } + + # Initialize all status variables + ${lib.concatMapStringsSep "\n" (s: "${statusVarName s.name}=1") backupServices} + ''; + + # Service runner template + runService = + { + name, + title, + service, + logPattern, + logPath ? "/tmp", + }: + '' + log "Starting ${title} maintenance..." + systemctl start ${service} || true + ${statusVarName name}=$? + log "${title} completed with status $${statusVarName name}" + + SERVICE_LOG=$(${findLatestLog logPattern logPath}) + if [ -n "$SERVICE_LOG" ]; then + log "Appending ${title} log: $SERVICE_LOG" + echo -e "\n\n===== ${title} LOG ($(basename "$SERVICE_LOG")) =====\n" >> "$LOG_FILE" + cat "$SERVICE_LOG" >> "$LOG_FILE" + + # Add SnapRAID-specific summary + if [ "${name}" = "snapraid" ]; then + echo -e "\n=== SnapRAID Summary ===" >> "$LOG_FILE" + grep -E '(Scrub|Sync|Diff|smart)' "$SERVICE_LOG" | tail -n 10 >> "$LOG_FILE" + fi + fi + ''; + + # Build the service execution script + serviceExecution = lib.concatMapStrings runService backupServices; + + # Generate status summary lines + statusSummaryLines = lib.concatMapStringsSep "\n" ( + s: + let + varName = statusVarName s.name; + in + "- **${s.title}:** \$([ \$${varName} -eq 0 ] && echo '✅ Success' || echo '❌ Failed') (Exit: \$${varName})" + ) backupServices; + + # Notification logic with cleaner formatting + notificationLogic = + let + statusVars = map (s: statusVarName s.name) backupServices; + statusChecks = lib.concatMapStringsSep "\n" (var: "[ \$${var} -eq 0 ] && ") statusVars; + in + '' + # Calculate overall status + OVERALL_STATUS=0 + ${lib.concatMapStringsSep "\n" (var: "if [ \$${var} -ne 0 ]; then OVERALL_STATUS=1; fi") statusVars} + + TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") + HOSTNAME=$(hostname) + + SUMMARY=$(cat << EOF + # Backup Chain Complete + + **Host:** $HOSTNAME + **Timestamp:** $TIMESTAMP + **Overall Status:** $([ $OVERALL_STATUS -eq 0 ] && echo '✅ Success' || echo '⚠️ Failure') + + ## Service Status: + ${statusSummaryLines} + + **Log Path:** $LOG_FILE + EOF) + + if [ $OVERALL_STATUS -eq 0 ]; then + ${notify "✅ Backup Success" "$SUMMARY" "$LOG_FILE"} + else + ${notify "⚠️ Backup Issues" "$SUMMARY" "$LOG_FILE"} + fi + + exit $OVERALL_STATUS + ''; + +in +{ + imports = lib.custom.scanPaths ./.; + + systemd.services.backup-chain = { + description = "Orchestrated Backup Chain"; + path = with pkgs; [ + apprise + coreutils + findutils + gawk + gnugrep + hostname + systemd + util-linux + ]; + + serviceConfig = { + Type = "oneshot"; + Nice = 19; + IOSchedulingClass = "idle"; + CPUSchedulingPolicy = "idle"; + }; + + script = '' + ${scriptPrelude} + log "Initializing backup chain on $(hostname)" + + ${serviceExecution} + + log "Finalizing backup chain" + ${notificationLogic} + ''; + }; + + systemd.timers.backup-chain = { + wantedBy = [ "timers.target" ]; + timerConfig = { + OnCalendar = "*-*-* 03:00:00"; + Persistent = true; + RandomizedDelaySec = "5min"; + }; + }; + + environment.systemPackages = [ pkgs.apprise ]; + systemd.tmpfiles.rules = [ "d ${logDir} 0755 root root -" ]; +} diff --git a/hosts/nixos/sock/config/default.nix b/hosts/nixos/sock/config/default.nix new file mode 100644 index 0000000..b23287b --- /dev/null +++ b/hosts/nixos/sock/config/default.nix @@ -0,0 +1,4 @@ +{ lib, ... }: +{ + imports = lib.custom.scanPaths ./.; +} diff --git a/hosts/nixos/sock/config/komodo/default.nix b/hosts/nixos/sock/config/komodo/default.nix new file mode 100644 index 0000000..196a34f --- /dev/null +++ b/hosts/nixos/sock/config/komodo/default.nix @@ -0,0 +1,183 @@ +# Auto-generated using compose2nix v0.3.1. +{ + config, + lib, + pkgs, + ... +}: +let + # Only available in the Sock LXC + DockerStorage = "/OchreStorage/komodo"; + env = config.secretsSpec.docker.komodo-sock; +in +{ + # Containers + virtualisation.oci-containers.containers."komodo-core" = { + image = "ghcr.io/moghtech/komodo-core:latest"; + environment = env; + volumes = [ + "${DockerStorage}/cache:/repo-cache:rw" + ]; + ports = [ + "9120:9120/tcp" + ]; + labels = { + "komodo.skip" = ""; + }; + dependsOn = [ + "komodo-mongo" + ]; + log-driver = "local"; + extraOptions = [ + "--network-alias=core" + "--network=komodo_default" + "--pull=always" + ]; + }; + + systemd.services."docker-komodo-core" = { + serviceConfig = { + Restart = lib.mkOverride 90 "always"; + RestartMaxDelaySec = lib.mkOverride 90 "1m"; + RestartSec = lib.mkOverride 90 "100ms"; + RestartSteps = lib.mkOverride 90 9; + }; + after = [ + "docker-network-komodo_default.service" + # "docker-volume-komodo_repo-cache.service" + ]; + requires = [ + "docker-network-komodo_default.service" + # "docker-volume-komodo_repo-cache.service" + ]; + partOf = [ + "docker-compose-komodo-root.target" + ]; + wantedBy = [ + "docker-compose-komodo-root.target" + ]; + }; + + virtualisation.oci-containers.containers."komodo-mongo" = { + image = "mongo"; + environment = env; + volumes = [ + "${DockerStorage}/mongo/config:/data/configdb:rw" + "${DockerStorage}/mongo/data:/data/db:rw" + ]; + cmd = [ + "--quiet" + "--wiredTigerCacheSizeGB" + "0.25" + ]; + labels = { + "komodo.skip" = ""; + }; + log-driver = "local"; + extraOptions = [ + "--network-alias=mongo" + "--network=komodo_default" + ]; + }; + + systemd.services."docker-komodo-mongo" = { + serviceConfig = { + Restart = lib.mkOverride 90 "always"; + RestartMaxDelaySec = lib.mkOverride 90 "1m"; + RestartSec = lib.mkOverride 90 "100ms"; + RestartSteps = lib.mkOverride 90 9; + }; + after = [ + "docker-network-komodo_default.service" + # "docker-volume-komodo_mongo-config.service" + # "docker-volume-komodo_mongo-data.service" + ]; + requires = [ + "docker-network-komodo_default.service" + # "docker-volume-komodo_mongo-config.service" + # "docker-volume-komodo_mongo-data.service" + ]; + partOf = [ + "docker-compose-komodo-root.target" + ]; + wantedBy = [ + "docker-compose-komodo-root.target" + ]; + }; + + virtualisation.oci-containers.containers."komodo-periphery" = { + image = "ghcr.io/moghtech/komodo-periphery:latest"; + environment = env; + volumes = [ + "/proc:/proc:rw" + "/var/run/docker.sock:/var/run/docker.sock:rw" + "${DockerStorage}/repos:/etc/komodo/repos:rw" + "${DockerStorage}/ssl:/etc/komodo/ssl:rw" + "${DockerStorage}/stacks:${DockerStorage}/stacks:rw" + ]; + ports = [ + "8120:8120/tcp" + ]; + labels = { + "komodo.skip" = ""; + }; + log-driver = "local"; + extraOptions = [ + "--network-alias=periphery" + "--network=komodo_default" + "--pull=always" + ]; + }; + + systemd.services."docker-komodo-periphery" = { + serviceConfig = { + Restart = lib.mkOverride 90 "always"; + RestartMaxDelaySec = lib.mkOverride 90 "1m"; + RestartSec = lib.mkOverride 90 "100ms"; + RestartSteps = lib.mkOverride 90 9; + }; + after = [ + "docker-network-komodo_default.service" + # "docker-volume-komodo_repos.service" + # "docker-volume-komodo_ssl-certs.service" + # "docker-volume-komodo_stacks.service" + ]; + requires = [ + "docker-network-komodo_default.service" + # "docker-volume-komodo_repos.service" + # "docker-volume-komodo_ssl-certs.service" + # "docker-volume-komodo_stacks.service" + ]; + partOf = [ + "docker-compose-komodo-root.target" + ]; + wantedBy = [ + "docker-compose-komodo-root.target" + ]; + }; + + # Networks + systemd.services."docker-network-komodo_default" = { + path = [ pkgs.docker ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStop = "docker network rm -f komodo_default"; + }; + script = '' + docker network inspect komodo_default || docker network create komodo_default + ''; + partOf = [ "docker-compose-komodo-root.target" ]; + wantedBy = [ "docker-compose-komodo-root.target" ]; + }; + + # Root service + # When started, this will automatically create all resources and start + # the containers. When stopped, this will teardown all resources. + systemd.targets."docker-compose-komodo-root" = { + unitConfig = { + Description = "Root target generated by compose2nix."; + }; + wantedBy = [ "multi-user.target" ]; + }; +} diff --git a/hosts/nixos/sock/default.nix b/hosts/nixos/sock/default.nix new file mode 100644 index 0000000..00476fc --- /dev/null +++ b/hosts/nixos/sock/default.nix @@ -0,0 +1,69 @@ +############################################################### +# +# Sock - LXC Container +# NixOS container, Intel N150 (4 Cores), 8GB/2GB RAM/SWAP +# +# Docker Environment, Managed by with Komodo +# +############################################################### + +{ + lib, + config, + pkgs, + ... +}: +let + username = "toph"; + user = config.secretsSpec.users.${username}; + firewall = config.secretsSpec.firewall.sock; +in +{ + imports = lib.flatten [ + ## Sock Only ## + ./config + + ## Hardware ## + ./hardware.nix + + (map lib.custom.relativeToRoot [ + ## Required Configs ## + "hosts/global/core" + + ## Optional Configs ## + "hosts/global/common/acme" + "hosts/global/common/docker.nix" + ]) + ]; + + ## Host Specifications ## + hostSpec = { + hostName = "sock"; + username = username; + hashedPassword = user.hashedPassword; + email = user.email; + handle = user.handle; + userFullName = user.fullName; + isServer = true; + isMinimal = true; + }; + + networking = { + enableIPv6 = false; + firewall = { + allowedTCPPorts = firewall.allowedTCPPorts; + allowedTCPPortRanges = firewall.allowedTCPPortRanges; + allowedUDPPorts = firewall.allowedUDPPorts; + }; + }; + + ## System-wide packages ## + programs.nix-ld.enable = true; + environment.systemPackages = with pkgs; [ + lazydocker + compose2nix + ]; + + # https://wiki.nixos.org/wiki/FAQ/When_do_I_update_stateVersion + system.stateVersion = "25.05"; +} diff --git a/hosts/nixos/sock/hardware.nix b/hosts/nixos/sock/hardware.nix new file mode 100644 index 0000000..06f2f4a --- /dev/null +++ b/hosts/nixos/sock/hardware.nix @@ -0,0 +1,21 @@ +{ + lib, + config, + ... +}: +let + username = config.hostSpec.username; +in +{ + imports = lib.flatten [ + (map lib.custom.relativeToRoot [ + "hosts/global/common/system/lxc.nix" + "hosts/global/common/system/pool.nix" + ]) + ]; + + # Ochre has no access to PVE DockerStorage, so sock will have its own storage + systemd.user.tmpfiles.rules = [ + "d /OchreStorage 2775 ${username} ryot -" + ]; +} diff --git a/secrets.nix b/secrets.nix index 07519bf8577ff2c055ffab480cc758479994ca48..5bddb717d65ddf87e3fe707f17137737dbd88cdc 100644 GIT binary patch literal 22814 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 BMX3M) literal 20503 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