Skip to content

Script for deploying sctgdesk-server. #35

Description

@nikolskiyv-rgb

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions