feat(web-svc-coturn): add configurable network_mode (default host) and adjust credential generation

- Introduced `COTURN_NETWORK_MODE` to support both host and bridge modes
- Updated docker-compose template to skip port publishing in host mode
- Changed user_password credential algorithm to random_hex for stronger randomness
- Set default network_mode: host in config

Ref: https://chatgpt.com/share/68d72a50-c36c-800f-9367-32c4ae520000
This commit is contained in:
2025-09-27 02:05:48 +02:00
parent 926def3d01
commit 4d223f1784
4 changed files with 6 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ docker:
mem_reservation: 512m mem_reservation: 512m
mem_limit: 1g mem_limit: 1g
pids_limit: 256 pids_limit: 256
network_mode: host
redis: redis:
enabled: false enabled: false
database: database:

View File

@@ -1,7 +1,7 @@
credentials: credentials:
user_password: user_password:
description: "Long-Term Credential password for clients" description: "Long-Term Credential password for clients"
algorithm: "alphanumeric_32" algorithm: "random_hex"
validation: "^[A-Za-z0-9]{32}$" validation: "^[A-Za-z0-9]{32}$"
auth_secret: auth_secret:
description: "TURN-REST static auth secret" description: "TURN-REST static auth secret"

View File

@@ -4,12 +4,15 @@
{% include 'roles/docker-container/templates/base.yml.j2' %} {% include 'roles/docker-container/templates/base.yml.j2' %}
image: {{ COTURN_IMAGE }}:{{ COTURN_VERSION }} image: {{ COTURN_IMAGE }}:{{ COTURN_VERSION }}
container_name: {{ COTURN_VOLUME }} container_name: {{ COTURN_VOLUME }}
network_mode: {{ COTURN_NETWORK_MODE }}
{% if COTURN_NETWORK_MODE == 'bridge' %}
ports: ports:
- "{{ COTURN_TURN_PORT }}:{{ COTURN_TURN_PORT }}/udp" - "{{ COTURN_TURN_PORT }}:{{ COTURN_TURN_PORT }}/udp"
- "{{ COTURN_TURN_PORT }}:{{ COTURN_TURN_PORT }}/tcp" - "{{ COTURN_TURN_PORT }}:{{ COTURN_TURN_PORT }}/tcp"
- "{{ COTURN_STUN_PORT }}:{{ COTURN_STUN_PORT }}/tcp" - "{{ COTURN_STUN_PORT }}:{{ COTURN_STUN_PORT }}/tcp"
- "{{ COTURN_STUN_PORT }}:{{ COTURN_STUN_PORT }}/udp" - "{{ COTURN_STUN_PORT }}:{{ COTURN_STUN_PORT }}/udp"
- "{{ COTURN_RELAY_PORT_RANGE }}/udp" - "{{ COTURN_RELAY_PORT_RANGE }}/udp"
{% endif %}
volumes: volumes:
- "{{ COTURN_TLS_CERT_PATH }}:{{ COTURN_TLS_CERT_PATH }}:ro" - "{{ COTURN_TLS_CERT_PATH }}:{{ COTURN_TLS_CERT_PATH }}:ro"
- "{{ COTURN_TLS_KEY_PATH }}:{{ COTURN_TLS_KEY_PATH }}:ro" - "{{ COTURN_TLS_KEY_PATH }}:{{ COTURN_TLS_KEY_PATH }}:ro"

View File

@@ -10,6 +10,7 @@ COTURN_VERSION: "{{ applications | get_app_conf(application_id, 'doc
COTURN_IMAGE: "{{ applications | get_app_conf(application_id, 'docker.services.' ~ entity_name ~ '.image') }}" COTURN_IMAGE: "{{ applications | get_app_conf(application_id, 'docker.services.' ~ entity_name ~ '.image') }}"
COTURN_VOLUME: "{{ entity_name }}" COTURN_VOLUME: "{{ entity_name }}"
COTURN_REALM: "{{ domain }}" COTURN_REALM: "{{ domain }}"
COTURN_NETWORK_MODE: "{{ applications | get_app_conf(application_id, 'docker.services.' ~ entity_name ~ '.network_mode') }}"
## Ports ## Ports
COTURN_TURN_PORT: "{{ ports.public.turn[application_id] }}" COTURN_TURN_PORT: "{{ ports.public.turn[application_id] }}"