Skip to main content

Connection Methods

Contop supports three connection methods for reaching your desktop from anywhere.

LAN (Local Network)

The fastest option — use when your phone and desktop are on the same Wi-Fi network.

  • Latency: Under 10ms typical
  • Setup: None (auto-detected)
  • How it works: The QR code includes your desktop's LAN IP. WebRTC connects directly over the local network.

Tailscale (VPN Mesh)

For remote access without exposing your desktop to the internet.

  • Latency: 20–100ms depending on proximity
  • Setup: Install Tailscale on both desktop and phone
  • How it works: The QR code includes your Tailscale IP (100.x.y.z range). Traffic is encrypted end-to-end through the Tailscale mesh.
  • Detection: Auto-detected via tailscale ip -4 CLI or by scanning network interfaces for 100.x.y.z addresses

Cloudflare Tunnel (Global Access)

For access from anywhere in the world, no VPN required.

  • Latency: 50–200ms depending on region
  • Setup: None — cloudflared is auto-installed
  • How it works: The server starts a Cloudflare Tunnel on demand (when you generate a temporary QR code), creating a public WebSocket URL. The mobile app connects via this URL for signaling, then establishes a direct WebRTC P2P connection.
note

The Cloudflare Tunnel is only used for the initial WebRTC signaling (SDP/ICE exchange). Once the P2P connection is established, all data flows directly between your phone and desktop via WebRTC.

WebRTC P2P Encryption

Regardless of connection method, all data between your phone and desktop is encrypted:

  • DTLS — Encrypts data channels
  • SRTP — Encrypts video stream
  • Certificate fingerprint — Verified during pairing via the QR code payload

STUN servers (Google's public STUN) are used for NAT traversal to establish the P2P connection.

Choosing the Right Method

ScenarioRecommended Method
Same room / officeLAN
Home to officeTailscale
Coffee shop / travelCloudflare Tunnel
Maximum securityTailscale (no public exposure)
Quick one-time accessCloudflare Tunnel (temp QR)

Troubleshooting

Can't connect via LAN

  • Verify both devices are on the same network
  • Check if a firewall is blocking the server port (default 8000, configurable via CONTOP_PORT)
  • Try the desktop's IP directly: http://<desktop-ip>:8000/health

Tailscale not detected

  • Run tailscale status on the desktop to verify it's connected
  • Ensure Tailscale is running on both devices
  • Check that the Tailscale IP is in the 100.x.y.z range

Cloudflare Tunnel fails

  • Verify cloudflared is installed and in PATH
  • Check internet connectivity on the desktop
  • The tunnel may fail if Cloudflare's edge is unreachable

Related: WebRTC Transport · Device Management · Quick Start