diff --git a/hosts/heather/caddy.nix b/hosts/heather/caddy.nix index 6cd49ac..2be8c7a 100644 --- a/hosts/heather/caddy.nix +++ b/hosts/heather/caddy.nix @@ -33,15 +33,6 @@ let } ''; - # paseo basicauth — внешний слой. Внутренний: парольная auth самого демона - # (PASEO_PASSWORD, /var/lib/paseo-secrets/paseo.env). Пароли в pass: - # iscg.dev/paseo/basicauth (caddy) и iscg.dev/paseo/daemon (paseo daemon). - paseoBasicAuth = '' - basicauth { - mikl $2a$14$4ZfTWjquFPOoKyq9NA.IJeX9y3lxQO1l0J7iXSnr/.8oqJoblM8jy - } - ''; - in { services.caddy = { enable = true; @@ -134,9 +125,10 @@ Allow: /" 200 reverse_proxy 127.0.0.1:30141 ''; - # paseo (self-hosted web UI для CLI-агентов, systemd paseo.service) - # Два слоя auth: basicauth (здесь) + парольная auth демона (PASEO_PASSWORD). - "paseo.iscg.dev".extraConfig = paseoBasicAuth + '' + # paseo daemon endpoint для desktop/mobile-клиентов. + # Basic Auth здесь намеренно нет: мобильный клиент Paseo его не умеет. + # Доступ защищён встроенным PASEO_PASSWORD самого демона. + "paseo.iscg.dev".extraConfig = '' reverse_proxy 127.0.0.1:6767 ''; diff --git a/hosts/heather/paseo.nix b/hosts/heather/paseo.nix index f417b39..8125000 100644 --- a/hosts/heather/paseo.nix +++ b/hosts/heather/paseo.nix @@ -3,18 +3,18 @@ # https://github.com/getpaseo/paseo, npm-пакет @getpaseo/cli # Daemon управляет агентами как дочерними процессами (provider = CLI на хосте, # со своими кредами). Слушает 127.0.0.1:6767 → Caddy paseo.iscg.dev терминирует -# TLS + basicauth (внешний слой, см. caddy.nix paseoBasicAuth). +# TLS. Этот hostname предназначен для desktop/mobile-клиентов: bundled web UI +# выключен, а Caddy Basic Auth намеренно не используется — мобильный клиент не +# умеет проходить дополнительный Basic Auth слой. # -# Auth два слоя: -# 1) встроенная парольная auth демона (bcrypt, Bearer header + WS subprotocol, -# без пароля — 401). Пароль: PASEO_PASSWORD из EnvironmentFile -# /var/lib/paseo-secrets/paseo.env (mikl:users 600), plaintext в -# pass iscg.dev/paseo/daemon. -# 2) Caddy basicauth, пароль в pass iscg.dev/paseo/basicauth. +# Auth: встроенная парольная auth демона (bcrypt, Bearer header + WS subprotocol, +# без пароля — 401). Пароль: PASEO_PASSWORD из EnvironmentFile +# /var/lib/paseo-secrets/paseo.env (mikl:users 600), plaintext в +# pass iscg.dev/paseo/daemon. # # Конфиг демона: ~/.paseo/config.json (hostnames: paseo.iscg.dev — DNS rebinding -# protection, webUi enabled, relay off, dictation/voice off — не качать -# speech-модели). Хост-allowlist проверен: чужой Host → 403. +# protection, webUi disabled, relay off, dictation/voice off). Хост-allowlist +# проверен: чужой Host → 403. # # Установка @getpaseo/cli — ручная (npm global в ~/.npm-global, как pi-web): # npm i -g @getpaseo/cli # node-pty собирается без тулчейна (prebuilds) @@ -40,7 +40,7 @@ Type = "simple"; User = "mikl"; Group = "users"; - ExecStart = "/home/mikl/.npm-global/bin/paseo daemon start --foreground --web-ui --no-relay"; + ExecStart = "/home/mikl/.npm-global/bin/paseo daemon start --foreground --no-web-ui --no-relay"; EnvironmentFile = "/var/lib/paseo-secrets/paseo.env"; WorkingDirectory = "/home/mikl"; Restart = "on-failure";