heather: replace k3s with docker+arion+caddy+syncthing
- remove k3s.nix (1.3GB overhead unjustified for single-node) - add docker.nix (docker + arion CLI, mikl in docker group) - add caddy.nix (edge proxy, TLS via ACME staging, host-based routing) - add syncthing.nix (sync daemon + strelaysrv via systemd, /srv/syncthing) - add arion-compose.nix (forgejo first, others stubbed as TODO) - add arion flake input + nixos module - default.nix: wire up arion project as systemd service (serviceName=heather) Architecture: Caddy (host) terminates TLS, routes to host services (syncthing) and docker containers (arion, 127.0.0.1:PORT). Named volumes everywhere except silverbullet (bind /srv/syncthing/herbarium).
This commit is contained in:
parent
c8b87ffcf1
commit
220d1f651c
8 changed files with 412 additions and 43 deletions
69
hosts/heather/syncthing.nix
Normal file
69
hosts/heather/syncthing.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
# heather — Syncthing (sync + relay) как NixOS-сервис.
|
||||
#
|
||||
# Заменяет syncthing@michaotic + strelaysrv с iscg-dev.
|
||||
#
|
||||
# - services.syncthing: sync daemon. dataDir = /srv/syncthing (синкается на
|
||||
# устройства poppy/телефон). configDir = /var/lib/syncthing (state syncthing).
|
||||
# - relayOptions.enable: strelaysrv, public relay на :22067 (relay) / :22070
|
||||
# (status). Для устройств за NAT.
|
||||
#
|
||||
# GUI: 127.0.0.1:8384 (только localhost), Caddy проксирует на sync.iscg.dev
|
||||
# с basicauth сверху (см. caddy.nix). Пароль GUI включить отдельно (syncthing
|
||||
# сам требует при прослушивании не-localhost, но на localhost опционален —
|
||||
# Caddy даёт внешний слой auth).
|
||||
#
|
||||
# /srv/syncthing/herbarium/ — silverbullet space (bind mount в контейнер,
|
||||
# см. arion-compose.nix). syncthing sync'ает весь /srv/syncthing включая
|
||||
# herbarium на устройства.
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
user = "mikl";
|
||||
group = "users";
|
||||
|
||||
# Что синкается (файлы). /srv — FHS для service data.
|
||||
dataDir = "/srv/syncthing";
|
||||
|
||||
# State syncthing (config, certs, index). Не синкается.
|
||||
configDir = "/var/lib/syncthing";
|
||||
|
||||
# Открывает firewall порты 22000 (sync). firewall выключен на heather
|
||||
# (полагаемся на YC SG), но флаг для консистентности.
|
||||
openDefaultPorts = true;
|
||||
|
||||
# GUI только на localhost — Caddy проксирует снаружи.
|
||||
guiAddress = "127.0.0.1:8384";
|
||||
|
||||
# НЕ override devices/folders из nix — конфигурим через GUI/API.
|
||||
# overrideDevices/overrideFolders = false (default) = nix не трогает то,
|
||||
# что добавлено через GUI. Иначе nix бы их стирал при rebuild.
|
||||
overrideDevices = false;
|
||||
overrideFolders = false;
|
||||
};
|
||||
|
||||
# strelaysrv: public relay для syncthing-устройств за NAT.
|
||||
# Порты 22067 (relay) и 22070 (status).
|
||||
# NixOS-модуля syncthing не управляет strelaysrv — поднимаем вручную через
|
||||
# systemd, пакет syncthing-relay (strelaysrv binary).
|
||||
systemd.services.syncthing-relay = {
|
||||
description = "Syncthing Relay Server (strelaysrv)";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.syncthing-relay}/bin/strelaysrv";
|
||||
Restart = "on-failure";
|
||||
User = "mikl";
|
||||
Group = "users";
|
||||
# strelaysrv пишет ключи/статус в CWD — рабочая директория.
|
||||
WorkingDirectory = "/var/lib/syncthing-relay";
|
||||
StateDirectory = "syncthing-relay";
|
||||
};
|
||||
};
|
||||
|
||||
# /srv/syncthing создаём, права mikl:users (syncthing работает от mikl).
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /srv/syncthing 0755 mikl users -"
|
||||
];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue