2026-09-25 13:27:00 +01:00
|
|
|
{
|
|
|
|
|
"Logging": {
|
|
|
|
|
"LogLevel": {
|
|
|
|
|
"Default": "Information"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"AllowedHosts": "*",
|
|
|
|
|
"Site": {
|
|
|
|
|
"Title": "yavsc",
|
|
|
|
|
"Slogan": "Yavsc!",
|
|
|
|
|
"StyleSheet": "/css/default.css",
|
|
|
|
|
"Authority": "https://preprod-yavsc.$DOMAIN",
|
|
|
|
|
"Audience": [
|
|
|
|
|
"blogs",
|
|
|
|
|
"api"
|
|
|
|
|
],
|
|
|
|
|
"ExternalUrl": "https://preprod-yavsc.$DOMAIN",
|
|
|
|
|
"ApiUrl": "https://preprod-api.$DOMAIN",
|
|
|
|
|
"CorsAllowedOrigins": [
|
|
|
|
|
"https://preprod-blogs.$DOMAIN",
|
|
|
|
|
"https://preprod-api.$DOMAIN"
|
|
|
|
|
],
|
|
|
|
|
"Banner": "/images/banner-dewang.jpg",
|
|
|
|
|
"Owner": {
|
|
|
|
|
"Name": "Paul Schneider",
|
|
|
|
|
"EMail": "paul@pschneider.fr"
|
|
|
|
|
},
|
|
|
|
|
"Admin": {
|
|
|
|
|
"Name": "Paul Schneider",
|
|
|
|
|
"EMail": "paul@pschneider.fr"
|
|
|
|
|
},
|
|
|
|
|
"Quota": 200000000,
|
|
|
|
|
"Blog": "blog",
|
|
|
|
|
"Avatars": "avatars",
|
|
|
|
|
"Bills": "bills",
|
|
|
|
|
"TempDir": "temp",
|
|
|
|
|
"DataDir": "data",
|
|
|
|
|
"GitRepository": "git"
|
|
|
|
|
},
|
|
|
|
|
"Smtp": {
|
|
|
|
|
"Host": "mercure.pschneider.fr",
|
|
|
|
|
"Port": 465,
|
|
|
|
|
"SenderName": "Paul Schneider",
|
|
|
|
|
"SenderEmail": "paul@pschneider.fr",
|
|
|
|
|
"UserName": "paul",
|
|
|
|
|
"Password": "$SMTP_PASSWORD"
|
|
|
|
|
},
|
|
|
|
|
"DataProtection": {
|
|
|
|
|
"Keys": {
|
|
|
|
|
"Dir": "DataProtection"
|
|
|
|
|
},
|
|
|
|
|
"RSAParamFile": "RSA-Params.json",
|
|
|
|
|
"ExpiresInHours": 168
|
|
|
|
|
},
|
|
|
|
|
"Moderation": {
|
|
|
|
|
"AutoApproveThreshold": 0.7,
|
|
|
|
|
"AutoRejectThreshold": 0.9
|
|
|
|
|
},
|
|
|
|
|
"Kestrel": {
|
|
|
|
|
"Endpoints": {
|
|
|
|
|
"Http": {
|
|
|
|
|
"Url": "http://localhost:88"
|
|
|
|
|
},
|
|
|
|
|
"Https": {
|
|
|
|
|
"Url": "https://localhost:89",
|
|
|
|
|
"Certificate": {
|
|
|
|
|
"Path": "/etc/letsencrypt/live/preprod-yavsc.$DOMAIN/fullchain.pem",
|
|
|
|
|
"KeyPath": "/etc/letsencrypt/live/preprod-yavsc.$DOMAIN/privkey.pem"
|
Génération contrib : vhosts nginx h3 edge + appsettings (jq) + QUIC logiciel Kestrel
Vhosts nginx (contrib/template.vhost + Makefile, envsubst allowlist) :
HTTP/3 edge per contrib/quic.md — listen 443 quic reuseport (Org only),
http2/http3 on, Alt-Svc, ssl_protocols TLSv1.3. Cibles generate-nginx /
generate-nginx-prod -> generated/nginx/ (gitignoré). Allowlist préserve
les variables nginx intrinsèques ($host, $scheme, ...).
Appsettings (contrib/template.appsettings-{org,api,blogs}.json + Makefile) :
génération via jq (et non envsubst) car le mot de passe SMTP contient un qui cassait le JSON. Substitue $DOMAIN (DOMAIN_ROOT) partout et injecte
$SMTP_PASSWORD depuis env (échappement JSON, secret non exposé en cmd).
Cible generate-appsettings -> generated/appsettings/.
QUIC logiciel : Kestrel:Endpoints:Https:Protocols = Http1AndHttp2AndHttp3
sur les 3 templates appsettings (capacité, non joignable derrière nginx).
Fix bonus : générateur systemd HTTP_PORT"$($*_PORT)" (était
"$*_$(HTTP_PORT)" -> port vide localhost:Org_).
Runbook contrib/README.nginx.md. Prérequis host : nginx http_v3_module,
UDP 443, libmsquic (Kestrel h3).
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-25 13:31:56 +01:00
|
|
|
},
|
|
|
|
|
"Protocols": "Http1AndHttp2AndHttp3"
|
2026-09-25 13:27:00 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|