Files
nix-config-ryan4yin/hosts/idols-aquamarine
ryan4yin | 二花 f8d12ada24 feat(btrbk): make snapshots explicit, guarded, and stored in @snapshots (#271)
* feat(btrbk): make snapshots explicit and guarded

Replace the always-on, hardcoded module with modules.btrbk options (enable/volume/subvolume/snapshotDir/target/onCalendar), and assert the btrfs top-level subvolume is mounted so a missing mount fails evaluation instead of silently failing at runtime.

Store snapshots in the @snapshots subvolume (snapshot_dir=@snapshots) rather than next to the live subvolume, make the off-host target explicit and off by default, and document that local snapshots are not off-host backups.

Enable the feature explicitly on idols-ai, shoukei and the three kubevirt hosts; qemu-guest now disables it through the option. Add eval tests for shoukei and ai.

* feat(monitoring): alert on btrbk snapshot failure

Add HostBtrbkSnapshotFailed on node_systemd_unit_state for btrbk-btrbk.service, so a broken snapshot schedule alerts instead of only surfacing in the journal.
2026-09-19 11:43:11 +08:00
..
2026-03-19 22:25:48 +08:00
2026-06-01 10:02:49 +08:00
2024-07-31 17:09:20 +08:00
2026-06-01 10:02:49 +08:00
2026-06-01 10:02:49 +08:00

Idols - Aquamarine

Storage, operation and maintenance related services are running on this host:

  1. Storage such as git server, file server/browser, torrent downloader,, etc.
  2. Backup or sync my personal data to cloud or NAS.
    • For safety, those data should be encrypted before sending to the cloud or my NAS.
  3. Collect and monitor the metrics/logs of my homelab.

Features

Services:

  1. prometheus + alertmanager + grafana + loki: Monitor the metrics/logs of my homelab.
  2. restic: Backup my personal data to cloud or NAS.
  3. synthing: Sync file between android/macbook/PC and NAS.
  4. gitea: Self-hosted git service.
  5. sftpgo: SFTP server.
  6. transmission & AriaNg: Torrent downloader and HTTP downloader
  7. alist/filebrower: File browser for local/SMB/Cloud

All the services assumes a reverse proxy to be setup in the front, they are all listening on localhost, and a caddy service is listening on the local network interface and proxy the requests to the services.