NixOS ev sunucumun yedekleme sistemini değiştirdim ve basit bir günlük betik yerine saatlik yedeklemeye geçtim. Arkadaşımın yönettiği Mastodon örneğindeki kadar zarif değil – orada her 20 dakikada bir ZFS anlık görüntüsü (snapshot) alıyoruz – ama bu çözümden de memnunum. Ve şunu söylemeliyim ki NixOS giderek daha çok hoşuma gidiyor. Yapay zeka olmasaydı anlamam için çok karmaşık olurdu, ancak artık en azından hazır Nix dosyalarını okuyabiliyorum. Bir ara sunucuyu normal bir Linux dağıtımına geçirmeyi düşünmüştüm ama bu kadar iyi çalıştığı sürece...

  1. /etc/nixos: Tüm NixOS yapılandırması (tüm .nix dosyaları).

  2. /opt/minecraft: Minecraft sunucusunun tüm dünyaları ve verileri.

  3. /opt/satisfactory: Satisfactory sunucusunun kayıtlı oyunları ve yapılandırması.

  4. /opt/Blog: Blogun kaynak kodu ve içerikleri.

  5. /opt/ui: Mastodon kullanıcı arayüzü (UI) dosyaları.

  6. /opt/audiobookshelf: Sesli kitaplar ve ilgili veritabanı.

Tüm bunlar, RClone aracılığıyla bağlanan (mount edilen) bir S3 depolama alanına aktarılıyor.

NixOS Yapılandırması


{ config, pkgs, ... }:

{
  # BorgBackup yapılandırması
  services.borgbackup.jobs.hourly = {
    # S3 bağlama noktasındaki depo yolu
    repo = "/opt/S3/Backup/NixOSHomeServer_Borg";

    # Şifre gerekmiyor
    encryption.mode = "none";

    # Daha fazla alan tasarrufu için sıkıştırma
    compression = "auto,zstd";

    # Yedeklenecek yollar
    paths = [
      "/etc/nixos"
      "/opt/minecraft"
      "/opt/satisfactory"
      "/opt/Blog"
      "/opt/ui"
      "/opt/audiobookshelf"
    ];

    # Saatlik çalışma
    startAt = "hourly";

    # Eksikse depoyu otomatik olarak başlat
    doInit = true;

    # Saklama kuralları (Budama)
    prune.keep = {
      within = "1d"; # Son 24 saatteki tüm anlık görüntüler
      daily = 7;
      weekly = 4;
      monthly = 12;
    };
  };

  # Borg başlamadan önce S3 bağlamasının hazır olduğundan emin olun
  systemd.services.borgbackup-job-hourly = {
    requires = [ "rclone-s3-mount.service" ];
    after = [ "rclone-s3-mount.service" ];
  };
}