mirror of
https://github.com/UNITRONIX/BetterDesk.git
synced 2026-09-10 17:45:42 +00:00
1118fc2ba6
Remove internal LAN IP, SSH user, and developer paths from docs and examples; move deploy runbook to gitignored docs/private with a public template; drop Cursor debug logging leftovers; add CI checks to prevent regression. Co-authored-by: Cursor <cursoragent@cursor.com>
6.4 KiB
6.4 KiB
BetterDesk Installation on Synology DSM
This guide covers installing BetterDesk on Synology NAS devices using Docker (Container Manager).
Prerequisites
- Synology NAS with Docker/Container Manager support (DSM 7.0+)
- Container Manager package installed from Package Center
- SSH access to your NAS (optional, for advanced setup)
- At least 2GB RAM available for containers
Method 1: Portainer Installation (Recommended)
If you have Portainer installed on your Synology:
Step 1: Install Portainer (if not already installed)
- Open Container Manager → Registry
- Search for
portainer/portainer-ce - Download the
latesttag - Create a container with:
- Port:
9000:9000(web UI) - Volume:
/docker/portainer:/data
- Port:
- Start the container and access Portainer at
http://[NAS-IP]:9000
Step 2: Deploy BetterDesk Stack
- In Portainer, go to Stacks → Add stack
- Name:
betterdesk - Paste the following docker-compose configuration:
version: '3.8'
services:
betterdesk:
build:
context: https://github.com/UNITRONIX/Rustdesk-FreeConsole.git
dockerfile: Dockerfile
container_name: betterdesk
restart: unless-stopped
ports:
- "21114:21114" # HTTP API
- "21115:21115" # NAT test
- "21116:21116" # Signal TCP/UDP
- "21116:21116/udp"
- "21117:21117" # Relay
- "21118:21118" # WebSocket signal
- "21119:21119" # WebSocket relay
- "5000:5000" # Web Console
volumes:
- /volume1/docker/betterdesk/data:/opt/betterdesk/data
environment:
- ADMIN_PASSWORD=YourSecurePassword123!
- DB_TYPE=sqlite
- Click Deploy the stack
Step 3: Access the Console
- Web Console:
http://[NAS-IP]:5000 - Default login:
admin/YourSecurePassword123!
Method 2: Container Manager Only (No Portainer)
Step 1: Download Images
- Open Container Manager → Registry
- Search for
golangand download1.22-bookworm - Search for
nodeand download20-bookworm-slim
Step 2: Clone Repository via SSH
# SSH into your Synology
ssh admin@[NAS-IP]
# Create directory
sudo mkdir -p /volume1/docker/betterdesk
cd /volume1/docker/betterdesk
# Clone repository
git clone https://github.com/UNITRONIX/Rustdesk-FreeConsole.git .
Step 3: Build Images
# Build the single container image
cd /volume1/docker/betterdesk
sudo docker build -t betterdesk:latest -f Dockerfile .
Step 4: Create Container in Container Manager
-
Go to Container Manager → Container → Create
-
Image:
betterdesk:latest -
Container name:
betterdesk -
Enable auto-restart: Yes
-
Port Settings:
Local Port Container Port Type 21114 21114 TCP 21115 21115 TCP 21116 21116 TCP 21116 21116 UDP 21117 21117 TCP 21118 21118 TCP 21119 21119 TCP 5000 5000 TCP -
Volume Settings:
Folder Mount Path /volume1/docker/betterdesk/data /opt/betterdesk/data -
Environment Variables:
Variable Value ADMIN_PASSWORD YourSecurePassword123! DB_TYPE sqlite -
Click Done to create the container
Method 3: docker-compose via SSH
Step 1: Prepare Files
# SSH into Synology
ssh admin@[NAS-IP]
# Create directories
sudo mkdir -p /volume1/docker/betterdesk/data
cd /volume1/docker/betterdesk
# Clone repository
git clone https://github.com/UNITRONIX/Rustdesk-FreeConsole.git .
Step 2: Create docker-compose.yml
cat > docker-compose.synology.yml << 'EOF'
version: '3.8'
services:
betterdesk:
build:
context: .
dockerfile: Dockerfile
container_name: betterdesk
restart: unless-stopped
network_mode: host
volumes:
- ./data:/opt/betterdesk/data
environment:
- ADMIN_PASSWORD=${ADMIN_PASSWORD:?Set ADMIN_PASSWORD before starting}
- DB_TYPE=sqlite
- TZ=Europe/Warsaw
EOF
Step 3: Deploy
# Set admin password
export ADMIN_PASSWORD='YourSecurePassword123!'
# Build and start
sudo docker-compose -f docker-compose.synology.yml up -d --build
# Check logs
sudo docker logs -f betterdesk
Firewall Configuration
If your Synology has a firewall enabled, allow these ports:
| Port | Protocol | Description |
|---|---|---|
| 5000 | TCP | Web Console |
| 21114 | TCP | HTTP API |
| 21115 | TCP | NAT test |
| 21116 | TCP/UDP | Signal Server |
| 21117 | TCP | Relay Server |
| 21118 | TCP | WebSocket Signal |
| 21119 | TCP | WebSocket Relay |
DSM Firewall Settings:
- Control Panel → Security → Firewall
- Create rules to allow the ports above from your LAN
RustDesk Client Configuration
Configure your RustDesk clients to connect:
- Open RustDesk client
- Go to Settings → Network
- Set ID Server:
[NAS-IP]:21116 - Set Relay Server:
[NAS-IP]:21117 - Set API Server:
http://[NAS-IP]:21114 - Import the Public Key from the web console
Updating BetterDesk
Via SSH:
cd /volume1/docker/betterdesk
git pull
sudo docker-compose -f docker-compose.synology.yml up -d --build
Via Portainer:
- Go to Stacks →
betterdesk - Click Pull and redeploy
Troubleshooting
Container won't start
# Check logs
sudo docker logs betterdesk
# Verify ports are free
sudo netstat -tlnp | grep -E '21114|21115|21116|21117|21118|21119|5000'
Permission issues
# Fix data directory permissions
sudo chown -R 1000:1000 /volume1/docker/betterdesk/data
Can't connect from RustDesk client
- Verify firewall rules allow the ports
- Check if your router forwards the ports (for external access)
- Ensure the public key is correctly imported in the client
DSM 7.2+ Container Manager issues
If Container Manager doesn't show build options:
- Use SSH method to build images
- Or use Portainer for full Docker functionality
Resource Recommendations
| Deployment | RAM | CPU |
|---|---|---|
| Small (< 50 devices) | 512MB | 1 core |
| Medium (50-200 devices) | 1GB | 2 cores |
| Large (200+ devices) | 2GB+ | 2+ cores |
Support
- GitHub Issues: https://github.com/UNITRONIX/Rustdesk-FreeConsole/issues
- Documentation: https://github.com/UNITRONIX/Rustdesk-FreeConsole/tree/main/docs