All Categories
  • 1st Steps
  • Authentication
  • Branding
  • Changelogs
  • Collaboration
  • Compliance
  • Customization
  • Desktop Client
  • External Storage
  • Frequently Asked Questions
  • Installation
  • Migrations
  • Mobile Clients
  • Nextcloud Context Chat
  • Nextcloud Flow (Windmill integration)
  • Nextcloud Talk
  • Operations
  • Partner Products
  • Roundcubemail
  • Scalability
  • Security
  • Failed to establish signaling connection

    When using Nextcloud Talk with the High-Performance Backend (HPB), a "Failed to establish signaling connection" error can occur for several reasons. This article covers the most common issues.

    System check

    In Administration settings, go to Talk > High-Performance Backend. It has an extensive automated system check that can help identify common issues.

    Successful system check

    Check Websocket connection

    Automated check in Administration settings may reveal an error that causes connection failure.

    Failed system check

    Common Error Codes

    Error Code Error Message Typical cause and solution
    invalid_hello_version The hello version is not supported Outdated or incompatible client/server.
    auth_failed The user could not be authenticated Invalid authentication response returned.
    invalid_client_type The client type is not supported Unsupported client type in the "hello" request.
    invalid_backend The backend URL is not supported Backend URL misconfigured (most likely in HPB configuration).
    invalid_token The passed token is invalid Invalid or expired token can be caused by time mismatch.
    token_not_valid_yet The token is not valid yet Token is not valid yet. Time mismatch between Talk and signaling server.
    token_expired The token is expired Token is expired. Time mismatch or client using old token.
    too_many_requests Too many requests Brute force protection triggered after too many failed requests.

    Ensure Synchronized Server Time

    Time differences between servers can cause authentication failures, token validation errors, and connection issues.

    All servers and VMs in the infrastructure (Nextcloud, HPB, etc.) must have their system clocks synchronized. Otherwise, the system might not validate requests. To ensure proper synchronization of server time across different machines, a Network Time Protocol (NTP) server can be used. This will automatically synchronize the clocks of all servers, maintaining consistency and preventing issues.

    Verify Network Connectivity

    Ensure that High-Performance Backend server is reachable from your Nextcloud server and clients.

    Servers also should be able to connect to each other in order to correctly run setup checks.

    Brute Force Protection

    Nextcloud brute force protection mechanisms can block signaling requests if misconfigured. See Signaling server and brute force protection

    Confirm that the shared secret is correct, then reset the BFP attempts for that IP address:

    php occ security:bruteforce:reset <IP_ADDRESS>
    

    Check Nextcloud Talk Configuration

    In Administration settings, go to Talk > High-Performance Backend and verify the following:

    • High-Performance Backend URL is correct and uses the right protocol (https:// or wss:// for secure WebSocket).
    • Shared secret is correctly set and matches the one configured on the HPB server configuration.
    • Ensure SSL certificates are valid and trusted by clients and server. Self-signed certificates may require additional configuration.

    Check High-Performance Backend Configuration

    In High-Performance Backend server, look for config/server.conf and verify the following:

    • Shared secret is correctly set and matches the one configured on the Administration settings.
    • Backend URL is correct and uses the right protocol (https:// or wss:// for secure WebSocket).
    [backend]
    backends = backend-1
    secret = <your-shared-secret>
    allowall = 0
    skipverify = 0
    
    [backend-1]
    url = https://company.example.ltd
    secret = <your-shared-secret>
    

    If Nextcloud configuration has overwrite.cli.url configured, make sure it matches the configured backend URL.