Upravo sam promijenio način izrade sigurnosnih kopija svog NixOS kućnog poslužitelja i prešao s jednostavne dnevne skripte na satnu. Nije baš tako elegantno kao na Mastodon instanci kojom upravlja moj prijatelj – tamo imamo ZFS snapshot svakih 20 minuta – ali i ovim sam rješenjem zadovoljan. I moram reći da mi se NixOS sve više sviđa. Bez AI-ja bi bilo previše komplicirano da bih ga razumio, ali sada barem mogu čitati gotove Nix datoteke. Razmišljao sam o prebacivanju poslužitelja na obični Linux, ali dok god ovo ovako dobro funkcionira...
-
/etc/nixos: Cjelokupna NixOS konfiguracija (sve .nix datoteke). -
/opt/minecraft: Svi svjetovi i podaci Minecraft poslužitelja. -
/opt/satisfactory: Spremljene igre i konfiguracija Satisfactory poslužitelja. -
/opt/Blog: Izvorni kod i sadržaj bloga. -
/opt/ui: Datoteke Mastodon sučelja. -
/opt/audiobookshelf: Audioknjige i pripadajuća baza podataka.
Sve to završava na S3 pohrani koja je montirana putem RClone-a.
NixOS konfiguracija
{ config, pkgs, ... }:
{
# BorgBackup konfiguracija
services.borgbackup.jobs.hourly = {
# Putanja do repozitorija u S3 mountu
repo = "/opt/S3/Backup/NixOSHomeServer_Borg";
# Lozinka nije potrebna
encryption.mode = "none";
# Kompresija za još veću uštedu prostora
compression = "auto,zstd";
# Putanje za sigurnosnu kopiju
paths = [
"/etc/nixos"
"/opt/minecraft"
"/opt/satisfactory"
"/opt/Blog"
"/opt/ui"
"/opt/audiobookshelf"
];
# Izvršavanje svakog sata
startAt = "hourly";
# Automatska inicijalizacija repozitorija ako nedostaje
doInit = true;
# Pravila zadržavanja (Pruning)
prune.keep = {
within = "1d"; # Svi snapshotovi u zadnja 24 sata
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Osiguravanje da je S3 mount spreman prije nego što Borg krene
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}