NixOSホームサーバーのバックアップ設定を見直し、単純な日次スクリプトから毎時バックアップに変更しました。友人が管理しているMastodonインスタンスのように、20分おきにZFSスナップショットを取るほどエレガントではありませんが、このソリューションには満足しています。それにしても、NixOSがどんどん気に入ってきました。AIがなければ理解するには複雑すぎたでしょうが、今では完成したNixファイルを少なくとも読むことはできるようになりました。一時はサーバーを普通のLinuxに戻そうかと考えたこともありましたが、これほど上手くいっているうちは……。
-
/etc/nixos: NixOSの設定全体(すべての.nixファイル)。 -
/opt/minecraft: Minecraftサーバーのすべてのワールドとデータ。 -
/opt/satisfactory: Satisfactoryサーバーのセーブデータと設定。 -
/opt/Blog: ブログのソースコードとコンテンツ。 -
/opt/ui: MastodonのUIファイル。 -
/opt/audiobookshelf: オーディオブックと関連データベース。
これらはすべて、RClone経由でマウントされたS3ストレージに保存されます。
NixOSの設定
{ config, pkgs, ... }:
{
# BorgBackupの設定
services.borgbackup.jobs.hourly = {
# S3マウント内のリポジトリへのパス
repo = "/opt/S3/Backup/NixOSHomeServer_Borg";
# パスワード不要
encryption.mode = "none";
# さらなる容量節約のための圧縮設定
compression = "auto,zstd";
# バックアップ対象のパス
paths = [
"/etc/nixos"
"/opt/minecraft"
"/opt/satisfactory"
"/opt/Blog"
"/opt/ui"
"/opt/audiobookshelf"
];
# 毎時実行
startAt = "hourly";
# リポジトリが存在しない場合は自動的に初期化
doInit = true;
# 保存ルール(プルーニング)
prune.keep = {
within = "1d"; # 過去24時間のすべてのスナップショット
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Borgが開始される前にS3マウントが準備できていることを確認
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}