Skip to content

Matrix RTC Calls Crashing #4955

@SirHardware

Description

@SirHardware

Describe the bug
A clear and concise description of what the bug is.
Setup:
Server 1: Running Matrix
Server 2: Running Caddy
Both Servers connected with Wireguard Tunnel
Caddy is fronting the integrated Traefik and handles TLS
Ports 81 and 8449 bound to WG Interface on Server 1

When Trying to Join a Videocall Room to wait for others to join, Call Crashes after a few seconds (UNKNOWN_ERROR)
Strangely sometimes works and Call is running until leaving.

To Reproduce
My vars.yml file looks like this:

---

### General Settings
# Base Domain (can't be changed after installation)
matrix_domain: domain.tld
# Home Server Type
matrix_homeserver_implementation: synapse
# Base Secret used for generating various secrets (generate with `pwgen -s 64 1`)
matrix_homeserver_generic_secret_key: "{{ vault_generic_secret_key }}"
# Disable installing Docker
matrix_playbook_docker_installation_enabled: false
# Handle .well-known for Federation
matrix_static_files_container_labels_base_domain_enabled: true

### Postgres
# Postgress Connection passwort (shorter 100 chars)
postgres_connection_password: "{{ vault_postgress_password }}"

### Synapse
# Disable User Presence
matrix_synapse_presence_enabled: false
# Enable User List
matrix_synapse_user_directory_search_all_users: true
matrix_synapse_user_directory_prefer_local_users: true

### Reverse Proxy
matrix_playbook_reverse_proxy_type: playbook-managed-traefik
# Ensure that public urls use https
matrix_playbook_ssl_enabled: true
# Disable HTTPS Endpoint and Cert retrieval
traefik_config_entrypoint_web_secure_enabled: false
# Set IP and Port Bind
# Standard
traefik_container_web_host_bind_port: 'server1-wg-interface:81'
# Federation
matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port: 'server1-wg-interface:8449'
# Trusted Proxies
# Standard
traefik_config_entrypoint_web_forwardedHeaders_trustedIPs: ['172.17.0.0/16','172.18.0.0/16','172.19.0.0/16','172.20.0.0/14','172.24.0.0/14','172.28.0.0/14','192.168.0.0/16','server2-wg-interface/32']
# Federation
matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom:
  forwardedHeaders:
    trustedIPs: ['172.17.0.0/16','172.18.0.0/16','172.19.0.0/16','172.20.0.0/14','172.24.0.0/14','172.28.0.0/14','192.168.0.0/16','server2-wg-interface/32']
# Disable HTTP/3
matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http3_enabled: false

### Coturn
# Enable Coturn
coturn_enabled: true
# Set Ports
# Plain Stun TCP
coturn_container_stun_plain_host_bind_port_tcp: 3480
# Plain Stun UDP
coturn_container_stun_plain_host_bind_port_udp: 3480
# TLS Stun TCP
# matrix_coturn_container_stun_tls_host_bind_port_tcp: 5349
# TLS Stun UDP
# coturn_container_stun_tls_host_bind_port_udp: 5349
# UDP port-range for TURN
# coturn_turn_udp_min_port: 49152
# coturn_turn_udp_max_port: 49172

### Email via exim
# Disable
exim_relay_enabled: false

### Element Web
# Set Subdomain
matrix_client_element_hostname: "chat.domain.tld"
matrix_server_fqn_element: "chat.domain.tld"
# Default Theme
matrix_client_element_default_theme: 'dark'
# Phone Country Code
matrix_client_element_default_country_code: "DE"

### Matrix Authetnication Service
# Enable
matrix_authentication_service_enabled: true
# MAS Secret (Generate this encryption secret with: `openssl rand -hex 32`)
matrix_authentication_service_config_secrets_encryption: "{{ vault_matrix_authentication_service_secret }}"
# Disable Internal Passwords
matrix_authentication_service_config_passwords_enabled: false
# # Ensure User can't change Email
matrix_authentication_service_config_account_email_change_allowed: false
# Ensure User can't change Displayname
matrix_authentication_service_config_account_displayname_change_allowed: false
# OIDC Config
matrix_authentication_service_config_upstream_oauth2_providers:
  - redacted

### Synapse Admin
# Enable
matrix_synapse_admin_enabled: true

### Synapse Auto Compressor
matrix_synapse_auto_compressor_enabled: true

### Matrix RTC
# Enable
matrix_rtc_enabled: true

### Element Admin
# Enable
matrix_element_admin_enabled: true

Caddyfile:

matrix.domain.tld {
	handle {
		encode zstd gzip
		reverse_proxy server1-wg-interface:81 {
			header_up X-Forwarded-Port {http.request.port}
			header_up X-Forwarded-TlsProto {tls_protocol}
			header_up X-Forwarded-TlsCipher {tls_cipher}
			header_up X-Forwarded-HttpsProto {proto}
		}
	}
}

chat.domain.tld {
	handle {
		encode zstd gzip
		reverse_proxy server1-wg-interface:81 {
			header_up X-Forwarded-Port {http.request.port}
			header_up X-Forwarded-TlsProto {tls_protocol}
			header_up X-Forwarded-TlsCipher {tls_cipher}
			header_up X-Forwarded-HttpsProto {proto}
		}
	}
}

admin.chat.domain.tld {
	handle {
		encode zstd gzip
		reverse_proxy server1-wg-interface:81 {
			header_up X-Forwarded-Port {http.request.port}
			header_up X-Forwarded-TlsProto {tls_protocol}
			header_up X-Forwarded-TlsCipher {tls_cipher}
			header_up X-Forwarded-HttpsProto {proto}
		}
	}
}

https://matrix.domain.tld:8448 {
	handle {
		encode zstd gzip
		reverse_proxy server1-wg-interface:8449 {
			header_up X-Forwarded-Port {http.request.port}
			header_up X-Forwarded-TlsProto {tls_protocol}
			header_up X-Forwarded-TlsCipher {tls_cipher}
			header_up X-Forwarded-HttpsProto {proto}
		}
	}
}

domain.tld {
	@wellknown {
		path /.well-known/matrix/*
	}

	handle @wellknown {
		reverse_proxy https://matrix.domain.tld {
			header_up Host {http.reverse_proxy.upstream.hostport}
		}
	}
}

Expected behavior
A clear and concise description of what you expected to happen.
The Call is not crashing and runs until leaving, even with just a single Person in the Call

Matrix Server:

  • OS: Debian 12
  • Architecture amd64

Client:

  • Device: PC AMD64
  • OS: Linux
  • Browser Firefox
  • Version 147.0.4

Additional context
Add any other context about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions