He cambiado la configuración del backup de mi servidor doméstico NixOS, pasando de un simple script diario a copias de seguridad cada hora. No es tan elegante como en la instancia de Mastodon que administra mi amigo —donde tenemos un snapshot de ZFS cada 20 minutos—, pero estoy satisfecho con esta solución. Y debo decir que NixOS me gusta cada vez más. Sin la IA, sería demasiado complicado para que pudiera entenderlo, pero ahora al menos puedo leer los archivos Nix terminados. Llegué a pensar en cambiar el servidor a un Linux convencional, pero mientras esto funcione tan bien...
-
/etc/nixos: Toda la configuración de NixOS (todos los archivos .nix). -
/opt/minecraft: Todos los mundos y datos del servidor de Minecraft. -
/opt/satisfactory: Partidas guardadas y configuración del servidor de Satisfactory. -
/opt/Blog: El código fuente y los contenidos del blog. -
/opt/ui: Los archivos de la interfaz de usuario (UI) de Mastodon. -
/opt/audiobookshelf: Los audiolibros y la base de datos correspondiente.
Todo esto termina en un almacenamiento S3 montado a través de RClone.
La configuración de NixOS
{ config, pkgs, ... }:
{
# Configuración de BorgBackup
services.borgbackup.jobs.hourly = {
# Ruta al repositorio en el montaje S3
repo = "/opt/S3/Backup/NixOSHomeServer_Borg";
# No se requiere contraseña
encryption.mode = "none";
# Compresión para ahorrar aún más espacio
compression = "auto,zstd";
# Las rutas a respaldar
paths = [
"/etc/nixos"
"/opt/minecraft"
"/opt/satisfactory"
"/opt/Blog"
"/opt/ui"
"/opt/audiobookshelf"
];
# Ejecución cada hora
startAt = "hourly";
# Inicializar el repositorio automáticamente si falta
doInit = true;
# Reglas de retención (Pruning)
prune.keep = {
within = "1d"; # Todos los snapshots de las últimas 24h
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Asegurar que el montaje S3 esté listo antes de que Borg se inicie
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}