RustDesk на VPS: self-hosted удалённый рабочий стол вместо TeamViewer
RustDesk server (hbbs/hbbr) на VPS: Docker, ключи, клиенты Windows/Linux/macOS, Nginx, безопасность и troubleshooting. Приватная альтернатива TeamViewer и AnyDesk.
Краткий ответ: RustDesk — open-source remote desktop. Self-hosted relay на VPS 1 GB+: hbbs (ID/signaling) + hbbr (relay) в Docker, свой ключ шифрования, клиенты указывают на ваш сервер. Без облака RustDesk и без лимитов TeamViewer.
TeamViewer дорогой и блокирует «личное использование», AnyDesk — чужие серверы. RustDesk на вашем VPS — E2E encryption, полный контроль relay, бесплатно для команды и семьи.
RustDesk vs TeamViewer vs AnyDesk vs RDP
| Критерий | RustDesk self-host | TeamViewer | AnyDesk | Raw RDP/SSH |
|---|---|---|---|---|
| Self-hosted relay | Да | Нет | Нет | N/A |
| E2E encryption | Да | Да | Да | Varies |
| NAT traversal | Relay + hole punch | Cloud | Cloud | Port forward |
| Стоимость | VPS only | $50+/мес business | Freemium | Free |
| RAM server | 512 MB–1 GB | N/A | N/A | N/A |
| File transfer | Да | Да | Да | SCP/SFTP |
| Mobile client | Да | Да | Да | Limited |
RustDesk — optimal для IT support своей команды и личных машин.
Архитектура
Client A (support) Client B (remote PC)
↓ ↓
└──────────┬─────────────────┘
↓
hbbs (21115-21116-21118)
ID registry + hole punching
↓
hbbr (21117)
Relay when P2P fails
↓
Optional: Web UI / API
hbbs — rendezvous server. hbbr — relay для трафика когда прямое соединение невозможно (symmetric NAT, corporate firewall).
Требования к VPS
| Сценарий | RAM | CPU | Bandwidth |
|---|---|---|---|
| Семья 2–5 устройств | 512 MB | 1 vCPU | 100 Mbps |
| IT support 20 устройств | 1 GB | 1 vCPU | 500 Mbps |
| Relay-heavy (no P2P) | 2 GB | 2 vCPU | 1 Gbps |
Порты на firewall (nftables):
- TCP 21115–21117, 21119
- UDP 21116
Docker Compose
services:
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: hbbs
command: hbbs -r rustdesk.example.com:21117
volumes:
- ./data:/root
ports:
- "21115:21115"
- "21116:21116/udp"
- "21118:21118"
restart: unless-stopped
depends_on:
- hbbr
hbbr:
image: rustdesk/rustdesk-server:latest
container_name: hbbr
command: hbbr
volumes:
- ./data:/root
ports:
- "21117:21117"
restart: unless-stopped
После старта: ключ в ./data/id_ed25519.pub — критично для клиентов.
Получение и распространение ключа
cat ./data/id_ed25519.pub
# Пример: xxxxx= — одна строка base64
Этот ключ вставляется в все клиенты — гарантирует что они подключаются только к вашему серверу, не к публичному RustDesk infra.
Распространение:
- GPO / MDM для корпоративных ПК
- BookStack wiki page
- QR code для мобильных
Настройка клиентов
Windows / Linux / macOS:
- Settings → Network → ID/Relay server
- ID server:
rustdesk.example.com - Relay server:
rustdesk.example.com - Key: вставить
id_ed25519.pubcontent - Apply → перезапуск клиента
Android / iOS: Settings → ID/Relay server → те же значения.
Проверка: статус «Ready» с вашим custom server, не «Ready» на public.
Nginx (optional web console)
RustDesk Pro имеет web admin. Open-source — API limited. Для мониторинга портов:
# Health check endpoint via custom script
server {
listen 443 ssl;
server_name rustdesk.example.com;
location /health {
return 200 "ok";
}
}
Основной трафик — не HTTP, а proprietary protocol на 21115–21117. Nginx не проксирует desktop stream.
Безопасность
| Уровень | Мера |
|---|---|
| Обязательно | Custom key на всех клиентах |
| Рекомендуется | Tailscale + RustDesk только в mesh |
| Пароли | Strong permanent password на каждом хосте |
| 2FA | RustDesk Pro feature; OSS — password only |
| Firewall | Только нужные порты, geo-block если возможно |
| Updates | docker compose pull monthly |
Никогда не оставляйте unattended access без strong password. Отключайте «allow unattended» на критичных серверах.
Unattended access (headless servers)
Для Linux servers без GUI — установите RustDesk + задайте fixed password:
# Linux headless
rustdesk --password "STRONG_RANDOM"
rustdesk --option allow-auto-record-input 0
Для production servers предпочтительнее SSH + WireGuard. RustDesk — для desktop support.
Интеграция с Tailscale
Best practice: RustDesk relay на VPS, клиенты также в Tailscale mesh:
Tailscale IP direct → fastest path (no relay bandwidth)
Public relay VPS → fallback for devices outside mesh
Split: корпоративные машины — Tailscale only; семья — public relay с key.
Backup
Бэкапить только ./data/ volume:
id_ed25519(private key!)id_ed25519.pub- Database (if Pro)
tar czf rustdesk-data-$(date +%F).tar.gz ./data/
Потеря private key = все клиенты нужно перенастроить. Храните в Vaultwarden или HashiCorp Vault. Offsite — Restic.
Мониторинг
| Метрика | Как |
|---|---|
| Ports open | Uptime Kuma TCP check 21116 |
| Relay bandwidth | vnstat, iftop на VPS |
| Container health | docker compose ps, restart policy |
| Active sessions | hbbr logs |
Alert при bandwidth spike — возможен abuse если ключ утёк.
Performance tuning
- VPS geographically central для users (EU VPS для EU team)
- UDP 21116 не блокировать на intermediate firewalls
- 1 Gbps port на VPS для screen sharing 4K
- Client: hardware encoding H264 если доступно
- Disable wallpaper/effects на remote для low bandwidth
Troubleshooting
| Проблема | Решение |
|---|---|
| «Failed to connect to rendezvous» | DNS, firewall ports 21115-21116/udp |
| Relay works, P2P not | Normal behind symmetric NAT |
| Wrong key error | Re-copy id_ed25519.pub, no extra spaces |
| Slow/laggy | Use relay closer, reduce resolution, check bandwidth |
| ID not found | hbbs down, client wrong ID server address |
| Connection drops | UDP timeout — check firewall state |
| Linux headless black screen | Install desktop env or use Xvfb |
| Mobile not connecting | Background restrictions — disable battery opt |
| Key mismatch after update | Re-distribute pub key after data volume reset |
| High VPS bandwidth bill | Force Tailscale direct, limit relay users |
Use cases
| Сценарий | Setup |
|---|---|
| Family tech support | 1 VPS, shared key, passwords per PC |
| Small IT team | VPS + Authentik docs + inventory |
| Dev remote workstation | Unattended + strong password + Tailscale |
| Server GUI (legacy app) | RustDesk on X11 server — last resort |
Связка с экосистемой
- VPN mesh — Tailscale, WireGuard
- Secrets — Vaultwarden
- Monitoring — Uptime Kuma
- Firewall — nftables
- Docker — Docker Compose
Итог
RustDesk self-hosted — must-have для приватного remote desktop без абонентской платы TeamViewer. Минимальные ресурсы VPS, максимальный контроль.
VPS от 1 GB — StormNet Cloud. VPN fallback — Tailscale. Backup ключей — 3-2-1.
Рекомендуем прочитать
- Tailscale на VPS: mesh VPN без настройки WireGuard
- WireGuard VPN на VPS: личный VPN за 15 минут
- SSL на VPS: Let's Encrypt, автообновление и типичные ошибки
- nftables на VPS: современный firewall вместо iptables
- code-server на VPS: VS Code в браузере для удалённой разработки
- VS Code SSH Remote: разработка прямо на VPS
Частые вопросы
RustDesk или TeamViewer для remote desktop?
TeamViewer проще out-of-box. RustDesk self-hosted — без лимитов, свои серверы, open source. Для IT-команд на VPS — RustDesk.
Нужен ли публичный IP для RustDesk relay?
Да, relay/id server на VPS с белым IP. Клиенты подключаются к вашему серверу, не к rustdesk.com.






