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
|
|
@ -1,4 +1,4 @@
|
|||
# heather — k3s single-node cluster на YC (NixOS 25.11, собирается как qcow2-образ)
|
||||
# heather — сервер на Yandex Cloud (NixOS 26.11).
|
||||
# https://git.iscg.dev/mikl/nix-config
|
||||
#
|
||||
# Перенесено из muscari (переименование 2026-07-11).
|
||||
|
|
@ -6,21 +6,48 @@
|
|||
# Образ NixOS собирается как qcow2 (см. ./image.nix, make-disk-image.nix) и
|
||||
# заливается как boot disk в YC. НЕ через nixos-anywhere — kexec на YC хрупкий.
|
||||
# См. memory/yandex-nixos-qcow2.md.
|
||||
#
|
||||
# Архитектура (2026-07-12, заменила k3s):
|
||||
# Caddy (edge, TLS) → host-сервисы (syncthing) + docker-контейнеры (arion)
|
||||
# Cilium/k3s выключены — overhead 1.3 GB был неоправдан для single-node.
|
||||
# См. ./docker.nix, ./caddy.nix, ./syncthing.nix, ./arion-compose.nix.
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
imports = [
|
||||
./image.nix # YC guest profile + qcow2 build target (заменяет disk-config.nix)
|
||||
./k3s.nix
|
||||
./image.nix # YC guest profile + qcow2 build target
|
||||
./docker.nix # docker + arion CLI (контейнеры)
|
||||
./caddy.nix # edge proxy, TLS, роутинг по доменам
|
||||
./syncthing.nix # sync + relay
|
||||
];
|
||||
|
||||
# Arion-проект как systemd-сервис: arion-compose.nix → docker-compose → up.
|
||||
# NB: settings — это модуль с imports, НЕ `import ./arion-compose.nix`.
|
||||
virtualisation.arion.backend = "docker";
|
||||
virtualisation.arion.projects.heather = {
|
||||
serviceName = "heather"; # systemd: arion-heather.service
|
||||
settings = {
|
||||
imports = [ ./arion-compose.nix ];
|
||||
};
|
||||
};
|
||||
|
||||
networking = {
|
||||
hostName = "heather";
|
||||
# Firewall выключен в ./image.nix (полагаемся на YC Security Groups).
|
||||
# Порты тут только для документации — реально открывает YC SG.
|
||||
firewall.allowedTCPPorts = [
|
||||
22 # SSH
|
||||
80 # HTTP (Ingress через Traefik)
|
||||
443 # HTTPS (Ingress через Traefik)
|
||||
# 6443 не открываем — kubectl через SSH-туннель
|
||||
22 # SSH
|
||||
80 # HTTP (Caddy → redirect to HTTPS)
|
||||
443 # HTTPS (Caddy, TLS termination)
|
||||
2222 # forgejo git ssh (публично)
|
||||
22000 # syncthing sync
|
||||
22067 # strelaysrv (relay)
|
||||
22070 # strelaysrv (status)
|
||||
# jitsi (когда добавим): 3478, 5349, 10000/udp, 49152-65535/udp
|
||||
];
|
||||
firewall.allowedUDPPorts = [
|
||||
22000 # syncthing sync (QUIC)
|
||||
# jitsi: 10000 (jvb), 49152-65535 (RTP)
|
||||
];
|
||||
};
|
||||
# useDHCP задаёт ./image.nix (mkDefault) — облачный профиль.
|
||||
|
|
@ -47,4 +74,4 @@
|
|||
|
||||
# После первой установки 25.11 не трогаем (NixOS convention)
|
||||
system.stateVersion = "25.11";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue