diff --git a/docs/configuring-playbook-livekit-server.md b/docs/configuring-playbook-livekit-server.md index 95f86f3ad..d5d47cb88 100644 --- a/docs/configuring-playbook-livekit-server.md +++ b/docs/configuring-playbook-livekit-server.md @@ -25,4 +25,8 @@ To ensure LiveKit Server functions correctly, the following firewall rules and p - `7882/udp`: ICE/UDP Mux +- `3479/udp`: TURN/UDP + +- `5350/tcp`: TURN/TCP + 💡 The suggestions above are inspired by the upstream [Ports and Firewall](https://docs.livekit.io/home/self-hosting/ports-firewall/) documentation based on how LiveKit is configured in the playbook. If you've using custom configuration for the LiveKit Server role, you may need to adjust the firewall rules accordingly. diff --git a/group_vars/matrix_servers b/group_vars/matrix_servers index dc0979388..baa1cc463 100755 --- a/group_vars/matrix_servers +++ b/group_vars/matrix_servers @@ -6314,6 +6314,24 @@ livekit_server_container_image_self_build: "{{ matrix_architecture not in ['arm6 livekit_server_container_network: "{{ matrix_addons_container_network }}" livekit_server_container_additional_networks_auto: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if (livekit_server_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else [] }}" +livekit_server_container_additional_volumes_auto: | + {{ + ( + [ + { + 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + livekit_server_config_turn_domain + '/certificate.crt'), + 'dst': livekit_server_config_turn_cert_file, + 'options': 'ro', + }, + { + 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + livekit_server_config_turn_domain + '/privatekey.key'), + 'dst': livekit_server_config_turn_key_file, + 'options': 'ro', + }, + ] if (matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and livekit_server_config_turn_enabled and (livekit_server_config_turn_cert_file and livekit_server_config_turn_key_file)) else [] + ) + }} + livekit_server_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" livekit_server_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" livekit_server_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" @@ -6338,6 +6356,33 @@ livekit_server_config_turn_tls_port: 5350 # Note that TURN is not enabled by default. See `livekit_server_config_turn_enabled`. livekit_server_config_turn_udp_port: 3479 +# LiveKit's TURN implementation requires SSL certificates. +# We only enable it if we can provide them automatically via Traefik + Traefik Certs Dumper. +livekit_server_config_turn_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled }}" + +livekit_server_config_turn_cert_file: |- + {{ + { + 'playbook-managed-traefik': ('/certificate.crt' if traefik_certs_dumper_enabled else ''), + 'other-traefik-container': ('/certificate.crt' if traefik_certs_dumper_enabled else ''), + 'none': '', + }[matrix_playbook_reverse_proxy_type] + }} + +livekit_server_config_turn_key_file: |- + {{ + { + 'playbook-managed-traefik': ('/privatekey.key' if traefik_certs_dumper_enabled else ''), + 'other-traefik-container': ('/privatekey.key' if traefik_certs_dumper_enabled else ''), + 'none': '', + }[matrix_playbook_reverse_proxy_type] + }} + +livekit_server_systemd_required_services_list_auto: | + {{ + ([traefik_certs_dumper_identifier + '-wait-for-domain@' + livekit_server_config_turn_domain + '.service'] if matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and livekit_server_config_turn_enabled else []) + }} + ######################################################################## # # # /livekit-server #