nix-config/hosts/heather/syncthing.nix
mikl 6324d3b676 heather: make strelaysrv private (pools="")
Relay больше не регистрируется в public pool relays.syncthing.net.
Чужие syncthing-устройства не подключаются, трафик не возим.
Свои устройства могут использовать relay://heather:22067 если прописан в config.
2026-07-12 17:55:52 +03:00

75 lines
3.6 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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, PRIVATE relay на :22067 (relay) /
# :22070 (status). Только для своих устройств за NAT (pools="" — не
# публикуется в public pool, чужой трафик не возит).
#
# GUI: 127.0.0.1:8384 (только localhost), Caddy проксирует на sync.iscg.dev
# с basicauth сверху (см. caddy.nix).
#
# /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: PRIVATE relay для своих syncthing-устройств за NAT.
# Порты 22067 (relay) и 22070 (status). НЕ в public pool — чужие устройства
# не подключаются, трафик не возим. Свои устройства используют этот relay
# только если прописан в их config (relay://heather:22067).
# NixOS-модуля syncthing не управляет strelaysrv — поднимаем вручную через
# systemd, пакет syncthing-relay (strelaysrv binary).
systemd.services.syncthing-relay = {
description = "Syncthing Relay Server (strelaysrv, private)";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
# pools="" — НЕ регистрироваться в public relay pool.
# debug-relays -v для отладки.
ExecStart = "${pkgs.syncthing-relay}/bin/strelaysrv -pools=\"\"";
Restart = "on-failure";
User = "mikl";
Group = "users";
# strelaysrv пишет ключи/статус в CWD — рабочая директория.
WorkingDirectory = "/var/lib/syncthing-relay";
StateDirectory = "syncthing-relay";
};
};
# /srv/syncthing создаём, права mikl:users (syncthing работает от mikl).
# /var/lib/syncthing (configDir) — тоже под mikl, иначе syncthing не может
# mkdir (StateDirectory модуля срабатывает не всегда при не-default user).
systemd.tmpfiles.rules = [
"d /srv/syncthing 0755 mikl users -"
"d /var/lib/syncthing 0755 mikl users -"
];
}