26 Commits
Author SHA1 Message Date
Hermes Agent 10058770c4 feat(secrets): cles Switch (deck) et cle de pre-auth du mesh headscale
secrets/switch-keys.yml (prod.keys d'Eden sur le deck, posees dans le home de marc) et secrets/headscale.yml (preauth_key reutilisable, consommee par services/tailscale sur tower, le deck et le VPS). Regles de creation sops associees dans .sops.yaml.
2026-10-24 15:07:55 -04:00
Hermes Agent ab03b394a0 feat(ygg-mesh): réseau privé Yggdrasil entre tower, deck et anywhere
Module services/ygg-mesh : Yggdrasil en réseau privé (mot de passe partagé,
clés publiques épinglées), liens Tor via une instance tor dédiée (onion
service par machine) et lien direct multicast prioritaire sur le LAN.
Chaque machine garde une adresse IPv6 stable et un nom <host>.ygg.

Secret dans secrets/ygg-mesh.yml (règle .sops.yaml dédiée) ; config rendue
à chaud au démarrage (ExecStartPre + credential systemd), le mot de passe
ne touche jamais le store. Identités et clés dans la table `nodes`.
2026-10-23 10:31:36 -04:00
Hermes Agent c005dc21db chore(sops): cle age du deck dans les destinataires common 2026-10-19 02:40:07 -04:00
Hermes Agent 1bf853a56a fix(deck): secret monero dedie et planning sans CalDAV 2026-10-19 02:38:26 -04:00
Hermes Agent 52ff370ea0 chore(sops): creation_rules des nouveaux secrets
Regles pour secrets/monero.yml (tower + deck), stalwart-mcp.yml,
wireguard.yml, zitadel-smtp.yml et wise.yml (recipient tower).
2026-10-19 02:07:19 -04:00
Hermes Agent aadebcc0fd feat(winnie): OIDC Zitadel en PKCE via un secret sops oidc_env
- secret oidc_env (secrets/winnie.yml, chiffre pour tower) materialise par le oneshot winnie-oidc-secret dans /var/lib/winnie/oidc.env, requis par winnie-backend (EnvironmentFile non optionnel)
- PKCE : pas de client_secret cote backend
- .sops.yaml : creation_rule pour secrets/winnie.yml
2026-10-17 16:56:17 -04:00
Hermes Agent 917ebe40d3 feat(services): serveur de sync Anki auto-hébergé (anki.marcpartensky.com) 2026-10-09 17:38:38 -04:00
Hermes Agent 3fb37e9ca5 feat(winnie+openrouter+reactive-resume): nouveaux services et flake inputs (ankimcp, reactive-resume, openrouter-mcp) 2026-10-06 21:41:54 -04:00
Hermes Agent 2edce1cd20 feat(tower): remote-desktop (rustguac, kasmvnc, rustdesk) + acl 777 access journal
Rustguac : guacd en loopback (tls=false) + vhost guac.marcpartensky.com
(sans ACME, TLS par Pangolin). KasmVNC : display :20 (pas :1, session X
existe deja), desktop lxqt (lxqt-wayland refuse), mot de passe regeneré
par empreinte sops, auth HTTP 200/401 testee. Rustdesk : ports reels 1.1.16,
hbbs/hbbr corriges; nginx guac/kasm en loopback. Vault/rustguac secrets
lues par le bon user (vault, rustguac, marc) au lieu de root. WireGuard
client sur wg1 (10.100.0.3/32, endpoint VPS 104.129.12.158:443) desactive
tant que le secret sops wireguard/tower_private_key n'existe pas (evite
le blocage sops-nix sur tout le build). hermes.extraGroups += systemd-journal.
2026-10-06 21:41:47 -04:00
Hermes Agent fb4afea17f feat(gitea): OIDC Zitadel pour l'authentification (auto-discover, registration externe uniquement)
- services.gitea.openid : ENABLE_OPENID_SIGNIN/SIGNUP, whitelist auth.marcpartensky.com
- service oneshot gitea-oidc-init : enregistre la source OAuth2 zitadel (idempotent)
- registration classique désactivée (ALLOW_ONLY_EXTERNAL_REGISTRATION)
- secret client OIDC dans secrets/gitea-oidc.yml (sops)
2026-09-27 21:18:46 -04:00
Hermes Agent 2622780459 feat(discord-hermes-bridge): pont Discord vers un gateway Hermes dédié
Gateway hermes-agent dédié (profil discord-bridge) sur 127.0.0.1:8643, API Server
OpenAI-compatible consommée par le cog hermes.py du discord-bot. Unité systemd écrite à
la main (le module NixOS ne gère pas d'instances) et même paquet que le bot Matrix,
donc mêmes groupes de deps (edge-tts, stt-whisper).

Clé d'API dans secrets/discord-hermes-bridge.yml, port jamais ouvert au firewall
(assertion). Côté discord-bot, HERMES_BRIDGE_URL et le nom de rôle viennent d'un
EnvironmentFile, seule la clé est secrète.
2026-09-27 13:00:56 -04:00
Hermes Agent e8ff562d78 feat(gitea): forge locale (postgres, admin, Pangolin SSO)
Instance gitea sur tower avec base postgres (rôle gitea en peer auth), compte admin
créé une seule fois par un oneshot idempotent avec le mot de passe de
secrets/gitea.yml (sops). Exposition gitea.marcpartensky.com via newt/Pangolin, et
assertion pour que le port HTTP local reste fermé.
2026-09-27 13:00:56 -04:00
Hermes Agent 67b4551b2d feat(hermes-dashboard): terminal web hermes (Pangolin SSO)
Backend hermes-agent en mode dashboard (9120) + nginx host-rewrite (9121),
ressource newt terminal.marcpartensky.com. Ports jamais ouverts au firewall :
/api/pty est un shell.
2026-09-26 18:14:41 -04:00
Hermes Agent 2149e5f998 feat(hermes): bot Matrix @hermes (env, secret sops, allowlist)
Homeserver matrix.marcpartensky.com, @hermes:matrix.marcpartensky.com, E2EE
required (salles de pont chiffrées), pas de mention requise ni d'auto-thread
dans les salles de pont (3+ membres). Allowlist : @marc + son ghost Signal.
Token dans secrets/hermes-matrix.yml (règle .sops.yaml dédiée, sopsFile
explicite car hors de tower.yml).
2026-09-26 18:11:54 -04:00
Hermes Agent f55067d0b7 feat(flake): lock updates and protonmail-mcp flake 2026-09-24 21:31:02 -04:00
mazex 3c94c3f5f9 sops: add deck key 2026-09-17 02:57:41 +00:00
mazex 0b452dfdc6 chore(sops): add deck as sops recipient
Adds a new age key for the 'deck' machine to the sops configuration.
Re-encrypts common secrets to include the new recipient.
Also updates .gitignore to ignore all 'result*' files.
2026-09-16 17:37:27 -04:00
mazex 7d25d23d7e chore: rotate tower age encryption key 2026-05-20 00:12:32 +02:00
mazex f3d04a094e stolen laptop new sops.yaml 2026-05-19 18:21:05 +02:00
marc be64d37ac3 feat: add mac configuration to sops and home-manager setup 2026-05-02 18:20:24 +02:00
mazex 13616517d5 chore: update sops key and configuration files 2026-04-23 15:36:58 +02:00
mazex 0779764e34 chore: re-encrypt secrets with new tower age key 2026-04-22 04:09:15 +02:00
mazex d0647362e8 common.yml for secrets 2026-04-16 05:22:19 +02:00
mazex 5181b0da8c anywhere 2026-02-03 23:50:30 +01:00
mazex 87ed8846da feat(sops): add laptop key and integrate nextcloud secrets
Adds a new age key for the laptop to `.sops.yaml` and re-encrypts secrets.
Configures Nextcloud to retrieve credentials via SOPS and use a PostgreSQL Unix socket.
Removes Minio object storage configuration from Nextcloud.
Temporarily disables the dnscrypt service.
2026-02-03 20:51:42 +01:00
mazex 213bf2e1da chore(sops): add sops configuration
This initializes sops with an age key and defines creation rules for
secrets in the 'secrets/' directory.
2026-01-15 00:38:06 +01:00