CrossDesk Server

Platform License: LGPL v3 GitHub last commit Build Status
Docker Pulls GitHub issues GitHub stars GitHub forks

[ 中文 / English ]

Server designed for CrossDesk , supporting WSS-encrypted connections and using SQLite3 to store user information.


Requirements:

Build:

git clone https://github.com/kunkundi/crossdesk-server.git

cd crossdesk-server

xmake b crossdesk_server

About Xmake

Build Options

# Switch build mode
xmake f -m debug/release

# Optional build parameters
-r : Rebuild the target
-v : Show detailed build logs
-y : Automatically confirm prompts

# Example
xmake b -vy crossdesk_server

For more information, please refer to the official Xmake documentation .

Build Docker Image

cd docker

sudo docker build -t image-name .

Run Container

Startup Command

sudo docker run -d \
  --name crossdesk_server \
  --network host \
  -e EXTERNAL_IP=xxx.xxx.xxx.xxx \
  -e INTERNAL_IP=xxx.xxx.xxx.xxx \
  -e CROSSDESK_SERVER_PORT=xxxx \
  -e COTURN_PORT=xxxx \
  -e MIN_PORT=xxxxx \
  -e MAX_PORT=xxxxx \
  -v /var/lib/crossdesk:/var/lib/crossdesk \
  -v /var/log/crossdesk:/var/log/crossdesk \
  crossdesk/crossdesk-server:v1.1.3

The parameters you need to pay attention to are as follows:

Parameters

  • EXTERNAL_IP: The servers public IP. This corresponds to Server Address in the CrossDesk clients Self-Hosted Server Configuration.
  • INTERNAL_IP: The servers internal IP.
  • CROSSDESK_SERVER_PORT: The port used by the self-hosted service. This corresponds to Server Port in the CrossDesk clients Self-Hosted Server Configuration.
  • COTURN_PORT: The port used by the COTURN service. This corresponds to Relay Service Port in the CrossDesk clients Self-Hosted Server Configuration.
  • MIN_PORT / MAX_PORT: The port range used by the COTURN service. Example: MIN_PORT=50000, MAX_PORT=60000. Adjust the range depending on the number of clients.
  • -v /var/lib/crossdesk:/var/lib/crossdesk: Persists database and certificate files on the host machine.
  • -v /var/log/crossdesk:/var/log/crossdesk: Persists log files on the host machine.

Example:

sudo docker run -d \
  --name crossdesk_server \
  --network host \
  -e EXTERNAL_IP=114.114.114.114 \
  -e INTERNAL_IP=10.0.0.1 \
  -e CROSSDESK_SERVER_PORT=9099 \
  -e COTURN_PORT=3478 \
  -e MIN_PORT=50000 \
  -e MAX_PORT=60000 \
  -v /var/lib/crossdesk:/var/lib/crossdesk \
  -v /var/log/crossdesk:/var/log/crossdesk \
  crossdesk/crossdesk-server:v1.1.3

Notes

  • The server must open the following ports: COTURN_PORT/udp, COTURN_PORT/tcp, MIN_PORTMAX_PORT/udp, and CROSSDESK_SERVER_PORT/tcp.
  • If you dont mount volumes, all data will be lost when the container is removed.
  • Certificate files will be automatically generated on first startup and persisted to the host at /var/lib/crossdesk/certs.
  • The database file will be automatically created and stored at /var/lib/crossdesk/db/crossdesk-server.db.
  • Log files will be created and stored at /var/log/crossdesk/.

Permission Notice If the directories automatically created by Docker belong to root and have insufficient write permissions, the container user may not be able to write to them. This can cause:

  • Certificate generation failure, leading to startup script errors and container exit.
  • Database directory creation failure, causing the program to throw exceptions and crash.
  • Log directory creation failure, preventing logs from being written (though the program may continue running).

Solution: Manually set permissions before starting the container:

sudo mkdir -p /var/lib/crossdesk /var/log/crossdesk
sudo chown -R $(id -u):$(id -g) /var/lib/crossdesk /var/log/crossdesk

Certificate Files

You can find the certificate file crossdesk.cn_root.crt at /var/lib/crossdesk/certs on the host machine. Download it to your client device and select it in the Certificate File Path field under the CrossDesk clients Self-Hosted Server Settings.

Description
Server for CrossDesk | 为 CrossDesk 设计的服务端软件
Readme 382 KiB
Languages
C++ 90.1%
Shell 7.1%
Lua 2.8%