If anyone is interested, here is a script for deploying an API server and a web console for Rustdesk running Docker. Tested on Debian 13.
#!/bin/bash
Full installation script for SctgDesk Server (RustDesk + API + web console)
Tested on Debian 13
set -e
--- SETTINGS (change if necessary) ---
PUBLIC_IP="" # Insert your server's address here
SCTG_DOMAIN="${PUBLIC_IP}"
WORK_DIR="/opt/sctgdesk-server"
DATA_DIR="${WORK_DIR}/data"
echo "====================================================="
echo " Installing SctgDesk Server on ${PUBLIC_IP}"
echo "====================================================="
1. System preparation
echo "[1/7] Updating system and installing dependencies..."
apt-get update -y && apt-get upgrade -y
apt-get install -y curl wget git ufw
2. Install Docker and Docker Compose Plugin
echo "[2/7] Installing Docker and Docker Compose..."
if ! command -v docker &> /dev/null; then
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm get-docker.sh
else
echo "Docker is already installed."
fi
if ! docker compose version &> /dev/null; then
apt-get install -y docker-compose-plugin
fi
3. Create working directory
echo "[3/7] Creating project directory..."
mkdir -p "${DATA_DIR}"
cd "${WORK_DIR}"
4. Create docker-compose.yml with FIX (KEY=_)
echo "[4/7] Creating docker-compose.yml with correct key generation..."
cat > docker-compose.yml <<EOF
version: '3'
services:
hbbs:
container_name: sctgdesk-hbbs
image: sctg/sctgdesk-server:latest
command: hbbs -r ${SCTG_DOMAIN}:21117
environment:
- KEY=_
ports:
- 21114:21114
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
volumes:
- ./data:/usr/local/share/sctgdesk
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: sctgdesk-hbbr
image: sctg/sctgdesk-server:latest
command: hbbr
ports:
- 21117:21117
- 21119:21119
volumes:
- ./data:/usr/local/share/sctgdesk
restart: unless-stopped
EOF
5. Start containers
echo "[5/7] Starting containers..."
docker compose up -d
6. Wait and verify key generation
echo "[6/7] Waiting for key generation (up to 30 seconds)..."
for i in {1..15}; do
sleep 2
if [ -f "${DATA_DIR}/id_ed25519.pub" ] && [ -s "${DATA_DIR}/id_ed25519.pub" ]; then
echo "✅ Keys successfully generated."
KEY=$(cat "${DATA_DIR}/id_ed25519.pub")
break
fi
echo "Waiting... attempt $i/15"
done
if [ -z "$KEY" ]; then
echo "❌ Error: key not found. Check logs: docker logs sctgdesk-hbbs"
exit 1
fi
7. Configure UFW firewall
echo "[7/7] Configuring UFW firewall..."
ufw allow 22/tcp comment 'SSH'
ufw allow 21114:21119/tcp comment 'SctgDesk TCP ports'
ufw allow 21116/udp comment 'SctgDesk UDP'
echo "y" | ufw enable
--- FINAL INFORMATION ---
echo "====================================================="
echo "✅ Installation completed successfully!"
echo "====================================================="
echo "🌐 WEB CONSOLE:"
echo " http://${PUBLIC_IP}:21114/ui"
echo " Login: admin"
echo " Password: Hello,world!"
echo ""
echo "📱 RUSTDESK CLIENT CONFIGURATION:"
echo " ID server: ${PUBLIC_IP}"
echo " Key: ${KEY}"
echo ""
echo "🔧 MANAGEMENT:"
echo " cd ${WORK_DIR} && docker compose down # stop"
echo " cd ${WORK_DIR} && docker compose up -d # start"
echo " docker logs sctgdesk-hbbs # view logs"
echo "====================================================="
echo "⚠️ After first login to the web console, change the admin password!"
echo "====================================================="
install.sh
Make the script executable and run:
chmod +x install_sctg.sh
sudo ./install.sh
If anyone is interested, here is a script for deploying an API server and a web console for Rustdesk running Docker. Tested on Debian 13.
#!/bin/bash
Full installation script for SctgDesk Server (RustDesk + API + web console)
Tested on Debian 13
set -e
--- SETTINGS (change if necessary) ---
PUBLIC_IP="" # Insert your server's address here
SCTG_DOMAIN="${PUBLIC_IP}"
WORK_DIR="/opt/sctgdesk-server"
DATA_DIR="${WORK_DIR}/data"
echo "====================================================="
echo " Installing SctgDesk Server on ${PUBLIC_IP}"
echo "====================================================="
1. System preparation
echo "[1/7] Updating system and installing dependencies..."
apt-get update -y && apt-get upgrade -y
apt-get install -y curl wget git ufw
2. Install Docker and Docker Compose Plugin
echo "[2/7] Installing Docker and Docker Compose..."
if ! command -v docker &> /dev/null; then
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm get-docker.sh
else
echo "Docker is already installed."
fi
if ! docker compose version &> /dev/null; then
apt-get install -y docker-compose-plugin
fi
3. Create working directory
echo "[3/7] Creating project directory..."
mkdir -p "${DATA_DIR}"
cd "${WORK_DIR}"
4. Create docker-compose.yml with FIX (KEY=_)
echo "[4/7] Creating docker-compose.yml with correct key generation..."
cat > docker-compose.yml <<EOF
version: '3'
services:
hbbs:
container_name: sctgdesk-hbbs
image: sctg/sctgdesk-server:latest
command: hbbs -r ${SCTG_DOMAIN}:21117
environment:
- KEY=_
ports:
- 21114:21114
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
volumes:
- ./data:/usr/local/share/sctgdesk
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: sctgdesk-hbbr
image: sctg/sctgdesk-server:latest
command: hbbr
ports:
- 21117:21117
- 21119:21119
volumes:
- ./data:/usr/local/share/sctgdesk
restart: unless-stopped
EOF
5. Start containers
echo "[5/7] Starting containers..."
docker compose up -d
6. Wait and verify key generation
echo "[6/7] Waiting for key generation (up to 30 seconds)..."
for i in {1..15}; do
sleep 2
if [ -f "${DATA_DIR}/id_ed25519.pub" ] && [ -s "${DATA_DIR}/id_ed25519.pub" ]; then
echo "✅ Keys successfully generated."
KEY=$(cat "${DATA_DIR}/id_ed25519.pub")
break
fi
echo "Waiting... attempt $i/15"
done
if [ -z "$KEY" ]; then
echo "❌ Error: key not found. Check logs: docker logs sctgdesk-hbbs"
exit 1
fi
7. Configure UFW firewall
echo "[7/7] Configuring UFW firewall..."
ufw allow 22/tcp comment 'SSH'
ufw allow 21114:21119/tcp comment 'SctgDesk TCP ports'
ufw allow 21116/udp comment 'SctgDesk UDP'
echo "y" | ufw enable
--- FINAL INFORMATION ---
echo "====================================================="⚠️ After first login to the web console, change the admin password!"
echo "✅ Installation completed successfully!"
echo "====================================================="
echo "🌐 WEB CONSOLE:"
echo " http://${PUBLIC_IP}:21114/ui"
echo " Login: admin"
echo " Password: Hello,world!"
echo ""
echo "📱 RUSTDESK CLIENT CONFIGURATION:"
echo " ID server: ${PUBLIC_IP}"
echo " Key: ${KEY}"
echo ""
echo "🔧 MANAGEMENT:"
echo " cd ${WORK_DIR} && docker compose down # stop"
echo " cd ${WORK_DIR} && docker compose up -d # start"
echo " docker logs sctgdesk-hbbs # view logs"
echo "====================================================="
echo "
echo "====================================================="
install.sh
Make the script executable and run:
chmod +x install_sctg.sh
sudo ./install.sh