diff --git a/backup-server.sh b/backup-server.sh new file mode 100755 index 0000000..f3f2b9d --- /dev/null +++ b/backup-server.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +set -euo pipefail + +BACKUP_DIR="/mnt/disk4/server-backup-$(date +%Y%m%d)" +echo "Backing up to: $BACKUP_DIR" +mkdir -p "$BACKUP_DIR" + +# Stop services first to get clean copies +echo "Stopping services..." +sudo systemctl stop jellyfin sonarr radarr prowlarr bazarr qbittorrent-nox authelia-main 2>/dev/null || true +sleep 3 + +# Service databases and config +for dir in jellyfin sonarr radarr prowlarr bazarr qbittorrent authelia-main; do + if [ -d "/var/lib/$dir" ]; then + echo "Backing up /var/lib/$dir ..." + sudo mkdir -p "$BACKUP_DIR/var-lib/$dir" + sudo rsync -a "/var/lib/$dir/" "$BACKUP_DIR/var-lib/$dir/" + else + echo "Skipping /var/lib/$dir (not found)" + fi +done + +# Secrets +if [ -d "/var/secrets" ]; then + echo "Backing up /var/secrets ..." + sudo mkdir -p "$BACKUP_DIR/var-secrets" + sudo rsync -a "/var/secrets/" "$BACKUP_DIR/var-secrets/" +else + echo "Skipping /var/secrets (not found)" +fi + +echo "" +echo "Backup complete: $BACKUP_DIR" +echo "" +echo "Size: $(sudo du -sh "$BACKUP_DIR" | cut -f1)" +echo "" +echo "NOTE: Media files on /mnt/storage are NOT included — move the data disks to the new server directly." +echo "" +echo "Restarting services..." +sudo systemctl start jellyfin sonarr radarr prowlarr bazarr qbittorrent-nox authelia-main 2>/dev/null || true diff --git a/hosts/hardware/FredOS-Mediaserver.nix b/hosts/hardware/FredOS-Mediaserver.nix index 5afbd2f..9da92ec 100644 --- a/hosts/hardware/FredOS-Mediaserver.nix +++ b/hosts/hardware/FredOS-Mediaserver.nix @@ -1,67 +1,11 @@ #./hosts/hardware/FredOS-Mediaserver.nix +# TODO: Replace with hardware-configuration.nix from new server { config, lib, pkgs, modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "uhci_hcd" "usbhid" "usb_storage" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/6008e793-4b24-4e62-821f-7a204fef5729"; - fsType = "ext4"; - }; - - # Individual Data Disks - fileSystems."/mnt/disk1" = { - device = "/dev/disk/by-uuid/90ae3493-38c1-4473-b409-e9d99c3b315e"; - fsType = "ext4"; - }; - - fileSystems."/mnt/disk2" = { - device = "/dev/disk/by-uuid/7145223e-f285-424a-a114-cb0b1b64e068"; - fsType = "ext4"; - }; - - fileSystems."/mnt/disk3" = { - device = "/dev/disk/by-uuid/58cecfd5-2fd7-4c4b-b3a1-0bf5e9d0beab"; - fsType = "ext4"; - }; - - fileSystems."/mnt/disk4" = { - device = "/dev/disk/by-uuid/317660ef-bd75-4fa4-bd20-f96a3926bf7b"; - fsType = "ext4"; - }; - - # The Combined MergerFS Pool - fileSystems."/mnt/storage" = { - device = "/mnt/disk1:/mnt/disk2:/mnt/disk3:/mnt/disk4"; - fsType = "fuse.mergerfs"; - options = [ - "defaults" - "allow_other" - "use_ino" - "cache.files=partial" - "dropcacheonclose=true" - "category.create=mfs" - ]; - }; - - swapDevices = [ ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; networking.hostName = "FredOS-Mediaserver"; - - boot.loader.grub = { - enable = true; - # Includes all 4 physical disks for redundancy - devices = [ "/dev/sda" "/dev/sdb" "/dev/sdc" "/dev/sdd" "/dev/sde" ]; - useOSProber = true; - }; - system.stateVersion = "25.11"; }