📄 RustDesk 중계 서버 구축 및 systemd 서비스 등록 가이드 (Ubuntu)
🧩 구성 목표
- RustDesk 자체 서버 구성 (브로커 + 릴레이)
- hbbs (ID/브로커 서버)와 hbbr (Relay 서버) systemd 서비스 등록
- 클라우드 환경에서 항상 실행되고, 재부팅 후 자동 시작
✅ 1. 서버 요구사항
- Ubuntu 20.04+ VM
- 공인 IP 또는 도메인
- 포트 개방 (클라우드 방화벽 + UFW)
- TCP: 21115, 21116, 21117
- UDP: 21116
sudo ufw allow 21115/tcp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw allow 21117/tcp
✅ 2. RustDesk 서버 바이너리 설치
# 예시 위치: ~/amd64
cd ~
wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.9/rustdesk-server-linux-amd64.zip
unzip rustdesk-server-linux-amd64.zip
cd amd64
chmod +x hbbs hbbr
✅ 3. 수동 테스트 실행
my-public-ip 에 자신의 public ip 등록
./hbbs -r {my-public-ip}:21117
./hbbr
이 상태에서 접속이 잘 되면 systemd 등록 준비 완료.
✅ 4. systemd 서비스 등록
🔧 /etc/systemd/system/hbbs.service
my-public-ip 에 자신의 public ip 등록
[Unit]
Description=RustDesk Broker Service
After=network.target
[Service]
ExecStart=/home/ubuntu/amd64/hbbs -r {my-public-ip}:21117
WorkingDirectory=/home/ubuntu/amd64
Restart=always
User=ubuntu
[Install]
WantedBy=multi-user.target
🔧 /etc/systemd/system/hbbr.service
[Unit]
Description=RustDesk Relay Service
After=network.target
[Service]
ExecStart=/home/ubuntu/amd64/hbbr
WorkingDirectory=/home/ubuntu/amd64
Restart=always
User=ubuntu
[Install]
WantedBy=multi-user.target
✅ 5. 서비스 적용 및 실행
sudo systemctl daemon-reload
sudo systemctl enable hbbs hbbr
sudo systemctl start hbbs hbbr
정상 실행 확인 :
sudo systemctl status hbbs
sudo systemctl status hbbr
✅ 6. RustDesk 클라이언트 설정
클라이언트 앱의 Settings > Network 항목에 다음 입력:
- ID Server: 61.109.236.157
- Relay Server: 61.109.236.157
✅ 7. 운영/모니터링 명령
- 실시간 로그 보기:
journalctl -u hbbs -f
journalctl -u hbbr -f
- 서비스 수동 제어:
sudo systemctl restart hbbs
sudo systemctl restart hbbr
- 네트워크 모니터링:
sudo apt install iftop
sudo iftop -i eth0
✅ 부록: 포트 요약
| 포트 | 프로토콜 | 설명 |
| 21115 | TCP | hbbs – ID 등록/조회 |
| 21116 | TCP/UDP | hbbr – 데이터 중계 |
| 21117 | TCP | hbbs ↔ hbbr 내부 통신 |
📌 추가 고려사항
- 서버에 TLS 인증서 적용 가능 (Let's Encrypt)
- 고정 도메인 연결 시 DDNS 또는 도메인 등록 필요
- 클라이언트에 기본 서버 주소가 포함된 RustDesk 빌드 가능
'참고용' 카테고리의 다른 글
| Github) Fork한 저장소가 Public으로 전환되지 않을 때 - Mirror Push (0) | 2026.03.08 |
|---|---|
| MobaXterm 설치 및 AWS EC2 인스턴스 접속 방법 (0) | 2026.03.03 |
| 파이썬에서 딕셔너리(dict) ↔ JSON 변환하는 코드 (0) | 2025.05.20 |
| Javascript) Math.random()을 통해 1~100까지 랜덤한 정수를 구하는 방식에 대하여 올림과 내림에 관한 고찰 (0) | 2025.05.09 |
| 리눅스 시스템 시간과 실제 시간이 맞지 않는 경우 (0) | 2025.04.22 |