Il y avait deux dépôts d'infrastructure et aucune frontière entre eux. La seule distinction défendable — « documentation » d'un côté, « fichiers de configuration » de l'autre — ne tenait plus : infra avait fini par contenir plus de documentation qu'owni, pendant qu'owni décrivait du concret (IP, bases, comptes). Tout vient donc ici : conf/ (vhosts de référence), dns/ (export de zone), services/ (units systemd), scripts/ (sauvegarde) et docs/ (courrier sortant, certificats, sauvegardes, et le déploiement par service). Dans ce sens plutôt que l'inverse parce qu'« owni » nomme la machine, là où « infra » ne dit pas de quoi il s'agit — et c'est le nom que Cédric emploie spontanément, y compris pour le dossier de secrets. Les renvois croisés entre les deux dépôts deviennent des liens internes : un lien vers un dépôt qu'on s'apprête à archiver aurait pourri en silence. Reste une incohérence, signalée plutôt que corrigée à la hâte : docs/admin.md, static.md, wiki.md, dynamic.md et proxy-calendar.md décrivent le déploiement de sites, pas la machine. Ils ont la même place ici que celle que la messagerie n'avait pas — ils devraient rejoindre leurs dépôts. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SFbwnJurBwTs7x7t93ecku
33 lines
1.5 KiB
Text
33 lines
1.5 KiB
Text
# Apache vhost pour dynamic.alpinux.org
|
|
# L'app Flask tourne derrière Gunicorn sur 127.0.0.1:5001
|
|
|
|
<VirtualHost *:80>
|
|
ServerName dynamic.alpinux.org
|
|
Redirect permanent / https://dynamic.alpinux.org/
|
|
</VirtualHost>
|
|
|
|
<VirtualHost *:443>
|
|
ServerName dynamic.alpinux.org
|
|
|
|
# ── Proxy vers Gunicorn ──────────────────────────────────────
|
|
ProxyPreserveHost On
|
|
ProxyPass / http://127.0.0.1:5001/
|
|
ProxyPassReverse / http://127.0.0.1:5001/
|
|
|
|
# En-têtes transmis à Flask
|
|
RequestHeader set X-Forwarded-Proto "https"
|
|
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
|
|
|
|
# ── Sécurité ─────────────────────────────────────────────────
|
|
Header always set X-Content-Type-Options "nosniff"
|
|
Header always set X-Frame-Options "SAMEORIGIN"
|
|
Header always set Referrer-Policy "strict-origin-when-cross-origin"
|
|
|
|
# ── Logs ─────────────────────────────────────────────────────
|
|
ErrorLog /var/log/apache2/dynamic.alpinux.org-error.log
|
|
CustomLog /var/log/apache2/dynamic.alpinux.org-access.log combined
|
|
|
|
SSLEngine on
|
|
SSLCertificateFile /etc/letsencrypt/live/dynamic.alpinux.org/fullchain.pem
|
|
SSLCertificateKeyFile /etc/letsencrypt/live/dynamic.alpinux.org/privkey.pem
|
|
</VirtualHost>
|