feat(zitadel): secret SMTP + PAT admin lisible par hermes
secrets/zitadel-smtp.yml porte le mot de passe du compte d'envoi pour le provisioning SMTP par API (v2 ignore la config runtime). Le PAT admin est materialise en 0400 pour hermes et rotate.
This commit is contained in:
@@ -55,6 +55,17 @@ in {
|
||||
networking.hostName = "tower";
|
||||
sops.defaultSopsFile = lib.mkForce ../../secrets/tower.yml;
|
||||
|
||||
# PAT d'admin Zitadel (chiffre dans secrets/zitadel.yml, recipient tower)
|
||||
# materialise lisible par hermes : sert aux operations d'admin ponctuelles
|
||||
# via l'API REST (creation d'apps OIDC, inspection) tant que le zitadel-mcp
|
||||
# upstream n'est pas provisionne (secret zitadel_mcp_env manquant).
|
||||
sops.secrets."zitadel_mcp_pat" = {
|
||||
sopsFile = ../../secrets/zitadel.yml;
|
||||
owner = "hermes";
|
||||
group = "hermes";
|
||||
mode = "0400";
|
||||
};
|
||||
|
||||
nixpkgs.overlays = [ inputs.ankimcp.overlays.default ];
|
||||
|
||||
# ACME/Let's Encrypt : PLUS UTILISE sur tower. Le DNS public
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
zitadel_smtp_password: ENC[AES256_GCM,data:ghgUAAD2I9tFqJQBmDCCiZ0m/Ko=,iv:0mt7GZ1/TrNI6jAjHPy4OFwoA62EI3LILVh340Pzxh8=,tag:2SIMBh5t01cpkSqyduB11g==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiYzdrOEVyNXJnY01GdktR
|
||||
YWMyaHlRWis2WjdKRDEwZ3ltVis5OHhkZFZRCldsaUh3dE11K3h0QnMwRHVidWdD
|
||||
ZjRiTHpuaHFxaXZVRjRXK0dWWFdXTWcKLS0tIE5iSnU1bHFVMUQ1OCtSdVRwaEtx
|
||||
MWJHbWpMVEdoK2RQQ05oUHBCTU1sSzAKxkqe5dts1FTN78imFZVNll/CD8BWUGz0
|
||||
Rxue7a5IUORbFF0Ca6Gt+kozro6iEnTYOLT5/FV7Dtn483t0zW+vpw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age1usm3v0ugducrzcwud60dda7xfnj49fdhecj7kcsfm7dzwzrzeyqq2jc2hm
|
||||
lastmodified: "2026-10-19T05:03:35Z"
|
||||
mac: ENC[AES256_GCM,data:YqcoHVYwmxx3Y+E0uVrR/KRrxDq9YOXlWPMr4Zl9B4R+2kvlSRog2QbsPhLCFy4uWSCJyFckjhooZkE97hXa9F7tcAyvWoSgNv3BbeQnQRU8SCKFH6joAIkM9I44uyiM+neaTUSTkoJiCWhrwpC3d/ugKwvECtoK1BVw0jhm6dM=,iv:FzFbKiMfacp5M/D10ZjpX9hgUReHFWktZt2PUcbCHL8=,tag:i/p+IwJI/xjx98HI3JFVBA==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.13.3
|
||||
+8
-8
@@ -1,16 +1,16 @@
|
||||
zitadel_mcp_pat: ENC[AES256_GCM,data:5TtuBAkGCNu7KKZX5OXSoQNd2dcEP/2/WVOkdKE8oZUwDrun0Q==,iv:9I5H03JHfpXtelZSOZczIHNrav6W1Sg5ZE15zpYO7uk=,tag:C2rrNKdRKjgMw6Bepjg3yA==,type:str]
|
||||
zitadel_mcp_pat: ENC[AES256_GCM,data:GJqBSnvIeLSGruMPPN6ZMEDB5FO3L33amCcbdESM5606jtMk2kQYh+gcapQYFs43TwUgdBvpQpVWrqpsKM5RQWQVNl7jIkw=,iv:ih0zTkH7zYVGY+7lgWtzOCLF10vuE8Wjgi3Dh/cUApw=,tag:fcbBC+ZUkEsK3JZjvkt1Kg==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTT0NyQVliOFVMeDFwbUxB
|
||||
c1NHZ3czb3Y2ODR4UkVIWkdMSXRDOUdMcDJNClNTSEZ0RzloVW1pRnIxai9IT1JH
|
||||
M3hyenJ0TW9IZGRwTnFXYnFJWmtyemsKLS0tIE9XR08zUlN1NEx2UHJqTlM1eDR6
|
||||
eU92RmJIaDBna1N2cE4wNDNMOGYyUjgKTCiFiRQ+FHgWIiq3NFo0mIroLAWysUDr
|
||||
xZowsxaYr8kPSwyBJfwCDamAmofYrJr3/u3Lqz2KgtB2hKytZUn0eA==
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSMEtGZHRubTRPZ20zL3Nz
|
||||
Y3pmR0R5QzRlUVExOGl0aGx2bzJnRHJyNjJzCmMvYmx1YW8yV2M1cmRwNnNUeGcx
|
||||
SGE3cUlsQ1RWZEh4NzQwTjBzQUhQYWcKLS0tIGVUcDVJRDhUUVRCbnB2WjZqVERD
|
||||
RGNRSkNGRGE0M2lmakROVU1NSm4za3cKYGtTlWigZnckhY+69UTFu6Ko6zGw3mpo
|
||||
5GqBOSUIoiz6RktqgzS+cQBh2if0c7zamRM45yDhBvDJgb5sKgMYag==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age1usm3v0ugducrzcwud60dda7xfnj49fdhecj7kcsfm7dzwzrzeyqq2jc2hm
|
||||
lastmodified: "2026-09-25T01:06:13Z"
|
||||
mac: ENC[AES256_GCM,data:kErglUT+GMaSVjIQw2Q1Wlz47MkX6qmFi459mMmmb41/vsIzmOAh3PUJhOuu3dOblIN0QmR0BxXmz/pSCJYSKU6AjUyJD4v2d3AVH1E2mlAeTDC/hu2NlM1VLUPpCwAPOQt0mOkCdcQlUqWo0mNIzDjvuqXXB5efXjYUibadWHk=,iv:MBpgWtW0gMEr2tgyKx9M90AibaleYAIvHo0219JAmLU=,tag:YWt1AS6QmA6uPe7QncfJ6Q==,type:str]
|
||||
lastmodified: "2026-10-19T00:59:45Z"
|
||||
mac: ENC[AES256_GCM,data:3PxCt+e2zbLmJplAFBAYeDNIRb8YXhn+Kvu7QTpuETB486/V4NHEE3LeVVd2DlKyUL3NNXnPM43sM9CDR1VHk0AVjGDJ6A0BO2ENcl97RQVWlxUtbQwumqWHDa/okrlTL9/xuY7qCYKb8pvOyNwtrpQxk9l97UNXCu5X9tGD06c=,iv:uxjLUx3/eXcjSfOdo/do3t1MyoGAksGhvzCs7Gy9XmM=,tag:87TA5SS3aKQwdM3H2469DA==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.13.3
|
||||
|
||||
@@ -13,6 +13,13 @@
|
||||
group = "keys";
|
||||
};
|
||||
|
||||
# Mot de passe du compte d'envoi noreply@marcpartensky.com (Stalwart sur le
|
||||
# VPS). Fichier dédié pour que hermes puisse l'écrire sans toucher au reste.
|
||||
"zitadel/smtp_password" = {
|
||||
sopsFile = ../../secrets/zitadel-smtp.yml;
|
||||
key = "zitadel_smtp_password";
|
||||
};
|
||||
|
||||
# "zitadel/steps" retiré le 12/10/2026 : le secret pointait sur
|
||||
# zitadel_steps, chiffré en type:int dans secrets/anywhere.yml, ce que
|
||||
# sops-install-secrets refuse ("the value of key '' is not a string"). Il
|
||||
@@ -50,6 +57,13 @@
|
||||
enable = true;
|
||||
masterKeyFile = config.sops.secrets."zitadel/master_key".path;
|
||||
|
||||
# Pas de clé SMTP ici : depuis ZITADEL v2 la config SMTP vit dans la base
|
||||
# (projection smtp_configs) et se modifie par l'API admin
|
||||
# POST /admin/v1/smtp ou la console. Le fichier de config runtime l'ignore
|
||||
# (vérifié le 19/10/2026 : SMTP.* dans --config ne produit que
|
||||
# Errors.SMTPConfig.NotFound). Le mot de passe du compte d'envoi est dans
|
||||
# secrets/zitadel-smtp.yml pour la provisioning par API.
|
||||
|
||||
# extraStepsPaths retiré : voir le commentaire sur sops.secrets ci-dessus.
|
||||
|
||||
settings = {
|
||||
|
||||
Reference in New Issue
Block a user