nginx + sites statiques depuis un dépôt git souverain, derrière l'edge. Pas de conteneur, pas de runtime, pas de BD — l'éthos libre/natif. Chaque site : git clone → vhost (headers sécurité + CSP self-only, gzip, try_files). SAN edge + plancher auto-dérivés. meta/flux.yml (ingress 80 depuis edge). Spike prouvé sur web-frontal-01 (site Alliance Boréale servi via edge, HTTPS step-ca vérifié, CSP en place). NB : le chemin git-clone est codifié mais le spike a servi via copie locale → à éprouver (pousser le site en Forgejo). Les apps dynamiques (dorsal systemd) = rôle à venir. ansible-lint production: 0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
37 lines
1.6 KiB
Markdown
37 lines
1.6 KiB
Markdown
# web_frontal
|
|
|
|
Hébergement de **sites web statiques** (nginx), derrière l'edge. Première brique de
|
|
la **plateforme webapp** de Set-OPS : **100 % natif** — pas de conteneur, pas de
|
|
runtime, pas de base de données. Le contenu vient d'un **dépôt git souverain**
|
|
(Forgejo). Codifié depuis le spike du 2026-07-05 (site Alliance Boréale).
|
|
|
|
## Ce que le rôle fait
|
|
Pour chaque site déclaré dans `web_frontal_sites` :
|
|
1. `git clone`/`pull` du dépôt → `/srv/web/<nom>` ;
|
|
2. vhost nginx servant `<sous_dossier>` (ex. `public/`), avec en-têtes de sécurité
|
|
+ CSP (défaut : `self` only, aucun tiers, aucun pistage), gzip, cache, `try_files`.
|
|
|
|
Exposé via `applications.yml` (champ `expose`) → l'edge proxie en HTTPS (TLS step-ca).
|
|
Les SAN du cert edge et le plancher /etc/hosts sont **auto-dérivés du plan**.
|
|
|
|
## Déclaration (group_vars du groupe web_frontal)
|
|
```yaml
|
|
web_frontal_sites:
|
|
- nom: alliance
|
|
server_name: "alliance-boreale.{{ domaine_interne }}"
|
|
depot: "https://forge.{{ domaine_interne }}/alliance/site-alliance-boreale.git"
|
|
branche: main
|
|
sous_dossier: public
|
|
# csp: "..." # optionnel, sinon web_frontal_csp_defaut
|
|
```
|
|
Et dans `applications.yml` : une app `groupe: web_frontal, hote: <noeud>, port: 80,
|
|
expose: [alliance-boreale.<domaine>]`.
|
|
|
|
## Portée
|
|
Statique seulement (le **frontal**). Les apps **dynamiques** (runtime + service
|
|
systemd + BD via resoudre_base) relèveront d'un rôle *dorsal* à venir — même éthos :
|
|
natif, systemd, zéro conteneur.
|
|
|
|
## Validation
|
|
`ansible-lint` profil production + `--syntax-check`. Éprouvé sur web-frontal-01
|
|
(site servi via l'edge, HTTPS step-ca vérifié, CSP en place).
|