From 1290b66d385aafa5124457a1ad00fb98357f1823 Mon Sep 17 00:00:00 2001 From: kaffa Date: Thu, 11 Jun 2026 22:51:37 +0900 Subject: [PATCH] =?UTF-8?q?RustDesk=20=EC=9E=90=EC=B2=B4=ED=98=B8=EC=8A=A4?= =?UTF-8?q?=ED=8C=85=20=EC=84=9C=EB=B2=84=20jp1=20incus=20=EB=B0=B0?= =?UTF-8?q?=ED=8F=AC=20(=EC=9B=90=EA=B2=A9=EC=A7=80=EC=9B=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/rustdesk.md | 61 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 services/rustdesk.md diff --git a/services/rustdesk.md b/services/rustdesk.md new file mode 100644 index 0000000..40e3c63 --- /dev/null +++ b/services/rustdesk.md @@ -0,0 +1,61 @@ +--- +title: RustDesk 자체호스팅 (원격지원) +updated: + - 2026-06-11 jp1 incus에 OCI 컨테이너로 배포 (고객 원격지원용) +tags: [services, remote-support, rustdesk, incus, jp1] +--- + +# RustDesk 자체호스팅 서버 + +고객 PC 원격지원용 자체호스팅 RustDesk 서버. 상용(AnyDesk/TeamViewer) 대체. + +## 위치 / 구성 + +| 항목 | 값 | +|------|-----| +| 호스트 | [[../infra/compute/hosts/incus-jp1\|incus-jp1]] (도쿄), default 프로젝트 | +| 인스턴스 | `rustdesk` (OCI: `docker:rustdesk/rustdesk-server-s6` 올인원 s6, hbbs+hbbr) | +| 컨테이너 IP | 10.253.101.222 | +| **공개 엔드포인트** | **42.125.196.116** (jp1 공인 IP, eno1 직결) | +| 구성요소 | hbbs(ID/rendezvous, `-r 42.125.196.116 -k _`), hbbr(relay) | +| 데이터/키 | 컨테이너 `/data` (db_v2.sqlite3, id_ed25519[.pub]) — 인스턴스 fs에 영속 | +| autostart | `boot.autostart=true` | +| 암호화 | `ENCRYPTED_ONLY=1` (키 없는 클라이언트 거부) | + +## 공개키 (클라이언트 설정 필수) + +``` +tazDfFELv4N7HOSNiCPPyJ7qG0Cx4K6byPEr33vBvUI= +``` + +## 포트 (incus proxy 디바이스로 공인 IP 노출) + +| 포트 | proto | 용도 | proxy 디바이스명 | +|------|-------|------|------------------| +| 21115 | TCP | hbbs NAT type test | idns | +| 21116 | TCP | hbbs TCP hole punch/heartbeat | reg | +| 21116 | **UDP** | hbbs ID 등록 (필수) | regudp | +| 21117 | TCP | hbbr relay | relay | +| 21118 | TCP | hbbs 웹클라이언트 ws (선택) | webs | +| 21119 | TCP | hbbr 웹클라이언트 ws (선택) | webr | + +- jp1 nft INPUT policy=accept라 별도 방화벽 개방 불필요. 외부 도달 5포트 검증 완료(2026-06-11). +- proxy 디바이스: `incus config device add jp1:rustdesk proxy listen=:0.0.0.0: connect=:127.0.0.1: --project default` + +## 클라이언트 설정 (고객/지원자 공통) + +RustDesk 앱 → 설정 → 네트워크 → ID/relay 서버: +- **ID 서버**: `42.125.196.116` +- **Relay 서버**: `42.125.196.116` +- **Key**: `tazDfFELv4N7HOSNiCPPyJ7qG0Cx4K6byPEr33vBvUI=` + +## 운영 + +- 로그/상태: `incus exec jp1:rustdesk --project default -- sh -c 'ps aux | grep hbb; ss -tulnp | grep 2111'` +- 재시작: `incus restart jp1:rustdesk --project default` +- 공개키 재확인: `incus exec jp1:rustdesk --project default -- cat /data/id_ed25519.pub` +- 권고: 안정 호스트명(`rustdesk.inouter.com` A → 42.125.196.116) 부여 시 클라이언트 설정이 IP 변경에 안전. 현재는 jp1 정적 공인 IP 직접 사용. + +## 배경 + +2026-06-11 inbest SFTP 고객 장애(실제 원인은 FileZilla, [[../infra/compute/hosts/zlambda]] 참조) 대응 중 원격지원 수단 부재 확인 → 자체호스팅 RustDesk 도입. K3s가 Incus로 이전 중이라 신규 서비스는 Incus에 배치([[../infra/compute/k3s-to-incus-migration]]).