Skip to content

Network and Load Balancing

Use this page to design Turbo Server network topology, secure communication paths, and configure redundancy.

What You'll Learn

  • How to install redundant server roles
  • Required communication paths and ports
  • CDN and load balancer considerations
  • How to set and use the Domain URL

Installing Redundant Roles

Install redundant roles across multiple servers by selecting the role during Turbo Server setup. You can add or remove roles after installation; see Managing the Domain. Deploy more than one Portal server for failover or high concurrency (see Portal System Requirements). Size the number of application servers based on concurrent users and application resource needs. For maximum redundancy, configure a secondary domain that uses federation to replicate workspaces and authentication settings.

Network Architecture Overview

Understanding Turbo Server network architecture helps you plan firewall rules and infrastructure design. The sections below outline components, communication flows, and requirements.

System Components

The Turbo ecosystem includes:

Client Components:

  • Turbo Desktop Client: Native Windows application for running virtualized applications.
  • Web Browser: Accesses the Turbo Hub portal and can launch applications via HTML5 client.
  • Mobile Apps: Native clients for iOS and Android devices.

Server Components:

  • Turbo Portal: Web interface and entry point for authentication, application discovery, and service coordination.
  • Turbo Hub: Image repository and distribution service for application containers.
  • Application Servers: Execute virtualized applications in secure containers and stream them to clients.
  • SQL Server: Database storing configuration, user data, and system information.

Supporting Infrastructure:

  • Load Balancer: Distributes traffic across multiple Portal servers for high availability.
  • Content Delivery Network (CDN): Optional component for faster application image delivery.

Network Communication Flow

Mermaid Diagram

Communication Paths and Security Requirements

SourceDestinationProtocolDefault PortDirectionPurposeSecurity Notes
Web BrowserPortal/Load BalancerHTTPSTCP/443InboundWeb portal access, authenticationSSL/TLS encryption required
Web BrowserPortal/Load BalancerWSSTCP/443InboundHTML5 client streaming (/tunnelws/rxp)WebSocket over SSL, WAF exceptions may be needed
Desktop ClientPortal/Load BalancerHTTPSTCP/443InboundService discovery, authenticationSSL/TLS encryption required
Desktop ClientHub/CDNHTTPSTCP/443InboundApplication image downloadSSL/TLS encryption required
Mobile AppPortal/Load BalancerHTTPSTCP/443InboundMobile portal accessSSL/TLS encryption required
Application ServerPortalHTTPSTCP/443BidirectionalConfiguration sync, coordinationTwo-way HTTPS access required
Application ServerHubHTTPSTCP/443OutboundApplication image accessSSL/TLS encryption required
Application ServerSQL ServerSQL over TLSTCP/1433OutboundDatabase operationsEncrypted SQL connection recommended
PortalSQL ServerSQL over TLSTCP/1433OutboundDatabase operationsEncrypted SQL connection recommended
HubSQL ServerSQL over TLSTCP/1433OutboundDatabase operationsEncrypted SQL connection recommended
Load BalancerPortalHTTPSTCP/443OutboundTraffic distributionInternal SSL termination
Desktop ClientP2P CoordinatorTCPTCP/6881-6889BidirectionalPeer-to-peer image distributionHardcoded ports, cannot be changed
Desktop ClientOther P2P ClientsTCPTCP/6881-6889BidirectionalDirect peer-to-peer file sharingCross-subnet/VLAN support with proper firewall config

Security Considerations

Firewall Configuration

  • Allow inbound HTTPS (TCP/443) from client networks to Portal/Load Balancer.
  • Allow WebSocket traffic (/tunnelws/rxp) for HTML5 client functionality.
  • Ensure Application Servers can reach Portal, Hub, and SQL Server on required ports.
  • Allow clients to reach Hub directly for image downloads (TCP/443).
  • P2P Requirements (optional): If peer-to-peer distribution is enabled, allow bidirectional TCP traffic on ports 6881-6889 between clients and server and between clients themselves. Ports are hardcoded.

SSL/TLS Requirements

  • Use HTTPS/SSL for external communication.
  • Encrypt internal connections between Application Servers, Portal, Hub, and SQL Server.
  • Maintain end-to-end encryption when using a CDN.

Network Isolation

  • Isolate Application Servers from direct internet access.
  • Restrict database access to Application Servers, Portal, and Hub.
  • Consider placing Portal servers in a DMZ with appropriate controls; place Hub servers in the DMZ or internal network based on your architecture.

High Availability

  • Deploy multiple Portal servers behind a load balancer.
  • Scale Application Servers to meet user load and application resource requirements.
  • Use database clustering or backups for data protection.

Configuring Network

If you place internal services behind a reverse proxy, configure the URLs that services and clients use to reach each other. See Domain Addresses.

Configuring Content Delivery Network (CDN)

Deliver Turbo SVM images over a CDN by setting the Hub CDN URL. CDN support works best when clients use the Turbo synchronization protocol for objects over the configured Hub CDN Max File Size. If you do not set a max file size, automatic protocol selection does not occur. Consult your CDN provider for max file size limits.

For clients without automatic protocol selection, disable direct downloads in the Turbo Client configuration. If direct download remains enabled, some CDNs limit object size and may force origin delivery for large images. Images delivered over a CDN may be downloaded from the public internet—remove confidential data from images before delivery.

Sample CDN Configurations

Use these examples for Cloudflare, AWS CloudFront, and Azure CDNs.

Cloudflare

Create a CNAME that resolves the Turbo Server URL and enable Proxy status. Use the CNAME as the Hub CDN URL in Turbo Server. Add two Page Rules:

  • Cache Level: Cache Everything
  • Edge Cache TTL: a month

Set the Hub CDN URL to the CNAME and Hub CDN Max File Size to the maximum supported by your Cloudflare subscription.

AWS CloudFront

Create a CloudFront distribution:

  • Origin domain: Turbo Server URL
  • Path pattern: Default (*)
  • Viewer protocol policy: Match the Turbo Server HTTP configuration
  • Allowed HTTP methods: GET, HEAD

Set the Hub CDN URL to the Distribution domain name and Hub CDN Max File Size to the maximum supported by your subscription.

Azure CDN

Create an Azure CDN resource:

  • Pricing tier: Standard Microsoft
  • Check Create a new CDN endpoint
  • Origin type: Custom origin
  • Origin hostname: Turbo Server URL

Set the Hub CDN URL to the Endpoint hostname and Hub CDN Max File Size to the maximum supported by your subscription.

Load Balancing

To load balance Application Servers, install the Application Server role on the target servers and configure the strategy in Domain Settings. To load balance Portals, point the Domain URL to an external load balancer.

Understanding the Domain URL

The Domain URL is how end users and clients reach Turbo Server services and must be reachable from the networks where users run Turbo applications. Map it to the server with the Portal role. Users should enter the Domain URL in the Android or iOS app server settings. For example, if the Domain URL is https://mydomain.com, point DNS for mydomain.com to the Portal server. Users then navigate to https://mydomain.com to access the portal.

Configure the CLI with the Domain URL using turbo config --domain=mydomain.com. See Command Line Reference.

The Domain URL also exposes service topology endpoints such as https://mydomain.com/service/settings and https://mydomain.com/service/topology, which clients use to discover services like Hub IO, login, and Application Server Broker. If you leave the Domain URL blank, it defaults to the first server with the Portal role.

Troubleshooting

The HTML5 client fails to launch with websocket tunnel reconnect error.

Ensure your load balancer is not blocking the WebSocket path /tunnelws/rxp. See how to add a WAF exception.