Relay больше не регистрируется в public pool relays.syncthing.net. Чужие syncthing-устройства не подключаются, трафик не возим. Свои устройства могут использовать relay://heather:22067 если прописан в config.
75 lines
3.6 KiB
Nix
75 lines
3.6 KiB
Nix
# 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 -"
|
||
];
|
||
}
|