ajoute le relais TURN sur 443 pour la visio (ADR 0006), avec coturn et le routage Nginx par nom

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Adam Belkacemi 2026-10-13 11:45:53 +02:00
parent ee079ddffb
commit 45f8a69e26
19 changed files with 457 additions and 14 deletions

View file

@ -1,4 +1,16 @@
# Géré par Ansible (rôle portail) — ne pas modifier à la main.
{# Bloc A (ADR 0006) : quand le relais TURN est actif, le port public 443
est pris par le routeur Nginx par nom (stream, nginx.conf) — ces vhost
HTTPS n'écoutent alors plus qu'en interne, sur 127.0.0.1:8443, où ce
routeur leur transmet tout ce qui n'est pas pour coturn. #}
{%- macro listen443(default_server=False) -%}
{%- if portail_turn_actif | default(false) %}
listen 127.0.0.1:8443 ssl http2{{ ' default_server' if default_server }};
{%- else %}
listen 443 ssl http2{{ ' default_server' if default_server }};
listen [::]:443 ssl http2{{ ' default_server' if default_server }};
{%- endif -%}
{% endmacro -%}
{% macro bloc_portail() %}
root {{ portail_dossier_app }}/public;
index index.php;
@ -40,7 +52,7 @@
server {
listen 80;
listen [::]:80;
server_name {{ portail_domaine }} {{ portail_domaines_alias | join(' ') }}{% if portail_statut_actif %} {{ portail_domaine_statut }}{% endif %}{% if portail_visio_actif | default(false) %} {{ portail_domaine_visio }}{% endif %};
server_name {{ portail_domaine }} {{ portail_domaines_alias | join(' ') }}{% if portail_statut_actif %} {{ portail_domaine_statut }}{% endif %}{% if portail_visio_actif | default(false) %} {{ portail_domaine_visio }}{% endif %}{% if portail_turn_actif | default(false) %} {{ portail_domaine_turn }}{% endif %};
server_tokens off;
# Dans une location (pas au niveau server) : la location exacte que
# certbot ajoute pour le défi ACME au renouvellement reste prioritaire.
@ -61,8 +73,7 @@ server {
# www → domaine principal (une seule adresse canonique).
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
{{ listen443() }}
server_name {{ portail_domaines_alias | join(' ') }};
server_tokens off;
include snippets/syllabus-tls.conf;
@ -71,8 +82,7 @@ server {
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
{{ listen443(default_server=True) }}
server_name {{ portail_domaine }};
server_tokens off;
include snippets/syllabus-tls.conf;
@ -85,8 +95,7 @@ server {
# (tableau de bord, /socket.io, /metrics…) reste accessible par tunnel SSH
# uniquement. Chemins relevés dans server/routers/status-page-router.js.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
{{ listen443() }}
server_name {{ portail_domaine_statut }};
server_tokens off;
include snippets/syllabus-tls.conf;
@ -123,8 +132,7 @@ server {
# X-Frame-Options et sa Permissions-Policy interdiraient l'intégration dans
# le portail et la caméra. Intégration permise au seul portail.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
{{ listen443() }}
server_name {{ portail_domaine_visio }};
server_tokens off;
include snippets/syllabus-tls.conf;