Právě jsem změnil zálohování svého domácího serveru s NixOS a místo jednoduchého denního skriptu jsem přešel na hodinové zálohy. Není to sice tak elegantní jako na instanci Mastodonu, kterou spravuje můj kamarád – tam máme ZFS snapshot každých 20 minut – ale i s tímto řešením jsem spokojený. A musím říct, že NixOS se mi líbí čím dál víc. Bez AI by to sice bylo příliš složité na to, abych to pochopil, ale teď už dokážu hotové Nix soubory alespoň číst. Uvažoval jsem o tom, že server převedu na běžný Linux, ale dokud to takhle dobře funguje...
-
/etc/nixos: Celá konfigurace NixOS (všechny soubory .nix). -
/opt/minecraft: Všechny světy a data Minecraft serveru. -
/opt/satisfactory: Uložené pozice a konfigurace Satisfactory serveru. -
/opt/Blog: Zdrojový kód a obsah blogu. -
/opt/ui: Soubory Mastodon UI. -
/opt/audiobookshelf: Audioknihy a příslušná databáze.
To vše se ukládá na S3 úložiště, které je připojeno přes RClone.
Konfigurace NixOS
{ config, pkgs, ... }:
{
# Konfigurace BorgBackup
services.borgbackup.jobs.hourly = {
# Cesta k repozitáři v S3 mountu
repo = "/opt/S3/Backup/NixOSHomeServer_Borg";
# Není vyžadováno heslo
encryption.mode = "none";
# Komprese pro ještě větší úsporu místa
compression = "auto,zstd";
# Cesty k zálohování
paths = [
"/etc/nixos"
"/opt/minecraft"
"/opt/satisfactory"
"/opt/Blog"
"/opt/ui"
"/opt/audiobookshelf"
];
# Hodinové spouštění
startAt = "hourly";
# Automaticky inicializovat repozitář, pokud chybí
doInit = true;
# Pravidla pro uchovávání (Pruning)
prune.keep = {
within = "1d"; # Všechny snapshoty za posledních 24h
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Zajištění, že je S3 mount připraven před spuštěním Borgu
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}