Run your own CrossDesk server.
Use your own server to coordinate remote connections and relay traffic when a direct connection is unavailable. Connect both clients to the same service.
1. Prepare the server and release configuration
Prepare a Linux amd64 or arm64 server with Docker Engine and the
Compose plugin. Download compose.yaml and
env.example from the same
CrossDesk Server release
into one deployment directory.
Use matching configuration files and image versions. Review the current requirements in the server deployment documentation.
cp env.example .env
openssl rand -hex 32
openssl rand -hex 32
Edit .env with your real addresses, a fixed image
version, and persistent storage paths. Use the two different
generated keys for COTURN_AUTH_SECRET and
COTURN_STATELESS_NONCE_SECRET.
2. Configure the network and start the services
Allow the configured ports in both the server firewall and cloud security group. Update those rules if you change the defaults.
| Setting | Purpose and defaults |
|---|---|
EXTERNAL_IP / INTERNAL_IP |
Public server address and a local address Coturn can bind to. |
CROSSDESK_SERVER_PORT |
Signaling port; the Compose default is 9099 / TCP. |
COTURN_PORT |
STUN / TURN port; the default is 3478 / TCP and UDP. |
MIN_PORT / MAX_PORT |
TURN media ports; the default range is 50000–60000 / UDP. |
CROSSDESK_DATA_DIR / CROSSDESK_LOG_DIR
|
Persistent directories for data, certificates, and logs. |
sudo docker compose config -q
sudo docker compose pull
sudo docker compose up -d --no-build
sudo docker compose ps
Run these commands from the deployment directory after saving your configuration. Once the containers start, check the certificates and establish a remote session to verify signaling and media connectivity.
3. Configure certificates and clients
- Make clients trust your deployment’s certificate. It must cover the connection address; a domain name needs a matching certificate. Obtain a self-signed root only from your own server.
- Open the self-hosting configuration in desktop settings, enter the server address and signaling port, enable it, and save. Option names may vary by client version.
- Configure both clients to use the same server. After both are connected, use the remote device’s current ID and password to start a session.
See the server deployment guide for certificate trust commands and client settings. For a self-hosted browser client, configure its signaling address using the Web client documentation.
Troubleshooting connections
The client cannot connect to the server
Check the server address, signaling port, firewall, and the certificate’s validity, address match, and trust status.
The server is connected but the device is offline
Confirm that both clients use the same server and the remote computer is running. Copy its current device ID again.
Direct access fails and no remote picture appears
Check Coturn, TURN and media ports, and compatibility between your client and server versions.