mirror of
https://github.com/rustdesk/doc.rustdesk.com.git
synced 2026-07-13 02:04:26 +00:00
Merge pull request #620 from OneVth/ko-translation
docs(ko): add Korean (ko) translation
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
---
|
||||
title: "RustDesk 문서 - 오픈소스 원격 데스크톱"
|
||||
description: "오픈소스 원격 데스크톱 소프트웨어인 RustDesk의 전체 문서입니다. 자체 호스팅 방법, 클라이언트 구성 방법, 그리고 인프라 전반에 걸쳐 RustDesk를 배포하는 방법을 알아보세요."
|
||||
keywords: ["rustdesk", "remote desktop", "open source", "self-host", "documentation", "remote access", "VNC alternative", "teamviewer alternative"]
|
||||
type: docs
|
||||
breadcrumbs: false
|
||||
weight: 1
|
||||
---
|
||||
|
||||
RustDesk는 최소한의 구성으로 자체 호스팅과 보안을 위한 완벽한 기능의 오픈소스 원격 제어 대안입니다. 귀하는 데이터에 대한 완전한 제어권을 가지며, 보안에 대한 우려가 없습니다. 클라이언트는 오픈소스이며, 저희 [website](https://rustdesk.com)에서 구매 가능한 완벽한 기능의 **전문 서버**와 기본 무료 및 오픈소스 소프트웨어인 저희 **전문 서버**를 기반으로 한 서버 중에서 선택할 수 있습니다.
|
||||
|
||||
## 어떤 RustDesk 경로를 선택해야 할까요?
|
||||
|
||||
| 필요 | 최고의 시작점 |
|
||||
| --- | --- |
|
||||
| RustDesk를 최종 사용자 또는 관리자로 사용하기 | [Client](/docs/ko/client/) |
|
||||
| 무료 오픈소스 서버를 셀프호스팅하기 | [RustDesk Server OSS](/docs/ko/self-host/rustdesk-server-oss/) |
|
||||
| 웹 콘솔, SSO 및 기업용 제어 기능과 함께 셀프호스팅하기 | [RustDesk Server Pro](/docs/ko/self-host/rustdesk-server-pro/) |
|
||||
| 소스에서 RustDesk를 빌드하거나 패키지화하기 | [Development](/docs/ko/dev/) |
|
||||
|
||||
## 특징
|
||||
- Windows, macOS, Linux, iOS, Android, 웹에서 작동합니다.
|
||||
- VP8 / VP9 / AV1 소프트웨어 코덱과 H264 / H265 하드웨어 코덱을 지원합니다.
|
||||
- 데이터를 직접 관리하고, 귀하의 인프라에 쉽게 자체 호스팅 솔루션을 설정할 수 있습니다.
|
||||
- NaCl 기반의 엔드투엔드 암호화를 사용한 P2P 연결입니다.
|
||||
- Windows에서는 관리자 권한이나 설치가 필요 없으며, 필요 시 현지 또는 원격에서 권한 상승이 가능합니다.
|
||||
- 우리는 간단하게 유지하는 것을 좋아하며 가능한 한 더 간단하게 만들기 위해 노력하겠습니다.
|
||||
|
||||
## GitHub 리포지토리
|
||||
- **메인 클라이언트 리포지토리**: https://github.com/rustdesk/rustdesk
|
||||
- **오픈소스 서버 리포지토리**: https://github.com/rustdesk/rustdesk-server
|
||||
- **Pro 서버 리포지토리**: https://github.com/rustdesk/rustdesk-server-pro
|
||||
- **문서 리포지토리**: https://github.com/rustdesk/doc.rustdesk.com
|
||||
|
||||
{{% children depth="4" showhidden="true" %}}
|
||||
@@ -0,0 +1,141 @@
|
||||
---
|
||||
title: RustDesk 클라이언트
|
||||
description: "Windows, macOS, Linux, Android, iOS 및 웹에서 RustDesk 클라이언트를 설치하고 구성하세요. 장치를 연결하는 방법, 공개 또는 자체 호스팅 서버 사용 방법, 클라이언트 설정 관리 방법을 알아보세요."
|
||||
keywords: ["rustdesk client", "rustdesk download", "rustdesk installation", "rustdesk windows", "rustdesk mac", "rustdesk linux", "rustdesk android", "rustdesk ios", "rustdesk web client", "rustdesk client configuration"]
|
||||
weight: 2
|
||||
pre: "<b>1. </b>"
|
||||
---
|
||||
|
||||
## RustDesk 클라이언트란 무엇인가요?
|
||||
RustDesk 클라이언트는 장치에 설치하여 RustDesk 공공 서버 또는 사용자가 직접 호스팅하는 RustDesk 서버를 통해 원격 데스크톱 세션을 시작하거나 받을 수 있는 애플리케이션입니다. 이 안내서를 따라 올바른 빌드를 다운로드하고 각 플랫폼에 설치한 후, 다른 장치와 연결하고 클라이언트를 RustDesk Server OSS 또는 RustDesk Server Pro로 지정하세요.
|
||||
|
||||
## 지원되는 플랫폼
|
||||
- Microsoft Windows
|
||||
- macOS
|
||||
- Debian 파생판 (Ubuntu ≥ 16, Linux Mint 등)
|
||||
- Red Hat 파생판 (CentOS, Fedora ≥ 18, Rocky Linux 등)
|
||||
- Arch Linux/Manjaro
|
||||
- openSUSE
|
||||
- NixOS
|
||||
- AppImage / Flatpak
|
||||
- Android
|
||||
- iOS (원격으로 제어할 수 없음)
|
||||
- 웹
|
||||
|
||||
## 설치
|
||||
|
||||
### Windows
|
||||
|
||||
GitHub에서 exe 파일을 다운로드하여 설치하세요.
|
||||
|
||||
자동으로 설치하려면 `--silent-install`를 사용해 설치용 exe를 호출하세요.
|
||||
|
||||
### macOS
|
||||
|
||||
GitHub에서 dmg 파일을 다운로드하세요. 더 자세한 정보는 [macOS page](/docs/ko/client/mac/)에서 확인하실 수 있습니다.
|
||||
|
||||
dmg 파일을 열고 `RustDesk`를 `Applications`로 드래그하세요.
|
||||
|
||||
RustDesk가 실행되도록 허용하세요.
|
||||
|
||||
필요한 권한을 허용하고 RustDesk 왼쪽의 안내에 따라 설정을 마무리하세요.
|
||||
|
||||
### Linux
|
||||
|
||||
다양한 Linux 배포판별 설치 방법은 아래를 참조하세요. (설치 프로그램은 GitHub에 있거나 배포판의 저장소에서 제공됩니다.)
|
||||
|
||||
#### Debian 파생판
|
||||
|
||||
```sh
|
||||
# please ignore the wrong disk usage report
|
||||
sudo apt install -fy ./rustdesk-<version>.deb
|
||||
```
|
||||
|
||||
#### 레드햇 파생 상품
|
||||
|
||||
```sh
|
||||
sudo yum localinstall ./rustdesk-<version>.rpm
|
||||
```
|
||||
|
||||
#### Arch Linux/Manjaro
|
||||
|
||||
```sh
|
||||
sudo pacman -U ./rustdesk-<version>.pkg.tar.zst
|
||||
```
|
||||
|
||||
#### openSUSE (≥ Leap 15.0)
|
||||
|
||||
```sh
|
||||
sudo zypper install --allow-unsigned-rpm ./rustdesk-<version>-suse.rpm
|
||||
```
|
||||
|
||||
#### Nix / NixOS (≥ 22.05)
|
||||
|
||||
일시적으로 `rustdesk`가 실행될 준비가 된 셸로 들어갑니다:
|
||||
|
||||
```sh
|
||||
nix shell nixpkgs#rustdesk
|
||||
```
|
||||
|
||||
현재 사용자 프로필에 설치하기:
|
||||
|
||||
```sh
|
||||
nix profile install nixpkgs#rustdesk
|
||||
```
|
||||
|
||||
NixOS에서 시스템 전체를 설치하려면 `configuration.nix`를 편집한 후 `nixos-rebuild switch --flake /etc/nixos`를 실행하세요:
|
||||
|
||||
```
|
||||
environment.systemPackages = with pkgs; [
|
||||
...
|
||||
rustdesk
|
||||
];
|
||||
```
|
||||
|
||||
### Android
|
||||
GitHub에서 apk를 설치하세요. 자세한 정보는 [Android page](/docs/ko/client/android/)에서 확인할 수 있습니다.
|
||||
|
||||
### iOS(iPhone, iPad)
|
||||
[App Store](https://apps.apple.com/us/app/rustdesk-remote-desktop/id1581225015)에서 앱을 다운로드하세요.
|
||||
|
||||
## 사용법
|
||||
설치(또는 임시 실행 파일로 실행)한 후 RustDesk는 공공 서버에 연결됩니다. 하단에 "(1) 준비 완료, 더 빠른 연결을 위해 자신의 서버를 설정해주세요"라는 메시지가 표시됩니다. 왼쪽 상단에는 (2) ID와 (3) 일회성 비밀번호가 표시되고, 오른쪽에는 다른 컴퓨터의 ID를 알고 있다면 연결할 수 있는 (4) 입력란이 있습니다.
|
||||
|
||||

|
||||
|
||||
설정에 접근하려면 ID 오른쪽에 있는 (5) 메뉴 버튼 [ ⋮ ]을 클릭하세요.
|
||||
|
||||
설정 메뉴에서는 다음을 찾을 수 있습니다:
|
||||
- 일반 - 서비스 제어, 테마, 하드웨어 코덱, 오디오, 녹화 및 언어
|
||||
- 보안 - 누군가 제어를 맡을 때의 권한, 비밀번호 옵션, ID 변경 가능 여부 및 고급 보안 설정
|
||||
- 네트워크 - 여기서 자신의 서버 설정과 프록시를 설정하세요.
|
||||
- 디스플레이 - 원격 세션의 디스플레이 설정 및 기타 기본 옵션, 클립보드 동기화 등을 제어하세요.
|
||||
- 계정 - Pro 서버와 함께 사용하여 API에 로그인할 수 있습니다.
|
||||
- 정보 - 소프트웨어에 대한 정보를 표시합니다.
|
||||
|
||||
## RustDesk 구성하기
|
||||
RustDesk를 구성하는 방법은 여러 가지가 있습니다.
|
||||
|
||||
가장 쉬운 방법은 RustDesk 서버 프로를 사용하는 것입니다. 암호화된 구성 문자열을 얻을 수 있으며, 이는 `--config`와 함께 설정을 가져오는 데 사용할 수 있습니다. 이를 수행하려면:
|
||||
1. 사용 중인 운영체제의 명령줄을 열고, RustDesk가 설치된 폴더로 이동하세요. 예를 들어 Windows에서는 `C:\Program Files\RustDesk`, Linux에서는 `/usr/bin`입니다.
|
||||
2. `rustdesk.exe --config your-encrypted-string` 명령어를 사용하세요. 예를 들어 `rustdesk.exe --config 9JSPSvJzNrBDasJjNSdXOVVBlERDlleoNWZzIHcOJiOikXZr8mcw5yazVGZ0NXdy5CdyciojI0N3boJye`입니다.
|
||||
|
||||
클라이언트를 수동으로 설정할 수 있습니다. 이를 위해서는 다음을 수행하십시오:
|
||||
1. 설정을 클릭하세요.
|
||||
2. 네트워크를 클릭하세요.
|
||||
3. 네트워크 설정 잠금 해제를 클릭하세요.
|
||||
4. ID, 릴레이, API(프로 서버 사용 시) 및 키를 입력하세요.
|
||||
|
||||

|
||||
|
||||
클라이언트를 수동으로 설정한 경우, `RustDesk2.toml`(사용자 폴더에 있음) 파일을 가져와 위의 예시와 유사한 방식으로 `--import-config`를 사용할 수 있습니다.
|
||||
|
||||
## 명령줄 매개변수
|
||||
- `--password`는 영구 비밀번호를 설정하는 데 사용할 수 있습니다.
|
||||
- `--get-id`는 ID를 검색하는 데 사용할 수 있습니다.
|
||||
- `--set-id`는 ID를 설정하는 데 사용할 수 있으며, ID는 반드시 문자로 시작해야 합니다.
|
||||
- `--silent-install`는 Windows에서 RustDesk를 무인 설치하는 데 사용할 수 있습니다.
|
||||
|
||||
추가 고급 매개변수는 [here](https://github.com/rustdesk/rustdesk/blob/bdc5cded221af9697eb29aa30babce75e987fcc9/src/core_main.rs#L242)에서 확인할 수 있습니다.
|
||||
|
||||
{{% children depth="3" showhidden="true" %}}
|
||||
@@ -0,0 +1,152 @@
|
||||
---
|
||||
title: Android
|
||||
description: "Android에서 RustDesk를 사용하여 원격 제어, 파일 전송, ID 및 릴레이 서버 설정, 화면 공유를 수행하세요. 어떤 권한이 필요한지와 Android 서비스를 시작하는 방법을 알아보세요."
|
||||
keywords: ["rustdesk android", "rustdesk android remote control", "rustdesk android file transfer", "rustdesk android screen share", "rustdesk android id relay server", "rustdesk android permissions"]
|
||||
weight: 4
|
||||
---
|
||||
|
||||
이 Android 가이드를 사용하여 원격 장치를 제어하고, 파일을 전송하며, ID 및 릴레이 서버를 구성하고, Android 휴대폰의 화면이나 파일 시스템을 공유하십시오.
|
||||
|
||||
## 원격 제어
|
||||
|
||||
홈 페이지에서 원격 장치의 ID를 입력하거나 이전 기록된 장치를 선택하여 확인하십시오.
|
||||
확인이 성공한 후에는 원격 장치를 제어할 수 있습니다.
|
||||
|
||||
| 홈 | 성공적으로 연결됨 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
입력 제어는 `Mouse mode`와 `Touch mode`의 두 가지 모드를 제공하며, 하단 도구모음에서 전환할 수 있습니다.
|
||||
|
||||
| 마우스 설정 | 모드 선택 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
{{% notice note %}}
|
||||
`Mouse mode`에서는 `Two-Finger Tap`를 사용해 원격 장치의 `Right Mouse`를 트리거할 수도 있습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
## 파일 전송(Android)
|
||||
|
||||
> RustDesk ≥ 1.1.9 필요
|
||||
|
||||
홈 페이지의 장치 목록에서 장치를 선택하세요.
|
||||
|
||||
오른쪽 메뉴를 길게 누르거나 탭하여 `File Transfer`를 선택하세요.
|
||||
|
||||
| 홈 | 성공적으로 연결됨 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
- 초기 디렉터리는 기기의 홈 디렉터리이며, <i class="fas fa-home"></i>를 클릭하여 빠르게 홈으로 돌아갈 수 있습니다.
|
||||
- 제목 표시줄 아래에는 디렉터리 레벨이 표시되며, 해당 폴더를 클릭하면 빠르게 이동할 수 있습니다.
|
||||
- <i class="fas fa-arrow-up"></i>를 클릭하여 상위 디렉터리에 접근할 수 있습니다.
|
||||
- 현재 절대 경로와 프로젝트 통계는 목록 하단에 표시됩니다.
|
||||
- 제목 표시줄에서 `Local` / `Remote`를 클릭하여 페이지를 전환할 수 있습니다.
|
||||
|
||||
### 파일을 어떻게 전송하나요?
|
||||
|
||||
1. 목록에서 파일 또는 폴더를 **길게 누르면** 빠르게 **다중 선택 모드**로 들어가며, 이를 통해 여러 항목을 선택할 수 있습니다.
|
||||
2. 파일을 선택한 후 `Local` / `Remote` 페이지로 전환하세요. 전환한 후 화면 하단에 `Paste here?` 프롬프트가 표시됩니다.
|
||||
3. 그림의 붙여넣기 파일 아이콘을 클릭하여 선택된 항목을 대상 디렉터리로 전송하세요.
|
||||
|
||||
| 다중 선택 모드 | 파일 붙여넣기 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
## ID/릴레이 서버 설정
|
||||
|
||||
1. 하단 탐색 막대에서 `Settings`를 클릭하세요.
|
||||
2. `ID/Relay Server`를 클릭하세요.
|
||||
3. `ID Server` 필드에 ID 서버 호스트명/IP 주소를 입력하세요. `Relay Server`와 `API Server`는 비워두고, 공개 키를 `Key` 필드에 입력하세요(선택사항이며 암호화에 필요함). **확인**을 눌러 설정을 저장하세요. 그러면 지정된 서버로 자동으로 전환됩니다.
|
||||
|
||||
QR 코드를 스캔하여 구성할 수도 있습니다. QR 코드를 생성하려면 다음 형식을 사용하세요(값 `host` 및 `key`는 사용자 고유의 값으로 변경하세요):
|
||||
|
||||
```nolang
|
||||
config={"host": "xxx", "key": "xxx"}
|
||||
```
|
||||
|
||||
그런 다음 [Online QR Code Generator](https://www.qr-code-generator.com/)로 이동하여 위의 코드를 붙여넣으세요.
|
||||
|
||||
아래 그림은 Android의 스크린샷입니다. iOS인 경우, 홈 페이지의 오른쪽 상단 메뉴를 확인해 주세요.
|
||||
|
||||

|
||||
|
||||
## Android 휴대폰의 화면/파일 공유하기
|
||||
|
||||
버전 1.1.9부터 Android 클라이언트는 휴대폰 화면 공유 및 휴대폰 파일 시스템 공유 기능을 추가했습니다.
|
||||
|
||||
- 화면 공유를 위해서는 Android 6 이상이 필요합니다.
|
||||
- 휴대폰 시스템 내부 오디오를 공유하려면 Android 10 이상이 필요합니다.
|
||||
- iOS는 아직 화면 공유를 지원하지 않습니다.
|
||||
|
||||
### 권한 요청 및 서비스 시작
|
||||
|
||||
하단 탐색바에서 `Share Screen`를 클릭하세요.
|
||||
|
||||
필요에 따라 다양한 권한을 구성하세요. RustDesk를 시작할 때마다 "화면 캡처"와 "입력 제어" 권한을 다시 요청해야 합니다.
|
||||
|
||||

|
||||
|
||||
| 권한 | 설명 |
|
||||
| --- | --- |
|
||||
| 화면 캡처 | 화면 캡처 공유 권한을 허용할지 여부, 모니터링 서비스는 시작과 동시에 활성화됩니다 |
|
||||
| 입력 제어* | 컨트롤러가 휴대폰의 입력을 제어하도록 허용할지 여부, 예: 마우스를 사용한 가상 터치스크린 조작 |
|
||||
| 파일 전송* | 파일 전송 권한을 허용할지 여부, 시작 후 이 휴대폰의 파일 시스템을 원격으로 제어할 수 있습니다 |
|
||||
| 오디오 캡처 | 휴대폰 내부의 시스템 음악을 공유할지 여부(마이크 입력은 아님) |
|
||||
|
||||
|
||||
{{% notice note %}}
|
||||
위의 *는 특별한 권한을 나타냅니다. 이러한 권한을 얻으려면 Android 시스템 설정 페이지로 이동해 수동으로 획득해야 합니다. 자세한 내용은 다음과 같습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
### 특별 권한 요청 - 파일
|
||||
|
||||
| Android 파일 권한 요청 시 자동으로 시스템 설정 페이지로 이동합니다 |
|
||||
| :---: |
|
||||
|  |
|
||||
|
||||
### 특별 권한 요청 - 마우스 입력
|
||||
|
||||
| 1단계: 설치된 서비스 찾기 | 2단계: RustDesk 입력 시작 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
{{% notice note %}}
|
||||
다양한 벤더의 시스템 설정 페이지는 다를 수 있으니, 귀하의 시스템 페이지에 맞게 조정해주세요.
|
||||
{{% /notice %}}
|
||||
|
||||
| 원격 마우스 제어 단축키 | 설명 |
|
||||
| --- | --- |
|
||||
| 오른쪽 마우스 클릭 | 뒤로 가기 |
|
||||
| 마우스 휠 클릭 | 홈 |
|
||||
| 마우스 휠 길게 누르기 | 최근에 열었던 앱 |
|
||||
| 마우스 휠 스크롤링 | 수직 슬라이딩 시뮬레이션 |
|
||||
|
||||
### 서비스 시작
|
||||
|
||||
`Screen Capture` 권한을 획득한 후, 서비스가 자동으로 시작됩니다. `Start Service` 버튼을 클릭하여 서비스를 시작할 수도 있습니다. 서비스가 시작된 후에는 다른 기기로부터 데스크톱 제어 요청을 수락할 수 있습니다.
|
||||
|
||||
`File Transfer` 권한이 활성화된 경우, 다른 기기로부터 파일 제어 요청도 수락할 수 있습니다.
|
||||
|
||||
서비스가 시작된 후, 이 기기에 고유한 ID와 임의의 비밀번호가 자동으로 생성됩니다. 다른 기기들은 ID와 비밀번호를 통해 휴대폰을 제어하거나, 새로운 요청이 수신될 때 수동으로 확인할 수 있습니다.
|
||||
|
||||
| 서비스 시작 전 | 서비스 시작 후 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
{{% notice note %}}
|
||||
1. `Start Service`를 클릭하면 기본적으로 `Screen Capture` 권한이 활성화됩니다.
|
||||
2. `Screen Capture` 권한을 획득하지 않은 경우, 기타 장치는 제어 요청을 발행할 수 없습니다.
|
||||
3. `Screen Capture` 권한을 제외한 기타 권한의 전환은 새 연결에만 영향을 미치며, 연결됨 상태의 연결에는 영향을 주지 않습니다. 연결됨 상태의 연결에 대한 권한을 전환하려면 먼저 현재 연결을 종료하고 권한을 수정한 후 제어 요청을 받으십시오.
|
||||
{{% /notice %}}
|
||||
|
||||
#### PC
|
||||
|
||||

|
||||
|
||||
#### 모바일 터미널
|
||||
|
||||
| 언제든지 서비스를 중지하거나 지정된 연결을 닫을 수 있습니다 | 채팅을 받거나 시작할 수 있습니다 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
@@ -0,0 +1,106 @@
|
||||
---
|
||||
title: Linux
|
||||
description: "Ubuntu, Fedora, CentOS, Arch, openSUSE, NixOS를 포함한 Linux 배포판에 RustDesk를 설치하기. Wayland 참고사항, AppImage 및 Flatpak 옵션, SELinux 문제 해결 방법을 검토하세요."
|
||||
keywords: ["rustdesk linux", "rustdesk ubuntu", "rustdesk fedora", "rustdesk arch", "rustdesk appimage", "rustdesk flatpak", "rustdesk wayland", "rustdesk selinux"]
|
||||
weight: 4
|
||||
---
|
||||
|
||||
Linux 가이드를 사용하여 주요 배포판에 RustDesk를 설치하고, Wayland 및 로그인 화면의 제한 사항을 검토하며, SELinux 정책 차단과 같은 일반적인 권한 문제를 해결하세요.
|
||||
|
||||
## 어떤 Linux 패키지를 사용해야 하나요?
|
||||
|
||||
| 상황 | 최적의 패키지 |
|
||||
| --- | --- |
|
||||
| Ubuntu 또는 Debian 기반 시스템 | `.deb` |
|
||||
| Fedora 또는 CentOS 기반 시스템 | `.rpm` |
|
||||
| Arch Linux 또는 Manjaro | `.pkg.tar.zst` |
|
||||
| openSUSE | SUSE 전용 `.rpm` |
|
||||
| 휴대용 단일 파일 사용 | `AppImage` |
|
||||
| 샌드박스 데스크톱 설치 | `Flatpak` |
|
||||
|
||||
## Linux 빠른 답변
|
||||
|
||||
- 가능하면 배포판의 기본 패키지를 사용하세요.
|
||||
- Wayland 지원은 RustDesk `1.2.0` 이후 실험적입니다.
|
||||
- 로그인 화면에 대한 원격 접근은 여전히 X11를 필요로 합니다.
|
||||
- SELinux가 강제되고 `avc: denied`가 표시되는 경우, RustDesk SELinux 정책 지침을 적용하세요.
|
||||
|
||||
## 설치
|
||||
|
||||
### Ubuntu (≥ 18)
|
||||
|
||||
```sh
|
||||
# please ignore the wrong disk usage report
|
||||
sudo apt install -fy ./rustdesk-<version>.deb
|
||||
```
|
||||
|
||||
Ubuntu 18.04의 경우, [pipewire](https://github.com/rustdesk/rustdesk/discussions/6148#discussioncomment-9295883)에 대해 먼저 아래와 같이 수행해 주세요.
|
||||
|
||||
```sh
|
||||
sudo apt install software-properties-common
|
||||
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
|
||||
sudo apt update
|
||||
```
|
||||
|
||||
### CentOS/Fedora (≥ 28)
|
||||
|
||||
```sh
|
||||
sudo yum localinstall ./rustdesk-<version>.rpm
|
||||
```
|
||||
|
||||
### Arch Linux/Manjaro
|
||||
|
||||
```sh
|
||||
sudo pacman -U ./rustdesk-<version>.pkg.tar.zst
|
||||
```
|
||||
|
||||
### openSUSE (≥ Leap 15.0)
|
||||
|
||||
```sh
|
||||
sudo zypper install --allow-unsigned-rpm ./rustdesk-<version>-suse.rpm
|
||||
```
|
||||
|
||||
### AppImage
|
||||
|
||||
```sh
|
||||
# For Fedora
|
||||
sudo yum install libnsl
|
||||
./rustdesk-<version>.AppImage
|
||||
```
|
||||
|
||||
```sh
|
||||
# For Ubuntu
|
||||
sudo yum install libfuse2
|
||||
./rustdesk-<version>.AppImage
|
||||
```
|
||||
|
||||
### 플랫팩
|
||||
|
||||
```sh
|
||||
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak --user install ./rustdesk-<version>.flatpak
|
||||
flatpak run com.rustdesk.RustDesk
|
||||
```
|
||||
|
||||
## ~~X11 필요~~
|
||||
~~RustDesk는 아직 Wayland를 지원하지 않습니다; 수동으로 X11로 전환해야 합니다.~~
|
||||
|
||||
RustDesk는 버전 1.2.0부터 실험적인 Wayland 지원을 제공합니다.
|
||||
|
||||
### 디스플레이 서버
|
||||
|
||||
[Ubuntu](https://askubuntu.com/questions/1260142/ubuntu-set-default-login-desktop) |
|
||||
[Fedora](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) |
|
||||
[Arch Linux](https://bbs.archlinux.org/viewtopic.php?id=218319)
|
||||
|
||||
### 로그인 화면
|
||||
|
||||
Wayland를 사용한 로그인 화면은 아직 지원되지 않습니다. 재부팅하거나 RustDesk로 로그아웃한 후 로그인 화면에 접근하려면 로그인 화면을 X11로 변경해야 합니다. `/etc/gdm/custom.conf` 또는 `/etc/gdm3/custom.conf`의 아래 줄을 `WaylandEnable=false`로 수정해 주세요:
|
||||
|
||||
```ini
|
||||
#WaylandEnable=false
|
||||
```
|
||||
|
||||
{{% notice note %}}
|
||||
위의 변경 사항이 적용되도록 **재부팅**해 주세요.
|
||||
{{% /notice %}}
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: 맥
|
||||
description: "macOS에 RustDesk를 설치하고 원격 제어에 필요한 권한을 구성하세요. 앱 허용 방법, 접근성 활성화 방법 및 화면 녹화 접근 권한 부여 방법을 알아보세요."
|
||||
keywords: ["rustdesk mac", "rustdesk macos", "rustdesk mac install", "rustdesk screen recording permission", "rustdesk accessibility permission", "rustdesk mac remote control"]
|
||||
weight: 3
|
||||
---
|
||||
|
||||
맥OS 가이드를 사용하여 RustDesk를 설치하고, 앱이 실행되도록 허용하며, 화면 캡처와 입력 제어에 필요한 권한을 부여하십시오.
|
||||
|
||||
## macOS에서 RustDesk는 무엇이 필요합니까?
|
||||
|
||||
macOS에서 RustDesk는 앱 설치 자체 이상의 추가 작업이 필요합니다. 다른 Mac을 올바르게 제어하려면 일반적으로 앱을 `Applications`로 이동하고, 실행을 허용한 다음, `Accessibility`, `Screen Recording`, 경우에 따라 `Input Monitoring` 권한을 부여해야 합니다.
|
||||
|
||||
## macOS 빠른 답변
|
||||
|
||||
- `.dmg`에서 `Applications`로 RustDesk를 설치하기.
|
||||
- Gatekeeper가 차단하는 경우 macOS 보안 설정에서 앱을 허용하세요.
|
||||
- 원격 제어를 위해 `Accessibility`와 `Screen Recording`를 부여하세요.
|
||||
- 키보드 또는 마우스 입력이 여전히 작동하지 않는 경우 `Input Monitoring`를 부여하세요.
|
||||
- 권한 재설정이 즉시 적용되지 않으면 재부팅하세요.
|
||||
|
||||
## 설치
|
||||
|
||||
.dmg 파일을 열고 아래와 같이 `RustDesk`를 `Applications`로 드래그하세요.
|
||||
|
||||

|
||||
|
||||
실행 중인 모든 RustDesk를 종료했는지 확인하세요. 또한 트레이에 표시된 RustDesk 서비스도 종료했는지 확인하세요.
|
||||
|
||||

|
||||
|
||||
## RustDesk 실행 허용
|
||||
|
||||
| 변경 해제 | `App Store and identified developers` 클릭 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
## 어떤 macOS 권한이 중요합니까?
|
||||
|
||||
| 권한 | 왜 중요한가요? |
|
||||
| --- | --- |
|
||||
| 접근성 | RustDesk가 키보드 및 마우스 입력을 제어할 수 있도록 합니다 |
|
||||
| 녹화 | RustDesk가 로컬 디스플레이를 캡처하도록 합니다 |
|
||||
| 입력 모니터링 | 최신 macOS 버전에서는 로컬 입력 캡처가 여전히 실패하는 경우 필요합니다 |
|
||||
|
||||
## 권한 활성화
|
||||
|
||||
{{% notice note %}}
|
||||
macOS 보안 정책 변경으로 인해 로컬 측에서 입력을 캡처하는 당사의 API가 더 이상 작동하지 않습니다. 로컬 Mac 측에서 '입력 모니터링' 권한을 활성화해야 합니다.
|
||||
이를 따르십시오
|
||||
[https://github.com/rustdesk/rustdesk/issues/974#issuecomment-1185644923](https://github.com/rustdesk/rustdesk/issues/974#issuecomment-1185644923).
|
||||
|
||||
버전 1.2.4에서는 툴바의 키보드 아이콘을 클릭하여 확인할 수 있는 `Input source 2`를 사용해 볼 수 있습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
화면을 캡처하려면 RustDesk에 **접근성** 권한과 **화면 녹화** 권한을 부여해야 합니다. RustDesk가 설정 창으로 안내해 드립니다.
|
||||
|
||||
| RustDesk 창 | 설정 창 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
설정 창에서 이를 활성화했지만 RustDesk가 여전히 경고하는 경우, `-` 버튼으로 설정 창에서 `RustDesk`를 제거한 다음, `+` 버튼을 클릭하고 `Applications`에서 `RustDesk`를 선택하세요.
|
||||
|
||||
{{% notice note %}}
|
||||
[https://github.com/rustdesk/rustdesk/issues/3261](https://github.com/rustdesk/rustdesk/issues/3261) <br>
|
||||
기타 무력한 시도: <br>
|
||||
`tccutil reset ScreenCapture com.carriez.RustDesk` <br>
|
||||
`tccutil reset Accessibility com.carriez.RustDesk` <br>
|
||||
재부팅이 여전히 필요합니다.
|
||||
{{% /notice %}}
|
||||
|
||||
| `-` 및 `+` 버튼 | `RustDesk` 선택 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
**화면 녹화** 권한에 대한 위의 단계를 복사해 주세요.
|
||||
|
||||

|
||||
@@ -0,0 +1,105 @@
|
||||
---
|
||||
title: MSI
|
||||
weight: 49
|
||||
description: "Windows에서 MSI 패키지와 명령줄 매개변수를 사용해 RustDesk를 설치하기. msiexec를 통해 설치 폴더, 바로가기, 프린터 지원 및 업그레이드 옵션을 설정하는 방법을 알아보세요."
|
||||
keywords: ["rustdesk msi", "rustdesk silent install", "rustdesk msiexec", "rustdesk windows msi", "rustdesk installfolder", "rustdesk printer install"]
|
||||
---
|
||||
|
||||
`msiexec` 및 설치 매개변수를 사용하여 Windows의 무음 배포가 필요한 경우 RustDesk MSI 패키지를 사용하십시오.
|
||||
|
||||
MSI 패키지는 무음 설치를 위한 명령줄 매개변수를 지원합니다.
|
||||
|
||||
## MSI 패키지를 언제 사용해야 하나요?
|
||||
|
||||
`msiexec`, 관리형 패키징 도구 또는 무음 설치 워크플로우를 통해 표준 Windows 소프트웨어 배포가 필요한 경우 MSI 패키지를 사용하십시오. 이미 MSI 기반 롤아웃 및 업그레이드 프로세스를 사용하고 있는 기업 환경에 가장 적합합니다.
|
||||
|
||||
## MSI 빠른 답변
|
||||
|
||||
- MSI는 Windows의 무음 배포에 최적입니다.
|
||||
- 매개변수를 통해 설치 경로, 바로가기 동작 및 프린터 설치를 설정할 수 있습니다.
|
||||
- 업그레이드 시 이전 설치 설정을 재사용할 수 있습니다.
|
||||
- `2024-08-05` 이전 버전은 무음 설치 및 복구 문제를 겪을 수 있습니다.
|
||||
- 상세한 설치 로그가 필요한 경우 `/l*v install.log`를 사용하십시오.
|
||||
|
||||
## 매개변수
|
||||
|
||||
## INSTALLFOLDER
|
||||
|
||||
설치 폴더입니다.
|
||||
|
||||
**기본값**: `[ProgramFiles6432Folder]\[app name]`, 보통 `C:\Program Files\[app name]`입니다.
|
||||
|
||||
## CREATESTARTMENUSHORTCUTS
|
||||
|
||||
시작 메뉴 바로가기를 생성할지 여부입니다.
|
||||
|
||||
**기본값**:
|
||||
1. 설치하기. 기본값은 `1`입니다.
|
||||
2. 업그레이드. 마지막으로 설치된 옵션을 기본값으로 합니다.
|
||||
|
||||
| 번호 | 값 | 설명 |
|
||||
| :---: | :---: | :---: |
|
||||
| 1 | `1` | 예 |
|
||||
| 2 | `0` | 아니요 |
|
||||
| 3 | `Y` | 예, `1`와 동일 |
|
||||
| 4 | `N` | 아니요, `0`와 동일 |
|
||||
|
||||
## CREATEDESKTOPSHORTCUTS
|
||||
|
||||
데스크톱 바로가기를 생성할지 여부입니다.
|
||||
|
||||
**기본값**:
|
||||
1. 설치하기. 기본값은 `1`입니다.
|
||||
2. 업그레이드. 기본값은 마지막으로 설치된 옵션입니다.
|
||||
|
||||
| 번호 | 값 | 설명 |
|
||||
| :---: | :---: | :---: |
|
||||
| 1 | `1` | 예 |
|
||||
| 2 | `0` | 아니요 |
|
||||
| 3 | `Y` | 예, `1`와 동일 |
|
||||
| 4 | `N` | 아니요, `0`와 동일 |
|
||||
|
||||
## 설치프린터
|
||||
|
||||
프린터를 설치할지 여부입니다. 프린터는 제어되는 측의 인쇄 작업을 로컬에서 실행하는 데 사용됩니다.
|
||||
|
||||
버전 `1.3.9`부터.
|
||||
|
||||
**기본값**:
|
||||
1. 설치하기. 기본값은 `1`입니다.
|
||||
2. 업그레이드하기. 기본값은 마지막으로 설치된 옵션입니다.
|
||||
|
||||
| 번호 | 값 | 설명 |
|
||||
| :---: | :---: | :---: |
|
||||
| 1 | `1` | 예 |
|
||||
| 2 | `0` | 아니요 |
|
||||
| 3 | `Y` | 예, `1`와 동일 |
|
||||
| 4 | `N` | 아니요, `0`와 동일 |
|
||||
|
||||
# 예제
|
||||
|
||||
**주의**: `2024-08-05` 이전 버전의 경우, 무인 설치 및 무인 복구에 문제가 있습니다. 먼저 설치 제거한 후 설치해 주세요.
|
||||
|
||||
## 설치 매개변수를 사용한 설치
|
||||
|
||||
무인 설치, 설치 경로 설정, 데스크탑 바로가기 생성 안 함, 시작 메뉴 바로가기 생성.
|
||||
|
||||
```
|
||||
msiexec /i RustDesk-1.msi /qn INSTALLFOLDER="D:\Program Files\RustDesk" CREATESTARTMENUSHORTCUTS="Y" CREATEDESKTOPSHORTCUTS="N" INSTALLPRINTER="N" /l*v install.log
|
||||
```
|
||||
|
||||
**노트**: `/l*v install.log`는 실행 로그를 `install.log`에 출력하는 것을 의미합니다.
|
||||
|
||||
## 매개변수 없이 업그레이드
|
||||
|
||||
이전 설치 경로와 설치 옵션을 사용하여 업그레이드하십시오.
|
||||
|
||||
```
|
||||
msiexec /i RustDesk-2.msi /qn /l*v install.log
|
||||
```
|
||||
|
||||
## 업그레이드, 설치 옵션 수정
|
||||
|
||||
```
|
||||
msiexec /i RustDesk-1.msi /qn INSTALLFOLDER="C:\Program Files\RustDesk" CREATESTARTMENUSHORTCUTS="N" CREATEDESKTOPSHORTCUTS="N" INSTALLPRINTER="N" /l*v install.log
|
||||
```
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: Windows
|
||||
description: "Windows에 RustDesk를 설치하고 배포하세요. Windows 클라이언트 설정 안내, MSI 패키징, 무인 설치 옵션 및 휴대용 권한 상승 문서를 확인하세요."
|
||||
keywords: ["rustdesk windows", "rustdesk windows install", "rustdesk msi", "rustdesk silent install", "rustdesk portable elevation", "rustdesk windows deployment"]
|
||||
weight: 4
|
||||
---
|
||||
|
||||
이 Windows 가이드를 사용하여 RustDesk를 설치하고, Windows 클라이언트를 패키지화하거나 배포하며, 관리되는 환경에서 MSI 또는 휴대용 권한 상승 워크플로우를 처리하십시오.
|
||||
|
||||
## 어떤 Windows 가이드를 선택해야 하나요?
|
||||
|
||||
| 필요 | 최고의 가이드 |
|
||||
| --- | --- |
|
||||
| 표준 Windows 클라이언트 설치 | [Windows client overview](/docs/ko/client/windows/) |
|
||||
| 관리형 배포, 무인 설치 또는 패키징 | [MSI](/docs/ko/client/windows/msi/) |
|
||||
| 권한 상승 지원 포함 휴대용 모드 | [Windows Portable Elevation](/docs/ko/client/windows/windows-portable-elevation/) |
|
||||
|
||||
## Windows 빠른 답변
|
||||
|
||||
- 대부분의 최종 사용자는 표준 설치 프로그램을 사용하십시오.
|
||||
- 기업용 롤아웃 및 스크립트화된 배포에는 MSI 가이드를 사용하십시오.
|
||||
- 휴대용 모드에서 관리자 프롬프트가 필요한 경우 휴대용 권한 상승을 사용하십시오.
|
||||
- 자체 호스팅하는 경우, 이러한 가이드와 [Client Deployment](/docs/ko/self-host/client-deployment/)를 결합하여 서버 측 롤아웃 설정을 구성하십시오.
|
||||
|
||||
{{% children depth="3" showhidden="true" %}}
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: Windows 휴대용 권한 상승
|
||||
weight: 49
|
||||
description: "Windows에서 RustDesk 휴대용 앱을 권한 상승하여 원격 세션에서 UAC 프롬프트, 작업 관리자 및 기타 관리자 수준의 창을 처리할 수 있도록 하세요. 시작 시 권한 상승, 제어된 종료 시 권한 상승 및 요청된 권한 상승을 비교하세요."
|
||||
keywords: ["rustdesk portable elevation", "rustdesk uac", "rustdesk windows admin rights", "rustdesk task manager mouse issue", "rustdesk request elevation"]
|
||||
---
|
||||
|
||||
RustDesk 포터블 클라이언트가 UAC 프롬프트, 권한 상승된 앱 및 전체 입력 제어를 처리하기 위해 관리자 권한이 필요할 때 Windows에서 휴대용 권한 상승을 사용하십시오.
|
||||
|
||||
Windows 휴대용 프로그램에는 관리자 권한이 없으므로 다음과 같은 문제가 발생할 수 있습니다:
|
||||
|
||||
- UAC(사용자 계정 컨트롤) 창이 뜨면 화면 전송이 불가능합니다.
|
||||
- 작업 관리자와 같은 권한 상승된 창이 뜨면 마우스가 반응하지 않습니다.
|
||||
|
||||
권한 상승을 통해 RustDesk는 시작 시 또는 세션 중에 관리자 권한을 가진 프로세스를 생성하여 스크린샷 캡처 및 마우스 조작을 수행할 수 있으므로 위와 같은 문제를 피할 수 있습니다.
|
||||
|
||||
## 언제 휴대용 권한 상승이 필요한가요?
|
||||
|
||||
RustDesk 포터블 클라이언트가 Windows에서 관리자 수준의 UI와 상호작용해야 할 때 휴대용 권한 상승이 필요합니다. 가장 흔한 징후는 차단된 UAC 프롬프트, 권한 상승 대화 중 화면 전송이 안 되는 경우, 또는 작업 관리자와 같은 권한 상승된 창에서 마우스 제어가 안 되는 경우입니다.
|
||||
|
||||
## 휴대용 권한 상승에 대한 간단한 답변
|
||||
|
||||
- 휴대용 빌드가 관리자 수준의 Windows UI와 상호작용해야 할 때만 권한 상승이 필요합니다.
|
||||
- 아무도 제어 측에 있지 않을 때는 시작 시 권한 상승이 가장 좋습니다.
|
||||
- 사용자가 `Accept and Elevate`을 클릭할 수 있을 때는 제어 측에서 권한 상승을 요청하는 것이 가장 좋습니다.
|
||||
- 제어 측에서 요청한 권한 상승은 여전히 제어 측에서 UAC 프롬프트를 수락해야 합니다.
|
||||
- 특별히 휴대용 워크플로우가 필요하지 않을 때는 전체 프로그램을 설치하는 것이 더 나은 선택입니다.
|
||||
|
||||
## 시작 시 권한 상승
|
||||
|
||||
이렇게 하면 원격 사용자가 연결할 때 권한 상승 요청을 할 필요가 없습니다. 두 가지 방법이 있습니다:
|
||||
|
||||
* 방법 1: 휴대용 프로그램의 이름을 `-qs-` 또는 `-qs.exe` 또는 `_qs.exe`(>= 1.4.6)로 변경하거나, `qs.exe`(1.2.0 ~ 1.4.5)로 끝나게 하세요. 왼쪽 마우스 버튼을 클릭하여 실행하고, UAC 창에서 `Accept`를 클릭하세요.
|
||||
|
||||
* 방법 2: 마우스 오른쪽 버튼을 클릭하고 관리자 권한으로 실행하세요.
|
||||
|
||||
## 제어되는 쪽에서 권한 상승
|
||||
|
||||
제어되는 쪽에서는 연결 시 `Accept and Elevate`를 바로 클릭하거나 이미 연결된 경우 `Elevate`를 클릭할 수 있습니다.
|
||||
|
||||
| 연결 중 | 연결됨 |
|
||||
| :---: | :---: |
|
||||
|  |  |
|
||||
|
||||
## 제어 측에서 권한 상승 요청
|
||||
|
||||
동작 메뉴에서 `Request Elevation`를 선택하면 다음 대화상자가 표시됩니다. `Ask the remote user for authentication`를 선택하면 사용자 이름과 비밀번호를 입력할 필요가 없지만, 원격 컴퓨터의 사용자는 관리자 권한을 가져야 합니다. `Transmit the username and password of administrator`를 선택하면 원격 컴퓨터의 사용자는 UAC 창에서 수락하기만 하면 됩니다. 요청을 보낸 후, 상대방 사용자가 UAC 창을 수락하도록 기다려 주세요. 확인되면 성공 메시지가 표시됩니다. **두 방법 모두 제어 측에서 누군가 UAC 창을 수락해야 합니다**. 따라서 상대방에 사람이 없을 경우, 제어 측에서 권한 상승을 요청해서는 안 됩니다.
|
||||
|
||||
| 메뉴 | 대화 |
|
||||
| :---: | :---: |
|
||||
|  |  |
|
||||
| **대기** | **성공** |
|
||||
|  |  |
|
||||
|
||||
## 선택 방법
|
||||
|
||||
| 시나리오 | 방법 |
|
||||
| :---: | :---: |
|
||||
| 권한 상승 요청 필요 없음 | 프로그램 설치하기 |
|
||||
| 제어되는 쪽에 사용자가 없음 | 이름 바꾸기<br/>*또는*<br/> 관리자로 실행 |
|
||||
| 제어되는 쪽에 사용자가 있음<br/>*및*<br/> 연결 시 즉시 권한 상승<br/>*및*<br/> 클릭을 통한 연결 수락 | 제어되는 쪽에서 연결을 받을 때 `Accept and Elevate`을 클릭하세요 |
|
||||
| 제어되는 쪽에 사용자가 있음<br/>*및*<br/> 필요에 따라 권한 상승 | 제어되는 쪽의 연결 관리 창에서 `Elevate`을 클릭하세요<br/>*또는*<br/> 제어하는 쪽에서 권한 상승 요청 |
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: 개발
|
||||
description: "RustDesk 기여자용 개발 가이드입니다. Linux, Windows, macOS에서 RustDesk를 빌드하는 방법을 배우고, 프로젝트에 대한 기여자 중심의 문서를 찾아보세요."
|
||||
keywords: ["rustdesk development", "build rustdesk", "rustdesk contributor docs", "rustdesk linux build", "rustdesk windows build", "rustdesk macos build"]
|
||||
weight: 8
|
||||
pre: "<b>3. </b>"
|
||||
chapter: true
|
||||
---
|
||||
|
||||
소스에서 RustDesk를 빌드하거나, 기여자 워크플로우를 이해하거나, 플랫폼별 빌드 문제를 해결하고자 할 때 이 개발 가이드를 사용하십시오.
|
||||
|
||||
## 어떤 개발 가이드를 선택해야 하나요?
|
||||
|
||||
| 필요 | 최고의 가이드 |
|
||||
| --- | --- |
|
||||
| 전체 기여자 빌드 문서에서 시작하기 | [Build](/docs/ko/dev/build/) |
|
||||
| Linux에서 데스크톱 앱 빌드하기 | [Linux build](/docs/ko/dev/build/linux/) |
|
||||
| Windows에서 데스크톱 앱 빌드하기 | [Windows build](/docs/ko/dev/build/windows/) |
|
||||
| macOS에서 데스크톱 앱 빌드하기 | [macOS build](/docs/ko/dev/build/osx/) |
|
||||
| 일반적인 Windows 빌드 문제 해결하기 | [FAQ for Windows](/docs/ko/dev/build/faq/) |
|
||||
|
||||
{{% children depth="3" showhidden="true" %}}
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: 빌드
|
||||
weight: 1
|
||||
description: "소스에서 RustDesk를 빌드하고 패키지하십시오. 지원되는 데스크톱 플랫폼 전반에 걸친 기여자 지향 빌드 안내는 여기에서 시작하십시오."
|
||||
keywords: ["build rustdesk", "rustdesk source build", "rustdesk packaging", "rustdesk contributor build guide"]
|
||||
---
|
||||
|
||||
설치
|
||||
플랫폼
|
||||
버전
|
||||
|
||||
이 빌드 가이드는 데스크톱 플랫폼용 RustDesk를 소스에서 컴파일하거나 패키징하려는 경우에 사용하세요. 데스크톱 버전의 패키징은 [build.py](https://github.com/rustdesk/rustdesk/blob/master/build.py)를 확인해주세요.
|
||||
|
||||
## 빌드 섹션에서는 무엇을 다루나요?
|
||||
|
||||
빌드 섹션에서는 Linux, Windows 및 macOS용 데스크톱 기여자 설정을 다룹니다. 플랫폼별 가이드를 이용해 의존성 설치, `vcpkg` 설정, Rust 툴체인 준비 및 최종 빌드 또는 패키징 명령을 수행하세요.
|
||||
|
||||
## 어떤 빌드 가이드를 선택해야 하나요?
|
||||
|
||||
| 플랫폼 | 가이드 |
|
||||
| --- | --- |
|
||||
| Linux | [Linux](/docs/ko/dev/build/linux/) |
|
||||
| Windows | [Windows](/docs/ko/dev/build/windows/) |
|
||||
| macOS | [macOS](/docs/ko/dev/build/osx/) |
|
||||
| Windows 문제 해결 | [FAQ for Windows](/docs/ko/dev/build/faq/) |
|
||||
|
||||
{{% children depth="3" showhidden="true" %}}
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: Windows용 FAQ
|
||||
weight: 40
|
||||
description: "Windows에서 흔히 발생하는 RustDesk 빌드 문제를 해결하세요. 여기에는 vcpkg 다운로드 실패, 누락된 Cargo.lock 패키지, VCPKG_ROOT 구성 및 LIBCLANG_PATH 설정이 포함됩니다."
|
||||
keywords: ["rustdesk build faq windows", "rustdesk vcpkg error", "rustdesk cargo lock error", "rustdesk libclang path", "rustdesk windows build troubleshooting"]
|
||||
---
|
||||
|
||||
이 FAQ를 사용하여 RustDesk의 일반적인 Windows 빌드 오류, 특히 `vcpkg`, Rust 종속성 및 `clang` 구성과 관련된 오류를 해결하십시오.
|
||||
|
||||
## 이 Windows 빌드 FAQ는 언제 사용해야 하나요?
|
||||
|
||||
Windows 빌드 환경이 이미 설정된 후에도 `cargo run`, `vcpkg` 또는 `bindgen`가 여전히 실패하는 경우 이 페이지를 사용하십시오. RustDesk 빌드 과정에서 가장 일반적인 Windows 측 종속성 및 환경 변수 오류를 다룹니다.
|
||||
|
||||
## vcpkg 패키지 다운로드 실패
|
||||
|
||||
### 오류
|
||||
|
||||
```
|
||||
-- Fetching https://chromium.googlesource.com/libyuv/libyuv 287158925b0e03ea4499a18b4e08478c5781541b...
|
||||
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:127 (message):
|
||||
Command failed: D:/program/Git/mingw64/bin/git.exe fetch https://chromium.googlesource.com/libyuv/libyuv 287158925b0e03ea4499a18b4e08478c5781541b --depth 1 -n
|
||||
```
|
||||
|
||||
### 해결 방법
|
||||
|
||||
브라우저를 사용해 [libyuv-287158925b0e03ea4499a18b4e08478c5781541b.tar.gz](https://chromium.googlesource.com/libyuv/libyuv/+archive/287158925b0e03ea4499a18b4e08478c5781541b.tar.gz)를 다운로드한 다음, 이를 `vcpkg/downloads`로 이동하고 다시 설치하십시오.
|
||||
|
||||
## Cargo.lock 패키지가 존재하지 않습니다
|
||||
|
||||
### 오류
|
||||
|
||||
```
|
||||
$ cargo run
|
||||
Updating git repository `https://github.com/open-trade/confy`
|
||||
warning: spurious network error (2 tries remaining): failed to receive response: Operation Timeout
|
||||
; class=Os (2)
|
||||
error: failed to get `confy` as a dependency of package `hbb_common v0.1.0 (D:\rustdesk\rustdesk\rustdesk\libs\hbb_common)`
|
||||
|
||||
Caused by:
|
||||
failed to load source for dependency `confy`
|
||||
|
||||
Caused by:
|
||||
Unable to update https://github.com/open-trade/confy#27fa1294
|
||||
|
||||
Caused by:
|
||||
object not found - no match for id (27fa12941291b44ccd856aef4a5452c1eb646047); class=Odb (9); code=NotFound (-3)
|
||||
```
|
||||
|
||||
아마도 작성자가 `git force push`를 사용했고 이전 커밋이 덮어쓰였을 것입니다.
|
||||
|
||||
### 해결 방법
|
||||
|
||||
`cargo update`로 패키지를 강제로 업데이트하십시오.
|
||||
|
||||
## VCPKG_ROOT가 설정되지 않았습니다
|
||||
|
||||
### 오류
|
||||
|
||||
```
|
||||
thread 'main' panicked at 'Failed to find package: VcpkgNotFound("No vcpkg installation found. Set the VCPKG_ROOT environment variable or run 'vcpkg integrate install'")', libs\scrap\build.rs:7:45
|
||||
```
|
||||
|
||||
### 해결 방법
|
||||
|
||||
`VCPKG_ROOT` 환경 변수를 추가하거나 `VCPKG_ROOT=<vcpkg_dir> cargo run`로 실행하십시오.
|
||||
|
||||
## clang이 설치되지 않았거나 LIBCLANG_PATH가 설정되지 않았습니다
|
||||
|
||||
### 오류
|
||||
|
||||
```
|
||||
thread 'main' panicked at 'Unable to find libclang: "couldn't find any valid shared libraries matching: ['clang.dll', 'libclang.dll'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"', C:\Users\selfd\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\bindgen-0.59.2\src/lib.rs:2144:31
|
||||
```
|
||||
|
||||
### 해결 방법
|
||||
|
||||
[LLVM](https://releases.llvm.org/download.html)를 설치하고, `LIBCLANG_PATH` 환경 변수를 `llvm_install_dir/bin`로 추가하세요.
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: Linux
|
||||
weight: 10
|
||||
description: "필요한 시스템 패키지, vcpkg 종속성 및 Rust 툴체인을 사용해 Linux에서 RustDesk를 빌드하십시오. cargo를 실행하기 전에 Ubuntu, Fedora 또는 Arch 기반 설정 단계를 따르십시오."
|
||||
keywords: ["build rustdesk linux", "rustdesk linux build", "rustdesk vcpkg linux", "rustdesk cargo run linux", "rustdesk ubuntu build"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 Linux에서 RustDesk를 빌드하고, 필요한 패키지를 설치하고, `vcpkg`를 준비한 다음 소스에서 데스크톱 앱을 컴파일하십시오.
|
||||
|
||||
## Linux에서 빌드하기 전에 무엇이 필요합니까?
|
||||
|
||||
Linux에서 RustDesk를 빌드하려면 배포판의 시스템 개발 패키지와 작동하는 `vcpkg` 설정, `rustup`를 통해 설치된 Rust, 그리고 `cargo`를 실행하기 전에 빌드 출력 디렉터리에 배치된 Sciter 공유 라이브러리가 필요합니다.
|
||||
|
||||
## Linux 빌드 체크리스트
|
||||
|
||||
- 배포판에 맞는 컴파일러와 데스크톱 종속성을 설치하세요.
|
||||
- `vcpkg`를 클론하고 부트스트랩한 다음, `VCPKG_ROOT`를 내보내세요.
|
||||
- `rustup`로 Rust를 설치하고 cargo 환경을 로드하세요.
|
||||
- 하위 모듈과 함께 RustDesk 리포지토리를 클론하세요.
|
||||
- `libsciter-gtk.so`를 `target/debug`로 다운로드하세요.
|
||||
- 프로젝트 루트에서 `cargo run`를 실행하세요.
|
||||
|
||||
## Linux에서 빌드하는 방법
|
||||
|
||||
### Ubuntu 18 (Debian 10)
|
||||
|
||||
```sh
|
||||
sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake
|
||||
```
|
||||
|
||||
### Fedora 28 (CentOS 8)
|
||||
|
||||
```sh
|
||||
sudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel
|
||||
```
|
||||
|
||||
### Arch Linux (Manjaro)
|
||||
|
||||
```sh
|
||||
sudo pacman -Syu --needed unzip git cmake gcc curl wget yasm nasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pulseaudio
|
||||
```
|
||||
|
||||
### vcpkg 설치하기
|
||||
|
||||
```sh
|
||||
git clone --recurse-submodules https://github.com/microsoft/vcpkg
|
||||
cd vcpkg
|
||||
git checkout 2023.10.19
|
||||
cd ..
|
||||
vcpkg/bootstrap-vcpkg.sh
|
||||
export VCPKG_ROOT=$PWD/vcpkg
|
||||
vcpkg/vcpkg install --x-install-root="$VCPKG_ROOT/installed"
|
||||
```
|
||||
|
||||
### libvpx 수정(Fedora용)
|
||||
|
||||
```sh
|
||||
cd vcpkg/buildtrees/libvpx/src
|
||||
cd *
|
||||
./configure
|
||||
sed -i 's/CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefile
|
||||
sed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefile
|
||||
make
|
||||
cp libvpx.a $VCPKG_ROOT/installed/x64-linux/lib/
|
||||
cd
|
||||
```
|
||||
|
||||
### 빌드
|
||||
|
||||
```sh
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
source $HOME/.cargo/env
|
||||
git clone --recurse-submodules https://github.com/rustdesk/rustdesk
|
||||
cd rustdesk
|
||||
mkdir -p target/debug
|
||||
wget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so
|
||||
mv libsciter-gtk.so target/debug
|
||||
# Note: VCPKG_ROOT still set
|
||||
cargo run
|
||||
```
|
||||
@@ -0,0 +1,153 @@
|
||||
---
|
||||
title: macOS
|
||||
weight: 21
|
||||
description: "Homebrew, vcpkg, Rust 및 Sciter 또는 Flutter를 사용하여 macOS에서 RustDesk를 빌드하십시오. 이 안내서는 데스크톱 빌드를 위한 툴체인 설정, 종속성 및 패키징 흐름을 다룹니다."
|
||||
keywords: ["build rustdesk macos", "rustdesk mac build", "rustdesk sciter mac", "rustdesk flutter macos build", "rustdesk vcpkg macos"]
|
||||
---
|
||||
|
||||
이 가이드를 사용하여 `Xcode`, `Homebrew`, `vcpkg`, Rust 및 Sciter 또는 Flutter 데스크톱 스택을 사용하여 macOS에서 RustDesk를 빌드하십시오.
|
||||
|
||||
이를 수행하는 방법은 여러 가지가 있으며, 이 안내서에서는 `Xcode`, `Git` 및 `Homebrew`가 이미 설치되어 있다고 가정합니다.
|
||||
|
||||
## 어떤 macOS 빌드 경로를 사용해야 하나요?
|
||||
|
||||
| 필요 | 최적의 경로 |
|
||||
| --- | --- |
|
||||
| 전통적인 데스크톱 UI 구축 | Sciter |
|
||||
| 더 새로운 데스크톱 스택 구축 | Flutter |
|
||||
| 공유 네이티브 종속성 준비 | Homebrew + `vcpkg` + Rust |
|
||||
|
||||
## macOS 빌드 체크리스트
|
||||
|
||||
- `Xcode`, `Git` 및 `Homebrew`가 이미 설치되었는지 확인하세요.
|
||||
- Homebrew에서 필요한 패키지를 설치하세요.
|
||||
- `vcpkg`를 복제하고 부트스트랩한 다음, `VCPKG_ROOT`를 내보내세요.
|
||||
- `rustup`를 사용해 Rust를 설치하고 구성하세요.
|
||||
- RustDesk 소스 저장소와 하위 모듈을 복제하세요.
|
||||
- 빌드하기 전에 Sciter 런타임 또는 Flutter 툴체인을 추가하세요.
|
||||
|
||||
가장 큰 도전 과제는 아마도 모든 도구의 버전을 서로 호환되도록 찾는 것일 것입니다. 특히 Xcode와 LLVM과 같은 툴체인의 일부는 macOS 버전에 따라 결정되기 때문입니다. 이 안내서에서 사용된 버전이 실제로 여러분이 사용해야 할 버전은 아닐 수 있습니다. 어떤 버전을 사용할지 파악하기 위한 시작점은 [GitHub build workflow](https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/flutter-build.yml)에서 빌드하고자 하는 RustDesk 버전을 확인하는 것입니다. 페이지 왼쪽 상단에서 해당 태그를 선택하여 파일을 확인하세요. 하지만 이것이 반드시 통용되는 것은 아닙니다. GitHub 러너와 함께 제공되는 macOS 도구가 로컬 시스템의 도구와 동일한 버전이 아닐 수도 있기 때문입니다.
|
||||
|
||||
### 내보내기
|
||||
`export`는 다양한 환경 변수를 설정하는 데 사용됩니다. `export`를 실행하면 해당 변수가 현재 터미널 세션에만 설정되며, 따라서 지금 또는 앞으로 RustDesk를 빌드하는 데 사용하고자 하는 모든 새 터미널 창에서 이 변수를 다시 설정해야 합니다. 일반적으로 모든 `export`를 열리는 각 터미널마다 자동으로 실행되는 스크립트에 추가하는 것이 바람직합니다(예: `~/.bash_profile`). 여기에 나열된 전체 `export` 명령어를 파일에 간단히 추가할 수 있지만, 해당 파일은 *새로운* 터미널이 열릴 때까지 읽히지 않으므로 현재 터미널에서도 반드시 실행해야 합니다.
|
||||
|
||||
## Homebrew에서 사용할 도구를 설치하기
|
||||
|
||||
```sh
|
||||
brew install python3 create-dmg nasm cmake gcc wget ninja pkg-config wget rustup
|
||||
```
|
||||
|
||||
일부 설치가 실패할 수 있습니다. 이는 대상 폴더 중 일부가 시스템에 존재하지 않기 때문입니다. 이 경우 폴더를 생성하고 소유자와 권한을 설정한 다음 `brew` 명령을 다시 실행하세요. 예를 들어 `/usr/local/include`가 존재하지 않는 경우:
|
||||
|
||||
```sh
|
||||
sudo mkdir /usr/local/include
|
||||
sudo chown <username>:admin /usr/local/include
|
||||
sudo chmod 775 /usr/local/include
|
||||
```
|
||||
|
||||
## vcpkg 설치
|
||||
Vcpkg는 RustDesk에서 사용하는 C/C++ 종속성을 관리하는 데 사용됩니다. 설치를 원하는 위치를 결정하고, `vcpkg` 폴더가 저장되기를 원하는 폴더에서 다음 명령을 실행하십시오. 이 예제에서는 `/Users/<username>/repos/`를 위치로 사용하고, 태그 `2023.04.15`를 버전으로 사용합니다.
|
||||
|
||||
```sh
|
||||
git clone https://github.com/microsoft/vcpkg
|
||||
cd vcpkg
|
||||
git checkout 2023.04.15
|
||||
./bootstrap-vcpkg.sh -disableMetrics
|
||||
./vcpkg install libvpx libyuv opus aom
|
||||
export VCPKG_ROOT=~/repos/vcpkg
|
||||
```
|
||||
|
||||
## Rust 설치 및 구성
|
||||
우리는 이미 Homebrew를 사용해 위에서 설치한 Rust를 관리하기 위해 `rustup`를 사용합니다. 하지만 여전히 구성해야 합니다. 지침을 따르고 `rustup`와 `rustc`가 모두 `PATH`에 있는지 확인하세요. 이 예에서는 Rust 버전 `1.75.0`를 사용하지만, 다른 버전을 사용해야 할 수도 있습니다. `rustup`를 통해 여러 버전의 Rust를 설치하고 관리할 수 있습니다.
|
||||
|
||||
```sh
|
||||
rustup-init
|
||||
rustup default 1.75.0
|
||||
rustup component add rustfmt
|
||||
```
|
||||
|
||||
설치된 및 기본 Rust 도구 체인에 대한 개요를 보려면 `rustup show`를 실행하세요.
|
||||
|
||||
## RustDesk 소스 파일 다운로드하기
|
||||
|
||||
RustDesk 소스 파일을 저장할 위치를 결정하고, `rustdesk` 폴더가 저장될 폴더에서 다음 명령을 실행하세요. 이 예제에서는 `/Users/<username>/repos/`를 저장 위치로 사용합니다.
|
||||
|
||||
```sh
|
||||
git clone --recurse-submodules https://github.com/rustdesk/rustdesk
|
||||
cd rustdesk/libs/portable/
|
||||
python3 -m pip install --upgrade pip
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
`python3` 또는 `pip`가 알려지지 않은 경우, 다음과 같이 `PATH`에 추가하세요(실제 폴더 이름을 사용하십시오):
|
||||
|
||||
```sh
|
||||
export PATH=~/Library/Python/3.9/bin:$PATH
|
||||
```
|
||||
|
||||
이 작업이 완료되면 실패한 명령어를 다시 실행하세요. 또한 `~/.bash_profile`를 편집하는 것도 잊지 마세요.
|
||||
|
||||
## 사용자 인터페이스 구성 요소 설치
|
||||
RustDesk는 [Sciter](https://sciter.com/)와 [Flutter](https://flutter.dev/)를 모두 사용해 빌드할 수 있습니다. 이 두 가지 모두 추가적인 구성 요소가 필요하므로 해당 버전 또는 두 가지 모두에 대한 단계를 따르세요.
|
||||
|
||||
### Sciter
|
||||
|
||||
`rustdesk` 폴더에서 다음을 실행하세요:
|
||||
|
||||
```sh
|
||||
wget https://github.com/c-smile/sciter-sdk/raw/master/bin.osx/libsciter.dylib
|
||||
```
|
||||
|
||||
### Flutter
|
||||
|
||||
[FVM](https://fvm.app/)를 사용하면 어떤 버전의 Flutter를 사용할지 관리할 수 있으며, 다양한 Flutter 버전을 쉽게 시도해 볼 수 있는 가장 쉬운 방법일 것입니다.
|
||||
|
||||
```sh
|
||||
brew tap leoafarias/fvm
|
||||
brew install fvm cocoapods
|
||||
```
|
||||
|
||||
예를 들어 Flutter `3.16.9`를 설치하고 사용하려면:
|
||||
|
||||
```sh
|
||||
fvm global 3.16.9
|
||||
```
|
||||
|
||||
FVM은 서로 다른 프로젝트에 서로 다른 Flutter 버전을 제공할 수 있는 보다 복잡한 설정을 사용하도록 설계되었지만, 이 안내서의 범위를 넘어서는 내용입니다. 대신, FVM에서 제공하는 기본 Flutter의 위치를 수동으로 `PATH`에 추가하세요. 즉, Flutter 버전을 전환하려면 `fvm global`를 사용해야 합니다:
|
||||
|
||||
```sh
|
||||
export PATH=$HOME/fvm/default/bin:$PATH
|
||||
```
|
||||
|
||||
이 작업이 완료되면 원격 측정 기능을 비활성화하고 모든 것이 정상인지 확인해야 합니다:
|
||||
|
||||
```sh
|
||||
flutter --disable-analytics
|
||||
dart --disable-analytics
|
||||
flutter doctor -v
|
||||
```
|
||||
|
||||
일부 검사가 실패해도 상관없습니다. 보통 그러한 일이 발생하곤 하죠. 중요한 것은 사용하려는 환경에 대한 검사가 정상이라는 것입니다. 즉, `Xcode`입니다. 문제가 보고되면 다음으로 진행하기 전에 이를 해결하세요.
|
||||
|
||||
Flutter가 설치되고 실행된 후에는 Rust와 Flutter를 연결하는 '브리지'를 설치할 차례입니다. 여기서는 다른 모든 것과 함께 잘 작동하는 버전 중 하나를 소개합니다. 이 예제에서는 `1.80.1`를 사용합니다:
|
||||
|
||||
```sh
|
||||
cargo install flutter_rust_bridge_codegen --version "1.80.1" --features "uuid"
|
||||
```
|
||||
|
||||
## 빌드
|
||||
|
||||
`rustdesk` 폴더에서 빌드하십시오. Sciter 버전을 빌드하려면:
|
||||
|
||||
```sh
|
||||
python3 ./build.py
|
||||
```
|
||||
|
||||
Flutter 버전을 빌드하려면:
|
||||
|
||||
```sh
|
||||
flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h
|
||||
python3 ./build.py --flutter
|
||||
```
|
||||
|
||||
모든 것이 잘 진행된다면, 이제 `rustdesk` 폴더에 설치할 준비가 된 `dmg` 파일이 있을 것입니다.
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
title: Windows
|
||||
weight: 20
|
||||
description: "Windows에서 MSVC, Rust, vcpkg, Sciter 및 LLVM을 사용해 RustDesk를 빌드하십시오. 이 가이드는 데스크톱 앱을 소스에서 컴파일하기 전에 필요한 툴체인 설정을 다룹니다."
|
||||
keywords: ["build rustdesk windows", "rustdesk windows build", "rustdesk vcpkg windows", "rustdesk sciter dll", "rustdesk llvm libclang"]
|
||||
---
|
||||
|
||||
이 가이드를 사용하여 먼저 MSVC 툴체인, Rust, `vcpkg`, Sciter 및 LLVM을 준비한 후 Windows에서 RustDesk를 빌드하십시오.
|
||||
|
||||
{{% notice note %}}
|
||||
여기 있는 명령줄 명령어는 명령 프롬프트가 아닌 Git Bash에서 실행해야 하며, 그렇지 않으면 구문 오류가 발생합니다.
|
||||
{{% /notice %}}
|
||||
|
||||
## Windows에서 빌드하기 전에 무엇이 필요합니까?
|
||||
|
||||
Windows에서 RustDesk를 빌드하려면 Visual Studio C++ 툴체인, Rust, `vcpkg`, `sciter.dll` 및 `LIBCLANG_PATH`가 구성된 LLVM이 필요합니다. 예제와 환경 변수 구문이 작성된 대로 작동하도록 Git Bash에서 셸 명령어를 실행하십시오.
|
||||
|
||||
## Windows 빌드 체크리스트
|
||||
|
||||
- C++ 작업 영역과 함께 Visual Studio를 설치하세요.
|
||||
- `rustup-init.exe`를 통해 Rust를 설치하세요.
|
||||
- `vcpkg`를 복제하고 부트스트랩한 다음, `VCPKG_ROOT`를 설정하세요.
|
||||
- 데스크톱 UI용 `sciter.dll`를 다운로드하세요.
|
||||
- LLVM을 설치하고 `LIBCLANG_PATH`를 그의 `bin` 디렉터리로 설정하세요.
|
||||
- RustDesk를 복제하고 Git Bash에서 기본 빌드 단계를 실행하세요.
|
||||
|
||||
## 종속성
|
||||
|
||||
### C++ 빌드 환경
|
||||
|
||||
[MSVC](https://visualstudio.microsoft.com/)를 다운로드하고 설치하세요.
|
||||
개발자용 머신 OS로 `Windows`를 선택하고 `C++`를 체크한 다음, Visual Studio Community 버전을 다운로드하여 설치하세요. 설치에 시간이 걸릴 수 있습니다.
|
||||
|
||||
### Rust 개발 환경
|
||||
|
||||
[rustup-init.exe](https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe)를 다운로드하고 관리자 권한으로 실행하여 `rust`를 설치하세요.
|
||||
|
||||
### vcpkg
|
||||
|
||||
복제하려는 폴더로 이동하여 [Git Bash](https://git-scm.com/download/win)를 사용해 다음 명령어를 실행하고, `vcpkg`를 다운로드한 후 64비트 버전의 `libvpx`, `libyuv` 및 `opus`를 설치하세요.
|
||||
`Git`가 설치되어 있지 않다면 `Git`와 [here](https://git-scm.com/download/win)를 받으세요.
|
||||
|
||||
```sh
|
||||
git clone https://github.com/microsoft/vcpkg
|
||||
vcpkg/bootstrap-vcpkg.bat
|
||||
export VCPKG_ROOT=$PWD/vcpkg
|
||||
vcpkg/vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static
|
||||
```
|
||||
|
||||
시스템 환경 변수 `VCPKG_ROOT`=`<path>\vcpkg`를 추가하세요. `<path>`는 위에서 선택한 `vcpkg`를 복제할 위치여야 합니다.
|
||||
|
||||

|
||||
|
||||
### Sciter
|
||||
|
||||
데스크톱 버전은 GUI용으로 [Sciter](https://sciter.com/)를 사용하므로, [sciter.dll](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll)를 다운로드해 주세요.
|
||||
|
||||
### LLVM
|
||||
|
||||
`rust-bindgen`는 `clang`에 의존하므로 [LLVM](https://github.com/llvm/llvm-project/releases)를 다운로드하고 설치한 다음, 시스템 환경 변수 `LIBCLANG_PATH`=`<llvm_install_dir>/bin`를 추가하세요.
|
||||
|
||||
LLVM 바이너리 버전 15.0.2는 여기에서 다운로드할 수 있습니다: [64 bit](https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.2/LLVM-15.0.2-win64.exe) / [32 bit](https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.2/LLVM-15.0.2-win32.exe).
|
||||
|
||||
## 빌드
|
||||
|
||||
### 기본
|
||||
|
||||
```sh
|
||||
git clone --recurse-submodules https://github.com/rustdesk/rustdesk
|
||||
cd rustdesk
|
||||
mkdir -p target/debug
|
||||
wget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll
|
||||
mv sciter.dll target/debug
|
||||
cargo run
|
||||
```
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: 셀프호스팅
|
||||
description: "자신만의 RustDesk 서버를 자체 호스팅하는 방법을 알아보세요. 안전한 원격 데스크톱 접속을 위한 RustDesk 서버 인프라의 설치, 구성 및 배포를 다룬 완벽한 가이드입니다."
|
||||
keywords: ["rustdesk self-host", "rustdesk server", "remote desktop server", "self-hosting guide", "rustdesk installation", "hbbs hbbr", "rustdesk pro server"]
|
||||
weight: 5
|
||||
pre: "<b>2. </b>"
|
||||
---
|
||||
|
||||
RustDesk를 셀프호스팅하면 자신의 ID와 릴레이 인프라를 제어하고, 관리하는 시스템에 배포 데이터를 유지하며, 네트워크 및 규정 준수 요구사항에 맞게 원격 접속을 최적화할 수 있습니다.
|
||||
|
||||
지원은 OSS용 [Discord](https://discord.com/invite/nDceKgxnkV) 및 Pro용 [email](mailto:support@rustdesk.com)를 통해 제공됩니다.
|
||||
|
||||
## 어떤 RustDesk 서버를 선택해야 하나요?
|
||||
|
||||
| 옵션 | 가장 적합한 사용자 | 제공되는 내용 |
|
||||
| --- | --- | --- |
|
||||
| [RustDesk Server OSS](/docs/ko/self-host/rustdesk-server-oss/) | 무료 오픈소스 셀프호스팅 백엔드를 원하는 개인 및 팀 | `hbbs` 및 `hbbr`, 커뮤니티 지원, 수동 배포 및 구성 |
|
||||
| [RustDesk Server Pro](/docs/ko/self-host/rustdesk-server-pro/) | 중앙 집중식 관리와 엔터프라이즈 기능이 필요한 기업 | 웹 콘솔, API, OIDC, LDAP, 2FA, 디바이스 관리, 접근 제어 및 멀티 릴레이 관리 |
|
||||
|
||||
## 자체 호스팅 서버는 어떻게 작동하나요?
|
||||
|
||||
기술적으로 두 개의 실행 파일(서버)이 있습니다:
|
||||
|
||||
- `hbbs` - RustDesk ID(랜드버스/신호) 서버, TCP(`21114` - Pro 전용 HTTP용, `21115`, `21116`, `21118` 웹소켓용) 및 UDP(`21116`)에서 수신 대기
|
||||
- `hbbr` - RustDesk 릴레이 서버, TCP(`21117`, `21119` 웹소켓용)에서 수신 대기
|
||||
|
||||
설치 스크립트 / Docker 컴포즈 / deb를 통해 설치할 경우, 두 서비스가 모두 설치됩니다.
|
||||
|
||||
다음은 [그림](https://github.com/rustdesk/rustdesk/wiki/How-does-RustDesk-work%3F)으로 RustDesk 클라이언트가 `hbbr` / `hbbs`와 어떻게 통신하는지 보여줍니다.
|
||||
|
||||
RustDesk가 컴퓨터에서 실행되는 한, 해당 컴퓨터는 지속적으로 ID 서버(`hbbs`)에 핑을 보내 현재 IP 주소와 포트를 알려줍니다.
|
||||
|
||||
컴퓨터 A에서 컴퓨터 B로 연결을 시작하면, 컴퓨터 A는 ID 서버에 접속해 컴퓨터 B와의 통신을 요청합니다.
|
||||
|
||||
이후 ID 서버는 홀 펀칭을 사용해 A와 B를 직접 연결하려고 시도합니다.
|
||||
|
||||
홀 펀칭이 실패하면 A는 릴레이 서버(`hbbr`)를 통해 B와 통신합니다.
|
||||
|
||||
대부분의 경우 홀 펀칭은 성공하며, 릴레이 서버는 전혀 사용되지 않습니다.
|
||||
|
||||
다음은 [Should you self-host a rustdesk server?](https://www.reddit.com/r/rustdesk/comments/1cr8kfv/should_you_selfhost_a_rustdesk_server/)에 대한 논의입니다.
|
||||
|
||||
## 필요 포트
|
||||
|
||||
RustDesk 서버 자체 호스팅에 필요한 포트는 주로 귀하의 환경과 RustDesk로 하고자 하는 작업에 따라 달라집니다. 문서 전반에 걸쳐 표시된 예제에서는 일반적으로 모든 포트가 열리는 것이 권장됩니다.
|
||||
|
||||
핵심 포트: \
|
||||
TCP `21114-21119` \
|
||||
UDP `21116`
|
||||
|
||||
위의 `21115-21117`는 RustDesk가 작동하는 데 필요한 최소한의 포트이며, 이들은 신호 및 릴레이 포트와 NAT 트래버스를 처리합니다.
|
||||
|
||||
TCP 포트 `21118` 및 `21119`는 [RustDesk Web Client](https://rustdesk.com/web/)의 웹소켓 포트이며, HTTPS를 지원하려면 역방향 프록시가 필요합니다. 이 [sample Nginx configuration](/docs/ko/self-host/rustdesk-server-pro/faq/#8-id-서버와-릴레이-서버에-websocket-secure-wss-지원을-추가하여-모든-플랫폼에서-안전한-통신을-가능하게-하십시오)를 참조하십시오.
|
||||
|
||||
SSL 프록시가 없는 Pro 사용자의 경우 API가 작동하려면 TCP 포트 `21114`를 열어야 하며, 대신 SSL 프록시를 사용하여 TCP 포트 `443`를 열어야 합니다.
|
||||
|
||||
{{% children depth="4" showhidden="true" %}}
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
title: 클라이언트 구성
|
||||
description: "셀프 호스팅 서버용 RustDesk 클라이언트를 구성하세요. 브랜드 앱에 로고를 포함한 사용자 지정 클라이언트(Custom Client) 생성기(Pro), 수동 구성, 설정 가져오기/내보내기 및 기업용 배포 전략과 같은 기능을 제공합니다."
|
||||
keywords: ["rustdesk client configuration", "custom client generator", "rustdesk branded client", "rustdesk white label", "rustdesk enterprise deployment", "rustdesk client setup", "custom rustdesk app", "rustdesk pro client", "rustdesk configuration management", "rustdesk corporate branding"]
|
||||
weight: 300
|
||||
pre: "<b>2.3. </b>"
|
||||
---
|
||||
|
||||
## 자체 호스팅 서버용 RustDesk 클라이언트를 구성하는 가장 좋은 방법은 무엇인가요?
|
||||
|
||||
최적의 구성 방법은 관리하는 디바이스 수와 RustDesk Server Pro를 사용하는지 여부에 따라 다릅니다. Pro 배포의 경우, 사용자 지정 클라이언트 생성기가 일반적으로 최선의 옵션입니다. 이는 서버 설정과 브랜딩을 미리 로드하기 때문입니다. 소규모 또는 오픈소스 배포의 경우, 수동 구성, 가져오기/내보내기 또는 스크립트 기반 배포가 일반적으로 더 빠릅니다.
|
||||
|
||||
## 어떤 클라이언트 구성 방법을 선택해야 하나요?
|
||||
|
||||
| 방법 | 최적의 사용처 | 사용하는 이유 |
|
||||
| --- | --- | --- |
|
||||
| 사용자 지정 클라이언트 생성기 | RustDesk Server Pro 팀 | 서버 설정, 브랜딩 및 서명 워크플로우가 포함된 사전 구성된 클라이언트를 생성합니다 |
|
||||
| 수동 구성 | 테스트 및 소규모 배포 | 몇몇 클라이언트를 자체 호스팅 서버에 연결하는 가장 빠른 방법 |
|
||||
| 가져오기 또는 내보내기 | 이미 검증된 설정 재사용 | 동일한 서버 설정을 한 클라이언트에서 다른 클라이언트로 복사합니다 |
|
||||
| 배포 스크립트 | RMM, Intune 또는 대규모 롤아웃 | RustDesk를 설치하고 설정을 자동으로 대규모로 적용합니다 |
|
||||
| `--config` 명령줄 | 관리형 설치 및 자동화 | 스크립트 기반 설정 중 비대화형으로 설정 문자열을 적용합니다 |
|
||||
|
||||
## 대부분의 클라이언트가 필요로 하는 값은 무엇인가요?
|
||||
|
||||
대부분의 자체 호스팅 RustDesk 클라이언트는 몇 가지 값만 필요합니다:
|
||||
|
||||
- `ID Server`: 필수, 보통 귀하의 `hbbs` 호스트 또는 IP
|
||||
- `Key`: 자체 호스팅 서버와의 암호화된 연결에 필요
|
||||
- `API Server`: Pro 계정 로그인 및 웹 콘솔 기능에 필요
|
||||
- `Relay Server`: 종종 선택적입니다. RustDesk가 이를 추론할 수 있기 때문이며, 명시적으로 설정하고자 하는 경우를 제외하면 말이죠
|
||||
|
||||
## 1. 사용자 지정 클라이언트 생성기 (Pro 전용, 기본 플랜 또는 사용자 지정 플랜)
|
||||
|
||||
고유한 이름, 로고, 아이콘, 구성 등을 설정하고 서명할 수 있습니다.
|
||||
|
||||
현재 Windows X64, Mac Arm64 / X64, [Linux](https://twitter.com/rustdesk/status/1788905463678951787), Android Arm 64가 지원됩니다.
|
||||
|
||||
[Video](https://twitter.com/rustdesk/status/1769171628426944539)
|
||||
|
||||

|
||||

|
||||
|
||||
## 2. 수동 구성
|
||||
|
||||
메인 RustDesk 클라이언트 홈에서 ID 옆에 있는 메뉴 버튼 [ ⋮ ]을 클릭한 다음 네트워크를 클릭하세요. 이제 상승된 권한을 사용해 설정을 잠금 해제하고 `ID`, `Relay`, `API` 및 `Key`를 설정할 수 있습니다. 이 `Key`는 연결 암호화에 사용되는 공개 키이며, Pro 버전 구매 시 제공되는 라이선스 키와는 구분된다는 점에 유의하세요.
|
||||
|
||||

|
||||
|
||||
**ID 서버** 입력 상자에 `hbbs` 호스트 또는 IP 주소를 입력하세요(로컬 쪽 + 원격 쪽). 다른 두 주소는 비워둘 수 있으며, RustDesk가 자동으로 파악합니다(특별히 설정되지 않은 경우). 릴레이 서버는 `hbbr`(포트 21117)를 가리킵니다.
|
||||
|
||||
예:
|
||||
|
||||
```nolang
|
||||
hbbs.example.com
|
||||
```
|
||||
|
||||
또는
|
||||
|
||||
```nolang
|
||||
hbbs.example.com:21116
|
||||
```
|
||||
|
||||
### `Key` 설정
|
||||
|
||||
자가 호스팅 서버에 암호화된 연결을 설정하려면 공개 키를 입력해야 합니다. 이 키는 일반적으로 `hbbs`를 처음 실행할 때 생성되며, 작업 디렉터리/데이터 폴더의 `id_ed25519.pub` 파일에서 확인할 수 있습니다.
|
||||
|
||||
`Pro` 사용자로서, [web console](/docs/ko/self-host/rustdesk-server-pro/console/)에서 `Key`를 추가로 가져올 수 있습니다.
|
||||
|
||||

|
||||
|
||||
### `API Server` 설정
|
||||
|
||||
이것은 `Pro` 사용자만을 위한 것입니다. 웹 콘솔에서는 로그인할 수 있지만 RustDesk 클라이언트에서는 로그인에 실패하는 경우, 아마도 `API Server`를 올바르게 설정하지 않았을 가능성이 있습니다.
|
||||
|
||||
API 서버가 기본 `21114` 포트에서 실행되지 않는 경우(오픈소스 버전에서 온 경우 방화벽에 이 포트를 추가하지 않을 수 있음), `API Server`를 명시적으로 지정하십시오.
|
||||
예: API 서버가 기본 HTTPS 포트에서 실행되는 경우, `API Server`를 `https://hbbs.example.com`와 함께 지정하십시오.
|
||||
|
||||
`API Server`의 값을 여전히 확인할 수 없는 경우, 웹 콘솔의 환영 페이지로 이동하세요. 위 그림에 `API Server`가 표시되어 있습니다(라벨이 `API:`인 입력 상자).
|
||||
|
||||
## 3. 가져오기 또는 내보내기를 사용한 설정
|
||||
|
||||
1. [above](/docs/ko/self-host/client-configuration/#2-수동-구성) 단계를 사용하여 디바이스에 RustDesk 클라이언트를 구성하십시오.
|
||||
2. 위의 기계를 사용해 설정으로 이동한 다음 네트워크로 이동하고 잠금을 해제하십시오.
|
||||
3. `Export Server Config`를 클릭하십시오.
|
||||
4. 복사된 문자열을 메모장 또는 유사한 프로그램에 붙여넣으십시오.
|
||||
5. 새 클라이언트로 이동하여 위의 내용을 클립보드에 복사하십시오.
|
||||
6. RustDesk 클라이언트에서 설정으로 이동한 다음 네트워크로 이동하고 잠금을 해제한 후 `Import Server Config`를 클릭하십시오.
|
||||
7. 설정이 자동으로 붙여넣어집니다.
|
||||
8. `Apply`를 클릭하십시오.
|
||||
|
||||
## 4. 자동 구성
|
||||
|
||||
자동으로 설정하는 가장 쉬운 방법은 [here](/docs/ko/self-host/client-deployment/)에서 찾을 수 있는 배포 스크립트를 사용하는 것입니다.
|
||||
|
||||
## 5. 클립보드를 통해 `Pro`에서 구성 가져오기
|
||||
|
||||

|
||||
|
||||
https://github.com/rustdesk/rustdesk-server-pro/discussions/372#discussioncomment-10473298
|
||||
|
||||
## 6. 명령줄 `--config` 사용
|
||||
`rustdesk.exe --config <config-string>`
|
||||
|
||||
웹 콘솔에서 구성 문자열을 얻을 수 있습니다(위 그림에서 확인할 수 있음) 또는 RustDesk 클라이언트의 "설정 → 네트워크"에서 얻을 수 있습니다([here](https://github.com/rustdesk/rustdesk/discussions/7118)는 이에 대한 논의입니다).
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,426 @@
|
||||
---
|
||||
title: 클라이언트 배포
|
||||
weight: 400
|
||||
pre: "<b>2.4. </b>"
|
||||
description: "PowerShell, 배치 또는 macOS bash 스크립트를 사용하여 RustDesk 클라이언트를 대규모로 배포하세요. 이러한 배포 예제를 사용해 RustDesk를 설치하고, 구성 문자열을 적용하며, 암호를 자동으로 설정할 수 있습니다."
|
||||
keywords: ["rustdesk client deployment", "rustdesk powershell deploy", "rustdesk mass deployment", "rustdesk intune", "rustdesk rmm", "rustdesk silent deployment"]
|
||||
---
|
||||
|
||||
이 안내서는 PowerShell, 배치 및 macOS bash와 같은 스크립트 및 자동화 도구를 사용한 대규모 RustDesk 클라이언트 배포를 다룹니다. 가장 간단한 경험을 원하고 RustDesk Server Pro를 보유한 경우, 사용자 지정 클라이언트 생성기를 이용해 시작하세요: https://twitter.com/rustdesk/status/1788905463678951787.
|
||||
|
||||
## 대규모로 RustDesk 클라이언트를 배포하는 가장 좋은 방법은 무엇인가요?
|
||||
|
||||
RustDesk Server Pro의 경우, 서버 설정을 클라이언트 빌드에 포함시키기 때문에 사용자 지정 클라이언트 생성기가 일반적으로 가장 쉬운 대규모 배포 경로입니다. RMM, Intune, GPO 또는 사용자 지정 자동화를 통해 관리되는 환경에서는 PowerShell, 배치 및 셸 스크립트가 더 유연합니다.
|
||||
|
||||
## 어떤 배포 방법을 선택해야 하나요?
|
||||
|
||||
| 방법 | 가장 적합한 경우 | 사용하는 이유 |
|
||||
| --- | --- | --- |
|
||||
| 사용자 지정 클라이언트 생성기 | RustDesk Server Pro 팀 | 미리 로드된 설정과 함께 가장 간단한 패키지 배포 |
|
||||
| PowerShell | Windows 플릿 자동화 | RMM, Intune 및 스크립트 기반 설치에 적합 |
|
||||
| 배치 또는 cmd | 기본 Windows 스크립팅 | PowerShell 중심의 도구 없이 더 간단한 Windows 환경에서 작동 |
|
||||
| MSI | 관리되는 Windows 소프트웨어 배포 | 이미 MSI 기반 패키징 워크플로를 사용하는 경우 더 적합 |
|
||||
| macOS bash | Mac 플릿 배포 | macOS 호스트용 스크립트 가능한 설치 및 구성 |
|
||||
|
||||
## 배포 스크립트에는 어떤 입력이 필요합니까?
|
||||
|
||||
대부분의 배포 스크립트는 세 가지를 필요로 합니다:
|
||||
|
||||
- RustDesk 구성 문자열
|
||||
- 관리자 또는 root 권한으로 실행할 수 있는 배포 방법
|
||||
- 무작위 또는 배포 시 명시적으로 설정된 비밀번호 정책
|
||||
|
||||
여러 방법을 사용해 배포할 수 있으며, 일부 방법은 [Client Configuration](/docs/ko/self-host/client-configuration/)에 설명되어 있습니다.
|
||||
|
||||
또는 RMM, Intune 등과 함께 대량 배포 스크립트를 사용할 수도 있습니다. ID와 비밀번호는 스크립트에서 출력됩니다. 이를 수집하거나 ID와 비밀번호를 각각 다른 스크립트로 분리하여 수집해야 합니다.
|
||||
|
||||
영구 비밀번호는 `rustdesk_pw` 이후 `()` 내부의 내용을 PowerShell용 선호하는 비밀번호로 변경하고, 기타 플랫폼의 경우 해당 라인을 변경함으로써 무작위에서 원하는 비밀번호로 변경할 수 있습니다.
|
||||
|
||||
## PowerShell
|
||||
|
||||
```powershell
|
||||
$ErrorActionPreference= 'silentlycontinue'
|
||||
|
||||
# Assign the value random password to the password variable
|
||||
$rustdesk_pw=(-join ((65..90) + (97..122) | Get-Random -Count 12 | % {[char]$_}))
|
||||
|
||||
# Get your config string from your Web portal and Fill Below
|
||||
$rustdesk_cfg="configstring"
|
||||
|
||||
################################## Please Do Not Edit Below This Line #########################################
|
||||
|
||||
# Run as administrator and stays in the current directory
|
||||
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
|
||||
{
|
||||
if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000)
|
||||
{
|
||||
Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`"";
|
||||
Exit;
|
||||
}
|
||||
}
|
||||
|
||||
# This function will return the latest version and download link as an object
|
||||
function getLatest()
|
||||
{
|
||||
$Page = Invoke-WebRequest -Uri 'https://github.com/rustdesk/rustdesk/releases/latest' -UseBasicParsing
|
||||
$HTML = New-Object -Com "HTMLFile"
|
||||
try
|
||||
{
|
||||
$HTML.IHTMLDocument2_write($Page.Content)
|
||||
}
|
||||
catch
|
||||
{
|
||||
$src = [System.Text.Encoding]::Unicode.GetBytes($Page.Content)
|
||||
$HTML.write($src)
|
||||
}
|
||||
|
||||
# Current example link: https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-x86_64.exe
|
||||
$Downloadlink = ($HTML.Links | Where {$_.href -match '(.)+\/rustdesk\/rustdesk\/releases\/download\/\d{1}.\d{1,2}.\d{1,2}(.{0,3})\/rustdesk(.)+x86_64.exe'} | select -first 1).href
|
||||
|
||||
# bugfix - sometimes you need to replace "about:"
|
||||
$Downloadlink = $Downloadlink.Replace('about:', 'https://github.com')
|
||||
|
||||
$Version = "unknown"
|
||||
if ($Downloadlink -match './rustdesk/rustdesk/releases/download/(?<content>.*)/rustdesk-(.)+x86_64.exe')
|
||||
{
|
||||
$Version = $matches['content']
|
||||
}
|
||||
|
||||
if ($Version -eq "unknown" -or $Downloadlink -eq "")
|
||||
{
|
||||
Write-Output "ERROR: Version or download link not found."
|
||||
Exit
|
||||
}
|
||||
|
||||
# Create object to return
|
||||
$params += @{Version = $Version}
|
||||
$params += @{Downloadlink = $Downloadlink}
|
||||
$Result = New-Object PSObject -Property $params
|
||||
|
||||
return($Result)
|
||||
}
|
||||
|
||||
$RustDeskOnGitHub = getLatest
|
||||
|
||||
$rdver = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk\").Version)
|
||||
|
||||
if ($rdver -eq $RustDeskOnGitHub.Version)
|
||||
{
|
||||
Write-Output "RustDesk $rdver is the newest version."
|
||||
Exit
|
||||
}
|
||||
|
||||
if (!(Test-Path C:\Temp))
|
||||
{
|
||||
New-Item -ItemType Directory -Force -Path C:\Temp | Out-Null
|
||||
}
|
||||
|
||||
cd C:\Temp
|
||||
|
||||
Invoke-WebRequest $RustDeskOnGitHub.Downloadlink -Outfile "rustdesk.exe"
|
||||
Start-Process .\rustdesk.exe --silent-install
|
||||
Start-Sleep -seconds 20
|
||||
|
||||
$ServiceName = 'Rustdesk'
|
||||
$arrService = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue
|
||||
|
||||
if ($arrService -eq $null)
|
||||
{
|
||||
Write-Output "Installing service"
|
||||
cd $env:ProgramFiles\RustDesk
|
||||
Start-Process .\rustdesk.exe --install-service
|
||||
Start-Sleep -seconds 20
|
||||
$arrService = Get-Service -Name $ServiceName
|
||||
}
|
||||
|
||||
while ($arrService.Status -ne 'Running')
|
||||
{
|
||||
Start-Service $ServiceName
|
||||
Start-Sleep -seconds 5
|
||||
$arrService.Refresh()
|
||||
}
|
||||
|
||||
cd $env:ProgramFiles\RustDesk\
|
||||
.\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id
|
||||
|
||||
.\rustdesk.exe --config $rustdesk_cfg
|
||||
|
||||
.\rustdesk.exe --password $rustdesk_pw
|
||||
|
||||
Write-Output "..............................................."
|
||||
# Show the value of the ID Variable
|
||||
Write-Output "RustDesk ID: $rustdesk_id"
|
||||
|
||||
# Show the value of the Password Variable
|
||||
Write-Output "Password: $rustdesk_pw"
|
||||
Write-Output "..............................................."
|
||||
```
|
||||
|
||||
## Windows 배치/명령줄
|
||||
|
||||
```bat
|
||||
@echo off
|
||||
|
||||
REM Assign the value random password to the password variable
|
||||
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
|
||||
set alfanum=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
|
||||
set rustdesk_pw=
|
||||
for /L %%b in (1, 1, 12) do (
|
||||
set /A rnd_num=!RANDOM! %% 62
|
||||
for %%c in (!rnd_num!) do (
|
||||
set rustdesk_pw=!rustdesk_pw!!alfanum:~%%c,1!
|
||||
)
|
||||
)
|
||||
|
||||
REM Get your config string from your Web portal and Fill Below
|
||||
set rustdesk_cfg="configstring"
|
||||
|
||||
REM ############################### Please Do Not Edit Below This Line #########################################
|
||||
|
||||
if not exist C:\Temp\ md C:\Temp\
|
||||
cd C:\Temp\
|
||||
|
||||
curl -L "https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-x86_64.exe" -o rustdesk.exe
|
||||
|
||||
rustdesk.exe --silent-install
|
||||
timeout /t 20
|
||||
|
||||
cd "C:\Program Files\RustDesk\"
|
||||
rustdesk.exe --install-service
|
||||
timeout /t 20
|
||||
|
||||
for /f "delims=" %%i in ('rustdesk.exe --get-id ^| more') do set rustdesk_id=%%i
|
||||
|
||||
rustdesk.exe --config %rustdesk_cfg%
|
||||
|
||||
rustdesk.exe --password %rustdesk_pw%
|
||||
|
||||
echo ...............................................
|
||||
REM Show the value of the ID Variable
|
||||
echo RustDesk ID: %rustdesk_id%
|
||||
|
||||
REM Show the value of the Password Variable
|
||||
echo Password: %rustdesk_pw%
|
||||
echo ...............................................
|
||||
```
|
||||
|
||||
## MSI
|
||||
|
||||
`rustdesk.exe --silent-install` 대신 msi를 사용할 수도 있습니다.
|
||||
|
||||
https://rustdesk.com/docs/ko/client/windows/msi/
|
||||
|
||||
## macOS Bash
|
||||
|
||||
```sh
|
||||
#!/bin/bash
|
||||
|
||||
# Assign the value random password to the password variable
|
||||
rustdesk_pw=$(openssl rand -hex 4)
|
||||
|
||||
# Get your config string from your Web portal and Fill Below
|
||||
rustdesk_cfg="configstring"
|
||||
|
||||
################################## Please Do Not Edit Below This Line #########################################
|
||||
|
||||
# Root password request for privilege escalation
|
||||
[ "$UID" -eq 0 ] || exec sudo bash "$0" "$@"
|
||||
|
||||
# Specify the mount point for the DMG (temporary directory)
|
||||
mount_point="/Volumes/RustDesk"
|
||||
|
||||
# Download the rustdesk.dmg file
|
||||
echo "Downloading RustDesk Now"
|
||||
|
||||
if [[ $(arch) == 'arm64' ]]; then
|
||||
rd_link=$(curl -sL https://github.com/rustdesk/rustdesk/releases/latest | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*/\d{1}.\d{1,2}.\d{1,2}/rustdesk.\d{1}.\d{1,2}.\d{1,2}.aarch64.dmg")
|
||||
dmg_file=$(echo $rd_link | grep -Eo "rustdesk.\d{1}.\d{1,2}.\d{1,2}.aarch64.dmg")
|
||||
curl -L "$rd_link" --output "$dmg_file"
|
||||
else
|
||||
rd_link=$(curl -sL https://github.com/rustdesk/rustdesk/releases/latest | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*/\d{1}.\d{1,2}.\d{1,2}/rustdesk.\d{1}.\d{1,2}.\d{1,2}.x86_64.dmg")
|
||||
dmg_file=$(echo $rd_link | grep -Eo "rustdesk.\d{1}.\d{1,2}.\d{1,2}.x86_64.dmg")
|
||||
curl -L "$rd_link" --output "$dmg_file"
|
||||
fi
|
||||
|
||||
# Mount the DMG file to the specified mount point
|
||||
hdiutil attach "$dmg_file" -mountpoint "$mount_point" &> /dev/null
|
||||
|
||||
# Check if the mounting was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
# Move the contents of the mounted DMG to the /Applications folder
|
||||
cp -R "$mount_point/RustDesk.app" "/Applications/" &> /dev/null
|
||||
|
||||
# Unmount the DMG file
|
||||
hdiutil detach "$mount_point" &> /dev/null
|
||||
else
|
||||
echo "Failed to mount the RustDesk DMG. Installation aborted."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run the rustdesk command with --get-id and store the output in the rustdesk_id variable
|
||||
cd /Applications/RustDesk.app/Contents/MacOS/
|
||||
rustdesk_id=$(./RustDesk --get-id)
|
||||
|
||||
# Apply new password to RustDesk
|
||||
./RustDesk --server &
|
||||
/Applications/RustDesk.app/Contents/MacOS/RustDesk --password $rustdesk_pw &> /dev/null
|
||||
|
||||
/Applications/RustDesk.app/Contents/MacOS/RustDesk --config $rustdesk_cfg
|
||||
|
||||
# Kill all processes named RustDesk
|
||||
rdpid=$(pgrep RustDesk)
|
||||
kill $rdpid &> /dev/null
|
||||
|
||||
echo "..............................................."
|
||||
# Check if the rustdesk_id is not empty
|
||||
if [ -n "$rustdesk_id" ]; then
|
||||
echo "RustDesk ID: $rustdesk_id"
|
||||
else
|
||||
echo "Failed to get RustDesk ID."
|
||||
fi
|
||||
|
||||
# Echo the value of the password variable
|
||||
echo "Password: $rustdesk_pw"
|
||||
echo "..............................................."
|
||||
|
||||
echo "Please complete install on GUI, launching RustDesk now."
|
||||
open -n /Applications/RustDesk.app
|
||||
```
|
||||
|
||||
## Linux
|
||||
|
||||
```sh
|
||||
#!/bin/bash
|
||||
|
||||
# Assign a random value to the password variable
|
||||
rustdesk_pw=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
|
||||
|
||||
# Get your config string from your Web portal and Fill Below
|
||||
rustdesk_cfg="configstring"
|
||||
|
||||
################################## Please Do Not Edit Below This Line #########################################
|
||||
|
||||
# Check if the script is being run as root
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "This script must be run as root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Identify OS
|
||||
if [ -f /etc/os-release ]; then
|
||||
# freedesktop.org and systemd
|
||||
. /etc/os-release
|
||||
OS=$NAME
|
||||
VER=$VERSION_ID
|
||||
|
||||
UPSTREAM_ID=${ID_LIKE,,}
|
||||
|
||||
# Fallback to ID_LIKE if ID was not 'ubuntu' or 'debian'
|
||||
if [ "${UPSTREAM_ID}" != "debian" ] && [ "${UPSTREAM_ID}" != "ubuntu" ]; then
|
||||
UPSTREAM_ID="$(echo ${ID_LIKE,,} | sed s/\"//g | cut -d' ' -f1)"
|
||||
fi
|
||||
|
||||
elif type lsb_release >/dev/null 2>&1; then
|
||||
# linuxbase.org
|
||||
OS=$(lsb_release -si)
|
||||
VER=$(lsb_release -sr)
|
||||
elif [ -f /etc/lsb-release ]; then
|
||||
# For some versions of Debian/Ubuntu without lsb_release command
|
||||
. /etc/lsb-release
|
||||
OS=$DISTRIB_ID
|
||||
VER=$DISTRIB_RELEASE
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
# Older Debian, Ubuntu, etc.
|
||||
OS=Debian
|
||||
VER=$(cat /etc/debian_version)
|
||||
elif [ -f /etc/SuSE-release ]; then
|
||||
# Older SuSE etc.
|
||||
OS=SuSE
|
||||
VER=$(cat /etc/SuSE-release)
|
||||
elif [ -f /etc/redhat-release ]; then
|
||||
# Older Red Hat, CentOS, etc.
|
||||
OS=RedHat
|
||||
VER=$(cat /etc/redhat-release)
|
||||
else
|
||||
# Fall back to uname, e.g. "Linux <version>", also works for BSD, etc.
|
||||
OS=$(uname -s)
|
||||
VER=$(uname -r)
|
||||
fi
|
||||
|
||||
# Install RustDesk
|
||||
|
||||
echo "Installing RustDesk"
|
||||
if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]; then
|
||||
wget https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-x86_64.deb
|
||||
apt-get install -fy ./rustdesk-1.2.6-x86_64.deb > /dev/null
|
||||
elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "$OS" = "Fedora Linux" ] || [ "${UPSTREAM_ID}" = "rhel" ] || [ "$OS" = "Almalinux" ] || [ "$OS" = "Rocky*" ] ; then
|
||||
wget https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-0.x86_64.rpm
|
||||
yum localinstall ./rustdesk-1.2.6-0.x86_64.rpm -y > /dev/null
|
||||
else
|
||||
echo "Unsupported OS"
|
||||
# here you could ask the user for permission to try and install anyway
|
||||
# if they say yes, then do the install
|
||||
# if they say no, exit the script
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run the rustdesk command with --get-id and store the output in the rustdesk_id variable
|
||||
rustdesk_id=$(rustdesk --get-id)
|
||||
|
||||
# Apply new password to RustDesk
|
||||
rustdesk --password $rustdesk_pw &> /dev/null
|
||||
|
||||
rustdesk --config $rustdesk_cfg
|
||||
|
||||
systemctl restart rustdesk
|
||||
|
||||
echo "..............................................."
|
||||
# Check if the rustdesk_id is not empty
|
||||
if [ -n "$rustdesk_id" ]; then
|
||||
echo "RustDesk ID: $rustdesk_id"
|
||||
else
|
||||
echo "Failed to get RustDesk ID."
|
||||
fi
|
||||
|
||||
# Echo the value of the password variable
|
||||
echo "Password: $rustdesk_pw"
|
||||
echo "..............................................."
|
||||
```
|
||||
|
||||
## 새 장치에 대한 명시적 배포
|
||||
|
||||
기본적으로 RustDesk 클라이언트는 처음 서버에 연결할 때 자체 호스팅된 서버에 등록됩니다. 일반 모드에서는 추가적인 배포 단계가 필요하지 않습니다.
|
||||
|
||||
서버 웹 콘솔에서 **설정 → 기타 → 새 장치에 대한 배포 요구**를 활성화하면, 새 장치는 이 서버에 등록되기 전에 반드시 명시적으로 배포되어야 합니다.
|
||||
|
||||
관리자 계정으로 서버 웹 콘솔에서 [API token](/docs/ko/self-host/rustdesk-server-pro/console/#api-토큰)를 생성하세요. 해당 토큰은 **장치** 권한이 **읽기 및 쓰기**로 설정되어 있어야 합니다. 그런 다음 RustDesk를 설치하고 자체 호스팅된 서버를 사용하도록 구성한 후 각 새 데스크톱 장치에서 배포 명령을 실행하세요.
|
||||
|
||||
### Windows, macOS 및 Linux
|
||||
|
||||
Windows에서는 관리자 권한으로 명령 프롬프트 또는 PowerShell을 실행하세요:
|
||||
|
||||
```bat
|
||||
rustdesk --deploy --token <api_token>
|
||||
```
|
||||
|
||||
macOS 및 Linux에서는 `sudo`와 함께 명령어를 실행하십시오:
|
||||
|
||||
```sh
|
||||
sudo rustdesk --deploy --token <api_token>
|
||||
```
|
||||
|
||||
### 선택적 사용자 지정 ID
|
||||
|
||||
특정 RustDesk ID로 장치를 배포하려면 `--id <custom_id>`를 추가하세요:
|
||||
|
||||
```sh
|
||||
rustdesk --deploy --token <api_token> --id <custom_id>
|
||||
```
|
||||
|
||||
ID가 이미 다른 기계에서 사용되고 있으면 배포가 실패하고 RustDesk는 해당 ID가 이미 사용 중이라고 보고합니다.
|
||||
|
||||
### Android
|
||||
|
||||
Android는 명령줄 배포 흐름을 사용하지 않습니다. 서버가 배포를 요구하고 Android 클라이언트가 아직 배포되지 않은 경우, RustDesk는 **배포** 프롬프트를 표시합니다. **확인**을 탭하고 배포 대화상자에 API 토큰을 입력한 다음, 선택적으로 사용자 지정 ID를 입력하세요. 또한 **설정 → 배포**에서 동일한 대화상자를 수동으로 열 수도 있습니다.
|
||||
|
||||
배포가 성공하면 장치가 서버 장치 목록에 추가되고 클라이언트는 정상적으로 등록할 수 있습니다.
|
||||
@@ -0,0 +1,155 @@
|
||||
---
|
||||
title: NAT 루프백 문제
|
||||
weight: 500
|
||||
pre: "<b>2.5. </b>"
|
||||
description: "라우터 뒤에 RustDesk를 자체 호스팅할 때 NAT 루프백 또는 헤어핀 NAT 문제를 해결하세요. LAN 클라이언트가 공개 IP 또는 도메인을 사용할 때 실패할 수 있는 이유와 라우터 설정, 로컬 DNS, hosts 파일 오버라이드를 통해 이를 해결하는 방법을 알아보세요."
|
||||
keywords: ["rustdesk nat loopback", "rustdesk hairpin nat", "rustdesk local dns", "rustdesk hosts file", "rustdesk self-hosted domain issue", "rustdesk lan public ip problem"]
|
||||
---
|
||||
|
||||
{{% notice note %}}
|
||||
이 설명에는 복잡한 네트워킹 지식이 포함되어 있으므로, 가독성을 높이기 위해 귀하의 도움이 필요합니다.
|
||||
{{% /notice %}}
|
||||
|
||||
NAT 루프백, 또는 헤어핀 NAT라고도 불리는 이 문제는 동일한 LAN에 있는 장치들이 공개 IP 주소나 도메인 이름을 통해 자체 호스팅된 RustDesk 서버에 접근하려고 할 때 발생합니다. 이 안내서에서는 왜 이런 문제가 발생하는지와 이를 라우터 지원, 로컬 DNS, 또는 hosts 파일 오버라이드를 통해 해결하는 방법을 설명합니다.
|
||||
|
||||
## 빠른 답변
|
||||
|
||||
자체 호스팅된 RustDesk 서버가 LAN 밖에서 정상적으로 작동하지만 같은 LAN의 클라이언트가 공개 IP 주소나 도메인 이름을 사용할 때 연결이 실패한다면, 일반적으로 NAT 루프백이 원인입니다. 가장 좋은 해결책은 라우터에서 헤어핀 NAT를 활성화하는 것입니다. 만약 이것이 불가능하다면 로컬 DNS를 사용하세요. 소수의 장치에 대해서는 hosts 파일 오버라이드를 대안으로 사용할 수 있습니다.
|
||||
|
||||
## 어떤 해결책을 선택해야 하나요?
|
||||
|
||||
| 수정 | 최적의 경우 | 트레이드오프 |
|
||||
| --- | --- | --- |
|
||||
| 라우터에서 NAT 루프백 활성화 | 라우터가 헤어핀 NAT를 지원함 | 장기적으로 가장 좋은 해결 방법이지만 모든 라우터가 해당 설정을 노출하지는 않음 |
|
||||
| LAN에서 로컬 DNS 사용 | 동일한 네트워크에서 여러 기기를 관리함 | 모든 기기를 수동으로 편집하는 것보다 확장성이 뛰어남 |
|
||||
| 호스트 파일 항목 추가 | 몇몇 기기만 수정하면 됨 | 노트북이나 로밍 기기에서는 수동으로 하기 쉽고 잊기 쉬움 |
|
||||
|
||||
NAT 루프백에 대한 자세한 내용은 [Wikipedia](https://en.m.wikipedia.org/wiki/Network_address_translation#NAT_hairpinning) 페이지를 참조하십시오.
|
||||
|
||||
홈 네트워크 또는 NAT 방화벽 뒤에 있는 기타 네트워크 환경에 RustDesk 서버를 배포하는 경우, RustDesk 서버와 클라이언트는 **반드시** 다음 중 하나를 사용해야 합니다:
|
||||
A: 서로 접속하기 위해 로컬 IP 주소를 사용하거나 OR:
|
||||
B: NAT 루프백을 지원하고 활성화된 방화벽을 갖추어야 합니다.
|
||||
|
||||
공개 IP나 도메인을 통해 서버에 연결할 수 없다는 것을 알게 될 수 있습니다(이론상 공개 IP를 가리킵니다).
|
||||
|
||||
## 문제
|
||||
이 예제에서는 LAN 장치가 `rustdesk.example.com`에 연결하려고 할 때 어떤 일이 발생하는지 살펴보겠습니다. 라우터의 공인 IP는 `172.16.16.1`이고, 서버의 LAN IP는 `192.168.11.20`이며, 원하는 도메인은 `rustdesk.example.com`라고 가정하며, '192.168.11.2'를 사용하는 클라이언트가 있다고 합시다.
|
||||
|
||||
라우터의 NAT 뒤에 서버를 설정할 경우, 라우터에서 포트 포워딩을 추가하여 PUBLIC IP 172.16.16.1로 들어오는 모든 수신 메시지를 192.168.11.20에 있는 서버로 전달하도록 변경할 수 있습니다.
|
||||
|
||||
LAN 장치가 인터넷에 접속하려고 할 때, 예를 들어 8.8.8.8에 있는 웹서버에 접속하려고 한다면, 해당 요청은 192.168.11.2에서 발송된 것으로 간주되어 라우터로 전송됩니다. 라우터는 이 요청을 가로채어 172.16.16.1에서 발송된 것으로 8.8.8.8로 다시 쓰게 됩니다. 8.8.8.8이 172.16.16.1에 응답하면 라우터는 이전 연결을 확인하고 그 응답을 다시 192.168.11.2로 리디렉션합니다.
|
||||
|
||||
만약 8.8.8.8의 사용자가 172.16.16.1을 이용해 우리 네트워크로 메시지를 보낸다면, 포트 포워딩 규칙에 의해 172.16.16.1의 목적지를 192.168.11.20에 있는 서버로 변경되며, 요청의 출처는 여전히 8.8.8.8로 유지되어 서버는 (대략적으로나마) 8.8.8.8로 직접 응답할 수 있습니다.
|
||||
|
||||
만약 8.8.8.8의 사용자가 우리 네트워크를 해킹하려고 시도하고 192.168.11.2에서 메시지를 보내는 것처럼 위장한다면, 라우터는 192.168.11.2에서 오는 트래픽이 LAN 장치로부터만 유효하다는 것을 인식하고 일반적으로 해당 트래픽을 차단할 것입니다.
|
||||
|
||||
문제는 LAN으로 다시 루프백하려고 할 때 발생합니다. 만약 LAN 장치가 `rustdesk.example.com`로 연결을 시도한다면, 이는 결국 `172.16.16.1`로 연결됩니다. 이 시점에서 라우터는 많은 선택지를 고르게 됩니다. 라우터는 이미 LAN 포트에서 WAN 포트로 192.168.11.2에서 172.16.16.1로 가는 메시지를 보냈습니다. 일단 WAN 포트에 도착하면, 이 메시지는 인터넷 상의 누군가가 우리 네트워크를 해킹하려 했던 경우와 구분할 수 없게 됩니다.
|
||||
|
||||
NAT 루프백 기능은 과정 중 앞단의 주소에서 "192.168.11.2"라는 소스 부분을 효과적으로 변경하여, 서버와 클라이언트 간에 메시지를 주고받을 때 NAT 테이블을 사용해야 한다는 것을 라우터가 인식하도록 합니다.
|
||||
|
||||
만약 LAN 내부에 있을 때만 연결에 문제가 생기고, 외부에서는 정상적으로 작동한다면, 이것이 바로 당신이 겪고 있는 문제일 수 있습니다.
|
||||
|
||||
## 해결 방안
|
||||
이 문제를 해결하는 방법은 세 가지가 있습니다.
|
||||
|
||||
### 1. 라우터에서 NAT 루프백 설정하기
|
||||
네트워킹 지식이 있다면 라우터에서 NAT 루프백을 설정할 수 있지만, 이를 설정하려면 네트워킹에 대한 전문 지식이 필요합니다. 일부 라우터는 이 설정을 조정할 수 없는 경우도 있으므로, 모든 사람에게 가장 적합한 옵션은 아닙니다.
|
||||
|
||||
{{% notice note %}}
|
||||
[MikroTik](https://help.mikrotik.com/docs/display/ROS/NAT#NAT-HairpinNAT)의 기사가 이 내용을 매우 잘 설명하고 있습니다. 여기서부터 학습을 시작해보세요.
|
||||
{{% /notice %}}
|
||||
|
||||
### 2. LAN에 DNS 서버 배포
|
||||
먼저, [AdGuard Home](https://github.com/AdguardTeam/AdGuardHome/wiki/Docker)와 [Pi-hole](https://github.com/pi-hole/docker-pi-hole) 중에서 원하는 것을 선택하세요. Docker를 통해 배포하거나, RustDesk 서버와 동일한 서버에 배포할 수 있습니다. 아래 예제에서는 이 과정의 몇 가지 단계를 보여드립니다.
|
||||
|
||||
둘 다 DNS 기반 광고 차단기이지만, 광고를 차단하고 싶지 않다면 이 기능을 비활성화할 수 있습니다.
|
||||
|
||||
먼저, `domain`를 RustDesk 서버의 LAN IP(예: `192.168.11.20`)로 지정하세요. 그런 다음 라우터의 `DHCP` 설정으로 이동하고(`DHCP`는 WAN이 아님에 유의하십시오), `First` DNS IP를 AdGuard Home 또는 Pi-hole을 배포한 서버로 설정하세요. `Secondary` DNS는 ISP의 DNS 또는 기타 공개 DNS일 수 있으며, 예를 들어 Cloudflare용 `1.1.1.1`나 Google용 `8.8.8.8`가 될 수 있습니다. 이제 완료되었습니다!
|
||||
|
||||
다음은 예시입니다:
|
||||
#### AdGuard 홈
|
||||
광고 차단 기능을 사용하면 문제가 발생할 수 있습니다. 해결 방법을 찾고 싶지 않고 이 기능을 비활성화하고 싶다면, '보호 비활성화' 버튼을 클릭하세요.
|
||||
|
||||

|
||||
<br>
|
||||
|
||||
'DNS 재작성' 설정으로 이동하세요.
|
||||
|
||||

|
||||
<br>
|
||||
|
||||
'DNS 재작성 추가'를 클릭한 다음, 필드에 `domain`와 서버의 `LAN IP`를 입력하세요.
|
||||
|
||||

|
||||
|
||||
다음은 최종 결과의 모습입니다.
|
||||
|
||||

|
||||
|
||||
***라우터의 LAN DHCP에 AdGuard 홈을 할당하는 것을 잊지 마세요!***
|
||||
<hr>
|
||||
|
||||
#### Pi-hole
|
||||
광고 차단 기능을 사용하면 문제가 발생할 수 있습니다. 해결 방법을 찾고 싶지 않고 이 기능을 비활성화하고 싶다면, '차단 비활성화' 하위 메뉴에서 '무기한' 버튼을 클릭하세요.
|
||||
|
||||

|
||||
|
||||
"로컬 DNS → DNS 레코드"로 이동하세요.
|
||||
상자에 `domain`와 `IP`를 입력한 다음, "추가"를 클릭하세요.
|
||||
|
||||
최종 결과를 확인하려면 이 그림의 노란색 선을 확인하세요.
|
||||
|
||||

|
||||
|
||||
***라우터의 LAN DHCP에 Pi-hole을 할당하는 것을 잊지 마세요!***
|
||||
|
||||
### 3. 호스트 파일에 규칙 추가
|
||||
이 방법은 장치 수가 적은 경우에만 권장됩니다. 장치가 많다면 DNS 방법을 사용하는 것이 더 좋습니다. 그렇지 않으면 서버에 접근해야 하는 각 장치에서 수동으로 작업해야 합니다.
|
||||
|
||||
{{% notice warning %}}
|
||||
노트북과 같은 휴대용 기기에서 이 방법을 사용하면 LAN 밖에서는 서버에 연결할 수 없습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
다양한 OS의 경로:
|
||||
|
||||
#### Windows
|
||||
|
||||
```text
|
||||
C:\Windows\system32\drivers\etc\hosts
|
||||
```
|
||||
|
||||
승격된 권한으로 편집하거나 이 파일을 `Desktop`로 복사하여 편집할 수 있습니다. 편집한 후 원본 경로로 다시 복사하세요.
|
||||
|
||||
#### macOS
|
||||
|
||||
```text
|
||||
/etc/hosts
|
||||
```
|
||||
|
||||
`vim`를 사용할 수 있으며, 이는 사전 설치되어 있습니다.
|
||||
|
||||
```sh
|
||||
sudo vim /etc/hosts
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
```text
|
||||
/etc/hosts
|
||||
```
|
||||
|
||||
`vim` 또는 `nano`를 사용할 수 있습니다.
|
||||
|
||||
```sh
|
||||
sudo vim /etc/hosts
|
||||
```
|
||||
|
||||
<hr>
|
||||
|
||||
형식은 세 운영 체제 모두 동일합니다. `IP`가 먼저 오고 그다음에 `domain`가 옵니다. 한 줄에 하나의 항목입니다.
|
||||
|
||||
예:
|
||||
|
||||
```text
|
||||
192.168.11.20 rustdesk.example.com
|
||||
```
|
||||
@@ -0,0 +1,159 @@
|
||||
---
|
||||
title: Docker
|
||||
weight: 7
|
||||
description: "Docker, Docker Compose 또는 Podman을 사용하여 RustDesk 서버 OSS를 셀프호스팅하십시오. 필요한 포트, 호스트 네트워킹 참고사항 및 hbbs 및 hbbr에 대한 샘플 컨테이너 정의를 검토하십시오."
|
||||
keywords: ["rustdesk docker", "rustdesk docker compose", "rustdesk server docker", "rustdesk hbbs hbbr docker", "rustdesk podman", "rustdesk self-host docker"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 Docker, Docker Compose 또는 Podman을 통해 RustDesk Server OSS를 자체 호스팅하고 `hbbs` 및 `hbbr`에 대한 올바른 포트를 열어보세요.
|
||||
|
||||
## Docker에서 RustDesk Server OSS를 실행하는 가장 좋은 방법은 무엇인가요?
|
||||
|
||||
대부분의 Linux 배포에서는 `network_mode: "host"`와 함께 Docker Compose를 사용하는 것이 가장 간단하고 신뢰할 수 있는 옵션입니다. 이 방법은 설정을 반복 가능하게 유지하고 업그레이드를 쉽게 만들어 주며, 호스트 네트워킹이 가능할 경우 추가적인 포트 매핑 복잡성을 피할 수 있습니다.
|
||||
|
||||
## Docker 배포 체크리스트
|
||||
|
||||
1. Docker 또는 Podman을 설치하기.
|
||||
2. `hbbs` 및 `hbbr`용 지속적 데이터 디렉터리 또는 볼륨 생성하기.
|
||||
3. 방화벽에서 필요한 RustDesk 포트를 열기.
|
||||
4. Docker Compose, `docker run` 또는 Podman Quadlet을 사용해 `hbbs` 및 `hbbr` 시작하기.
|
||||
5. 클라이언트를 새 자체 호스팅 서버로 지정하고 등록 및 릴레이 트래픽을 확인하기.
|
||||
|
||||
## 어떤 컨테이너 설정을 선택해야 하나요?
|
||||
|
||||
| 방법 | 최적의 사용처 | 사용하는 이유 |
|
||||
| --- | --- | --- |
|
||||
| Docker Compose | 대부분의 Linux 서버 | 반복 가능한 설정 및 보다 쉬운 지속적인 유지보수 |
|
||||
| `docker run` | 빠른 수동 테스트 | 간단한 컨테이너 쌍을 시작하는 가장 빠른 방법 |
|
||||
| Podman Quadlet | Podman 플러스 systemd 환경 | 네이티브 systemd 스타일 서비스 관리 |
|
||||
|
||||
> 여기 또 다른 좋은 튜토리얼이 있습니다: [Building Your Own Remote Desktop Solution: RustDesk Self-Hosted on Cloud with Docker (Hetzner)](https://www.linkedin.com/pulse/building-your-own-remote-desktop-solution-rustdesk-cloud-montinaro-bv94f)
|
||||
|
||||
## Docker를 사용해 자체 서버 설치하기
|
||||
|
||||
### 요구사항
|
||||
Docker/Podman이 설치되어 있어야만 rustdesk-server를 Docker 컨테이너로 실행할 수 있습니다. 의심스러운 경우, 이 [guide](https://docs.docker.com/engine/install)를 통해 Docker를 설치하여 최신 버전인지 확인하세요!
|
||||
|
||||
방화벽에서 다음 포트를 반드시 열어주세요:
|
||||
- `hbbs`:
|
||||
- `21114` (TCP): 웹 콘솔용으로 사용되며, `Pro` 버전에서만 사용 가능합니다.
|
||||
- `21115` (TCP): NAT 유형 테스트에 사용됩니다.
|
||||
- `21116` (TCP/UDP): **`21116`는 TCP와 UDP 모두 활성화되어야 함을 참고해 주세요.** `21116/UDP`는 ID 등록 및 핑 서비스에 사용됩니다. `21116/TCP`는 TCP 홀 펀칭 및 연결 서비스에 사용됩니다.
|
||||
- `21118` (TCP): 웹 클라이언트 지원에 사용됩니다.
|
||||
- `hbbr`:
|
||||
- `21117` (TCP): 릴레이 서비스에 사용됩니다.
|
||||
- `21119` (TCP): 웹 클라이언트 지원에 사용됩니다.
|
||||
|
||||
*웹 클라이언트 지원이 필요하지 않은 경우, 해당 포트 `21118`, `21119`를 비활성화할 수 있습니다.*
|
||||
|
||||
### Docker 예제
|
||||
|
||||
```sh
|
||||
sudo docker image pull rustdesk/rustdesk-server
|
||||
sudo docker run --name hbbs -v ./data:/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server hbbs
|
||||
sudo docker run --name hbbr -v ./data:/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server hbbr
|
||||
```
|
||||
|
||||
<a name="net-host"></a>
|
||||
|
||||
{{% notice note %}}
|
||||
`--net=host`는 오직 **Linux**에서만 작동하며, 이로 인해 `hbbs`/`hbbr`는 컨테이너 IP(172.17.0.1)가 아닌 실제 수신 IP 주소를 볼 수 있습니다.
|
||||
`--net=host`가 잘 작동한다면 `-p` 옵션은 사용되지 않습니다. Windows에서는 `sudo`와 `--net=host`를 생략하세요.
|
||||
|
||||
**플랫폼에서 연결 문제가 발생하는 경우 `--net=host`를 제거해 주세요.**
|
||||
{{% /notice %}}
|
||||
|
||||
{{% notice note %}}
|
||||
`-td`로 로그를 볼 수 없는 경우, `docker logs hbbs`를 통해 로그를 볼 수 있습니다. 또는 `-it`로 실행할 수 있으며, `hbbs/hbbr`는 데몬 모드로 실행되지 않습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
### Docker Compose 예제
|
||||
여기서 설명한 대로 `compose.yml`와 함께 Docker 파일을 실행하려면 [Docker Compose](https://docs.docker.com/compose/)가 설치되어 있어야 합니다.
|
||||
|
||||
```yaml
|
||||
services:
|
||||
hbbs:
|
||||
container_name: hbbs
|
||||
image: rustdesk/rustdesk-server:latest
|
||||
command: hbbs
|
||||
volumes:
|
||||
- ./data:/root
|
||||
network_mode: "host"
|
||||
|
||||
depends_on:
|
||||
- hbbr
|
||||
restart: unless-stopped
|
||||
|
||||
hbbr:
|
||||
container_name: hbbr
|
||||
image: rustdesk/rustdesk-server:latest
|
||||
command: hbbr
|
||||
volumes:
|
||||
- ./data:/root
|
||||
network_mode: "host"
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
config 변경이 필요한 경우, 예를 들어 ALWAYS_USE_RELAY=Y를 설정하려면 docker-compose.yml의 환경을 사용할 수 있습니다.
|
||||
|
||||
```yaml
|
||||
services:
|
||||
hbbs:
|
||||
container_name: hbbs
|
||||
image: rustdesk/rustdesk-server:latest
|
||||
environment:
|
||||
- ALWAYS_USE_RELAY=Y
|
||||
command: hbbs
|
||||
volumes:
|
||||
- ./data:/root
|
||||
network_mode: "host"
|
||||
|
||||
depends_on:
|
||||
- hbbr
|
||||
restart: unless-stopped
|
||||
|
||||
hbbr:
|
||||
container_name: hbbr
|
||||
image: rustdesk/rustdesk-server:latest
|
||||
command: hbbr
|
||||
volumes:
|
||||
- ./data:/root
|
||||
network_mode: "host"
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
### Podman Quadlet 예제
|
||||
|
||||
Podman을 systemd 서비스로 사용하여 컨테이너를 실행하고 싶다면 다음의 Podman Quadlet 구성 샘플을 사용할 수 있습니다:
|
||||
|
||||
```ini
|
||||
[Container]
|
||||
AutoUpdate=registry
|
||||
Image=rustdesk/rustdesk-server:latest
|
||||
Exec=hbbs
|
||||
Volume=/path/to/rustdesk-server/data:/root
|
||||
Network=host
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
```
|
||||
|
||||
또는
|
||||
|
||||
```ini
|
||||
[Container]
|
||||
AutoUpdate=registry
|
||||
Image=rustdesk/rustdesk-server:latest
|
||||
Exec=hbbr
|
||||
Volume=/path/to/rustdesk-server/data:/root
|
||||
Network=host
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
```
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: RustDesk 서버 OSS
|
||||
description: "무료이고 오픈소스인 자체 호스팅 백엔드를 사용해 나만의 RustDesk 서버 OSS 배포를 실행하세요. 무엇이 포함되어 있는지, 언제 OSS를 선택해야 하는지, 그리고 RustDesk ID 및 릴레이 서비스를 설치하는 방법에 대해 알아보세요."
|
||||
keywords: ["rustdesk server oss", "rustdesk open source server", "self-hosted rustdesk server", "rustdesk hbbs", "rustdesk hbbr", "rustdesk docker", "rustdesk server install", "rustdesk relay server", "rustdesk id server", "rustdesk community self-hosting"]
|
||||
weight: 100
|
||||
pre: "<b>2.1. </b>"
|
||||
---
|
||||
|
||||
RustDesk Server OSS는 RustDesk용 무료 및 오픈소스 자체 호스팅 백엔드입니다. 이를 통해 자체 ID 및 릴레이 서비스를 실행하고, 제어하는 인프라 내에서 원격 접속 트래픽을 유지하며, 자신의 클라우드 또는 온프레미스 환경에 RustDesk를 배포할 수 있습니다.
|
||||
|
||||
핵심 자체 호스팅 기능을 원하고 배포, 네트워킹 및 업그레이드를 직접 관리하는 데 익숙한 경우 RustDesk Server OSS를 사용하세요. 웹 콘솔, API 접근, OIDC, LDAP, 2FA, 디바이스 관리 또는 기타 중앙 집중식 관리 기능이 필요하다면 [RustDesk Server Pro](/docs/ko/self-host/rustdesk-server-pro/)와 비교해 보세요.
|
||||
|
||||
## RustDesk Server OSS에는 무엇이 포함되나요?
|
||||
|
||||
- RustDesk ID, 렌더베스, 신호 전달을 위한 `hbbs`.
|
||||
- 직접 피어투피어 연결이 불가능한 경우 릴레이 트래픽을 처리하기 위한 `hbbr`.
|
||||
- 문서 및 [Discord](https://discord.com/invite/nDceKgxnkV)를 통한 커뮤니티 지원과 배포 안내.
|
||||
|
||||
## RustDesk Server OSS 시작하기
|
||||
|
||||
- 표준 배포 경로는 [Installation](/docs/ko/self-host/rustdesk-server-oss/install/) 가이드를 참고하세요.
|
||||
- 컨테이너 기반 설정을 원하시면 [Docker](/docs/ko/self-host/rustdesk-server-oss/docker/) 가이드를 사용하세요.
|
||||
- Windows 호스트용은 [Windows & PM2 or NSSM](/docs/ko/self-host/rustdesk-server-oss/windows/)를 사용하세요.
|
||||
- NAS 배포용은 [Synology](/docs/ko/self-host/rustdesk-server-oss/synology/) 가이드를 사용하세요.
|
||||
|
||||
{{% notice note %}}
|
||||
집이나 사무실에서 자체 서버를 구축하고 공개 IP/도메인을 통해 연결할 수 없는 경우, [this article](/docs/ko/self-host/nat-loopback-issues/)를 확인해 주세요.
|
||||
{{% /notice %}}
|
||||
|
||||
{{% children depth="3" showhidden="true" %}}
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: 설치
|
||||
weight: 1
|
||||
description: "Docker, systemd 스크립트 또는 Debian 패키지를 사용해 RustDesk 서버 OSS를 설치하기. 서버 요구 사항, 방화벽 규칙 및 배포 후 필요한 클라이언트 구성 단계를 검토하세요."
|
||||
keywords: ["rustdesk server install", "install rustdesk server oss", "rustdesk docker install", "rustdesk server firewall ports", "rustdesk hbbs hbbr install", "rustdesk self-host install"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 RustDesk 서버 OSS를 설치하고, 필요한 방화벽 포트를 열고, 클라이언트를 새 자체 호스팅 서버에 연결하십시오.
|
||||
|
||||
## RustDesk 서버 OSS를 설치하는 데 권장되는 방법은 무엇인가요?
|
||||
|
||||
대부분의 배포에서는 Docker가 가장 쉬운 설치 방법입니다. 이는 재현, 업그레이드 및 서버 간 이동이 가장 용이하기 때문입니다. Linux에서 기본 제공 서비스를 선호한다면 systemd 설치 스크립트나 Debian 패키지도 잘 작동할 수 있습니다.
|
||||
|
||||
## 어떤 설치 방법을 선택해야 하나요?
|
||||
|
||||
| 방법 | 가장 적합한 경우 | 사용하는 이유 |
|
||||
| --- | --- | --- |
|
||||
| Docker | 대부분의 자체 호스팅 배포 | 가장 간단한 업그레이드, 예측 가능한 설정 및 손쉬운 롤백 |
|
||||
| 설치 스크립트 | systemd 서비스를 빠르게 원하는 Linux 관리자 | 더 적은 수작업으로 `hbbs`, `hbbr` 및 클라이언트 구성 흐름을 설정함 |
|
||||
| Debian 패키지 | 패키지 도구를 사용하는 Debian 기반 시스템 | 설치를 기본 패키지 관리에 가깝게 유지함 |
|
||||
|
||||
## 동영상 자습서
|
||||
YouTube에는 많은 동영상 자습서가 있습니다. https://github.com/rustdesk/rustdesk/wiki/FAQ#video-tutorials.
|
||||
|
||||
## 서버 요구사항
|
||||
하드웨어 요구사항은 매우 낮습니다. 기본 클라우드 서버의 최소 구성만으로 충분하며, CPU와 메모리 요구사항도 최소입니다. 라즈베리 파이와 같은 장치를 사용할 수도 있습니다. 네트워크 크기에 관해 말씀드리자면, TCP 홀 펀칭 직접 연결이 실패하면 릴레이 트래픽이 소모됩니다. 릴레이 연결의 트래픽은 해상도 설정과 화면 업데이트에 따라 초당 30K에서 3M 사이입니다(1920x1080 화면). 사무용으로만 사용한다면 트래픽은 약 100K/s 정도입니다.
|
||||
|
||||
## 방화벽
|
||||
UFW가 설치되어 있다면 다음 명령어를 사용해 방화벽을 구성하세요:
|
||||
|
||||
```
|
||||
ufw allow 21114:21119/tcp
|
||||
ufw allow 21116/udp
|
||||
sudo ufw enable
|
||||
```
|
||||
|
||||
## 설치하기
|
||||
### 방법 1: Docker (권장)
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://get.docker.com)
|
||||
wget rustdesk.com/oss.yml -O compose.yml
|
||||
sudo docker compose up -d
|
||||
```
|
||||
|
||||
더 자세한 내용은 [Docker](/docs/ko/self-host/rustdesk-server-oss/docker/)를 확인해 주세요.
|
||||
|
||||
### 방법 2: 간단하게 실행할 수 있는 설치 스크립트를 사용하여 자체 서버를 systemd 서비스로 설치하기
|
||||
스크립트는 [Techahold](https://github.com/techahold/rustdeskinstall)에 호스팅되어 있으며, 저희 [Discord](https://discord.com/invite/nDceKgxnkV)에서 지원됩니다.
|
||||
|
||||
현재 스크립트는 릴레이 및 신호 서버(hbbr 및 hbbs)를 다운로드하고 설정하며, 구성 파일을 생성하고 비밀번호 보호된 웹페이지에 호스팅하여 클라이언트에 간편하게 배포합니다.
|
||||
|
||||
다음 명령어를 실행하세요:
|
||||
|
||||
```
|
||||
wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
|
||||
chmod +x install.sh
|
||||
./install.sh
|
||||
```
|
||||
|
||||
[Techahold's](https://github.com/techahold/rustdeskinstall) 리포지토리에도 업데이트 스크립트가 있습니다.
|
||||
|
||||
거기에서 설치 끝에 표시된 IP/DNS와 키를 메모해 두고 이를 각각 클라이언트 설정 > 네트워크 > ID/릴레이 서버 `ID server` 및 `Key` 필드에 삽입하세요. 다른 필드는 비워두세요(아래 노트 참조).
|
||||
|
||||
### 방법 3: Debian 배포판용 deb 파일을 사용하여 자체 서버를 systemd 서비스로 설치하기
|
||||
|
||||
[Download](https://github.com/rustdesk/rustdesk-server/releases/latest) deb 파일을 직접 다운로드하여 `apt-get -f install <filename>.deb` 또는 `dpkg -i <filename>.deb`로 설치해 주세요.
|
||||
|
||||
## 서버 설치 후 클라이언트는 무엇이 필요합니까?
|
||||
|
||||
서버가 실행된 후, 클라이언트는 보통 `ID Server` 주소와 서버 공개 `Key`를 필요로 합니다. RustDesk Server Pro 클라이언트를 구성하는 경우, `API Server`도 필요할 수 있습니다. [this](/docs/ko/self-host/client-configuration/#2-수동-구성)를 확인해 주세요.
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Synology
|
||||
weight: 22
|
||||
description: "Synology NAS에 RustDesk 서버 OSS를 셀프호스팅하세요. DSM 6 또는 DSM 7.2 컨테이너 관리자를 위한 올바른 가이드를 선택하고, 지원되는 Synology 모델에서 Docker를 사용해 배포하세요."
|
||||
keywords: ["rustdesk synology", "rustdesk nas", "rustdesk synology docker", "rustdesk dsm 7.2", "rustdesk synology container manager"]
|
||||
---
|
||||
|
||||
이 Synology 가이드를 사용하여 DSM 6 또는 DSM 7.2 Container Manager가 실행되는 NAS에서 RustDesk Server OSS를 자체 호스팅하십시오.
|
||||
|
||||
Synology에는 "Docker"와 "Container Manager"의 두 가지 유형의 Docker가 있습니다. DSM 7.2 이상을 사용하는 경우 DSM 7.2용 가이드를 따르고, 이전 시스템을 사용하는 경우 DSM 6 가이드를 따르십시오.
|
||||
|
||||
## 어떤 Synology 가이드를 선택해야 하나요?
|
||||
|
||||
| Platform version | Best guide |
|
||||
| --- | --- |
|
||||
| DSM 7.2 and later | [Synology DSM 7.2](/docs/ko/self-host/rustdesk-server-oss/synology/dsm-7/) |
|
||||
| Older Synology systems using the old Docker package | [Synology DSM 6](/docs/ko/self-host/rustdesk-server-oss/synology/dsm-6/) |
|
||||
|
||||
## Synology 배포 체크리스트
|
||||
|
||||
1. NAS가 DSM 6 또는 DSM 7.2+를 실행하는지 확인하세요.
|
||||
2. 해당 DSM 버전에 맞는 Docker 또는 Container Manager 패키지를 설치하세요.
|
||||
3. 해당 패키지에 맞는 RustDesk 배포 가이드를 따르세요.
|
||||
4. 필요한 RustDesk 포트를 열고 컨테이너 데이터의 지속적 저장소를 확인하세요.
|
||||
|
||||
Portainer와 함께 Synology를 사용하는 경우, [this tutorial](https://mariushosting.com/how-to-install-rustdesk-on-your-synology-nas/)를 참조해 주세요.
|
||||
|
||||
{{% children depth="3" showhidden="true" %}}
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
title: Synology DSM 6
|
||||
weight: 22
|
||||
description: "Docker를 사용하여 Synology DSM 6에서 RustDesk 서버 OSS를 설치하기. 이전 Synology 시스템에서 컨테이너 설정, 포트 매핑 및 영구 데이터를 위한 DSM 6 워크플로우를 따르세요."
|
||||
keywords: ["rustdesk synology dsm 6", "rustdesk synology docker", "rustdesk nas dsm 6", "rustdesk self-host synology"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 구형 NAS 시스템에서 Docker를 사용해 Synology DSM 6에 RustDesk 서버 OSS를 설치하세요.
|
||||
|
||||
> 타사에서 제공하는 최신 대체 자습서는 [here](https://mariushosting.com/how-to-install-rustdesk-on-your-synology-nas/)입니다.
|
||||
|
||||
이 자습서는 최신 DSM v6 및 v7을 기반으로 합니다.
|
||||
|
||||
{{% notice note %}}
|
||||
DSM 7.2 업데이트 이후 Docker가 새로운 "컨테이너 관리자"로 업그레이드되었으니, 대신 [this article](/docs/ko/self-host/rustdesk-server-oss/synology/dsm-7)를 확인해 주세요.
|
||||
{{% /notice %}}
|
||||
|
||||
## 언제 DSM 6 가이드를 사용해야 하나요?
|
||||
|
||||
Synology NAS가 여전히 DSM 6에 있고, 이전 버전의 Docker 패키지를 통해 RustDesk 서버 OSS를 배포하는 경우에만 이 가이드를 사용하세요. NAS가 이미 DSM 7.2에 있다면 대신 컨테이너 관리자 가이드를 사용하세요.
|
||||
|
||||
## DSM 6 배포 체크리스트
|
||||
|
||||
- NAS가 여전히 DSM 6을 실행하고 있는지 확인하세요.
|
||||
- 패키지 센터에서 Synology `Docker` 패키지를 설치하세요.
|
||||
- RustDesk 데이터와 키를 위한 영구적인 호스트 폴더를 생성하세요.
|
||||
- 호스트 네트워킹과 자동 재시작이 활성화된 상태로 `hbbs`와 `hbbr`를 모두 실행하세요.
|
||||
- 컨테이너가 시작된 후 `id_ed25519.pub`를 가져오세요.
|
||||
|
||||
## Docker 설치하기
|
||||
|
||||
| 패키지 센터 열기 | Docker 설치하기 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
## RustDesk 서버 설치하기
|
||||
|
||||
| Docker의 레지스트리에서 rustdesk-server를 검색하고 더블클릭하여 설치하기 | 설치된 rustdesk-server 이미지, 더블클릭하여 rustdesk-server 컨테이너 생성 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
## hbbs 컨테이너 생성
|
||||
|
||||
위에서 언급한 대로, rustdesk-server 이미지를 두 번 클릭하여 새 컨테이너를 생성하고 이름을 `hbbs`로 설정합니다.
|
||||

|
||||
|
||||
위의 `Advanced Settings`를 클릭하세요.
|
||||
|
||||
- `Enable auto-restart`를 활성화하세요.
|
||||

|
||||
|
||||
- `Use the same network as Docker Host`를 활성화하세요. 호스트 네트에 대한 자세한 내용은 [check](/docs/ko/self-host/rustdesk-server-oss/docker/#net-host)를 참조하십시오.
|
||||

|
||||
|
||||
- 호스트 디렉터리를 `/root`에 마운트하고(예: `/home/rustdesk/`), hbbs는 이 디렉터리에 일부 파일(데이터베이스 및 `key` 파일)을 생성하며, 이 파일들은 재부팅 후에도 지속되어야 합니다.
|
||||
|
||||
| 마운트 | 호스트 디렉터리에 생성된 파일 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
- 명령 설정
|
||||
{{% notice note %}}
|
||||
Synology의 OS는 Debian 기반으로, 호스트 네트워크(--net=host)가 잘 작동하므로 `-p` 옵션으로 포트를 매핑할 필요가 없습니다.
|
||||
|
||||
{{% /notice %}}
|
||||
|
||||

|
||||
|
||||
- 완료
|
||||
|
||||
## hbbr 컨테이너 생성
|
||||
|
||||
위의 `hbbs` 단계를 반복하되, 컨테이너 이름을 `hbbr`로 하고 명령어(설정 명령 단계용)는 `hbbr`로 지정하십시오.
|
||||
|
||||

|
||||
|
||||
## hbbr/hbbs 컨테이너
|
||||
|
||||

|
||||
|
||||
| 컨테이너를 두 번 클릭하고 로그 확인 | 호스트 네트워크를 사용하여 hbbs/hbbr를 이중 확인 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
## 키를 가져오세요
|
||||
|
||||
파일 스테이션을 사용하기 전에 폴더 설정으로 이동하여 `id_ed25519.pub`를 다운로드하고 텍스트 편집기로 열어 키를 통해 확인하세요.
|
||||
@@ -0,0 +1,107 @@
|
||||
---
|
||||
title: Synology DSM 7.2
|
||||
weight: 20
|
||||
description: "Container Manager를 사용하여 Synology DSM 7.2에 RustDesk 서버 OSS를 설치하기. 최신 Synology Docker 워크플로우, 지원 모델 참고사항 및 컨테이너 설정 단계를 따르세요."
|
||||
keywords: ["rustdesk synology dsm 7.2", "rustdesk container manager", "rustdesk synology nas", "rustdesk synology docker", "rustdesk self-host synology"]
|
||||
---
|
||||
|
||||
<!-- 번역가용: "버튼"과 같은 요소를 번역할 때는 단순히 번역하지 말고, 해당 인터페이스의 실제 명칭을 참고해 주세요. -->
|
||||
이 안내서를 사용하여 Synology DSM 7.2에서 Container Manager와 함께 RustDesk Server OSS를 설치하세요.
|
||||
|
||||
DSM 7.2 업데이트 이후 Synology는 기존의 'Docker' 패키지를 'Container Manager'로 이름을 변경했습니다. 이는 새로운 GUI를 제공하며, GUI 내에 'docker-compose'가 포함되어 있어 Docker를 보다 쉽게 생성할 수 있게 해줍니다.
|
||||
|
||||
## 언제 DSM 7.2 가이드를 사용해야 하나요?
|
||||
|
||||
Synology NAS가 DSM 7.2를 실행하고 있으며 Synology Container Manager를 통해 RustDesk 서버를 배포하려는 경우 이 가이드를 사용하세요. 이는 현재 Synology의 권장 방식이며, 이전 DSM 6 Docker 워크플로우보다 유지보수가 더 용이합니다.
|
||||
|
||||
## DSM 7.2 배포 체크리스트
|
||||
|
||||
- NAS 모델이 Container Manager를 지원하는지 확인하세요.
|
||||
- 패키지 센터에서 `Container Manager`를 설치하세요.
|
||||
- RustDesk 데이터를 위한 영구 공유 폴더를 생성하세요.
|
||||
- `hbbs`와 `hbbr`를 하나의 compose 프로젝트에 배포하세요.
|
||||
- `id_ed25519.pub`를 가져오고 클라이언트를 구성하세요.
|
||||
- 라우터에서 필요한 RustDesk 포트를 포워딩하세요.
|
||||
|
||||
## 지원되는 모델 및 요구사항
|
||||
|
||||
컨테이너 관리자는 J 시리즈와 같은 일부 저가형 모델에 대한 ARM64 지원을 제공합니다. 지원되는 모델의 자세한 목록은 [Synology website](https://www.synology.com/en-us/dsm/packages/ContainerManager)를 확인하십시오.
|
||||
대부분의 경우 Docker와 RustDesk 서버를 설치하기 위해 추가 RAM을 설치할 필요가 없습니다.
|
||||
|
||||
## 1. 컨테이너 관리자(Docker) 설치하기
|
||||
|
||||
"패키지 센터"를 열고, "컨테이너 관리자"를 검색하여 설치하세요.
|
||||
|
||||

|
||||
|
||||
## 2. 폴더 만들기
|
||||
|
||||
"컨테이너 관리자"를 설치한 후, `docker`라는 공유 폴더가 생성됩니다. 여기에 우리 서버의 데이터를 저장합시다.
|
||||
|
||||
파일 스테이션을 열고 `rustdesk-server`(또는 원하는 이름)이라는 폴더를 만드세요. 그런 다음 그 안에 그림과 같이 `data`라는 폴더를 생성하세요.
|
||||
|
||||

|
||||
|
||||
## 3. 컨테이너 생성
|
||||
|
||||
컨테이너 관리자를 열고 프로젝트로 이동한 후 생성을 클릭하세요.
|
||||
|
||||
프로젝트 이름을 `rustdesk-server`로 입력하고 소스를 "업로드 compose.yml"에서 "compose.yml 생성"으로 변경한 뒤, 다음 내용을 상자에 복사하세요.
|
||||
|
||||

|
||||
|
||||
```yaml
|
||||
services:
|
||||
hbbs:
|
||||
container_name: hbbs
|
||||
image: rustdesk/rustdesk-server:latest # Please change this to rustdesk/rustdesk-server-pro:latest if you want to install Pro.
|
||||
command: hbbs
|
||||
volumes:
|
||||
- ./data:/root
|
||||
network_mode: host
|
||||
depends_on:
|
||||
- hbbr
|
||||
restart: always
|
||||
|
||||
hbbr:
|
||||
container_name: hbbr
|
||||
image: rustdesk/rustdesk-server:latest # Please change this to rustdesk/rustdesk-server-pro:latest if you want to install Pro.
|
||||
command: hbbr
|
||||
volumes:
|
||||
- ./data:/root
|
||||
network_mode: host
|
||||
restart: always
|
||||
|
||||
# Because using docker host mode
|
||||
# Just in case you forgot the ports:
|
||||
# 21114 TCP for web console, only available in Pro version
|
||||
# 21115 TCP for NAT type test
|
||||
# 21116 TCP TCP hole punching
|
||||
# 21116 UDP heartbeat/ID server
|
||||
# 21117 TCP relay
|
||||
```
|
||||
|
||||
`Web portal settings`를 건너뛰기 후 완료하십시오.
|
||||
|
||||
## 4. 작동하는지 확인하세요
|
||||
|
||||
파일 스테이션을 열면 `docker/rustdesk-server/data` 폴더에 `id_ed25519`, `id_ed25519.pub`가 표시됩니다. 이를 다운로드한 후 어떤 텍스트 편집기에서든 열거나 [Synology Text Editor](https://www.synology.com/en-us/dsm/packages/TextEditor)를 사용할 수 있습니다. 이는 RustDesk 클라이언트에 필요한 공개 키입니다.
|
||||
|
||||
공개 키는 다음과 같이 보입니다:
|
||||
|
||||

|
||||
|
||||
클라이언트를 설정하려면 [here](/docs/ko/client)를 확인하세요. `ID server`와 `Key`만 필요합니다. `Relay server`는 필요하지 않습니다. 왜냐하면 이미 `hbbs`에 설정해 놓았기 때문입니다. `hbbs`는 이 정보를 자동으로 제공합니다.
|
||||
|
||||
## 5. 라우터에서 포트 포워딩 설정하기
|
||||
|
||||
라우터의 관리자 웹페이지로 이동하여 `Port forwarding`와 관련된 항목을 찾으세요. `WAN` 또는 `Firewall` 설정에 나타나야 합니다.
|
||||
|
||||
아직 설정을 찾지 못했다면, Google에서 `{Router brand} + port forwarding` 또는 `{Router model} + port forwarding`를 검색해보세요. 이 장치가 ISP에서 제공한 것이라면 해당 업체에 문의하세요.
|
||||
|
||||
다음과 같은 필수 포트를 열어주세요:
|
||||
* 웹 콘솔용 `21114` TCP, 프로 버전에서만 사용 가능
|
||||
* NAT 유형 테스트용 `21115` TCP
|
||||
* TCP 홀 펀칭용 `21116` TCP
|
||||
* 심장 박동/ID 서버용 `21116` UDP
|
||||
* 릴레이용 `21117` TCP
|
||||
@@ -0,0 +1,140 @@
|
||||
---
|
||||
title: Windows 및 PM2 또는 NSSM
|
||||
weight: 20
|
||||
description: "PM2 또는 NSSM을 사용하여 Windows에서 RustDesk Server OSS를 실행하세요. 이 안내서에서는 Windows에서 hbbs 및 hbbr를 호스팅하기 위한 장단점, 서비스 설정 단계 및 로그 명령에 대해 설명합니다."
|
||||
keywords: ["rustdesk server windows", "rustdesk pm2", "rustdesk nssm", "rustdesk hbbs windows", "rustdesk hbbr windows", "rustdesk self-host windows"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 PM2 또는 NSSM을 통해 Windows에서 RustDesk Server OSS를 실행하십시오. 간단한 사용자 수준 설정을 원하는지, 아니면 Windows 서비스 관리를 원하는지에 따라 선택하세요.
|
||||
|
||||
## Windows에서 RustDesk Server OSS를 실행해야 하나요?
|
||||
|
||||
Windows에서도 RustDesk Server OSS를 실행할 수 있지만, 대부분의 프로덕션 배포에서는 여전히 Linux가 더 안정적인 기본 옵션입니다. Windows는 이미 Windows 서버를 운영하고 있고 서비스 모델을 잘 이해하는 팀에게는 적합하지만, 장기적인 자체 호스팅에는 더 취약한 경향이 있습니다.
|
||||
|
||||
## PM2 vs NSSM
|
||||
|
||||
| 방법 | 최적의 사용 사례 | 사용하는 이유 |
|
||||
| --- | --- | --- |
|
||||
| NSSM | 전용 Windows 서버 배포 | Windows 서비스로 실행되며 사용자 로그인 없이 시작됨 |
|
||||
| PM2 | 혼합형 Windows 머신 또는 보다 간단한 운영자 워크플로우 | 이미 Node.js를 사용하고 주기적으로 호스트에 로그인하는 경우 관리가 더 용이함 |
|
||||
|
||||
## Windows 자체 호스팅 체크리스트
|
||||
|
||||
1. RustDesk 서버 Windows 바이너리를 다운로드하세요.
|
||||
2. NSSM과 PM2 중 어느 것이 더 적합한지 결정하세요.
|
||||
3. 선택한 프로세스 관리자를 설치하세요.
|
||||
4. `hbbs`와 `hbbr`를 등록하고 시작하세요.
|
||||
5. 필요한 방화벽 포트를 열고 두 프로세스가 온라인 상태로 유지되는지 확인하세요.
|
||||
|
||||
{{% notice note %}}
|
||||
Windows 보안 정책은 까다롭습니다. 이 튜토리얼이 작동하지 않거나 불안정한 연결을 경험한다면, Linux 서버로 마이그레이션해주세요.
|
||||
{{% /notice %}}
|
||||
|
||||
{{% notice note %}}
|
||||
GUI 버전인 `RustDeskServer.setup.exe`는 더 이상 유지보수가 되지 않으므로 권장하지 않습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
## 갈림길
|
||||
이제 두 가지 선택지가 있습니다: PM2(더 쉬움) 또는 NSSM(조금 어려움)을 사용해 RustDesk 서버를 시작할 수 있습니다.
|
||||
NSSM을 사용하는 데에는 몇 가지 장점이 있습니다:
|
||||
- 이전 버전의 Windows(Windows Server 2008 R2/Windows 7 및 이전 버전)와의 하위 호환성(비록 테스트되지는 않았지만).
|
||||
- Windows Server에 이상적입니다.
|
||||
- 로그인 없이 부팅 시 자동으로 시작됩니다(시작 항목을 생성한 사용자가 로그인할 필요가 없습니다).
|
||||
- 두 바이너리를 모두 서비스로 실행합니다.
|
||||
- 독립형(노드.js에 의존하지 않음)
|
||||
|
||||
PM2의 장점은 다음과 같습니다:
|
||||
- 서버를 주 업무용 컴퓨터와 같은 컴퓨터에서 실행하는 경우 좋습니다.
|
||||
- RustDesk 시작 항목을 생성한 사용자에게 정기적으로 로그인합니다.
|
||||
- 사용자 친화적입니다.
|
||||
|
||||
## NSSM을 이용한 설치
|
||||
|
||||
### NSSM 설치
|
||||
[download](https://github.com/dkxce/NSSM/releases/download/v2.25/NSSM_v2.25.zip)를 다운로드하고 NSSM을 선택한 후, Windows 시스템에 맞는 아키텍처를 선택하여 압축을 풀어주세요. (x86인 경우 win32 폴더의 내용을 사용하고, x64인 경우 win64 폴더의 내용을 사용하세요.) 또한 NSSM의 바이너리를 설치 드라이브의 `Program Files\NSSM` 디렉터리로 이동하는 것이 좋습니다(일단 서비스로 시작된 NSSM은 배치된 디렉터리에서 이동할 수 없으므로, `Program Files`에 보관하는 것이 가장 적합합니다). 또한 경로 변수에 해당 경로(`C:\Program Files\NSSM` 등)를 추가하는 것이 권장됩니다.
|
||||
|
||||
### NSSM이 제대로 설치되었는지 확인하기
|
||||
모든 작업을 올바르게 수행했다면, 폴더 `C:\Program Files\NSSM`(이 예에서는 C: 드라이브를 사용했지만 Windows를 설치한 드라이브나 원하는 경로를 사용해도 됩니다)에는 파일 `nssm.exe`만 있어야 합니다.
|
||||
|
||||
이 예에서는 `C:\Program Files\NSSM`를 사용하겠습니다.
|
||||
|
||||
명령 프롬프트를 열고 `nssm`를 실행하세요. 도움말 페이지가 표시되면 다음 단계로 진행할 준비가 된 것입니다.
|
||||
|
||||
### hbbr 및 hbbs 실행
|
||||
[RustDesk Server](https://github.com/rustdesk/rustdesk-server/releases)의 Windows 버전을 다운로드하세요.
|
||||
프로그램을 `C:\Program Files\RustDesk Server`(또는 원하는 위치에 압축을 풀고, 서비스 설치 후 변경되지 않도록 하세요)에 압축 해제합니다. 이제 명령 프롬프트로 돌아가세요.
|
||||
|
||||
이 예시에서는 `C:\Program Files\RustDesk Server`를 사용하겠습니다.
|
||||
|
||||
```cmd
|
||||
nssm install "RustDesk hbbs service" "C:\Program Files\RustDesk Server\hbbs.exe"
|
||||
nssm install "RustDesk hbbr service" "C:\Program Files\RustDesk Server\hbbr.exe"
|
||||
```
|
||||
|
||||
**노트:**
|
||||
- `RustDesk hbbs service`를 원하는 이름으로 변경하여 hbbs 서비스로 지정할 수 있습니다.
|
||||
- `RustDesk hbbr service`를 원하는 이름으로 변경하여 hbbr 서비스로 지정할 수 있습니다.
|
||||
- `C:\Program Files\RustDesk Server\hbbs.exe`를 RustDesk 바이너리가 있는 위치로 변경할 수 있습니다.
|
||||
- `C:\Program Files\RustDesk Server\hbbr.exe`를 RustDesk 바이너리가 있는 위치로 변경할 수 있습니다.
|
||||
|
||||
**명령어 템플릿:**
|
||||
|
||||
복사해서 붙여넣고 수정하기만 하면 되는 명령어 템플릿입니다.
|
||||
|
||||
```cmd
|
||||
nssm install <Desired hbbs servicename> <RustDesk hbbs binary path> <RustDesk hbbs arguments>
|
||||
nssm install <Desired hbbr servicename> <RustDesk hbbr binary path> <RustDesk hbbr arguments>
|
||||
```
|
||||
|
||||
**서비스 시작**
|
||||
|
||||
서비스를 성공적으로 설치한 후에는 서비스를 시작해야 합니다.
|
||||
|
||||
```cmd
|
||||
nssm start <Desired hbbs servicename>
|
||||
nssm start <Desired hbbr servicename>
|
||||
```
|
||||
|
||||
**완료!**
|
||||
|
||||
(위의 방법은 Windows Server Core 2022 Standard에서 테스트되었습니다.)
|
||||
|
||||
## 또는
|
||||
|
||||
## PM2를 사용한 설치
|
||||
|
||||
### Node.js 설치하기
|
||||
|
||||
[download](https://nodejs.org/dist/v16.14.2/node-v16.14.2-x86.msi)를 열고 Node.js를 설치해주세요.
|
||||
PM2의 런타임 환경이므로 먼저 Node.js를 설치해야 합니다.
|
||||
|
||||
### PM2 설치하기
|
||||
|
||||
`cmd.exe`에 아래 명령어를 입력하고 각 줄마다 <kbd>Enter</kbd> 키를 누른 후 한 줄씩 실행해주세요.
|
||||
|
||||
```cmd
|
||||
npm install -g pm2
|
||||
npm install pm2-windows-startup -g
|
||||
pm2-startup install
|
||||
```
|
||||
|
||||
### hbbr 및 hbbs 실행
|
||||
|
||||
[RustDesk Server](https://github.com/rustdesk/rustdesk-server/releases)의 Windows 버전을 다운로드하세요. 프로그램을 C: 드라이브에 압축 해제하세요. 다음 네 가지 명령어를 실행하세요:
|
||||
|
||||
```cmd
|
||||
cd C:\rustdesk-server-windows-x64
|
||||
pm2 start hbbs.exe
|
||||
pm2 start hbbr.exe
|
||||
pm2 save
|
||||
```
|
||||
|
||||
### 로그 보기
|
||||
|
||||
```cmd
|
||||
pm2 log hbbr
|
||||
pm2 log hbbs
|
||||
```
|
||||
|
||||
## 대안 자습서
|
||||
https://pedja.supurovic.net/setting-up-self-hosted-rustdesk-server-on-windows/?lang=lat
|
||||
@@ -0,0 +1,117 @@
|
||||
---
|
||||
title: 2FA
|
||||
weight: 16
|
||||
description: "RustDesk 서버 프로에서 이메일 인증 또는 Authy, Microsoft Authenticator, Google Authenticator와 같은 TOTP 앱을 사용해 2단계 인증을 활성화하십시오."
|
||||
keywords: ["rustdesk 2fa", "rustdesk totp", "rustdesk email verification", "rustdesk authenticator", "rustdesk server pro 2fa"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 RustDesk Server Pro에서 더 강력한 계정 보안을 위해 2FA를 활성화하십시오.
|
||||
|
||||
계정에 로그인할 때 2FA 인증을 켜면 계정 보안을 향상시킬 수 있습니다.
|
||||
|
||||
## 어떤 2FA 방법을 선택해야 하나요?
|
||||
|
||||
| 방법 | 최적의 사용 사례 | 사용하는 이유 |
|
||||
| --- | --- | --- |
|
||||
| 이메일 인증 | 이미 SMTP에 의존하는 간편한 배포 | 사용자가 이미 인증 앱을 사용하지 않는 경우 가장 쉽게 도입 가능 |
|
||||
| TOTP | 강력한 일상적인 계정 보안 | 장기적인 관리자 및 운영자 계정에 더 안전하고 표준화된 방식 |
|
||||
|
||||
## 2FA 빠른 답변
|
||||
|
||||
- RustDesk Server Pro는 이메일 인증과 TOTP를 지원합니다.
|
||||
- TOTP가 활성화되면 이메일 로그인 인증은 더 이상 사용되지 않습니다.
|
||||
- TOTP 설정 시 6개의 백업 코드가 생성됩니다.
|
||||
- 백업 코드는 한 번만 사용할 수 있습니다.
|
||||
- 만료된 2FA는 여전히 작동할 수 있지만, 다시 활성화하면 비밀번호가 새로 생성되어 보안이 강화됩니다.
|
||||
|
||||
현재 당사 웹 콘솔은 두 가지 종류의 2FA를 지원합니다:
|
||||
|
||||
1. 이메일 인증
|
||||
2. TOTP. 인증 코드를 생성하려면 [Authy](https://authy.com), [Microsoft Authenticator](https://www.microsoft.com/en-us/security/mobile-authenticator-app/) 및 [Google Authenticator](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2)와 같은 타사 인증 앱이 필요합니다.
|
||||
|
||||
먼저 계정 설정 페이지로 이동해야 합니다.
|
||||
|
||||

|
||||
|
||||
## 이메일 인증
|
||||
|
||||
로그인을 위한 이메일 인증을 활성화하려면 다음이 필요합니다:
|
||||
|
||||
1. 이메일을 설정하세요.
|
||||
2. `Enable email login verification` 옵션을 활성화하세요.
|
||||
3. `Submit`를 클릭하세요.
|
||||
|
||||

|
||||
|
||||
다음에 로그인할 때 RustDesk는 인증 코드 이메일을 보내며, 웹 페이지도 인증 페이지로 이동합니다.
|
||||
|
||||

|
||||
|
||||
## TOTP
|
||||
|
||||
TOTP는 널리 사용되는 2FA 방법이므로, RustDesk 서버 프로의 웹 콘솔에서 2FA는 TOTP 인증을 의미합니다.
|
||||
|
||||
### 인증 앱 준비하기
|
||||
|
||||
먼저 인증 앱을 준비해야 합니다.
|
||||
[Authy](https://authy.com), [Microsoft Authenticator](https://www.microsoft.com/en-us/security/mobile-authenticator-app/) 및 [Google Authenticator](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2) 인증 앱 중에서 선택할 수 있습니다.
|
||||
|
||||
### 2FA 활성화
|
||||
|
||||
설정 페이지에 `Enable 2FA` 버튼이 표시되면 현재 2FA가 활성화되지 않은 것입니다.
|
||||
|
||||

|
||||
|
||||
버튼을 클릭하면 2FA를 활성화할 수 있는 양식이 나타납니다.
|
||||
|
||||

|
||||
|
||||
인증 앱을 열고 QR코드를 스캔하여 계정을 추가하세요.
|
||||
|
||||
QR코드 스캔이 불편한 경우, 여기에 직접 코드를 입력할 수도 있습니다.
|
||||
|
||||

|
||||
|
||||
인증 앱에서 계정을 추가한 후, 인증 앱에서 인증 코드를 입력하여 2FA를 켜세요.
|
||||
|
||||
2FA가 성공적으로 켜진 후, RustDesk Server Pro는 6개의 **백업 코드**와도 연결됩니다. 따라서 인증 앱을 사용할 수 없는 경우에도 이 **백업 코드**를 사용해 인증을 통과할 수 있습니다.
|
||||
|
||||

|
||||
|
||||
{{% notice note %}}
|
||||
1. 이 백업 코드는 한 번만 사용할 수 있습니다.
|
||||
|
||||
2. 백업 코드를 안전한 곳에 보관해 주세요.
|
||||
{{% /notice %}}
|
||||
|
||||
### 로그인 인증
|
||||
|
||||
2FA가 활성화되면 이메일 로그인 인증은 더 이상 사용되지 않습니다. 대신 2FA 로그인 인증을 사용하게 됩니다.
|
||||
|
||||

|
||||
|
||||
로그인 시 인증 페이지로 리디렉션됩니다.
|
||||
|
||||

|
||||
|
||||
### 설정 수정
|
||||
|
||||
2FA가 활성화된 경우 계정 설정을 수정하려면 추가적인 2FA 인증이 필요합니다.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 2FA 상태
|
||||
|
||||
2FA는 총 3가지 상태를 가집니다: 비활성화, 활성화 및 만료됨.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
{{% notice note %}}
|
||||
2FA는 만료된 후에도 정상적으로 사용할 수 있습니다. 다만 오랜 기간 동안 2FA 설정이 변경되지 않았다는 의미입니다(기본값 180일). 보안을 위해 2FA를 다시 활성화하는 것이 좋습니다. 이렇게 하면 비밀 데이터가 업데이트될 수 있습니다.
|
||||
{{% /notice %}}
|
||||
@@ -0,0 +1,117 @@
|
||||
---
|
||||
title: RustDesk 서버 프로
|
||||
description: "RustDesk Server Pro의 완벽한 가이드 - 프리미엄 자체 호스팅 원격 데스크톱 솔루션입니다. 엔터프라이즈 인증(OIDC, LDAP, 2FA), 웹 콘솔, API 액세스 및 전문적인 배포를 위한 고급 보안 제어 기능을 제공합니다."
|
||||
keywords: ["rustdesk server pro", "rustdesk pro server", "remote desktop server", "enterprise remote access", "rustdesk professional", "self-hosted rdp", "rustdesk enterprise", "remote desktop solution", "rustdesk licensing", "rustdesk web console"]
|
||||
weight: 200
|
||||
pre: "<b>2.2. </b>"
|
||||
---
|
||||
|
||||
RustDesk Server Pro는 중앙 집중식 관리, 신원 통합 및 RustDesk 서버 코어를 기반으로 한 고급 제어 기능이 필요한 팀을 위한 상용 자체 호스팅 배포 옵션입니다.
|
||||
|
||||
## RustDesk Server Pro 빠른 답변
|
||||
|
||||
- 중앙 집중식 관리 기능, 신원 통합 또는 정책 제어가 필요할 때 Pro를 선택하세요.
|
||||
- 가장 빠르고 쉬운 배포를 위해 [Docker](/docs/ko/self-host/rustdesk-server-pro/installscript/docker/)로 시작하세요.
|
||||
- `systemd`와 스크립트된 Linux 설정을 원한다면 [install.sh](/docs/ko/self-host/rustdesk-server-pro/installscript/script/)를 사용하세요.
|
||||
- [Windows install path](/docs/ko/self-host/rustdesk-server-pro/installscript/windows/)는 이전 버전으로 간주하세요.
|
||||
- 서버가 시작된 직후 HTTPS, 라이선스 및 클라이언트 구성에 대해 계획을 세우세요.
|
||||
|
||||
## RustDesk Server Pro를 선택하는 경우
|
||||
|
||||
RustDesk Server OSS만으로 부족하고 다음이 필요할 때 RustDesk Server Pro를 선택하세요:
|
||||
|
||||
- 계정
|
||||
- [Web console](/docs/ko/self-host/rustdesk-server-pro/console/)
|
||||
- [API](https://github.com/rustdesk/rustdesk/wiki/FAQ#api-of-rustdesk-server-pro)
|
||||
- [OIDC](/docs/ko/self-host/rustdesk-server-pro/oidc/), [LDAP](/docs/ko/self-host/rustdesk-server-pro/ldap/), [2FA](/docs/ko/self-host/rustdesk-server-pro/2fa/)
|
||||
- 주소록
|
||||
- 로그 관리(연결, 파일 전송, 알람 등)
|
||||
- 디바이스 관리
|
||||
- [Security Settings sync](/docs/ko/self-host/rustdesk-server-pro/strategy/)
|
||||
- [Access control](/docs/ko/self-host/rustdesk-server-pro/permissions/)
|
||||
- [Multiple relay servers](/docs/ko/self-host/rustdesk-server-pro/relay/)(가장 가까운 릴레이를 자동으로 선택함)
|
||||
- [Custom client generator](/docs/ko/self-host/client-configuration/#1-사용자-지정-클라이언트-생성기-pro-전용-기본-플랜-또는-사용자-지정-플랜)
|
||||
- 웹소켓
|
||||
- 웹 클라이언트 자체 호스팅
|
||||
|
||||
{{% notice note %}}
|
||||
집이나 사무실에서 자체 서버를 구축하고 공개 IP/도메인을 통해 연결할 수 없는 경우, [this article](/docs/ko/self-host/nat-loopback-issues/)를 확인해 주세요.
|
||||
{{% /notice %}}
|
||||
|
||||
{{% notice note %}}
|
||||
계속하기 전에 먼저 이 내용을 읽어보시는 것을 권장합니다, [How does self-hosted server work?](/docs/ko/self-host/#자체-호스팅-서버는-어떻게-작동하나요).
|
||||
{{% /notice %}}
|
||||
|
||||
## 하드웨어 요구사항
|
||||
|
||||
가장 낮은 수준의 VPS만으로도 사용 사례에 충분합니다. 서버 소프트웨어는 CPU와 메모리 집약적이지 않습니다. 2코어/4GB Vultr 서버에 호스팅된 당사의 공개 ID 서버는 100만 개 이상의 엔드포인트를 지원합니다. 각 릴레이 연결은 초당 평균 180kb를 소비합니다. 1개의 CPU 코어와 1G RAM만으로도 1000개의 릴레이 동시 연결을 지원할 수 있습니다.
|
||||
|
||||
## 기사 튜토리얼
|
||||
[Step-by-Step Guide: Self-Host RustDesk Server Pro on Cloud via Docker for Secure Remote Access](https://www.linkedin.com/pulse/step-by-step-guide-self-host-rustdesk-server-pro-cloud-montinaro-fwnmf/)
|
||||
|
||||
## 동영상 튜토리얼
|
||||
|
||||
[Beginner's Guide: Self-Host RustDesk Server Pro for Novice Linux User](https://www.youtube.com/watch?v=MclmfYR3frk)
|
||||
|
||||
[Quick Guide: Self-Host RustDesk Server Pro for Adavanced Linux User](https://youtu.be/gMKFEziajmo)
|
||||
|
||||
## 라이선스
|
||||
|
||||
라이선스는 https://rustdesk.com/pricing.html에서 받을 수 있으며, 자세한 내용은 [license](/docs/ko/self-host/rustdesk-server-pro/license/) 페이지를 확인하십시오.
|
||||
|
||||
## 시작하기
|
||||
### 1. 설치
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://get.docker.com)
|
||||
wget rustdesk.com/pro.yml -O compose.yml
|
||||
sudo docker compose up -d
|
||||
```
|
||||
|
||||
자세한 내용은 [Docker](/docs/ko/self-host/rustdesk-server-pro/installscript/docker/)를 확인하십시오.
|
||||
|
||||
### 2. 필요한 포트
|
||||
|
||||
`21114`-`21119` TCP 및 `21116` UDP 포트를 열어야 하며, 방화벽 규칙과 Docker 포트 매핑을 설정할 때 이들 포트가 정확히 설정되었는지 확인하십시오.
|
||||
|
||||
이 포트에 대한 자세한 정보는 [here](/docs/ko/self-host/rustdesk-server-oss/install/#방화벽)를 확인하십시오.
|
||||
|
||||
### 3. 라이선스 설정
|
||||
|
||||
`http://<server ip>:21114`, [log in](/docs/ko/self-host/rustdesk-server-pro/console/#로그인)에 기본 자격 증명 admin/test1234를 사용해 웹 콘솔을 엽니다. `admin`/`test1234`도 동일합니다. [this guide](/docs/ko/self-host/rustdesk-server-pro/license/#라이선스-설정)를 따라 라이선스를 설정하십시오.
|
||||
|
||||
### 4. 웹 콘솔용 HTTPS 설정
|
||||
|
||||
> 체험 기간 동안 HTTPS를 사용하지 않으려면 이 단계를 건너뛸 수 있지만, HTTPS를 설정한 후 클라이언트의 API 주소를 변경하는 것을 잊지 마세요.
|
||||
|
||||
다음은 [manual HTTPS setup](/docs/ko/self-host/rustdesk-server-pro/faq/#웹-콘솔용-https-수동-설정)에 대한 간단한 자습서입니다.
|
||||
|
||||
### 5. 자체 호스팅 서버를 사용하도록 클라이언트 구성하기
|
||||
|
||||
https://rustdesk.com/docs/ko/self-host/client-configuration/
|
||||
|
||||
### 6. WebSocket 설정하기
|
||||
|
||||
웹 클라이언트나 [desktop / mobile client](/docs/ko/self-host/client-configuration/advanced-settings/#웹소켓-사용)가 WebSocket을 통해 제대로 작동하려면 리버스 프록시 구성에 다음 설정을 추가해야 합니다.
|
||||
|
||||
[WebSocket Secure (WSS) 지원 추가](/docs/ko/self-host/rustdesk-server-pro/faq/#8-id-서버와-릴레이-서버에-websocket-secure-wss-지원을-추가하여-모든-플랫폼에서-안전한-통신을-가능하게-하십시오)
|
||||
|
||||
## 서버 업그레이드
|
||||
|
||||
이 [guide](/docs/ko/self-host/rustdesk-server-pro/faq/#rustdesk-server-pro의-새-버전이-출시되었습니다-어떻게-업그레이드할-수-있나요)는 낮은 버전에서 RustDesk Server Pro로 업그레이드하는 방법을 다루며, 다양한 설치 방식을 설명합니다.
|
||||
|
||||
## 새 호스트로 이전 및 백업/복원
|
||||
|
||||
다음은 상세한 [tutorial](https://github.com/rustdesk/rustdesk-server-pro/discussions/184)입니다.
|
||||
|
||||
## 라이선스 이전
|
||||
|
||||
이 [guide](/docs/ko/self-host/rustdesk-server-pro/license/#청구서-라이선스-검색-및-마이그레이션)를 따르십시오.
|
||||
|
||||
## 라이선스 업그레이드
|
||||
|
||||
[this guide](/docs/ko/self-host/rustdesk-server-pro/license/#라이선스-갱신업그레이드)를 따라 언제든지 더 많은 사용자와 장치를 위한 라이선스를 업그레이드하십시오.
|
||||
|
||||
## 보안 정보
|
||||
|
||||
https://github.com/rustdesk/rustdesk/discussions/9835
|
||||
@@ -0,0 +1,171 @@
|
||||
---
|
||||
title: 관리자 역할
|
||||
weight: 17
|
||||
description: "RustDesk 서버 프로에서 관리자 역할을 사용하여 사용자, 장치, 전략(Strategy), 제어 역할 및 기타 콘솔 리소스에 대한 범위 지정된 관리 권한을 위임하십시오."
|
||||
keywords: ["rustdesk admin role", "rustdesk delegated admin", "rustdesk server pro permissions", "rustdesk role management", "rustdesk web console roles"]
|
||||
---
|
||||
|
||||
RustDesk 서버 프로에서 전체 관리자 권한을 부여하지 않고 부분적인 관리 접근 권한을 위임해야 할 때 관리자 역할을 사용하십시오.
|
||||
|
||||
관리자 역할을 통해 관리자는 비관리자 사용자에게 부분적인 관리 권한을 위임할 수 있습니다. 다양한 범위 내의 사용자 및 디바이스뿐만 아니라 전역 리소스(예: 정책, 제어 역할 및 사용자 지정 클라이언트)에 대한 권한을 정의할 수 있습니다.
|
||||
|
||||
관리자 역할이 사용자에게 할당되면, 사용자는 부여된 권한에 따라 웹 콘솔에서 해당 페이지와 메뉴를 볼 수 있습니다.
|
||||
|
||||
## 언제 관리자 역할을 사용해야 하나요?
|
||||
|
||||
누군가가 전체 관리자가 되지 않고도 RustDesk 환경의 일부를 관리해야 할 때 관리자 역할을 사용하십시오. 이 모델은 헬프데스크 책임자, 지역 IT팀, 디바이스 소유자 또는 그룹 범위의 운영자에게 적합하며, 이들은 플릿의 일부만 관리해야 합니다.
|
||||
|
||||
## 관리자 역할에 대한 간단한 답변
|
||||
|
||||
- 관리자 역할은 콘솔 관리 권한을 위임합니다.
|
||||
- 이는 전체 관리자 계정을 대체하지 않습니다.
|
||||
- 한 사용자가 동시에 여러 개의 관리자 역할을 가질 수 있습니다.
|
||||
- 유효한 권한 집합은 할당된 모든 관리자 역할의 합집합입니다.
|
||||
- 관리가 선택된 그룹으로 제한되어야 할 경우 그룹 범위 역할이 적합합니다.
|
||||
|
||||
## 관리자 vs 관리자 역할
|
||||
|
||||
- 관리자만이 관리자 역할을 편집하고 사용자에게 관리자 역할을 할당할 수 있습니다.
|
||||
- 관리자는 관리자 역할에 의해 제한되지 않으며, 관리자에게 관리자 역할을 할당할 수 있습니다.
|
||||
- 비관리자 사용자는 전역 사용자 권한이 부여되어 있더라도 관리자 계정을 편집할 수 없습니다.
|
||||
|
||||
## 역할 유형
|
||||
|
||||
관리자 역할은 세 가지 유형으로 나뉘며, 각각 다른 범위와 사용 가능한 권한을 갖습니다.
|
||||
|
||||
| 유형 | 설명 |
|
||||
|------|-------------|
|
||||
| **전체** | 전체 팀의 모든 리소스를 관리할 수 있음 |
|
||||
| **개별** | 사용자의 자체 기기와 감사 로그만 관리할 수 있음 |
|
||||
| **그룹 범위** | 지정된 그룹 내의 사용자와 기기를 관리할 수 있음 |
|
||||
|
||||
### 그룹 범위 정보
|
||||
|
||||
| 선택됨 권한 | 적용 대상 |
|
||||
|-------|-------------|
|
||||
| **사용자 권한** | 선택된 사용자 그룹 내 사용자에 적용 |
|
||||
| **장치 권한** | 다음에서 장치에 적용: <ul><li>선택된 장치 그룹</li><li>선택된 사용자 그룹 내 사용자에게 할당된 장치</li><li>할당되지 않은 장치(활성화된 경우)</li></ul> |
|
||||
|
||||
그룹 범위 역할에서 사용자 권한 또는 장치 권한만 선택하여 권한과 범위를 보다 명확히 할 수 있습니다. 예를 들어, 사용자 권한만 선택하면 어떤 장치 접근 권한 없이 사용자를 관리할 수 있으며, 장치 권한만 선택하면 사용자 그룹, 장치 그룹 또는 미할당 장치를 범위로 선택하여 장치를 관리할 수 있습니다.
|
||||
|
||||
## 권한 규칙
|
||||
|
||||
### 모든 편집 권한에는 해당하는 보기 권한이 포함됩니다
|
||||
|
||||
모든 편집 권한은 자동으로 해당하는 보기 권한을 포함합니다. 예를 들어, "장치 활성화/비활성화" 권한에는 "장치 보기" 권한이 포함됩니다.
|
||||
|
||||
### 편집 권한에는 할당이 포함되지 않습니다
|
||||
|
||||
리소스(사용자 그룹, 장치 그룹, 전략, 제어 역할)에 대한 편집 권한은 리소스 자체만 편집할 수 있도록 하며, 이를 사용자나 장치에 할당하는 것은 허용되지 않습니다.
|
||||
|
||||
예를 들어, "장치 그룹 편집" 권한은 장치 그룹을 생성하고 수정할 수 있지만, 그룹에 장치를 추가하거나 제거하려면 "장치 그룹 업데이트" 권한이 필요합니다.
|
||||
|
||||
### 보기 권한에는 구성원이 포함되지 않습니다
|
||||
|
||||
리소스(사용자 그룹, 장치 그룹, 전략, 제어 역할)에 대한 보기 권한은 리소스 자체만 볼 수 있도록 하며, 그 안의 구성원을 볼 수는 없습니다.
|
||||
|
||||
예를 들어, "디바이스 그룹 보기" 권한은 디바이스 그룹 목록을 볼 수 있도록 허용하지만, 그룹 내의 디바이스를 보려면 "디바이스 보기" 권한 또는 어떤 디바이스 편집 권한이 필요합니다. 디바이스 권한이 전역인 경우 그룹 내 모든 디바이스를 볼 수 있으며, 그룹 범위 또는 개별 권한인 경우 허용된 범위 내의 디바이스만 볼 수 있습니다.
|
||||
|
||||
{{% notice note %}}
|
||||
주소록의 디바이스 읽기는 관리자 역할에 의해 제한되지 않습니다. 클라이언트의 액세스 가능한 장치 피어 탭은 콘솔의 **설정 → 기타 → 액세스 가능한 장치 가져오기 비활성화**에 의해서만 제어되며, 관리자 역할에 의해 제한되지 않습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
## 콘솔 작업
|
||||
|
||||
### 역할 생성
|
||||
|
||||
1. **관리자 역할** 페이지로 이동하여 **생성**을 클릭하세요.
|
||||
2. 역할에 대한 **이름**을 입력하세요.
|
||||
3. **유형**을 선택하세요(그룹 범위인 경우 범위도 구성하세요).
|
||||
4. 부여할 **권한**을 선택하세요.
|
||||
|
||||

|
||||

|
||||
|
||||
### 역할 할당
|
||||
|
||||
사용자에게 관리자 역할을 할당하는 방법은 두 가지가 있습니다:
|
||||
|
||||
1. **사용자 페이지** → 사용자에서 **편집**을 클릭한 후 **관리자 역할** 필드에서 역할을 선택하세요.
|
||||
2. **관리자 역할 페이지** → **사용자 수** 또는 **사용자 할당**을 클릭한 후 역할에 사용자를 추가하거나 제거하세요.
|
||||
|
||||

|
||||

|
||||
|
||||
{{% notice note %}}
|
||||
- 사용자는 여러 개의 관리자 역할을 할당받을 수 있습니다. 할당된 모든 역할의 권한이 결합됩니다(모든 권한의 합집합).
|
||||
{{% /notice %}}
|
||||
|
||||
## 권한 참조
|
||||
|
||||
### 글로벌 권한
|
||||
|
||||
| 권한 | 설명 |
|
||||
|------------|-------------|
|
||||
| 사용자-보기 | 모든 사용자의 목록 정보를 읽습니다. |
|
||||
| 사용자-생성 | 비관리자 사용자를 직접 생성합니다. |
|
||||
| 사용자-초대 | 이메일을 통해 사용자를 초대합니다. |
|
||||
| 사용자-삭제 | 비관리자 사용자를 삭제합니다. 사용자는 비활성화된 후에만 삭제할 수 있습니다. |
|
||||
| 사용자-활성화/비활성화 | 비관리자 사용자를 활성화하거나 비활성화합니다. |
|
||||
| 사용자-이메일 편집 | 비관리자 사용자의 이메일을 변경합니다. |
|
||||
| 사용자-비밀번호 변경 | 비관리자 사용자의 비밀번호를 변경합니다. |
|
||||
| 사용자-노트 편집 | 비관리자 사용자의 노트를 변경합니다. |
|
||||
| 사용자-2FA 관리 | 비관리자 사용자의 로그인 인증을 관리합니다. 2FA 강제 활성화/비활성화, 2FA 구성 재설정, 이메일 로그인 인증 비활성화 포함됩니다. |
|
||||
| 사용자-강제 로그아웃 | 모든 기기에서 비관리자 사용자의 로그아웃을 강제합니다. |
|
||||
| 사용자-그룹 업데이트 | 비관리자 사용자의 그룹을 변경합니다. |
|
||||
| 사용자-전략 업데이트 | 비관리자 사용자의 전략을 변경합니다. |
|
||||
| 사용자-제어 역할 업데이트 | 비관리자 사용자의 제어 역할을 변경합니다. |
|
||||
| 기기-보기 | 모든 기기의 목록 정보를 읽습니다. |
|
||||
| 기기-활성화/비활성화 | 어떤 기기도 활성화하거나 비활성화합니다. |
|
||||
| 기기-삭제 | 어떤 기기도 삭제합니다. 기기는 비활성화된 후에만 삭제할 수 있습니다. |
|
||||
| 기기-정보 편집 | 어떤 기기의 이름, 기기 사용자 이름(기기의 시스템 사용자 이름, RustDesk 사용자가 아님), 그리고 노트를 편집합니다. |
|
||||
| 기기-사용자 할당 | 어떤 기기를 어떤 사용자에게 할당합니다. |
|
||||
| 기기-그룹 업데이트 | 어떤 기기의 그룹을 변경합니다. |
|
||||
| 기기-전략 업데이트 | 어떤 기기의 전략을 변경합니다. |
|
||||
| 사용자 그룹-보기 | 모든 사용자 그룹의 목록 정보를 읽습니다. 사용자 보기 권한이 있으면 그룹 구성원을 볼 수 있습니다. 사용자 그룹 업데이트 권한이 있으면 여기서 사용자의 그룹을 일괄 업데이트할 수 있습니다. |
|
||||
| 사용자 그룹-편집 | 사용자 그룹을 생성, 편집, 삭제하며, 그룹 구성원 업데이트는 포함하지 않습니다. |
|
||||
| 기기 그룹-보기 | 모든 기기 그룹의 목록 정보를 읽습니다. 기기 보기 권한이 있으면 그룹 구성원을 볼 수 있습니다. 기기 그룹 업데이트 권한이 있으면 여기서 기기의 그룹을 일괄 업데이트할 수 있습니다. |
|
||||
| 기기 그룹-편집 | 기기 그룹을 생성, 편집, 삭제하며, 그룹 구성원 업데이트는 포함하지 않습니다. 전략 업데이트 권한도 포함됩니다. |
|
||||
| 기기 그룹-전략 업데이트 | 어떤 기기 그룹의 전략을 변경합니다. |
|
||||
| 감사 로그-보기 | 모든 로그를 읽습니다. 노트를 편집할 수 있습니다. "관리자만 로그에 접근 가능" 옵션이 활성화되어 있어도 가능합니다. |
|
||||
| 감사 로그-편집 | 어떤 활성 연결도 연결 해제할 수 있습니다. |
|
||||
| 전략-보기 | 어떤 전략도 읽습니다. 사용자 보기, 기기 보기, 기기 그룹 보기 권한이 있으면 사용자, 기기, 기기 그룹의 전략을 읽을 수 있습니다. 사용자 전략 업데이트, 기기 전략 업데이트, 기기 그룹 전략 업데이트 권한이 있으면 여기서 해당 전략을 일괄 업데이트할 수 있습니다. |
|
||||
| 전략-편집 | 전략을 생성, 편집, 삭제하며, 사용자, 기기, 기기 그룹의 전략 업데이트는 포함하지 않습니다. |
|
||||
| 제어 역할-보기 | 어떤 제어 역할도 읽습니다. 사용자 보기 권한이 있으면 사용자의 제어 역할을 읽을 수 있습니다. 사용자 제어 역할 업데이트 권한이 있으면 여기서 해당 제어 역할을 일괄 업데이트할 수 있습니다. |
|
||||
| 제어 역할-편집 | 제어 역할을 생성, 편집, 삭제하며, 사용자의 제어 역할 업데이트는 포함하지 않습니다. |
|
||||
| 사용자 지정 클라이언트-보기 | 사용자 지정 클라이언트의 목록을 읽습니다. 컴파일된 사용자 지정 클라이언트를 다운로드할 수 있습니다. 사용자 지정 클라이언트의 상세 구성은 읽을 수 없습니다. |
|
||||
| 사용자 지정 클라이언트-편집 | 사용자 지정 클라이언트를 생성, 편집, 삭제합니다.
|
||||
|
||||
### 개별 권한
|
||||
|
||||
| 권한 | 설명 |
|
||||
|------------|-------------|
|
||||
| 장치-보기 | 사용자의 장치 목록 정보를 읽습니다. |
|
||||
| 장치-활성화/비활성화 | 사용자의 장치를 활성화하거나 비활성화합니다. |
|
||||
| 장치-삭제 | 사용자의 장치를 삭제합니다. 장치를 삭제하려면 먼저 비활성화해야 합니다. |
|
||||
| 장치-정보 편집 | 사용자의 장치 이름, 장치 사용자 이름(장치의 시스템 사용자 이름이 아니라 RustDesk 사용자 이름), 및 노트를 편집합니다. |
|
||||
| 장치-전략 변경 | 사용자의 장치 전략을 변경합니다. |
|
||||
| 감사 로그-보기 | 개인 로그를 읽습니다. 노트를 편집할 수 있습니다. "관리자만 로그에 접근 가능" 옵션이 활성화된 경우에도 가능합니다. |
|
||||
| 감사 로그-편집 | 개인의 활성 연결을 연결 해제할 수 있습니다. |
|
||||
|
||||
### 그룹 범위 권한
|
||||
|
||||
| 권한 | 설명 |
|
||||
|------------|-------------|
|
||||
| 사용자-보기 | 선택된 사용자 그룹 내 사용자의 목록 정보를 읽습니다. |
|
||||
| 사용자-생성 | 선택된 사용자 그룹 내 비관리자 사용자를 생성합니다. |
|
||||
| 사용자-초대 | 선택된 사용자 그룹 내 이메일을 통해 사용자를 초대합니다. |
|
||||
| 사용자-삭제 | 선택된 사용자 그룹 내 비관리자 사용자를 삭제합니다. 사용자는 삭제되기 전에 비활성화되어야 합니다. |
|
||||
| 사용자-활성화/비활성화 | 선택된 사용자 그룹 내 비관리자 사용자를 활성화하거나 비활성화합니다. |
|
||||
| 사용자-이메일 편집 | 선택된 사용자 그룹 내 비관리자 사용자의 이메일을 변경합니다. |
|
||||
| 사용자-비밀번호 변경 | 선택된 사용자 그룹 내 비관리자 사용자의 비밀번호를 변경합니다. |
|
||||
| 사용자-노트 편집 | 선택된 사용자 그룹 내 비관리자 사용자의 노트를 변경합니다. |
|
||||
| 사용자-2FA 관리 | 선택된 사용자 그룹 내 비관리자 사용자의 로그인 인증을 관리합니다. 2FA 강제 활성화/비활성화, 2FA 구성 재설정, 이메일 로그인 인증 비활성화 포함됩니다. |
|
||||
| 사용자-강제 로그아웃 | 선택된 사용자 그룹 내 비관리자 사용자를 모든 기기에서 강제로 로그아웃시킵니다. |
|
||||
| 사용자-전략 업데이트 | 선택된 사용자 그룹 내 비관리자 사용자의 전략을 변경합니다. |
|
||||
| 사용자-제어 역할 업데이트 | 선택된 사용자 그룹 내 비관리자 사용자의 제어 역할을 변경합니다. |
|
||||
| 기기-보기 | 현재 역할이 관리하는 기기의 목록 정보를 읽습니다. |
|
||||
| 기기-활성화/비활성화 | 현재 역할이 관리하는 기기를 활성화하거나 비활성화합니다. |
|
||||
| 기기-삭제 | 현재 역할이 관리하는 기기를 삭제합니다. 기기는 삭제되기 전에 비활성화되어야 합니다. |
|
||||
| 기기-정보 편집 | 현재 역할이 관리하는 기기의 이름, 기기 사용자 이름(기기의 시스템 사용자 이름, RustDesk 사용자가 아님), 그리고 노트를 편집합니다. |
|
||||
| 기기-전략 업데이트 | 현재 역할이 관리하는 기기의 전략을 변경합니다. |
|
||||
@@ -0,0 +1,534 @@
|
||||
---
|
||||
title: 웹 콘솔
|
||||
weight: 10
|
||||
description: "RustDesk Server Pro 웹 콘솔을 사용하여 포트 21114에서 장치, 사용자, 권한, 로그 및 기타 관리 설정을 관리하십시오."
|
||||
keywords: ["rustdesk web console", "rustdesk server pro console", "rustdesk port 21114", "rustdesk device management", "rustdesk admin console"]
|
||||
---
|
||||
|
||||
RustDesk Server Pro 웹 콘솔은 디바이스, 사용자, 권한 및 로그를 관리하는 주요 관리 인터페이스입니다.
|
||||
|
||||
웹 콘솔은 RustDesk 서버 Pro에 통합되어 있으며, `21114` 포트에서 서비스됩니다.
|
||||
|
||||
## RustDesk Server Pro 웹 콘솔이란?
|
||||
|
||||
웹 콘솔은 자체 호스팅된 RustDesk Server Pro 배포의 주요 제어 플레인입니다. 관리자는 여기서 사용자, 디바이스, 그룹, 권한, 정책, 릴레이 설정, SMTP, 토큰 및 사용자 지정 클라이언트를 관리합니다.
|
||||
|
||||
## 첫 번째 관리자 체크리스트
|
||||
|
||||
1. `21114` 포트에서 웹 콘솔에 로그인하세요.
|
||||
2. 기본 `admin` 비밀번호를 즉시 변경하세요.
|
||||
3. 라이선스가 아직 활성화되지 않았다면 입력하세요.
|
||||
4. 초대 및 이메일 인증을 원한다면 SMTP를 구성하세요.
|
||||
5. 기본 계정에 의존하지 않고 추가 관리자 또는 위임 계정을 생성하세요.
|
||||
6. 더 넓은 배포 전에 릴레이, 정책 및 클라이언트 설정을 구성하세요.
|
||||
|
||||
## 웹 콘솔에서 할 수 있는 일은 무엇인가요?
|
||||
|
||||
- 사용자, 사용자 그룹 및 관리자 접근권한 관리
|
||||
- 디바이스, 디바이스 그룹 및 할당 관리
|
||||
- 접근 규칙, 정책, 제어 역할 및 관리자 역할 구성
|
||||
- 로그 및 활성 세션 보기
|
||||
- SMTP, 릴레이, 토큰 및 기타 서버 설정 관리
|
||||
- 사용자 지정 클라이언트 빌드 및 구성 페이로드 생성
|
||||
|
||||
기능:
|
||||
|
||||
- 장치 둘러보기
|
||||
- 사용자 및 사용자 그룹 추가/수정
|
||||
- 장치 액세스 권한 수정
|
||||
- 장치 연결 로그 및 기타 로그 둘러보기
|
||||
- 설정 업데이트
|
||||
- 클라이언트 설정 동기화 전략(Strategy) 관리
|
||||
- 공유 주소록 관리
|
||||
- 사용자 지정 클라이언트 빌드 생성
|
||||
|
||||
## 로그인
|
||||
|
||||
웹 콘솔의 기본 포트는 21114입니다. 다음 그림과 같이 브라우저에 `http://<server ip>:21114`를 입력하여 콘솔 페이지로 들어가세요. 기본 관리자 사용자 이름/비밀번호는 `admin`/`test1234`입니다:
|
||||
|
||||

|
||||
|
||||
HTTPS 지원이 필요하다면 `Nginx`와 같은 웹 서버를 설치하거나 Windows용 `IIS`를 사용하십시오.
|
||||
|
||||
로그인한 후 반드시 비밀번호를 변경하십시오. 오른쪽 상단의 계정 메뉴에서 `Settings`를 선택하여 비밀번호 변경 페이지로 이동하십시오. 아래 그림과 같습니다. 또한 다른 관리자 계정을 생성하고 현재 계정을 삭제할 수도 있습니다. 이메일 로그인 인증을 활성화하는 것이 좋습니다.
|
||||
|
||||
<a name=console-home></a>
|
||||

|
||||
|
||||
비관리자 사용자도 로그인하여 기기 및 로그를 둘러보고 사용자 설정을 변경할 수 있습니다.
|
||||
|
||||
## 자동 구성
|
||||
`Windows EXE`를 클릭하면 자신의 RustDesk Server Pro용 구성 파일을 얻을 수 있으며, 이는 클라이언트를 구성하는 데 도움이 됩니다.
|
||||
|
||||
Windows 클라이언트의 경우 사용자 지정 서버 구성은 생략하고 대신 `rustdesk.exe` 파일명에 구성 정보를 입력할 수 있습니다. 위와 같이 콘솔 환영 페이지로 이동한 후 `Windows EXE`를 클릭하십시오. **클라이언트 ≥ 1.1.9 필요합니다.**
|
||||
|
||||
이 기능은 [client config](/docs/ko/self-host/client-configuration/) 및 [deployment scripts](/docs/ko/self-host/client-deployment/)와 함께 사용하여 클라이언트를 설정하는 데 활용할 수 있습니다.
|
||||
|
||||
## 기본 `admin` 사용자 외에 새 사용자 생성하기
|
||||
|
||||
{{% notice note %}}
|
||||
`Individual` 플랜에는 이 기능이 없습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
1. 왼쪽 메뉴에서 `Users`를 클릭하세요.
|
||||
2. `administrator`가 활성화된 다른 계정을 생성하세요.
|
||||
3. 새 관리자 계정으로 로그인하세요.
|
||||
4. `Users` 페이지에서 `admin`를 삭제하세요.
|
||||
|
||||
## 새 사용자 생성
|
||||
1. 왼쪽 메뉴에서 `Users`를 클릭하세요.
|
||||
2. 새 사용자를 생성하세요.
|
||||
3. 그들이 속할 그룹을 선택하세요(새로운 그룹을 추가해야 하는 경우 계속 읽어주세요).
|
||||
|
||||
## 새 그룹 추가
|
||||
1. 왼쪽 메뉴에서 `Groups`를 클릭하세요.
|
||||
2. 새 그룹을 생성하세요.
|
||||
3. 생성된 후 그룹 간에 서로 접근 권한을 부여할 수 있습니다. `Edit`를 클릭하세요.
|
||||
4. 접근하고자 하는 관련 그룹을 선택하세요(해당 그룹에 자동으로 추가됩니다).
|
||||
|
||||
## 여러 릴레이 서버 설정하기
|
||||
1. 왼쪽 메뉴에서 `Settings`로 이동하세요.
|
||||
2. 하위 메뉴에서 `Relay`를 클릭하세요.
|
||||
3. `Relay Servers` 옆에 있는 `+`를 클릭하세요.
|
||||
4. 이제 표시되는 상자에 릴레이 서버의 DNS 주소 또는 IP 주소를 입력하고 <kbd>Enter</kbd> 키를 누르세요.
|
||||
5. 릴레이 서버가 하나 이상인 경우 계속해서 `+`를 클릭하고 지리적 설정을 조정할 수 있습니다(다른 서버에도 키를 기억하고 복사해 두세요).
|
||||
|
||||
## 라이선스 설정 또는 변경
|
||||
1. 왼쪽 메뉴에서 `Settings`로 이동하세요.
|
||||
2. 하위 메뉴에서 `License`를 클릭하세요.
|
||||
3. `Edit`를 클릭하고 라이선스 코드를 붙여넣으세요.
|
||||
4. `OK`를 클릭하세요.
|
||||
|
||||
## 로그 보기
|
||||
왼쪽에서 `Logs`를 클릭하세요.
|
||||
|
||||
## 이메일 설정
|
||||
이 예제에서는 Gmail을 사용합니다.
|
||||
|
||||
1. 왼쪽 메뉴에서 `Settings`로 이동하세요.
|
||||
2. 하위 메뉴에서 `SMTP`를 클릭하세요.
|
||||
3. SMTP 주소 `smtp.gmail.com`를 입력하세요.
|
||||
4. `SMTP Port`에 포트 587을 입력하세요.
|
||||
5. Gmail 계정, 즉 `myrustdeskserver@gmail.com`를 `Mail Account`에 입력하세요.
|
||||
6. 비밀번호를 입력하세요(앱 비밀번호가 필요할 수 있습니다).
|
||||
7. Gmail 계정, 즉 `myrustdeskserver@gmail.com`를 `From`에 입력하세요.
|
||||
8. 저장하려면 `Check`를 클릭하세요.
|
||||
|
||||
## 웹 콘솔을 통해 장치 사용자/전략/장치 그룹을 장치에 할당하기
|
||||
|
||||
사용자는 장치에서 로그인한 RustDesk 사용자이거나, 장치 옆의 **편집**을 클릭하여 장치에 할당된 사용자입니다. **사용자** 상자에서 클릭하고 드롭다운 메뉴를 열어 사용자를 선택하세요.
|
||||
또한 **사용자 목록**에서 **더 보기 → 장치 할당**을 클릭하여 여러 장치를 한 번에 사용자에게 할당할 수도 있습니다.
|
||||
|
||||
장치 그룹에 장치를 추가하려면, **장치 목록**에서 장치 옆의 **편집**을 클릭하고 **그룹**을 변경하거나, **장치 그룹** 목록으로 이동해 장치 그룹 이름을 클릭한 후 해당 그룹 내의 장치를 조정할 수 있습니다.
|
||||
|
||||
장치에 전략을 할당하려면, **전략** 목록의 오른쪽을 마우스로 가리킨 후 메뉴에서 **장치 편집**, **사용자 편집**, 또는 **장치 그룹 편집**을 클릭해 선택된 전략에 해당 장치, 사용자 장치, 또는 장치 그룹 장치를 추가하세요.
|
||||
|
||||
---
|
||||
|
||||
## API 토큰
|
||||
|
||||
먼저 **설정 → 토큰 → 생성**으로 이동해 필요한 권한을 가진 토큰을 생성해야 합니다: **장치, 감사 로그, 사용자, 그룹, 전략, 주소록**.
|
||||
|
||||
토큰이 생성되면, 이를 **명령줄**이나 **파이썬 CLI**를 통해 해당 권한을 가진 작업을 수행하는 데 사용할 수 있습니다.
|
||||
|
||||
### 명령줄에서 토큰을 통한 할당
|
||||
|
||||
RustDesk 실행 파일을 `--assign` 매개변수와 함께 사용해 할당 작업을 수행할 수도 있습니다.
|
||||
이를 통해 명령줄에서 바로 사용자, 전략, 주소록, 또는 장치 그룹을 장치에 할당할 수 있습니다.
|
||||
|
||||
**예시:**
|
||||
|
||||
```bash
|
||||
"C:\Program Files\RustDesk\rustdesk.exe" --assign --token <generatedtoken> --user_name <username>
|
||||
```
|
||||
|
||||
지원되는 매개변수
|
||||
|
||||
| 매개변수 | 설명 | RustDesk 서버 Pro | RustDesk 클라이언트 |
|
||||
| --------------------------------------- | --------------------------------------- | ------------------- | --------------- |
|
||||
| `--user_name <username>` | 사용자를 장치에 할당 | | |
|
||||
| `--strategy_name <strategyname>` | 장치에 전략을 할당 | | |
|
||||
| `--address_book_name <addressbookname>` | 장치를 주소록에 할당 | | |
|
||||
| `--address_book_tag <addressbooktag>` | 주소록 태그로 할당 | | |
|
||||
| `--address_book_alias <alias>` | 주소록 별명으로 할당 | 1.5.8 | 1.4.1 |
|
||||
| `--address_book_password <password>` | 주소록 항목의 비밀번호 설정 | 1.6.6 | 1.4.3 |
|
||||
| `--address_book_note <note>` | 주소록 항목의 노트 설정 | 1.6.6 | 1.4.3 |
|
||||
| `--device_group_name <devicegroupname>` | 장치를 장치 그룹에 할당 | | |
|
||||
| `--note <note>` | 장치에 노트 추가 | 1.6.6 | 1.4.3 |
|
||||
| `--device_username <device_username>` | 장치의 사용자 이름 설정 | 1.6.6 | 1.4.3 |
|
||||
| `--device_name <device_name>` | 장치의 이름 설정 | 1.6.6 | 1.4.3 |
|
||||
| [`--deploy`](/docs/ko/self-host/client-deployment/#새-장치에-대한-명시적-배포) | **새 장치 배포 필요**가 활성화된 경우 새 장치를 등록합니다. **장치** 권한이 **읽기 및 쓰기**로 설정된 API 토큰이 필요합니다. | 1.8.3 | 1.4.7 |
|
||||
|
||||
Windows의 명령줄은 기본적으로 출력이 없습니다. 출력을 얻으려면 다음과 같이 실행하세요: `"C:\Program Files\RustDesk\rustdesk.exe" <arg1> <arg2> ... | more` 또는 `"C:\Program Files\RustDesk\rustdesk.exe" <arg1> <arg2> ... | Out-String`, [here](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomment-8094952)를 참조하세요.
|
||||
|
||||
### Python CLI 관리 도구
|
||||
|
||||
#### 사용자 관리 (`users.py`)
|
||||
|
||||
**도움말 표시:**
|
||||
`./users.py -h`
|
||||
|
||||
**사용자 보기:**
|
||||
`./users.py --url <url> --token <token> view [--name <username>] [--group_name <group_name>]`
|
||||
|
||||
**필터:**
|
||||
- `--name`: 사용자 이름(퍼지 검색)
|
||||
- `--group_name`: 사용자 그룹(정확한 일치)
|
||||
|
||||
**예제:**
|
||||
`./users.py --url https://example.com --token <token> view --group_name Default`
|
||||
|
||||
**기본 작업:**
|
||||
|
||||
- **사용자 비활성화:**
|
||||
`./users.py --url <url> --token <token> disable --name testuser`
|
||||
|
||||
- **사용자 활성화:**
|
||||
`./users.py --url <url> --token <token> enable --name testuser`
|
||||
|
||||
- **사용자 삭제:**
|
||||
`./users.py --url <url> --token <token> delete --name testuser`
|
||||
|
||||
**사용자 생성 및 초대:**
|
||||
|
||||
- **새 사용자 생성:**
|
||||
`./users.py --url <url> --token <token> new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "note"]`
|
||||
|
||||
필수: `--name`, `--password`, `--group_name`
|
||||
선택적: `--email`, `--note`
|
||||
|
||||
- **이메일로 사용자 초대:**
|
||||
`./users.py --url <url> --token <token> invite --email user@example.com --name username --group_name Default [--note "note"]`
|
||||
|
||||
필수: `--email`, `--name`, `--group_name`
|
||||
선택적: `--note`
|
||||
|
||||
**2FA 및 보안 작업:**
|
||||
|
||||
- **2FA 시행 활성화:**
|
||||
`./users.py --url <url> --token <token> enable-2fa-enforce --name username --web-console-url <console_url>`
|
||||
|
||||
필수: `--web-console-url`
|
||||
|
||||
- **2FA 시행 비활성화:**
|
||||
`./users.py --url <url> --token <token> disable-2fa-enforce --name username [--web-console-url <console_url>]`
|
||||
|
||||
선택적: `--web-console-url`
|
||||
|
||||
- **2FA 재설정:**
|
||||
`./users.py --url <url> --token <token> reset-2fa --name username`
|
||||
|
||||
- **이메일 인증 비활성화:**
|
||||
`./users.py --url <url> --token <token> disable-email-verification --name username`
|
||||
|
||||
- **강제 로그아웃:**
|
||||
`./users.py --url <url> --token <token> force-logout --name username`
|
||||
|
||||
**참고:**
|
||||
- 여러 사용자(필터로 매칭됨)를 작업할 때, 확인을 요청받게 됩니다.
|
||||
- 필터에 맞는 사용자가 없으면 "사용자 0명 발견"이라고 표시됩니다.
|
||||
|
||||
---
|
||||
|
||||
#### 사용자 그룹 관리 (`user_group.py`)
|
||||
|
||||
**도움말 표시:**
|
||||
`./user_group.py -h`
|
||||
|
||||
**사용자 그룹 보기:**
|
||||
`./user_group.py --url <url> --token <token> view [--name <group_name>]`
|
||||
|
||||
**예제:**
|
||||
`./user_group.py --url https://example.com --token <token> view --name "Sales Team"`
|
||||
|
||||
**그룹 작업:**
|
||||
|
||||
- **사용자 그룹 생성:**
|
||||
`./user_group.py --url <url> --token <token> add --name "GroupName" [--note "description"] [--accessed-from '<json>'] [--access-to '<json>']`
|
||||
|
||||
접근 제어 포함 예제:
|
||||
`./user_group.py --url <url> --token <token> add --name "Engineering" --accessed-from '[{"type":0,"name":"Managers"}]' --access-to '[{"type":1,"name":"DevServers"}]'`
|
||||
|
||||
- **사용자 그룹 업데이트:**
|
||||
`./user_group.py --url <url> --token <token> update --name "GroupName" [--new-name "NewName"] [--note "new note"] [--accessed-from '<json>'] [--access-to '<json>']`
|
||||
|
||||
- **사용자 그룹 삭제:**
|
||||
`./user_group.py --url <url> --token <token> delete --name "GroupName"`
|
||||
|
||||
쉼표로 구분된 이름 지원: `--name "Group1,Group2,Group3"`
|
||||
|
||||
**그룹 내 사용자 관리:**
|
||||
|
||||
- **그룹의 사용자 보기:**
|
||||
`./user_group.py --url <url> --token <token> view-users [--name <group_name>] [--user-name <username>]`
|
||||
|
||||
필터:
|
||||
- `--name`: 그룹 이름(정확한 일치, 선택 사항)
|
||||
- `--user-name`: 사용자 이름(부분 일치 검색, 선택 사항)
|
||||
|
||||
예제:
|
||||
`./user_group.py --url <url> --token <token> view-users --name Default --user-name john`
|
||||
|
||||
- **그룹에 사용자 추가:**
|
||||
`./user_group.py --url <url> --token <token> add-users --name "GroupName" --users "user1,user2,user3"`
|
||||
|
||||
**액세스 제어 매개변수:**
|
||||
|
||||
- `--accessed-from`: 이 사용자 그룹에 액세스할 수 있는 사람을 정의하는 JSON 배열
|
||||
- 유형 0 = 사용자 그룹(예: `[{"type":0,"name":"Admins"}]`)
|
||||
- 유형 2 = 사용자(예: `[{"type":2,"name":"john"}]`)
|
||||
|
||||
- `--access-to`: 이 사용자 그룹이 액세스할 수 있는 내용을 정의하는 JSON 배열
|
||||
- 유형 0 = 사용자 그룹(예: `[{"type":0,"name":"Support"}]`)
|
||||
- 유형 1 = 디바이스 그룹(예: `[{"type":1,"name":"Servers"}]`)
|
||||
|
||||
**권한 요구 사항:**
|
||||
- `view/add/update/delete/add-users` 명령은 **사용자 그룹 권한**이 필요합니다.
|
||||
- `view-users` 명령은 **사용자 권한**이 필요합니다.
|
||||
|
||||
---
|
||||
|
||||
#### 디바이스 그룹 관리 (`device_group.py`)
|
||||
|
||||
**도움말 표시:**
|
||||
`./device_group.py -h`
|
||||
|
||||
**디바이스 그룹 보기:**
|
||||
`./device_group.py --url <url> --token <token> view [--name <group_name>]`
|
||||
|
||||
**예제:**
|
||||
`./device_group.py --url https://example.com --token <token> view`
|
||||
|
||||
**그룹 작업:**
|
||||
|
||||
- **디바이스 그룹 생성:**
|
||||
`./device_group.py --url <url> --token <token> add --name "GroupName" [--note "description"] [--accessed-from '<json>']`
|
||||
|
||||
예제:
|
||||
`./device_group.py --url <url> --token <token> add --name "Production" --accessed-from '[{"type":0,"name":"Admins"}]'`
|
||||
|
||||
- **기기 그룹 업데이트:**
|
||||
`./device_group.py --url <url> --token <token> update --name "GroupName" [--new-name "NewName"] [--note "new note"] [--accessed-from '<json>']`
|
||||
|
||||
- **기기 그룹 삭제:**
|
||||
`./device_group.py --url <url> --token <token> delete --name "GroupName"`
|
||||
|
||||
쉼표로 구분된 이름 지원: `--name "Group1,Group2,Group3"`
|
||||
|
||||
**그룹별 기기 관리:**
|
||||
|
||||
- **그룹의 장치 보기:**
|
||||
`./device_group.py --url <url> --token <token> view-devices [filters]`
|
||||
|
||||
사용 가능한 필터:
|
||||
- `--name`: 장치 그룹 이름(정확한 일치)
|
||||
- `--id`: 장치 ID(부분 일치 검색)
|
||||
- `--device-name`: 장치 이름(부분 일치 검색)
|
||||
- `--user-name`: 사용자 이름/소유자(부분 일치 검색)
|
||||
- `--device-username`: 장치에서 로그인한 사용자 이름(부분 일치 검색)
|
||||
|
||||
예시:
|
||||
|
||||
```bash
|
||||
# View all devices in a group
|
||||
./device_group.py --url <url> --token <token> view-devices --name Production
|
||||
|
||||
# Search by device name
|
||||
./device_group.py --url <url> --token <token> view-devices --device-name server
|
||||
|
||||
# Combine filters
|
||||
./device_group.py --url <url> --token <token> view-devices --name Production --user-name john
|
||||
```
|
||||
|
||||
- **그룹에 장치 추가:**
|
||||
`./device_group.py --url <url> --token <token> add-devices --name "GroupName" --ids "deviceid1,deviceid2"`
|
||||
|
||||
- **그룹에서 장치 제거:**
|
||||
`./device_group.py --url <url> --token <token> remove-devices --name "GroupName" --ids "deviceid1,deviceid2"`
|
||||
|
||||
**액세스 제어 매개변수:**
|
||||
|
||||
- `--accessed-from`: 이 장치 그룹에 접근할 수 있는 사람을 정의하는 JSON 배열
|
||||
- 유형 0 = 사용자 그룹(예: `[{"type":0,"name":"Engineers"}]`)
|
||||
- 유형 2 = 사용자(예: `[{"type":2,"name":"admin"}]`)
|
||||
|
||||
**권한 요구 사항:**
|
||||
- `view/add/update/delete/add-devices/remove-devices` 명령은 **장치 그룹 권한**이 필요합니다.
|
||||
- `view-devices` 명령은 **장치 권한**이 필요합니다.
|
||||
|
||||
---
|
||||
|
||||
#### 장치 관리 (`devices.py`)
|
||||
|
||||
**도움말 표시:**
|
||||
`./devices.py -h`
|
||||
|
||||
**장치 보기:**
|
||||
`./devices.py --url <url> --token <token> view [--id <device_id>] [--device_name <device_name>] [--user_name <user_name>] [--group_name <group_name>] [--device_group_name <device_group_name>] [--offline_days <days>]`
|
||||
|
||||
**필터:**
|
||||
`--id`: 장치 ID
|
||||
`--device_name`: 장치 이름
|
||||
`--user_name`: 할당된 사용자
|
||||
`--group_name`: 사용자 그룹
|
||||
`--device_group_name`: 장치 그룹
|
||||
`--offline_days`: 오프라인 일수
|
||||
|
||||
**예제:**
|
||||
`./devices.py --url https://example.com --token <token> view --user_name mike`
|
||||
|
||||
**작업:**
|
||||
view는 `enable`, `disable`, `delete` 또는 `assign`로 대체할 수 있습니다.
|
||||
|
||||
**예제 (장치 할당):**
|
||||
`./devices.py --url https://example.com --token <token> assign --device_name PC01 --assign_to user_name=mike`
|
||||
|
||||
---
|
||||
|
||||
#### 주소록 관리 (`ab.py`)
|
||||
|
||||
**도움말 표시:**
|
||||
`./ab.py -h`
|
||||
|
||||
**공유된 주소록 보기:**
|
||||
`./ab.py --url <url> --token <token> view-ab [--ab-name <address_book_name>]`
|
||||
|
||||
**개인 주소록 GUID 받기:**
|
||||
`./ab.py --url <url> --token <token> get-personal-ab`
|
||||
|
||||
**공유 주소록 추가하기:**
|
||||
`./ab.py --url <url> --token <token> add-ab --ab-name <name> [--note <note>] [--password <password>]`
|
||||
|
||||
**공유 주소록 업데이트 또는 삭제하기:**
|
||||
`./ab.py --url <url> --token <token> update-ab --ab-guid <guid> [--ab-update-name <new_name>] [--note <note>]`
|
||||
`./ab.py --url <url> --token <token> delete-ab --ab-guid <guid>`
|
||||
|
||||
**주소록에서 피어 보기:**
|
||||
`./ab.py --url <url> --token <token> view-peer --ab-guid <guid> [--peer-id <peer_id>] [--alias <alias>]`
|
||||
|
||||
**피어 추가, 업데이트 또는 삭제:**
|
||||
`./ab.py --url <url> --token <token> add-peer --ab-guid <guid> --peer-id <peer_id> [--alias <alias>] [--note <note>] [--tags tag1,tag2]`
|
||||
`./ab.py --url <url> --token <token> update-peer --ab-guid <guid> --peer-id <peer_id> [--alias <alias>] [--note <note>] [--tags tag1,tag2]`
|
||||
`./ab.py --url <url> --token <token> delete-peer --ab-guid <guid> --peer-id <peer_id>`
|
||||
|
||||
**태그 관리:**
|
||||
`./ab.py --url <url> --token <token> view-tag --ab-guid <guid>`
|
||||
`./ab.py --url <url> --token <token> add-tag --ab-guid <guid> --tag-name <name> [--tag-color 0xFF00FF00]`
|
||||
`./ab.py --url <url> --token <token> update-tag --ab-guid <guid> --tag-name <name> --tag-color 0xFFFF0000`
|
||||
`./ab.py --url <url> --token <token> delete-tag --ab-guid <guid> --tag-name <name>`
|
||||
|
||||
**액세스 규칙 관리:**
|
||||
`./ab.py --url <url> --token <token> view-rule --ab-guid <guid>`
|
||||
`./ab.py --url <url> --token <token> add-rule --ab-guid <guid> [--rule-type user|group|everyone] [--rule-user <user>] [--rule-group <group>] --rule-permission ro|rw|full`
|
||||
`./ab.py --url <url> --token <token> update-rule --rule-guid <rule_guid> --rule-permission rw`
|
||||
`./ab.py --url <url> --token <token> delete-rule --rule-guid <rule_guid>`
|
||||
|
||||
**예제 (사용자 "mike"에 대한 읽기 전용 규칙 추가):**
|
||||
`./ab.py --url https://example.com --token <토큰> add-rule --ab-guid <guid> --rule-user mike --rule-permission ro`
|
||||
|
||||
---
|
||||
|
||||
#### 전략 관리(`strategies.py`)
|
||||
|
||||
**도움말 표시:**
|
||||
`./strategies.py -h`
|
||||
|
||||
**모든 전략 목록 보기:**
|
||||
`./strategies.py --url <url> --token <토큰> list`
|
||||
|
||||
**특정 전략 보기:**
|
||||
|
||||
```bash
|
||||
# By name
|
||||
./strategies.py --url <url> --token <token> view --name "Default"
|
||||
|
||||
# By GUID
|
||||
./strategies.py --url <url> --token <token> view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
|
||||
```
|
||||
|
||||
**전략 활성화 또는 비활성화:**
|
||||
|
||||
```bash
|
||||
./strategies.py --url <url> --token <token> enable --name "StrategyName"
|
||||
./strategies.py --url <url> --token <token> disable --name "StrategyName"
|
||||
```
|
||||
|
||||
**장치, 사용자 또는 장치 그룹에 전략 할당:**
|
||||
|
||||
```bash
|
||||
# Assign to devices (by device ID)
|
||||
./strategies.py --url <url> --token <token> assign --name "Default" --peers "1849118658,1337348840"
|
||||
|
||||
# Assign to users (by username)
|
||||
./strategies.py --url <url> --token <token> assign --name "Default" --users "admin,user1"
|
||||
|
||||
# Assign to device groups (by group name)
|
||||
./strategies.py --url <url> --token <token> assign --name "Default" --device-groups "device_group1,Production"
|
||||
|
||||
# Mixed assignment
|
||||
./strategies.py --url <url> --token <token> assign \
|
||||
--name "Default" \
|
||||
--peers "1849118658" \
|
||||
--users "admin" \
|
||||
--device-groups "device_group1"
|
||||
```
|
||||
|
||||
**할당 해제 전략:**
|
||||
|
||||
```bash
|
||||
# Unassign from devices
|
||||
./strategies.py --url <url> --token <token> unassign --peers "1849118658,1337348840"
|
||||
|
||||
# Unassign from users
|
||||
./strategies.py --url <url> --token <token> unassign --users "admin"
|
||||
|
||||
# Unassign from device groups
|
||||
./strategies.py --url <url> --token <token> unassign --device-groups "device_group1"
|
||||
```
|
||||
|
||||
**참고:**
|
||||
- 스크립트는 사용자 및 장치 그룹에 대해 이름과 GUID 모두를 지원합니다.
|
||||
- 장치 ID는 자동으로 GUID로 변환됩니다.
|
||||
- 모든 할당/해제 작업은 한 번에 여러 리소스를 대상으로 할 수 있습니다.
|
||||
|
||||
**권한 요구 사항:**
|
||||
- `list/view/enable/disable/assign/unassign` 명령은 **전략 권한**이 필요합니다.
|
||||
- `--peers`는 **장치 권한:r**이 필요합니다. (ID에서 GUID 조회용)
|
||||
- `--users`는 **사용자 권한:r**이 필요합니다. (사용자 이름에서 GUID 조회용)
|
||||
- `--device-groups`는 **장치 그룹 권한:r**이 필요합니다. (이름에서 GUID 조회용)
|
||||
|
||||
---
|
||||
|
||||
#### 감사( `audits.py`)
|
||||
|
||||
**도움말 표시:**
|
||||
`./audits.py -h`
|
||||
|
||||
**연결 감사 보기:**
|
||||
`./audits.py --url <url> --token <token> view-conn [--remote <peer_id>] [--conn-type <type>] [--page-size <n>] [--current <n>] [--created-at <"YYYY-MM-DD HH:MM:SS">] [--days-ago <n>]`
|
||||
|
||||
**파일 감사 보기:**
|
||||
`./audits.py --url <url> --token <token> view-file [--remote <peer_id>] [--page-size <n>] [--current <n>] [--created-at <"YYYY-MM-DD HH:MM:SS">] [--days-ago <n>]`
|
||||
|
||||
**알람 감사 보기:**
|
||||
`./audits.py --url <url> --token <token> view-alarm [--device <device_id>] [--page-size <n>] [--current <n>] [--created-at <"YYYY-MM-DD HH:MM:SS">] [--days-ago <n>]`
|
||||
|
||||
**콘솔 감사 보기:**
|
||||
`./audits.py --url <url> --token <token> view-console [--operator <username>] [--page-size <n>] [--current <n>] [--created-at <"YYYY-MM-DD HH:MM:SS">] [--days-ago <n>]`
|
||||
|
||||
**필터:**
|
||||
`--remote`: 피어 ID(연결 또는 파일 감사용)
|
||||
`--conn-type`: 0=원격 데스크톱, 1=파일 전송, 2=포트 전송, 3=카메라 보기, 4=터미널
|
||||
`--device`: 장치 ID(알람 감사용)
|
||||
`--operator`: 운영자 사용자 이름(콘솔 감사용)
|
||||
`--created-at`: 로컬 시간 필터, 예: "2025-09-16 14:15:57"
|
||||
`--days-ago`: 주어진 일수보다 새로운 기록 필터
|
||||
`--page-size` / `--current`: 페이징
|
||||
|
||||
**예제:**
|
||||
`./audits.py --url https://example.com --token <token> view-conn --remote 123456789 --days-ago 7`
|
||||
|
||||
## 장치 검색
|
||||
1. 장치로 이동하세요.
|
||||
2. 장치 이름 검색 필드에 이름을 입력하고 `Query`를 클릭하거나 <kbd>Enter</kbd> 키를 누르세요.
|
||||
3. 와일드카드를 사용하려면 검색어의 시작, 끝 또는 양쪽에 `%`를 추가하세요.
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
title: 제어 역할
|
||||
weight: 18
|
||||
description: "RustDesk 서버 Pro에서 제어 역할을 구성하여 연결이 연결된 후 원격 운영자가 수행할 수 있는 작업을 정의하십시오. 제어 역할을 액세스 제어 및 전략(Strategy)과 비교하십시오."
|
||||
keywords: ["rustdesk control role", "rustdesk remote permissions", "rustdesk server pro control role", "rustdesk access control vs strategy", "rustdesk remote control policy"]
|
||||
---
|
||||
|
||||
RustDesk Server Pro에서 원격 세션 중에 사용자가 수행할 수 있는 작업을 정의하려면 제어 역할을 사용하세요.
|
||||
|
||||
제어 역할을 통해 서로 다른 사용자에게 원격 제어 권한을 구성할 수 있습니다. 사용자가 다른 장치를 원격으로 제어할 때, 제어 역할은 연결이 설정된 후 제어하는 사용자가 수행할 수 있는 작업을 정의합니다.
|
||||
|
||||
## 제어 역할은 언제 사용해야 하나요?
|
||||
|
||||
원격 장치에 연결한 후 운영자가 수행할 수 있는 작업을 제한하고 싶을 때 제어 역할을 사용하세요. 이 기능은 운영자가 파일 전송, 클립보드 사용, 터미널 열기, 원격 장치 재시작 또는 원격 구성 수정 등을 할 수 있는지 여부와 같은 결정에 적합합니다.
|
||||
|
||||
## 제어 역할에 대한 간단한 답변
|
||||
|
||||
- 제어 역할은 연결 설정 후 세션 내 작업에 영향을 미칩니다.
|
||||
- 처음부터 연결이 허용되는지 여부를 결정하지 않습니다.
|
||||
- 각 사용자는 단 한 개의 제어 역할만 가질 수 있습니다.
|
||||
- 제어 역할 권한은 제어되는 장치의 로컬 권한 설정을 무시할 수 있습니다.
|
||||
- 기본 제공되는 `Not Logged` 및 `Default` 역할은 사용자 지정 역할이 할당되지 않은 사용자를 포함합니다.
|
||||
|
||||
{{% notice note %}}
|
||||
**제어 역할 vs 접근 제어 vs 전략**
|
||||
|
||||
- **제어 역할**: 연결 설정 후 제어하는 사용자가 수행할 수 있는 작업을 결정합니다.
|
||||
- **접근 제어**: 제어 장치와 제어되는 장치 간에 연결을 설정할 수 있는지 여부를 결정합니다.
|
||||
- **전략**: 제어되는 장치의 설정을 수정합니다.
|
||||
{{% /notice %}}
|
||||
|
||||
## 요구 사항
|
||||
|
||||
- 제어되는 장치: RustDesk **1.4.5** 이상 (Android 제어 장치는 아직 지원되지 않습니다)
|
||||
- 제어하는 장치: 버전 요구 사항 없음
|
||||
|
||||
## 권한 계산
|
||||
|
||||
### 권한 작동 방식
|
||||
|
||||
간략히 말해: 제어 권한이 로컬 설정보다 우선합니다.
|
||||
|
||||
권한 설정의 출처는 두 가지입니다:
|
||||
|
||||
- **제어되는 쪽의 로컬 설정**: 제어되는 장치의 설정(설정 → 보안 → 권한)
|
||||
- **제어 권한**: 제어하는 사용자의 제어 역할 권한(웹 콘솔에서 구성됨)
|
||||
|
||||
각 권한에는 세 가지 상태가 있습니다:
|
||||
|
||||
- **클라이언트 설정 사용**: 오버라이드 없음, 제어되는 장치의 로컬 설정을 사용함
|
||||
- **활성화**: 이 권한을 명시적으로 활성화함(로컬 설정을 무시함)
|
||||
- **비활성화**: 이 권한을 명시적으로 비활성화함(로컬 설정을 무시함)
|
||||
|
||||
권한은 세션 단위로 계산됩니다:
|
||||
|
||||
| 제어 권한 | 로컬 설정 | 결과 |
|
||||
|---|---|---|
|
||||
| 활성화 | 활성화 | 활성화 |
|
||||
| 활성화 | 비활성화 | **활성화** |
|
||||
| 비활성화 | 활성화 | **비활성화** |
|
||||
| 비활성화 | 비활성화 | 비활성화 |
|
||||
| 클라이언트 설정 사용 | 활성화 | 활성화 |
|
||||
| 클라이언트 설정 사용 | 비활성화 | 비활성화 |
|
||||
|
||||
**특수 사례: 원격 구성 수정**
|
||||
|
||||
여러 제어 사용자가 동일한 장치에 연결되어 있을 때, '원격 구성 수정' 권한은 모든 연결을 통합하여 계산됩니다:
|
||||
|
||||
| 모든 연결의 제어 권한 | 결과 |
|
||||
|---|---|
|
||||
| 아무거나 비활성화 | **비활성화** |
|
||||
| 비활성화 없음, 아무거나 활성화 | **활성화** |
|
||||
| 모두 클라이언트 설정 사용 | 로컬 설정 사용 |
|
||||
|
||||
### 적용되는 역할
|
||||
|
||||
각 사용자는 하나의 제어 역할만 할당받을 수 있습니다. 기본 제공 역할은 두 가지입니다:
|
||||
|
||||
| 역할 | 설명 |
|
||||
|------|-------------|
|
||||
| **로그인하지 않음** | 로그인하지 않은 사용자를 제어하는 데 사용됩니다. 사용자에게 할당할 수 없습니다. |
|
||||
| **기본값** | 제어 역할이 지정되지 않았거나 명시적으로 기본값 역할에 할당된 로그인한 제어 사용자에게 사용됩니다. |
|
||||
|
||||
상태에 따라 적용되는 제어 역할은 제어 사용자의 로그인 상태와 역할 할당에 따라 다릅니다:
|
||||
|
||||
| 사용자 상태 제어 | 할당된 역할 | 어떤 역할 / 역할 상태 | 적용된 제어 역할 |
|
||||
|---|---|---|---|
|
||||
| 로그인하지 않음 | - | 로그인 안 함 / 활성화됨 | 로그인 안 함 |
|
||||
| 로그인하지 않음 | - | 로그인 안 함 / 비활성화됨 | - |
|
||||
| 로그인함 | 할당된 역할 있음 | 할당된 역할 / 활성화됨 | 할당된 역할 |
|
||||
| 로그인함 | 할당된 역할 있음 | 할당된 역할 / 비활성화됨 | - |
|
||||
| 로그인함 | 할당된 역할 없음 | 기본값 / 활성화됨 | 기본값 |
|
||||
| 로그인함 | 할당된 역할 없음 | 기본값 / 비활성화됨 | - |
|
||||
|
||||
## 사용 가능한 권한
|
||||
|
||||
제어 가능한 12가지 권한은 제어 대상 기기의 설정 → 보안 → 권한에 해당합니다:
|
||||
|
||||
- 키보드/마우스
|
||||
- 원격 프린터
|
||||
- 클립보드
|
||||
- 파일 전송
|
||||
- 오디오
|
||||
- 카메라
|
||||
- 터미널
|
||||
- TCP 터널
|
||||
- 원격 재시작
|
||||
- 녹화 세션
|
||||
- 사용자 입력 차단
|
||||
- 원격 구성 수정
|
||||
|
||||
## 콘솔 작업
|
||||
|
||||
### 역할 생성하기
|
||||
|
||||
1. **제어 역할** 페이지로 이동하여 **생성**을 클릭하세요.
|
||||
2. 역할에 대한 **이름**을 입력하세요.
|
||||
3. 부여할 **권한**을 선택하세요.
|
||||
|
||||

|
||||

|
||||
|
||||
### 역할 할당하기
|
||||
|
||||
사용자에게 제어 역할을 할당하는 방법은 두 가지가 있습니다:
|
||||
|
||||
1. **사용자 페이지** → 사용자에서 **편집**을 클릭한 후, **제어 역할** 필드에서 역할을 선택하세요.
|
||||
2. **제어 역할 페이지** → **사용자 수** 또는 **사용자 할당**을 클릭한 후, 역할에 사용자를 추가하거나 제거하세요.
|
||||
|
||||

|
||||

|
||||
|
||||
{{% notice note %}}
|
||||
"로그인하지 않음" 역할은 사용자에게 할당할 수 없습니다(로그인하지 않은 연결에만 적용됨).
|
||||
{{% /notice %}}
|
||||
@@ -0,0 +1,559 @@
|
||||
---
|
||||
title: FAQ
|
||||
description: "RustDesk 서버 Pro 설치, 구성, 라이선스, 문제 해결 및 마이그레이션에 관한 자주 묻는 질문. 일반적인 설정 문제, SSL 구성, 데이터베이스 관리 및 업그레이드 절차에 대한 답변을 얻으세요."
|
||||
keywords: ["rustdesk server pro faq", "rustdesk pro help", "rustdesk installation help", "rustdesk troubleshooting", "rustdesk server setup", "rustdesk license issues", "rustdesk ssl configuration", "rustdesk migration guide", "rustdesk pro support", "rustdesk server questions"]
|
||||
weight: 600
|
||||
---
|
||||
|
||||
## RustDesk Server Pro 빠른 답변
|
||||
|
||||
이 FAQ는 가장 일반적인 RustDesk Server Pro 작업을 다룹니다: 설치, OSS에서의 변환, 업그레이드, 라이선스 마이그레이션, 로깅, SMTP 문제 및 디바이스 관리 문제입니다. 처음부터 시작하는 경우 [installation guide](/docs/ko/self-host/rustdesk-server-pro/installscript/)부터 시작하세요. 이미 실행 중인 서버가 있는 경우 가장 일반적인 후속 페이지는 [License](/docs/ko/self-host/rustdesk-server-pro/license/), [SMTP](/docs/ko/self-host/rustdesk-server-pro/smtp/) 및 [Client Deployment](/docs/ko/self-host/client-deployment/)입니다.
|
||||
|
||||
## 각 일반 작업에 어떤 페이지를 사용해야 하나요?
|
||||
|
||||
| 작업 | 최적의 페이지 |
|
||||
| --- | --- |
|
||||
| 새 Pro 서버 설치하기 | [Installation](/docs/ko/self-host/rustdesk-server-pro/installscript/) |
|
||||
| Docker로 Pro 설치하기 | [Docker install](/docs/ko/self-host/rustdesk-server-pro/installscript/docker/) |
|
||||
| OSS에서 Pro로 변환하기 | [Installation](/docs/ko/self-host/rustdesk-server-pro/installscript/#오픈소스에서-변환하기) |
|
||||
| 라이선스 구매 또는 이전하기 | [License](/docs/ko/self-host/rustdesk-server-pro/license/) |
|
||||
| 이메일 알림 설정하기 | [SMTP](/docs/ko/self-host/rustdesk-server-pro/smtp/) |
|
||||
| SSO 또는 ID 로그인 구성하기 | [OIDC](/docs/ko/self-host/rustdesk-server-pro/oidc/) 또는 [LDAP](/docs/ko/self-host/rustdesk-server-pro/ldap/) |
|
||||
| 대규모 클라이언트 배포하기 | [Client Deployment](/docs/ko/self-host/client-deployment/) |
|
||||
|
||||
## 간편 설치 스크립트로 설치하려면 어떻게 해야 하나요?
|
||||
1. [https://rustdesk.com/pricing.html](https://rustdesk.com/pricing.html)로부터 라이선스를 받고, 자세한 내용은 [license](/docs/ko/self-host/rustdesk-server-pro/license/) 페이지를 확인하세요.
|
||||
2. VPS, 베어 메탈 또는 Linux VM을 생성하세요.
|
||||
3. DNS와 SSL을 사용하려면 DNS 이름, 예를 들어 `rustdesk.yourdomain.com`를 생성하세요.
|
||||
4. [This page](https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/installscript/#install)를 실행하세요.
|
||||
5. 명령어를 복사하여 Linux 터미널에 붙여넣으세요.
|
||||
6. 안내에 따라 설치를 진행하세요.
|
||||
7. 설치가 완료되면 `https://rustdesk.yourdomain.com` 또는 `http://youripaddress:21114`를 실행하세요.
|
||||
8. 사용자 이름 `admin`와 비밀번호 `test1234`로 로그인하세요.
|
||||
9. 1단계에서 구매한 라이선스 코드를 입력하세요.
|
||||
|
||||
## RustDesk 서버 오픈소스에서 RustDesk 서버 프로로 어떻게 변환할 수 있나요?
|
||||
1. [https://rustdesk.com/pricing.html](https://rustdesk.com/pricing.html)로부터 라이선스를 받고, 자세한 내용은 [license](/docs/ko/self-host/rustdesk-server-pro/license/) 페이지를 확인하세요.
|
||||
2. TCP 포트 21114를 열어주세요.
|
||||
3. 귀하의 RustDesk 서버에 로그인하세요.
|
||||
4. 이미 DNS를 사용하지 않았고 SSL을 사용하고 싶다면 DNS 이름을 생성하세요. 예: `rustdesk.yourdomain.com`.
|
||||
5. [This page](/docs/ko/self-host/rustdesk-server-pro/installscript/#오픈소스에서-변환하기).
|
||||
6. 명령어를 복사하여 Linux 터미널에 붙여넣으세요.
|
||||
7. 설치 과정 중 안내에 따라 진행하세요.
|
||||
8. 설치가 완료되면 `https://rustdesk.yourdomain.com` 또는 `http://youripaddress:21114`로 이동하세요.
|
||||
9. 사용자 이름 `admin`와 비밀번호 `test1234`로 로그인하세요.
|
||||
10. 1단계에서 구매한 라이선스 코드를 입력하세요.
|
||||
|
||||
## RustDesk Server Pro의 새 버전이 출시되었습니다. 어떻게 업그레이드할 수 있나요?
|
||||
먼저 데이터 파일(sqlite3 파일 등)을 백업하는 것이 좋습니다. https://github.com/rustdesk/rustdesk-server-pro/discussions/184#discussioncomment-8013375.
|
||||
- ### 스크립트(`install.sh`)로 설치한 경우
|
||||
[update.sh](/docs/ko/self-host/rustdesk-server-pro/installscript/script/#업그레이드)를 실행해주세요.
|
||||
- ### Docker Compose
|
||||
|
||||
```
|
||||
sudo docker compose down
|
||||
sudo docker compose pull
|
||||
sudo docker compose up -d
|
||||
```
|
||||
|
||||
하지만 이는 귀하의 Docker 버전에 따라 달라지며, 더 자세한 내용은 [this](https://stackoverflow.com/questions/37685581/how-to-get-docker-compose-to-use-the-latest-image-from-repository)를 확인하십시오.
|
||||
- ### Docker
|
||||
|
||||
```
|
||||
sudo docker ps
|
||||
## you can also use <CONTAINER NAME>, e.g. `hbbs` and `hbbr` if you follow our manual.
|
||||
sudo docker stop <CONTAINER ID>
|
||||
sudo docker rm <CONTAINER ID>
|
||||
sudo docker rmi <IMAGE ID>
|
||||
sudo docker run ..... # same as you installed it before
|
||||
```
|
||||
|
||||
예:
|
||||
|
||||
```
|
||||
root@hz:~# sudo docker ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
30822972c220 rustdesk/rustdesk-server-pro "hbbr" 10 seconds ago Restarting (1) 2 seconds ago hbbr
|
||||
0f3a6f185be3 rustdesk/rustdesk-server-pro "hbbs" 15 seconds ago Up 14 seconds hbbs
|
||||
root@hz:~# sudo docker kill hbbr hbbs
|
||||
hbbr
|
||||
hbbs
|
||||
root@hz:~# sudo docker ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
root@hz:~# sudo docker rm hbbr hbbs
|
||||
hbbr
|
||||
hbbs
|
||||
root@hz:~# sudo docker rmi rustdesk/rustdesk-server-pro
|
||||
Untagged: rustdesk/rustdesk-server-pro:latest
|
||||
Untagged: rustdesk/rustdesk-server-pro@sha256:401b8344323addf777622d0463bd7b964dd18a01599e42e20d8b3818dae71ad2
|
||||
Deleted: sha256:a3d9d43a3d1dd84b10c39fe0abf7767b18a87819ff0981443ce9e9a52604c889
|
||||
Deleted: sha256:65ae79ecc0f8b1c8a21085d04af7c8d8f368dd5ad844982d4c7b3ac1f38ba33a
|
||||
Deleted: sha256:9274a824aef10f2ef106d8f85fbd1905037169cf610951f63dc5109dae4b0825
|
||||
Deleted: sha256:aa89ac8b57a49f49f041c01b9c0f016060e611cf282e3fda281bc6bebbabaf3f
|
||||
Deleted: sha256:4af9839016f72586a46f915cae8a5ccf3380ba88a2f79532692d3b1d7020387e
|
||||
Deleted: sha256:e900a7ffc2fc14fa432cc04823740dcbb78c0aa3508abbbe287ce8b274541ada
|
||||
Deleted: sha256:503eeab76c11e8316a2a450ef0790d31c5af203309e9c5b44d1bf8a601e6e587
|
||||
Deleted: sha256:825683356e7dbfcbaabcbf469c9aeb34d36ebeab0308170432b9553e28203116
|
||||
Deleted: sha256:24a48d4af45bab05d8712fe22abec5761a7781283500e32e34bdff5798c09399
|
||||
root@hz:~# sudo docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
rustdesk/makepkg latest 86a981e2e18f 2 months ago 2.23GB
|
||||
root@hz:~# sudo docker run --name hbbs -v ./data:/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server-pro hbbs
|
||||
Unable to find image 'rustdesk/rustdesk-server-pro:latest' locally
|
||||
latest: Pulling from rustdesk/rustdesk-server-pro
|
||||
4ce000a43472: Pull complete
|
||||
1543f88421d3: Pull complete
|
||||
9b209c1f5a8d: Pull complete
|
||||
d717f548a400: Pull complete
|
||||
1e60b98f5660: Pull complete
|
||||
a86960d9bced: Pull complete
|
||||
acb361c4bbf6: Pull complete
|
||||
4f4fb700ef54: Pull complete
|
||||
Digest: sha256:401b8344323addf777622d0463bd7b964dd18a01599e42e20d8b3818dae71ad2
|
||||
Status: Downloaded newer image for rustdesk/rustdesk-server-pro:latest
|
||||
0cc5387efa8d2099c0d8bc657b10ed153a6b642cd7bbcc56a6c82790a6e49b04
|
||||
root@hz:~# sudo docker run --name hbbr -v ./data:/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server-pro hbbr
|
||||
4eb9da2dc460810547f6371a1c40a9294750960ef2dbd84168079e267e8f371a
|
||||
root@hz:~# sudo docker ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
4eb9da2dc460 rustdesk/rustdesk-server-pro "hbbr" 5 seconds ago Restarting (1) Less than a second ago hbbr
|
||||
0cc5387efa8d rustdesk/rustdesk-server-pro "hbbs" 8 seconds ago Up 7 seconds hbbs
|
||||
root@hz:~# sudo docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
rustdesk/rustdesk-server-pro latest a3d9d43a3d1d 5 days ago 193MB
|
||||
rustdesk/makepkg latest 86a981e2e18f 2 months ago 2.23GB
|
||||
```
|
||||
|
||||
자세한 내용은 [this](https://www.cherryservers.com/blog/how-to-update-docker-image)를 참조하세요.
|
||||
|
||||
## 스크립트로 설치했는데, 서비스를 시작하고 중지하려면 어떻게 해야 하나요?
|
||||
서비스는 systemd를 사용하므로 `sudo systemctl stop|start|restart rustdesk-hbbs|rustdesk-hbbr`를 이용해 시작하고 중지할 수 있습니다. 예: `sudo systemctl restart rustdesk-hbbs`.
|
||||
|
||||
## 스크립트로 설치했는데, Linux 로그를 어떻게 볼 수 있나요?
|
||||
로그는 `/var/log/rustdesk-server`에 저장되어 있으며, `tail /var/log/rustdesk-server/hbbs.log` 또는 `tail /var/log/rustdesk-server/hbbs.error`를 사용하여 확인할 수 있습니다.
|
||||
|
||||
## 스크립트로 설치했는데 RustDesk 서비스의 상태를 어떻게 확인할 수 있나요?
|
||||
`sudo systemctl status rustdesk-hbbs|rustdesk-hbbr`, 예를 들어 `sudo systemctl status rustdesk-hbbs`와 같은 상태를 확인하려면.
|
||||
|
||||
## 관리자 비밀번호를 어떻게 변경할 수 있나요?
|
||||
1. `https://rustdesk.yourdomain.com` 또는 `http://youripaddress:21114`.
|
||||
2. 사용자 이름 `admin`와 비밀번호 `test1234`로 로그인하세요.
|
||||
3. 오른쪽 상단 모서리에 있는 `admin`를 클릭하세요.
|
||||
4. `Settings`를 클릭하세요.
|
||||
5. 제공된 상자에 새 비밀번호를 입력하세요.
|
||||
|
||||
## 라이선스를 새 서버로 이전하려면 어떻게 해야 하나요?
|
||||
[here](/docs/ko/self-host/rustdesk-server-pro/license/#청구서-라이선스-검색-및-마이그레이션)를 참조하세요.
|
||||
|
||||
## 내 VPS에서 이메일이 작동하지 않습니다
|
||||
많은 VPS 제공업체가 포트 465와 25를 차단합니다.
|
||||
|
||||
간단한 확인 방법은 텔넷을 사용하는 것입니다. Linux 터미널에서 `telnet your.mailserver.com 25`를 입력하세요. Windows에서는 PowerShell을 사용하고 `Test-NetConnection -ComputerName your.mailserver.com -Port 25`를 입력하세요.
|
||||
|
||||
귀하의 메일 서버가 포트 25를 사용하지 않을 수 있습니다. 올바른 포트를 사용하고 있는지 확인해 주세요.
|
||||
|
||||
## PowerShell이나 유사한 도구를 사용해 RustDesk를 배포할 수 있나요?
|
||||
네, 배포를 돕는 스크립트를 찾을 수 있습니다 [here](/docs/ko/self-host/client-deployment/).
|
||||
|
||||
## 버그 보고서를 어떻게 제출할 수 있나요?
|
||||
[GitHub](https://github.com/rustdesk/rustdesk-server-pro/issues)를 통해 제출해 주세요.
|
||||
|
||||
## 자가 호스팅을 하는데도 왜 이 제품이 무료 오픈소스가 아닌가요?
|
||||
1. RustDesk는 여러 사람에게 전업 직업이 되었으며, 그들은 각자 삶과 아내, 직장, 아이들이 있어 모두 관심과 비용이 필요합니다!
|
||||
2. 우리는 앞으로도 계속 여기에 머물며 훌륭한 발전을 이루고 싶습니다.
|
||||
3. 오픈소스 버전은 계속 오픈소스로 유지될 것이며, 다른 사람들이 AGPL 라이선스에 맞춰 개발하도록 장려하겠습니다.
|
||||
|
||||
## 서로 다른 그룹의 기기와 연결할 수 없는데, 이유가 무엇인가요?
|
||||
이는 쉽게 해결할 수 있습니다. 그룹 간 접근 권한을 허용해야 합니다.
|
||||
1. 새 그룹을 추가하세요.
|
||||
2. `Edit`를 클릭하세요.
|
||||
3. 접근하고자 하는 관련 그룹을 선택하세요(해당 그룹에 자동으로 추가됩니다).
|
||||
|
||||
## 어떻게 자동으로 설정을 받을 수 있나요?
|
||||
설정은 자동으로 생성됩니다.
|
||||
1. [GitHub](https://github.com/rustdesk/rustdesk/releases/latest)에서 최신 클라이언트를 다운로드하세요.
|
||||
2. 웹 콘솔의 메인 페이지에서 `Windows EXE`를 클릭하세요.
|
||||
3. 호스트와 API를 입력하세요(설정과 다른 경우).
|
||||
4. `Submit`를 클릭하세요.
|
||||
5. Android에서 QR 코드를 스캔하고, 생성된 이름으로 exe 파일의 이름을 바꾸세요.
|
||||
|
||||
## RustDesk Server Pro용 호스팅을 제공하시나요?
|
||||
[sales](mailto://sales@rustdesk.com) 팀에 연락해 주세요.
|
||||
|
||||
## 동영상 설정 가이드를 볼 수 있는 곳이 있나요?
|
||||
네! [YouTube Channel](https://youtube.com/@RustDesk)가 있습니다.
|
||||
|
||||
## 내 로그/장치 이름이 비어 있음은 왜 그런가요?
|
||||
제어 중인 장치에서 API가 올바르게 설정되었는지 확인하세요. https://github.com/rustdesk/rustdesk-server-pro/issues/21#issuecomment-1637935750.
|
||||
|
||||
## RustDesk Server Pro를 어떻게 설치 제거할 수 있나요?
|
||||
다음 명령어를 실행하세요:
|
||||
|
||||
```sh
|
||||
sudo systemctl stop rustdesk-hbbs.service
|
||||
sudo systemctl disable rustdesk-hbbs.service
|
||||
sudo systemctl stop rustdesk-hbbr.service
|
||||
sudo systemctl disable rustdesk-hbbr.service
|
||||
sudo systemctl daemon-reload
|
||||
sudo rm /etc/systemd/system/rustdesk-hbbs.service
|
||||
sudo rm /etc/systemd/system/rustdesk-hbbr.service
|
||||
sudo rm /usr/bin/hbbs
|
||||
sudo rm /usr/bin/hbbr
|
||||
sudo rm -rf /var/lib/rustdesk-server/
|
||||
sudo rm -rf /var/log/rustdesk-server/
|
||||
```
|
||||
|
||||
스크립트가 Nginx를 설치한 경우 다음을 사용하여 제거하십시오:
|
||||
|
||||
```sh
|
||||
sudo apt remove nginx
|
||||
```
|
||||
|
||||
## 웹 콘솔의 장치 목록에서 장치를 제거하려면 어떻게 해야 하나요?
|
||||
비활성화한 후 삭제하는 기능이 이제 사용 가능해졌습니다.
|
||||
|
||||
## PowerShell을 사용하여 RustDesk를 업데이트하려면 어떻게 해야 하나요?
|
||||
|
||||
```ps
|
||||
$ErrorActionPreference= 'silentlycontinue'
|
||||
|
||||
$rdver = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk\").Version)
|
||||
|
||||
if ($rdver -eq "1.2.6")
|
||||
{
|
||||
Write-Output "RustDesk $rdver is the newest version."
|
||||
Exit
|
||||
}
|
||||
|
||||
if (!(Test-Path C:\Temp))
|
||||
{
|
||||
New-Item -ItemType Directory -Force -Path C:\Temp > null
|
||||
}
|
||||
|
||||
cd C:\Temp
|
||||
|
||||
Invoke-WebRequest "https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-x86_64.exe" -Outfile "rustdesk.exe"
|
||||
Start-Process .\rustdesk.exe --silent-install -wait
|
||||
```
|
||||
|
||||
## `Key mismatch` 오류
|
||||
클라이언트를 [correct key](/docs/ko/self-host/rustdesk-server-pro/relay/)로 구성해 주세요.
|
||||
|
||||
## `Failed to connect to relay server` 오류
|
||||
`hbbr`가 실행되고 있는지 확인해 주세요. `hbbr`에 대한 자세한 정보는 [here](/docs/ko/self-host/rustdesk-server-oss/install/)에서 확인할 수 있습니다.
|
||||
귀하의 `hbbr`가 `hbbs`와 동일한 머신에서 실행되지 않거나, 여러 릴레이 서버를 사용하거나, 기본 포트인 `21117`에서 실행되지 않는 경우, 이를 `hbbs`에 명시적으로 알려야 합니다. [here](/docs/ko/self-host/rustdesk-server-pro/relay/)를 확인해 주세요.
|
||||
|
||||
## 관리자 계정의 MFA 재설정
|
||||
https://github.com/rustdesk/rustdesk/discussions/6576
|
||||
|
||||
## 웹 콘솔용 HTTPS 수동 설정
|
||||
|
||||
### 1. 도메인 이름을 구매하고 이를 서버의 IP 주소로 해석하세요.
|
||||
* GoDaddy, Namecheap 또는 Namesilo와 같은 도메인 등록기관에서 도메인 이름을 구매하세요.
|
||||
* 다음 중 하나를 사용하여 도메인 이름을 서버의 IP 주소로 해석하세요:
|
||||
- 도메인 등록기관의 제어판(권장)
|
||||
- [DNS providers](https://en.wikipedia.org/wiki/List_of_managed_DNS_providers)
|
||||
|
||||
예를 들어, `Namesilo`에서 도메인 이름 `example.com`를 구매하고 서버의 IP 주소가 `123.123.123.123`라면, `rustdesk.example.com` 하위 도메인을 HTTPS 웹 콘솔 주소로 사용하고 싶습니다. [link](https://www.namesilo.com/account_domains.php)를 열고 툴팁 `Manage dns for the domain`가 표시된 버튼을 클릭한 다음, 호스트명 `rustdesk`와 서버의 IP 주소를 사용해 `A` 레코드를 추가해야 합니다.
|
||||

|
||||

|
||||

|
||||
* DNS가 적용되는 데 시간이 소요되므로, https://www.whatsmydns.net를 방문하여 도메인이 서버의 IP 주소로 해석되었는지 확인하세요. 6단계는 올바른 해석 결과에 따라 달라집니다. 다음 단계에서는 `YOUR_DOMAIN`를 하위 도메인으로 교체하십시오. 예를 들어, `rustdesk.example.com`로 변경하세요.
|
||||
|
||||
### 2. Nginx 설치하기
|
||||
* Debian/Ubuntu: `sudo apt-get install nginx`
|
||||
* Fedora/CentOS: `sudo dnf install nginx` 또는 `sudo yum install nginx`
|
||||
* Arch: `sudo pacman -S install nginx`
|
||||
* openSUSE: `sudo zypper install nginx`
|
||||
* Gentoo: `sudo emerge -av nginx`
|
||||
* Appine: `sudo apk add --no-cache nginx`
|
||||
|
||||
`nginx -h`를 실행하여 성공적으로 설치되었는지 확인하십시오.
|
||||
|
||||
### 3. Certbot 설치하기
|
||||
* 방법 1: `snap`가 설치되어 있으면 `sudo snap install certbot --classic`를 실행하세요.
|
||||
* 방법 2: 대신 `python3-certbot-nginx`를 사용하세요. 예를 들어 Ubuntu의 경우 `sudo apt-get install python3-certbot-nginx`를 사용하세요.
|
||||
* 방법 3: 위 두 방법이 실패한 경우, `certbot-nginx`를 설치해 보세요. 예를 들어 CentOS 7의 경우 `sudo yum install certbot-nginx`를 사용하세요.
|
||||
|
||||
`certbot -h`를 실행하여 성공적으로 설치되었는지 확인하십시오.
|
||||
|
||||
### 4. Nginx 구성
|
||||
두 가지 방법이 있습니다:
|
||||
* 디렉터리 `/etc/nginx/sites-available` 및 `/etc/nginx/sites-enabled`가 존재하는 경우, 다음 명령어의 `YOUR_DOMAIN`를 사용자의 도메인 이름으로 교체하고 실행하십시오.
|
||||
|
||||
```sh
|
||||
cat > /etc/nginx/sites-available/rustdesk.conf << EOF
|
||||
server {
|
||||
server_name YOUR_DOMAIN;
|
||||
location / {
|
||||
proxy_set_header X-Real-IP \$remote_addr;
|
||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||
proxy_pass http://127.0.0.1:21114/;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
```
|
||||
|
||||
그런 다음 `sudo ln -s /etc/nginx/sites-available/rustdesk.conf /etc/nginx/sites-enabled/rustdesk.conf`를 실행하십시오.
|
||||
|
||||
`cat /etc/nginx/sites-available/rustdesk.conf`를 실행하여 내용이 올바른지 확인하십시오.
|
||||
|
||||
* 디렉터리 `/etc/nginx/sites-available` 및 `/etc/nginx/sites-enabled`가 존재하지 않고 디렉터리 `/etc/nginx/conf.d`가 존재하는 경우, 다음 명령어의 `YOUR_DOMAIN`를 귀하의 도메인 이름으로 바꾸고 실행하십시오.
|
||||
|
||||
```sh
|
||||
cat > /etc/nginx/conf.d/rustdesk.conf << EOF
|
||||
server {
|
||||
server_name YOUR_DOMAIN;
|
||||
location / {
|
||||
proxy_set_header X-Real-IP \$remote_addr;
|
||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||
proxy_pass http://127.0.0.1:21114/;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
```
|
||||
|
||||
`cat /etc/nginx/conf.d/rustdesk.conf`를 실행하여 내용이 올바른지 확인하십시오.
|
||||
|
||||
### 5. 도메인에 대한 방화벽 규칙 활성화
|
||||
다음 명령어를 실행하십시오:
|
||||
|
||||
```sh
|
||||
sudo ufw allow 80/tcp
|
||||
sudo ufw allow 443/tcp
|
||||
sudo ufw --force enable
|
||||
sudo ufw --force reload
|
||||
```
|
||||
|
||||
### 6. SSL 인증서 생성
|
||||
`$YOUR_DOMAIN`를 도메인 이름으로 바꾼 다음 실행하세요.
|
||||
`sudo certbot --nginx --cert-name $YOUR_DOMAIN --key-type ecdsa --renew-by-default --no-eff-email --agree-tos --server https://acme-v02.api.letsencrypt.org/directory -d $YOUR_DOMAIN`.
|
||||
|
||||
`Enter email address (used for urgent renewal and security notices)`가 표시되면 이메일 주소를 입력하세요.
|
||||
|
||||
마지막으로, `rustdesk.conf`의 내용은 다음과 같아야 합니다:
|
||||
|
||||
```
|
||||
server {
|
||||
server_name YOUR_DOMAIN;
|
||||
location / {
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_pass http://127.0.0.1:21114/;
|
||||
}
|
||||
|
||||
listen 443 ssl; # managed by Certbot
|
||||
ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem; # managed by Certbot
|
||||
ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem; # managed by Certbot
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||
}
|
||||
|
||||
server {
|
||||
if ($host = YOUR_DOMAIN) {
|
||||
return 301 https://$host$request_uri;
|
||||
} # managed by Certbot
|
||||
|
||||
server_name YOUR_DOMAIN;
|
||||
listen 80;
|
||||
return 404; # managed by Certbot
|
||||
}
|
||||
```
|
||||
|
||||
다음은 일반적인 오류입니다:
|
||||
|
||||
* 콘솔에 `Successfully deployed certificate for YOUR_DOMAIN to /etc/nginx/.../rustdesk.conf` 대신 `Successfully deployed certificate for YOUR_DOMAIN to /etc/nginx/.../default`가 출력됩니다.
|
||||
|
||||
그 이유는 Certbot이 `rustdesk.conf` 파일을 찾지 못했기 때문일 수 있습니다. 다음 해결 방법 중 하나를 시도해 보세요:
|
||||
- 5단계의 결과를 확인하고, `sudo service nginx restart`를 실행하세요.
|
||||
- `YOUR_DOMAIN`가 포함된 서버 구성 `server{...}`를 `rustdesk.conf`로 복사한 후, `location{...}`를 아래 내용으로 변경하세요.
|
||||
|
||||
```sh
|
||||
location / {
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_pass http://127.0.0.1:21114/;
|
||||
}
|
||||
```
|
||||
|
||||
* `too many certificates (5) already issued for this exact set of domains in the last 168 hours`
|
||||
|
||||
해결 방법: DNS에 다른 도메인 이름을 추가하고 `YOUR_DOMAIN`를 해당 이름으로 변경하세요. 예를 들어 `rustdesk2.example.com`로 변경하세요. 그런 다음 1, 4, 6단계를 반복하세요.
|
||||
|
||||
* `Error getting validation data`
|
||||
|
||||
해결 방법: 방화벽이 원인일 수 있습니다. 자세한 내용은 [방화벽](/docs/ko/self-host/rustdesk-server-pro/faq/#방화벽) 섹션을 참조하세요.
|
||||
|
||||
알림: `rustdesk.conf`를 수동으로 변경한 경우 `sudo service nginx restart`를 실행하십시오.
|
||||
|
||||
### 7. 웹 페이지에 로그인하기
|
||||
* 브라우저에서 `https://YOUR_DOMAIN`를 열고 기본 사용자 이름 "admin"과 비밀번호 "test1234"를 사용해 로그인한 다음, 비밀번호를 본인의 것으로 변경하십시오.
|
||||
|
||||
### 8. id 서버와 릴레이 서버에 WebSocket Secure (WSS) 지원을 추가하여 모든 플랫폼에서 안전한 통신을 가능하게 하십시오.
|
||||
|
||||
`/etc/nginx/.../rustdesk.conf` 파일의 첫 번째 `server` 섹션에 다음 구성 항목을 추가한 후 `Nginx` 서비스를 다시 시작하십시오.
|
||||
웹 클라이언트는 `https://YOUR_DOMAIN/web`를 통해 접속할 수 있습니다. 사용자 지정 클라이언트는 고급 옵션에서 `allow-websocket=Y`를 설정하여 웹소켓을 사용할 수 있습니다. 웹소켓이 활성화된 사용자 지정 클라이언트를 사용하는 경우 TCP/UDP를 사용하지 않으며 릴레이를 통해서만 연결할 수 있습니다(직접 IP 연결 제외). 이 웹소켓 활성화 클라이언트만 사용하는 경우 서버는 21114~21119 포트를 닫고 443 포트만 열어둘 수 있습니다.
|
||||
|
||||
```
|
||||
location /ws/id {
|
||||
proxy_pass http://127.0.0.1:21118;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
}
|
||||
|
||||
location /ws/relay {
|
||||
proxy_pass http://127.0.0.1:21119;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
}
|
||||
```
|
||||
|
||||
전체 구성은 다음과 같습니다.
|
||||
|
||||
```
|
||||
server {
|
||||
server_name YOUR_DOMAIN;
|
||||
location / {
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_pass http://127.0.0.1:21114/;
|
||||
}
|
||||
|
||||
location /ws/id {
|
||||
proxy_pass http://127.0.0.1:21118;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
}
|
||||
|
||||
location /ws/relay {
|
||||
proxy_pass http://127.0.0.1:21119;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
}
|
||||
|
||||
listen 443 ssl; # managed by Certbot
|
||||
ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem; # managed by Certbot
|
||||
ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem; # managed by Certbot
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||
}
|
||||
|
||||
server {
|
||||
if ($host = YOUR_DOMAIN) {
|
||||
return 301 https://$host$request_uri;
|
||||
} # managed by Certbot
|
||||
|
||||
server_name YOUR_DOMAIN;
|
||||
listen 80;
|
||||
return 404; # managed by Certbot
|
||||
}
|
||||
```
|
||||
|
||||
{{% notice note %}}
|
||||
이전에 웹 클라이언트용으로 배포한 적이 있고 모든 플랫폼에서 사용하고자 한다면 `proxy_read_timeout`를 추가해야 합니다.
|
||||
{{% /notice %}}
|
||||
|
||||
### 9. RustDesk 공개 웹 클라이언트 `https://rustdesk.com/web`를 사용하는 경우 CORS 우회하기
|
||||
|
||||
브라우저의 CORS 제한을 우회하려면 `/etc/nginx/.../rustdesk.conf`의 `location /` 섹션에 아래 내용을 추가해야 합니다. 자체 웹 클라이언트를 사용하는 경우 이 단계는 건너뛰기 바랍니다.
|
||||
|
||||
```
|
||||
if ($http_origin ~* (https?://(www\.)?rustdesk\.com)) {
|
||||
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH, OPTIONS' always;
|
||||
add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always;
|
||||
add_header 'Access-Control-Allow-Credentials' 'true' always;
|
||||
}
|
||||
if ($request_method = 'OPTIONS') {
|
||||
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH, OPTIONS' always;
|
||||
add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always;
|
||||
add_header 'Access-Control-Allow-Credentials' 'true' always;
|
||||
add_header 'Content-Length' 0;
|
||||
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||
return 204;
|
||||
}
|
||||
```
|
||||
|
||||
## SELinux
|
||||
|
||||
설치하기 시 `Waiting for RustDesk Relay service to become active...`가 나타나는 경우, 이는 SELinux로 인해 발생할 수 있습니다. 다음 명령어를 시도해 볼 수 있습니다:
|
||||
|
||||
```sh
|
||||
sudo semanage fcontext -a -t NetworkManager_dispatcher_exec_t 'hbbs'
|
||||
sudo semanage fcontext -a -t NetworkManager_dispatcher_exec_t 'hbbr'
|
||||
sudo restorecon -v '/usr/bin/hbbs'
|
||||
sudo restorecon -v '/usr/bin/hbbr'
|
||||
```
|
||||
|
||||
## 방화벽
|
||||
|
||||
### 클라우드의 방화벽
|
||||
AWS/Azure/Google/DigitalOcean 클라우드에서 실행하는 경우, 클라우드 벤더의 대시보드에서 UDP(21116) 및 TCP(21114-21119) 인바운드 포트를 열어주세요.
|
||||
|
||||
- [AWS] https://docs.aws.amazon.com/network-firewall/latest/developerguide/getting-started.html
|
||||
- [Azure] https://learn.microsoft.com/en-us/azure/virtual-network/network-security-groups-overview
|
||||
- [Google] https://cloud.google.com/firewall/docs/firewalls
|
||||
- [DigitalOcean] https://docs.digitalocean.com/products/networking/firewalls/
|
||||
|
||||
### 온프레미스 서버의 방화벽
|
||||
RustDesk는 `ufw`로 방화벽을 설정합니다. CentOS 9와 같은 일부 배포판에서는 작동하지 않을 수 있으며, `firewall-cmd`로 시도해 볼 수 있습니다:
|
||||
|
||||
```sh
|
||||
sudo firewall-cmd --permanent --add-port=21115/tcp
|
||||
sudo firewall-cmd --permanent --add-port=21116/tcp
|
||||
sudo firewall-cmd --permanent --add-port=21117/tcp
|
||||
sudo firewall-cmd --permanent --add-port=21118/tcp
|
||||
sudo firewall-cmd --permanent --add-port=21119/tcp
|
||||
sudo firewall-cmd --permanent --add-port=21116/udp
|
||||
```
|
||||
|
||||
IP를 사용하는 경우:
|
||||
|
||||
```sh
|
||||
sudo firewall-cmd --permanent --add-port=21114/tcp
|
||||
```
|
||||
|
||||
DNS/도메인을 사용하는 경우:
|
||||
|
||||
```sh
|
||||
sudo firewall-cmd --permanent --add-port=80/tcp
|
||||
sudo firewall-cmd --permanent --add-port=443/tcp
|
||||
```
|
||||
|
||||
위와 같이 한 후, `sudo firewall-cmd --reload`를 실행하여 방화벽을 다시 로드하십시오.
|
||||
|
||||
## 웹 콘솔에서 관리자 비밀번호를 변경한 후 로그인할 수 없습니다. 비밀번호를 간단하게 재설정하는 방법이 있나요?
|
||||
1. `rustdesk-utils`가 설치되어 있는지 확인하세요. 설치되지 않았다면 [here](https://github.com/rustdesk/rustdesk-server-pro)를 설치할 수 있습니다. 또한 데이터베이스가 있는 폴더, 즉 `/var/lib/rustdesk-server`에서 명령어를 실행해야 합니다.
|
||||
2. 명령어는 `rustdesk-utils set_password username password`입니다. 정상적으로 작동하면 *완료*라고 표시됩니다.
|
||||
|
||||
또한 `rustdesk-utils`와 함께 사용할 수 있는 다음과 같은 기타 명령어 `genkeypair`, `validatekeypair [public key] [secret key]`, `doctor [rustdesk-server]`, `reset_email_verification` 및 `reset_2fa_verification`가 있습니다.
|
||||
|
||||
https://github.com/rustdesk/rustdesk-server-pro/discussions/183
|
||||
|
||||
## Docker 컨테이너에 루트 CA 인증서 추가하기 (SMTP, OIDC 등에서 TLS 실패 시)
|
||||
https://github.com/rustdesk/rustdesk-server-pro/issues/99#issuecomment-2235014703
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
title: Docker
|
||||
weight: 3
|
||||
description: "호스트 네트워킹을 사용하여 Docker Compose를 통해 RustDesk 서버 프로를 설치하기. 이 안내서를 사용해 제공된 compose 파일로 hbbs, hbbr 및 Pro 웹 콘솔을 배포하세요."
|
||||
keywords: ["rustdesk server pro docker", "rustdesk pro docker compose", "rustdesk pro host network", "rustdesk hbbs hbbr docker", "rustdesk self-host pro docker"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 Docker Compose와 필요한 호스트 네트워킹 구성으로 RustDesk Server Pro를 설치하기 바랍니다.
|
||||
|
||||
## RustDesk Server Pro의 권장 Docker 설정은 무엇인가요?
|
||||
|
||||
`network_mode: "host"`를 사용한 Docker Compose는 대부분의 Linux 기반 RustDesk Server Pro 배포에 권장되는 설정입니다. 이 방법은 `hbbs`와 `hbbr`를 하나의 재현 가능한 구성으로 함께 유지하며, 호스트 네트워킹을 사용하지 않을 경우 발생할 수 있는 라이선스 문제를 피할 수 있습니다.
|
||||
|
||||
## RustDesk Server Pro Docker 체크리스트
|
||||
|
||||
1. Docker를 설치하기.
|
||||
2. 키 및 데이터베이스와 같은 RustDesk 파일을 위한 영구 `data` 디렉터리를 생성하세요.
|
||||
3. Docker Compose로 `hbbs`와 `hbbr`를 시작하세요.
|
||||
4. 필요한 RustDesk 포트를 열어주세요. 특히 웹 콘솔을 직접 사용하는 경우 `21114` 포트를 열어야 합니다.
|
||||
5. 도메인 뒤에 웹 콘솔을 원한다면 HTTPS를 별도로 추가하세요.
|
||||
|
||||
## 언제 원시 `docker run` 대신 Compose를 사용해야 하나요?
|
||||
|
||||
장기적인 프로덕션 배포 및 업그레이드에는 Docker Compose를 사용하세요. 원시 `docker run` 명령어는 주로 테스트, 디버깅 또는 각 컨테이너에 대한 완전한 수동 제어가 필요한 환경에서 사용하세요.
|
||||
|
||||
## Docker Compose(권장)
|
||||
|
||||
Docker Compose를 사용하려면 라이선스가 작동하도록 `network_mode: "host"`를 반드시 사용해야 합니다. 이 [guide](https://docs.docker.com/engine/install)를 사용해 Docker를 설치하여 최신 버전을 보장하세요!
|
||||
|
||||
아래 내용을 `compose.yml`에 복사하세요.
|
||||
|
||||
```yaml
|
||||
services:
|
||||
hbbs:
|
||||
container_name: hbbs
|
||||
image: docker.io/rustdesk/rustdesk-server-pro:latest
|
||||
command: hbbs
|
||||
volumes:
|
||||
- ./data:/root
|
||||
network_mode: "host"
|
||||
|
||||
depends_on:
|
||||
- hbbr
|
||||
restart: unless-stopped
|
||||
|
||||
hbbr:
|
||||
container_name: hbbr
|
||||
image: docker.io/rustdesk/rustdesk-server-pro:latest
|
||||
command: hbbr
|
||||
volumes:
|
||||
- ./data:/root
|
||||
network_mode: "host"
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
그런 다음 `sudo docker compose up -d` 또는 `podman-compose up -d`를 실행하십시오.
|
||||
|
||||
> `podman-compose` 설치용 `sudo apt install podman-compose`
|
||||
|
||||
{{% notice note %}}
|
||||
[Set up HTTPS for web console manually](/docs/ko/self-host/rustdesk-server-pro/faq/#웹-콘솔용-https-수동-설정)를 사용하는 방법.
|
||||
{{% /notice %}}
|
||||
|
||||
## Docker 명령어
|
||||
|
||||
이 [guide](https://docs.docker.com/engine/install)를 사용해 Docker를 설치하면 가장 최신 버전을 보장할 수 있습니다!
|
||||
|
||||
또는 이 단일 명령어로 Docker를 설치할 수도 있습니다.
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://get.docker.com)
|
||||
```
|
||||
|
||||
다음 명령어를 실행하십시오(s6 이미지에는 `./data:/root` 대신 `./data:/data`가 필요할 수 있음):
|
||||
|
||||
```sh
|
||||
sudo docker image pull rustdesk/rustdesk-server-pro
|
||||
sudo docker run --name hbbs -v ./data:/root -td --net=host --restart unless-stopped docker.io/rustdesk/rustdesk-server-pro hbbs
|
||||
sudo docker run --name hbbr -v ./data:/root -td --net=host --restart unless-stopped docker.io/rustdesk/rustdesk-server-pro hbbr
|
||||
```
|
||||
|
||||
{{% notice note %}}
|
||||
위의 예제에서는 `sudo`와 `--net=host`를 사용합니다. 이는 Windows에서 작동하지 않으니 해당 명령어를 제거해 주세요. 만약 `--net=host`를 제거하신다면 아래를 확인해 주세요.
|
||||
{{% /notice %}}
|
||||
|
||||
```sh
|
||||
macaddrhbbs=$(echo -n A0-62-2F; dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e '/1 "-%02X"')
|
||||
sudo docker run --name hbbs -p 21114:21114 -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v ./data:/root -td --mac-address="$macaddrhbbs" --restart unless-stopped docker.io/rustdesk/rustdesk-server-pro hbbs
|
||||
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v ./data:/root -td --restart unless-stopped docker.io/rustdesk/rustdesk-server-pro hbbr
|
||||
```
|
||||
|
||||
{{% notice note %}}
|
||||
[Set up HTTPS for web console manually](/docs/ko/self-host/rustdesk-server-pro/faq/#웹-콘솔용-https-수동-설정) 사용 방법.
|
||||
{{% /notice %}}
|
||||
|
||||
> Fedora에서 SELinux로 문제가 발생하면 이 [issue](https://github.com/rustdesk/rustdesk-server/issues/230)를 확인해 보세요.
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
title: install.sh
|
||||
weight: 4
|
||||
description: "라이선스를 받은 후 install.sh 스크립트를 사용하여 Linux에 RustDesk 서버 Pro를 설치하기 바랍니다. 이 방법은 Pro 서버 구성 요소의 간단한 스크립트 설정에 사용됩니다."
|
||||
keywords: ["rustdesk server pro install.sh", "rustdesk pro linux install", "rustdesk pro script install", "rustdesk self-host pro linux", "rustdesk server pro setup"]
|
||||
---
|
||||
|
||||
자신만의 서비스 설정을 처음부터 작성하지 않고 간단한 Linux 기반 RustDesk Server Pro 설치를 원할 때는 `install.sh` 방법을 사용하세요.
|
||||
|
||||
{{% notice note %}}
|
||||
[https://rustdesk.com/pricing/](https://rustdesk.com/pricing/)에서 라이선스를 받는 것을 잊지 마세요. 더 자세한 내용은 [license](/docs/ko/self-host/rustdesk-server-pro/license/) 페이지를 확인해 주세요.
|
||||
|
||||
이 간단한 설치를 하기 전에 먼저 [OSS installation](/docs/ko/self-host/rustdesk-server-oss/install/)를 읽어보시기 바랍니다. 여기서 더 깊이 있는 세부 정보를 알 수 있습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
## install.sh는 언제 사용해야 하나요?
|
||||
|
||||
`systemd`가 있는 Linux 호스트에 RustDesk Server Pro를 가장 빠르게 배포하려면 `install.sh`를 사용하세요. 스크립트가 종속성 설치, 바이너리 배치, 서비스 생성을 수행하고, 선택적으로 웹 콘솔용 HTTPS를 준비하기를 원하는 간단한 단일 서버 설정에 가장 적합합니다.
|
||||
|
||||
## install.sh 빠른 답변
|
||||
|
||||
- `systemd`를 사용한 간단한 Linux 배포에는 이 방법을 사용하십시오.
|
||||
- 더 쉬운 업그레이드, 롤백 및 컨테이너 기반 운영을 원하시면 대신 [Docker](/docs/ko/self-host/rustdesk-server-pro/installscript/docker/#docker-compose권장)를 사용하십시오.
|
||||
- 시작하기 전에 Pro 라이선스를 준비해 두십시오.
|
||||
- 도메인을 사용하는 경우 스크립트가 HTTPS를 위해 `nginx`와 `certbot`도 설정할 수 있습니다.
|
||||
- 첫 번째 설치 후 업그레이드에는 `update.sh`를 사용하십시오.
|
||||
|
||||
## 설치하기
|
||||
|
||||
위의 명령어를 복사하여 Linux 터미널에 붙여넣어 RustDesk 서버 프로를 설치하세요.
|
||||
|
||||
`wget -qO- https://raw.githubusercontent.com/rustdesk/rustdesk-server-pro/main/install.sh | bash`
|
||||
|
||||
{{% notice note %}}
|
||||
[the Docker image](/docs/ko/self-host/rustdesk-server-pro/installscript/docker/#docker-compose권장) 사용을 권장합니다. 솔루션 배포와 업데이트 과정이 크게 간소화됩니다. 리소스 소비량도 매우 낮습니다.
|
||||
|
||||
또한, 위의 명령어는 쓰기 권한이 없는 디렉터리가 아닌 홈 디렉터리에서 실행해 주세요.
|
||||
{{% /notice %}}
|
||||
|
||||
이것이 하는 일:
|
||||
|
||||
- 일부 종속성 설치하기
|
||||
- 사용 가능한 경우 UFW 방화벽 설정하기
|
||||
- 작업 디렉터리 `/var/lib/rustdesk-server`와 로그 디렉터리 `/var/log/rustdesk-server` 생성하기
|
||||
- 실행 파일을 `/usr/bin`에 설치하기
|
||||
- RustDesk Pro 서비스를 다운로드하고 위 폴더에 압축 해제하기
|
||||
- hbbs 및 hbbr용 systemd 서비스 생성하기(서비스 이름은 `rustdesk-hbbs.service` 및 `rustdesk-hbbr.service`)
|
||||
- 도메인을 선택하면 Nginx와 Certbot이 설치되어 API가 포트 `443`(HTTP)에서 이용 가능하며, 포트 `80`를 통해 SSL 인증서를 받게 됩니다. 이 인증서는 자동으로 갱신됩니다. HTTPS가 준비되면, `https://yourdomain.com:21114` 대신 `https://yourdomain.com`로 접속해 주세요.
|
||||
|
||||
{{% notice note %}}
|
||||
[Set up HTTPS for web console manually](/docs/ko/self-host/rustdesk-server-pro/faq/#웹-콘솔용-https-수동-설정)를 사용하는 방법.
|
||||
{{% /notice %}}
|
||||
|
||||
{{% notice note %}}
|
||||
systemd 서비스가 시작되지 않으면, 아마도 SELinux와 관련이 있을 수 있으니 [this](/docs/ko/self-host/rustdesk-server-pro/faq/#selinux)를 확인해 보세요.
|
||||
{{% /notice %}}
|
||||
|
||||
{{% notice note %}}
|
||||
클라이언트가 서버에 연결되지 않거나 웹 콘솔에 접근할 수 없는 경우, [this](/docs/ko/self-host/rustdesk-server-pro/faq/#방화벽)를 확인해 보세요.
|
||||
{{% /notice %}}
|
||||
|
||||
## 업그레이드
|
||||
|
||||
위의 명령어를 복사하여 Linux 터미널에 붙여넣어 기존 RustDesk Server Pro 설치를 업그레이드하세요. 이 명령어는 로컬에 저장하여 cron으로 예약할 수도 있습니다.
|
||||
|
||||
`wget -qO- https://raw.githubusercontent.com/rustdesk/rustdesk-server-pro/main/update.sh | bash`
|
||||
|
||||
{{% notice note %}}
|
||||
이 스크립트에서 문제가 발생하면, 스크립트를 하나씩 직접 실행해 보시기를 권장합니다.
|
||||
|
||||
또한 홈 디렉터리에서 위 명령어를 실행해 주세요. 쓰기 권한이 없는 디렉터리에서는 실행하지 마세요.
|
||||
{{% /notice %}}
|
||||
|
||||
이것이 하는 일:
|
||||
|
||||
- RustDesk Server Pro의 새로운 버전을 확인합니다.
|
||||
- 새로운 버전이 발견되면 API 파일을 제거하고 새 실행파일과 API 파일을 다운로드합니다.
|
||||
|
||||
## 오픈소스에서 변환하기
|
||||
|
||||
위의 명령어를 복사하여 Linux 터미널에 붙여넣어 RustDesk Server를 RustDesk Server Pro로 변환하세요.
|
||||
|
||||
`wget -qO- https://raw.githubusercontent.com/rustdesk/rustdesk-server-pro/main/convertfromos.sh | bash`
|
||||
|
||||
{{% notice note %}}
|
||||
방화벽에 `21114` TCP 포트를 추가해 주세요. 이는 RustDesk 클라이언트의 웹 콘솔 및 사용자 로그인을 위한 추가 포트입니다.
|
||||
{{% /notice %}}
|
||||
|
||||
{{% notice note %}}
|
||||
이 스크립트와 관련된 문제가 발생하면 Docker 설치로 전환하는 것을 권장합니다. 또는 스크립트를 직접 살펴보고 단계별로 수동으로 실행할 수도 있습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
기능:
|
||||
|
||||
- 이전 서비스를 비활성화하고 제거합니다.
|
||||
- 일부 종속성을 설치합니다.
|
||||
- 사용 가능한 경우 UFW 방화벽을 설정합니다.
|
||||
- `/var/lib/rustdesk-server` 폴더를 생성하고 여기에 인증서를 복사합니다.
|
||||
- `/var/log/rustdesk`를 삭제하고 `/var/log/rustdesk-server`를 생성합니다.
|
||||
- RustDesk Pro 서비스를 다운로드하여 위 폴더에 압축 해제합니다.
|
||||
- hbbs 및 hbbr용 systemd 서비스를 생성합니다(서비스 이름은 rustdesk-hbbs.service 및 rustdesk-hbbr.service입니다).
|
||||
- 도메인을 선택하면 Nginx와 Certbot이 설치되어 API가 포트 443(HTTP)에서 이용 가능하며, 포트 80을 통해 SSL 인증서를 받고 자동으로 갱신됩니다.
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: 설치
|
||||
weight: 2
|
||||
description: "Docker, Linux 설치 스크립트 또는 이전 Windows 방법을 사용해 RustDesk 서버 Pro를 설치하기. 여기에서 시작하여 환경에 맞는 올바른 배포 경로를 선택하세요."
|
||||
keywords: ["rustdesk server pro install", "rustdesk self-host pro", "rustdesk pro docker", "rustdesk pro linux install", "rustdesk pro windows install"]
|
||||
---
|
||||
|
||||
환경에 가장 적합한 RustDesk Server Pro 설치 방법을 선택하려면 여기에서 시작하세요. 권장 옵션은 Docker입니다.
|
||||
|
||||
## RustDesk Server Pro를 설치하는 가장 좋은 방법은 무엇인가요?
|
||||
|
||||
대부분의 팀에서는 Docker가 RustDesk Server Pro를 설치하는 가장 좋은 방법입니다. 업데이트가 간편하고 배포 과정이 재현하기 쉽기 때문입니다. `install.sh` 경로는 Linux에서 네이티브 systemd 서비스를 원할 때 유용합니다. 이미 RustDesk 서버를 운영 중이고 Pro로 계속 이동하고자 한다면 OSS에서 변환하는 것이 적합한 경로입니다.
|
||||
|
||||
## 시작하기 전에 무엇이 필요하나요?
|
||||
|
||||
- RustDesk Server Pro 라이선스
|
||||
- Linux 서버 또는 VM, 또는 이미 Docker가 설치된 호스트
|
||||
- 방화벽에서 필요한 RustDesk 포트가 열려 있어야 하며, 웹 콘솔과 API가 필요하다면 `21114` 또는 `443`도 열려 있어야 합니다.
|
||||
- 도메인에 HTTPS를 적용하려면 선택적 DNS 이름이 필요합니다.
|
||||
|
||||
## 어떤 설치 방법을 선택해야 하나요?
|
||||
|
||||
| 방법 | 최적의 사용처 | 사용하는 이유 |
|
||||
| --- | --- | --- |
|
||||
| Docker | 대부분의 새로운 Pro 배포 | 가장 쉬운 업그레이드, 간편한 롤백 및 일관된 설정 |
|
||||
| `install.sh` | 기본 서비스를 원하는 Linux 관리자 | systemd 서비스를 생성하고 선택적으로 Nginx와 Certbot을 설정할 수 있음 |
|
||||
| 오픈소스에서 변환 | 기존 OSS 배포 | 기존 RustDesk 서버 설치를 제로부터 시작하지 않고 Pro로 이동함 |
|
||||
|
||||
## 방법 1: Docker (권장)
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://get.docker.com)
|
||||
wget rustdesk.com/pro.yml -O compose.yml
|
||||
sudo docker compose up -d
|
||||
```
|
||||
|
||||
자세한 내용은 [Docker](/docs/ko/self-host/rustdesk-server-pro/installscript/docker/)를 확인하십시오.
|
||||
|
||||
## 방법 2: install.sh
|
||||
|
||||
Linux에 능숙하다면 아래 스크립트를 사용하십시오. 그렇지 않으면 실패할 경우 심각한 문제가 발생할 수 있으며, 왜 작동하지 않는지 파악하기 어려울 수 있습니다.
|
||||
|
||||
`bash <(wget -qO- https://raw.githubusercontent.com/rustdesk/rustdesk-server-pro/main/install.sh)`
|
||||
|
||||
자세한 내용은 [install.sh](/docs/ko/self-host/rustdesk-server-pro/installscript/script/)를 확인하십시오.
|
||||
|
||||
## 오픈소스에서 변환하기
|
||||
|
||||
### Docker
|
||||
Docker를 사용해 오픈소스 버전을 설치한 경우, 이를 직접 변환할 수 있는 방법은 없습니다. 대신 Pro 이미지로 새 컨테이너를 실행해야 합니다. 이를 수행하기 전에 개인 키(파일명 `id_ed25519`, `id_ed25519.pub`가 아님)를 백업해 두십시오. 새 컨테이너가 설정되면 기존의 `id_ed25519` 개인 키 파일을 새 컨테이너의 작업 디렉터리로 복사한 다음, 컨테이너를 다시 시작하십시오.
|
||||
|
||||
### install.sh
|
||||
install.sh를 사용해 오픈소스 버전을 설치한 경우, [this](/docs/ko/self-host/rustdesk-server-pro/installscript/script/#오픈소스에서-변환하기)를 따르십시오.
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: Windows 설치(사용 중단됨)
|
||||
weight: 5
|
||||
description: "Windows에서 RustDesk Server Pro를 설치하는 레거시 가이드입니다. 사전 요구사항, 라이선스 설정 및 다운로드 단계가 포함되어 있지만, 대신 Linux 또는 Docker를 사용하는 것이 좋습니다."
|
||||
keywords: ["rustdesk server pro windows", "rustdesk pro windows install", "rustdesk self-host pro windows", "rustdesk windows install deprecated", "rustdesk pro license windows"]
|
||||
---
|
||||
|
||||
이것은 RustDesk Server Pro의 레거시 Windows 설치 경로입니다. 가능하면 대신 Linux 또는 Docker를 사용하십시오.
|
||||
|
||||
{{% notice note %}}
|
||||
Windows 보안 정책은 까다롭습니다. 이 튜토리얼이 작동하지 않거나 불안정한 연결을 경험한다면, Linux 서버로 마이그레이션해 주세요.
|
||||
{{% /notice %}}
|
||||
|
||||
{{% notice note %}}
|
||||
GUI 버전인 `RustDeskServer.setup.exe`는 더 이상 유지보수가 되지 않으므로 권장하지 않습니다.
|
||||
{{% /notice %}}
|
||||
|
||||
## Windows 설치 경로를 사용해야 하나요?
|
||||
|
||||
이 가이드는 RustDesk Server Pro 호스트가 반드시 Windows에 있어야 할 때만 사용하십시오. 새로운 자체 호스팅 배포의 경우, Linux나 Docker가 더 나은 기본 옵션입니다. 자동화, 업데이트 및 안정적인 운영이 더 쉽기 때문입니다.
|
||||
|
||||
## Windows 설치 빠른 답변
|
||||
|
||||
- 이 경로는 레거시 경로로 간주하며, 선호하는 배포 방식은 아닙니다.
|
||||
- 시작하기 전에 Microsoft Visual C++ 재배포 가능 패키지를 설치하세요.
|
||||
- 오래된 GUI 설치 프로그램은 더 이상 유지보수가 되지 않습니다.
|
||||
- 장기적으로 안정적인 배포가 필요하다면, Linux나 Docker로 이동하세요.
|
||||
- Windows에 계속 머무를 경우, 서비스를 어떻게 실행하고 웹 콘솔을 어떻게 프록시할지 계획하세요.
|
||||
|
||||
## 설치
|
||||
|
||||
Windows에서 rustdesk를 실행하려면 Microsoft Visual C++ 재배포 가능 패키지가 필요합니다. 이를 [here](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist)에서 다운로드할 수 있습니다.
|
||||
|
||||
1. [https://rustdesk.com/pricing.html](https://rustdesk.com/pricing.html)에서 라이선스를 받고, 자세한 내용은 [license](/docs/ko/self-host/rustdesk-server-pro/license/) 페이지를 확인하세요.
|
||||
2. [GitHub](https://github.com/rustdesk/rustdesk-server-pro/releases/latest)에서 Windows 설치 프로그램을 다운로드하세요.
|
||||
3. Windows 설치 프로그램을 압축 해제하세요.
|
||||
4. 설치 프로그램을 실행하고 화면에 표시된 단계를 따르세요. 또는 [PM2 or NSSM](/docs/ko/self-host/rustdesk-server-oss/windows/)를 사용해 수동으로 설치하세요.
|
||||
5. 설치가 완료되면 RustDesk 서버를 엽니다.
|
||||
6. 안내에 따라 설치를 진행하세요.
|
||||
7. `Services`를 클릭한 다음 `Start`를 클릭하세요.
|
||||
8. 설치가 완료되면 `http://youripaddress:21114`로 이동하세요.
|
||||
9. 사용자 이름 `admin`와 비밀번호 `test1234`로 로그인하세요.
|
||||
10. 1단계에서 구매한 라이선스 코드를 입력하세요.
|
||||
|
||||
## IIS를 프록시로 사용하기
|
||||
|
||||
`Dynamic Content Compression`가 설치되어 있는지 확인하세요(이는 서버 역할과 함께 설치할 수 있는 IIS 기능입니다).
|
||||
1. IIS를 열거나 설치하세요.
|
||||
2. RustDesk용 새 웹사이트를 생성하고 바인딩(이상적으로 443)과 관련 인증서를 설정하세요. 기본 설정은 이 웹사이트를 빈 폴더로 지정해야 합니다. (기본 사이트를 사용하는 경우, 해당 폴더에 다른 파일이 없도록 하세요).
|
||||
3. IIS에서 [Application Request Routing](https://www.iis.net/downloads/microsoft/application-request-routing)와 [URL Rewrite](https://learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-the-url-rewrite-module)를 설치하세요.
|
||||
|
||||
## 애플리케이션 요청 라우팅
|
||||
|
||||
1. IIS 서버 호스트 아래에서 애플리케이션 요청 라우팅을 엽니다.
|
||||
2. 서버 프록시 설정으로 이동하세요.
|
||||
3. 프록시를 활성화하면 모든 설정이 표시되며, 기본값으로 두어도 됩니다.
|
||||
4. 설정을 저장한 후 다음 단계인 URL 다시쓰기로 넘어갈 수 있습니다.
|
||||
|
||||
## URL 다시쓰기
|
||||
|
||||
1. 왼쪽 창에서 IIS의 사이트를 열고 URL 다시 쓰기를 두 번 클릭하세요.
|
||||
2. `Add rules`를 클릭하세요.
|
||||
3. 새 리버스 프록시 규칙을 설정하세요.
|
||||
4. 로컬 주소(21114 주소)를 설정하세요.
|
||||
인바운드 규칙 – RustDesk 내부 21114 주소
|
||||
아웃바운드 규칙 – `From`는 RustDesk 내부 21114 주소이고, `To`는 외부 주소입니다.
|
||||
노트: 주소 앞에 http/https를 붙이지 마세요 – 자동으로 처리됩니다. 또한 모든 주소가 내부와 외부에서 모두 접근 가능하도록 확인하세요.
|
||||
|
||||
## 압축
|
||||
|
||||
1. `Dynamic Content Compression`를 비활성화하세요.
|
||||
|
||||
## 문제 해결
|
||||
|
||||
오류 500.52가 발생한 경우, 언급된 변수를 추가하세요: [IIS acting as reverse proxy: Where the problems start](https://techcommunity.microsoft.com/t5/iis-support-blog/iis-acting-as-reverse-proxy-where-the-problems-start/ba-p/846259).
|
||||
|
||||
SSL 설정을 'SSL 필요 → 무시'로 변경해야 할 수 있습니다.
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: LDAP
|
||||
weight: 17
|
||||
description: "RustDesk 서버 프로에서 LDAP 인증을 구성하려면 서버 호스트, 포트, 기본 DN, 범위 및 관련 디렉터리 매핑 옵션을 설정하세요."
|
||||
keywords: ["rustdesk ldap", "rustdesk server pro ldap", "rustdesk ldap authentication", "rustdesk base dn", "rustdesk ldaps"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 RustDesk Server Pro를 LDAP 디렉터리에 연결하여 중앙 집중식 인증 및 사용자 조회를 수행하십시오.
|
||||
|
||||
## RustDesk Server Pro에서 LDAP는 어떤 역할을 하나요?
|
||||
|
||||
LDAP를 사용하면 RustDesk Server Pro가 각 계정의 별도 로컬 자격 증명을 관리하는 대신 디렉터리 서비스를 기반으로 사용자를 인증할 수 있습니다. 첫 번째 성공적인 로그인 시, RustDesk는 LDAP 신원을 기반으로 사용자를 자동으로 생성합니다.
|
||||
|
||||
## LDAP 설정 체크리스트
|
||||
|
||||
1. LDAP 호스트, 포트 및 암호화 모드(`389`, `636` 또는 StartTLS)를 확인하십시오.
|
||||
2. 유효한 바인딩 DN과 비밀번호를 가진 서비스 계정을 선택하십시오.
|
||||
3. 올바른 기본 DN, 범위 및 사용자 필터를 설정하십시오.
|
||||
4. 올바른 사용자 이름 속성을 설정하십시오. 예: `uid` 또는 `sAMAccountName`.
|
||||
5. 배포하기 전에 RustDesk 웹 콘솔에서 구성 내용을 테스트하십시오.
|
||||
|
||||
## LDAP 빠른 답변
|
||||
|
||||
- RustDesk는 첫 번째 성공적인 LDAP 로그인 시 사용자를 생성합니다.
|
||||
- 콘솔은 구성 내용을 제출할 때 LDAP 연결을 검증합니다.
|
||||
- 현재 로컬 사용자를 LDAP 사용자로 변환하는 것은 지원되지 않습니다.
|
||||
- LDAP 그룹은 아직 지원되지 않습니다.
|
||||
|
||||
## 구성
|
||||
아래와 같이 `LDAP` 설정 페이지로 이동하십시오.
|
||||
|
||||

|
||||
|
||||
- **LDAP 호스트:** 이는 LDAP 서버의 호스트명 또는 IP 주소입니다. 예를 들어, `ldap.example.com` 또는 `192.0.2.1`입니다.
|
||||
|
||||
- **LDAP 포트:** 이는 LDAP 서버가 수신 대기하는 포트 번호입니다. LDAP의 기본 포트는 `389`이며, LDAPS(SSL을 통한 LDAP)의 경우 `636`입니다.
|
||||
|
||||
- **기본 DN:** 이는 LDAP 검색의 시작 지점입니다. 예를 들어, dc=example,dc=com입니다.
|
||||
|
||||
- **범위:** 이는 LDAP 디렉터리에서 검색의 범위를 결정합니다. 하나(기본 DN 바로 아래의 항목들) 또는 하위(기본 DN 바로 아래의 항목들)로 설정할 수 있습니다.
|
||||
|
||||
- **바인딩 DN / 비밀번호:** 서비스 계정의 관리자 사용자 이름과 비밀번호입니다. 이 계정은 다른 사용자를 인증하기 위해 LDAP에 바인딩하는 데 사용됩니다. 일반적으로 `cn=admin,dc=example,dc=com`와 같은 사용자 DN입니다.
|
||||
|
||||
- **필터:** 이는 LDAP 쿼리의 검색 필터입니다. 예를 들어, `(objectClass=person)` 또는 `(&(age=28)(!(name=Bob)))`입니다.
|
||||
|
||||
- **사용자 이름 속성:** 이는 사용자 이름이 포함된 속성입니다. 예를 들어 `uid` 또는 `sAMAccountName`입니다. 기본적으로 `uid`와 `cn`를 사용합니다. 여기에 이에 대한 [discussion](https://github.com/rustdesk/rustdesk-server-pro/issues/140#issuecomment-1916804393)가 있습니다.
|
||||
|
||||
- **StartTLS:** 이는 연결을 보안 연결로 업그레이드하기 위해 StartTLS를 사용할지 여부를 결정합니다.
|
||||
|
||||
- **NoTLSVerify:** 이는 TLS 인증서 확인을 건너뛸지 여부를 결정합니다. 확실히 알고 있는 경우가 아니라면 이 설정을 false(즉, 인증서 확인 수행)로 유지하는 것이 좋습니다.
|
||||
|
||||
## 작동 방식은 어떻게 되나요?
|
||||
- LDAP 로그인은 어떻게 작동하나요? 예를 들어, 먼저 새 사용자를 생성해야 하나요? RustDesk가 첫 로그인 시 사용자를 생성하나요 등등?
|
||||
> RustDesk는 첫 로그인 시 사용자를 생성합니다.
|
||||
- LDAP가 제대로 작동하는지 확인하려면 어떻게 해야 하나요(이상적으로는 RustDesk에 전달해 발견된 사용자를 반환하도록 할 수 있는 명령어가 있으면 좋겠네요)?
|
||||
> 구성 정보를 제출하면, 입력한 binddn과 비밀번호로 LDAP 서버에 연결하고 작동 여부를 확인합니다.
|
||||
- 로컬 사용자를 LDAP 사용자로 변경하려면 어떻게 해야 하나요?
|
||||
> 아직 지원되지 않습니다.
|
||||
- LDAP 그룹을 지원하나요?
|
||||
> 아직 지원되지 않습니다.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: 라이선스
|
||||
weight: 15
|
||||
description: "웹 콘솔에서 RustDesk 서버 프로 라이선스를 구매하고, 입력하고 관리하십시오. 라이선스를 어디서 얻을 수 있는지, 구매 후 어떻게 활성화하거나 변경할 수 있는지 알아보십시오."
|
||||
keywords: ["rustdesk pro license", "rustdesk server pro activate", "rustdesk pricing license", "rustdesk change license", "rustdesk web console license"]
|
||||
---
|
||||
|
||||
이 페이지를 사용하여 RustDesk Server Pro 라이선스를 구매하고 활성화하며 업데이트하는 방법을 이해하십시오.
|
||||
|
||||
## RustDesk Server Pro 라이선스는 어떻게 작동하나요?
|
||||
|
||||
RustDesk Server Pro 라이선스는 모든 릴레이 노드가 아닌 `hbbs` 서버에 연결됩니다. 가격 페이지를 통해 라이선스를 구매한 후 웹 콘솔에 입력하고, 셀프서비스 라이선스 포털을 통해 갱신, 업그레이드, 청구서 및 마이그레이션을 관리하십시오.
|
||||
|
||||
## 라이선스에 대한 간단한 답변
|
||||
|
||||
- 한 번에 하나의 라이선스는 하나의 `hbbs` 머신에 할당됩니다.
|
||||
- `hbbr` 릴레이 서버는 별도의 라이선스가 필요하지 않습니다.
|
||||
- 갱신과 업그레이드는 셀프서비스 포털에서 처리한 후 웹 콘솔에서 라이선스를 새로 고침하여 활성화합니다.
|
||||
- 마이그레이션은 기존 머신의 바인딩 해제와 새 서버에 라이선스 설정으로 이루어집니다.
|
||||
- 서버가 인터넷에 직접 접속할 수 없는 경우, 라이선스 확인을 위해 프록시를 구성할 수 있습니다.
|
||||
|
||||
## 라이선스 구매
|
||||
|
||||
[https://rustdesk.com/pricing.html](https://rustdesk.com/pricing.html)에서 라이선스를 받으시고 Stripe 결제 페이지에 유효한 이메일 주소를 입력해 주세요. 결제가 성공적으로 완료되면 라이선스(및 별도의 메일로 청구서)가 이메일로 전송됩니다.
|
||||
|
||||

|
||||
|
||||
## 라이선스 설정
|
||||
|
||||
웹 콘솔(`http://<rustdesk-server-pro-ip>:21114`)에서 라이선스를 입력하거나 나중에 라이선스를 변경해야 합니다.
|
||||
|
||||
| 라이선스 설정 | 라이선스 변경 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
## 라이선스 갱신/업그레이드
|
||||
|
||||
라이선스 갱신/업그레이드는 아래와 같이 [self-service license portal](https://rustdesk.com/self-host/account/)를 통해 확인할 수 있으며, 위 그림과 같이 라이선스 구매 시 사용한 이메일로 로그인하십시오.
|
||||
|
||||
| 갱신/업그레이드 작업이 포함된 라이선스 페이지 | 업그레이드 창 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
결제 후, 라이선스 [as below](/docs/ko/self-host/rustdesk-server-pro/license/#라이선스-새로-고침)를 새로 고침하여 활성화해 주세요.
|
||||
|
||||
### 라이선스 새로 고침
|
||||
결제 후, 아래와 같이 웹 콘솔로 이동하여 수동으로 활성화해야 합니다. `Edit`를 클릭한 다음 `OK`를 클릭하면 되며, 아무것도 수정할 필요가 없습니다. 라이선스 키는 그대로 유지되기 때문입니다.
|
||||
|
||||

|
||||
|
||||
## 청구서, 라이선스 검색 및 마이그레이션
|
||||
|
||||
라이선스는 한 대의 컴퓨터에서만 사용할 수 있습니다(단, hbbs용이며, hbbr는 라이선스가 필요하지 않습니다). 다른 컴퓨터로 이전하거나 라이선스를 다시 받거나 청구서를 다운로드하려면 [https://rustdesk.com/self-host/account/](https://rustdesk.com/self-host/account/)로 이동하세요. Stripe 결제에 사용한 이메일 주소로 로그인한 후, 아래와 같이 이전하려는 기존 컴퓨터의 연결을 해제하세요. 새 서버 웹 콘솔에서 라이선스를 설정하면 라이선스가 할당되고 콘솔에 자동으로 등록됩니다.
|
||||
|
||||

|
||||
|
||||
## 프록시
|
||||
서버가 인터넷에 접속해 라이선스를 직접 확인할 수 없는 경우, 예를 들어 `proxy=http://username:password@example.com:8080 ./hbbs`와 같은 프록시를 추가할 수 있습니다.
|
||||
|
||||
또는 작업 디렉터리(여기서 `id_ed25519` / `db.sqlite3` 파일이 저장됨)의 `.env` 파일에 `proxy=http://username:password@example.com:8080`를 추가할 수 있습니다.
|
||||
|
||||
`http`는 `https` 또는 `socks5`로 대체할 수 있습니다. `username` / `password` / `port`가 없는 경우, `proxy=http://example.com`로 대체할 수 있습니다.
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: OIDC
|
||||
weight: 16
|
||||
description: "RustDesk Server Pro에서 OpenID Connect를 구성하여 사용자가 Google, Okta, Azure, GitHub, GitLab 등과 같은 ID 제공업체로 로그인할 수 있도록 하세요."
|
||||
keywords: ["rustdesk oidc", "rustdesk openid connect", "rustdesk sso", "rustdesk azure login", "rustdesk okta login", "rustdesk github login"]
|
||||
---
|
||||
|
||||
RustDesk Server Pro에서 OpenID Connect를 사용하여 사용자가 별도의 로컬 자격 증명 대신 기존 ID 제공자로 로그인하도록 하세요.
|
||||
|
||||
- 기존의 `Google`, `Okta`, `Facebook`, `Azure`, `GitHub`, `GitLab` 등의 계정을 사용하여 손쉽게 `RustDesk Pro` 계정을 생성하고 로그인하세요.
|
||||
- 사양에 대해서는 [OpenID Connect Core 1.0 incorporating errata set 1](https://openid.net/specs/openid-connect-core-1_0.html)을 참조하십시오.
|
||||
|
||||
## RustDesk Server Pro에서 OIDC란 무엇인가요?
|
||||
|
||||
OIDC를 사용하면 RustDesk Server Pro가 로그인을 외부 ID 제공자에게 위임할 수 있습니다. 별도의 RustDesk 비밀번호를 관리하는 대신, 사용자는 이미 신원 확인, 접근 제어 및 계정 라이프사이클에 사용하고 있는 제공자와 인증됩니다.
|
||||
|
||||
## 로컬 계정 대신 OIDC를 사용해야 하는 경우는 언제인가요?
|
||||
|
||||
- 이미 Azure, Okta, GitHub, GitLab, Google 또는 다른 OIDC 지원 제공자를 사용하고 있음
|
||||
- 중앙 집중식 비밀번호 정책과 싱글 사인온을 원함
|
||||
- 하나의 ID 시스템에서 사용자의 접근 권한을 비활성화하거나 해지하고 싶음
|
||||
- RustDesk 계정 생성 및 로그인이 기존 조직의 신원과 연계되기를 원함
|
||||
|
||||
## OIDC 설정 체크리스트
|
||||
|
||||
1. ID 제공자에서 애플리케이션을 생성하세요.
|
||||
2. 클라이언트 ID, 클라이언트 비밀번호, 발급자 URL 및 제공자별 특정 엔드포인트를 수집하세요.
|
||||
3. 제공자 설정을 RustDesk Server Pro에 추가하세요.
|
||||
4. 광범위하게 배포하기 전에 비관리자 계정으로 로그인을 테스트하세요.
|
||||
|
||||
## 제공자 예시
|
||||
{{% children depth="4" showhidden="true" %}}
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: Azure
|
||||
weight: 16
|
||||
description: "RustDesk 서버 프로용 OpenID Connect 제공자로 Microsoft Entra ID(Azure)를 구성하십시오. Azure Portal에서 앱 등록 및 OIDC 설정 단계를 따르십시오."
|
||||
keywords: ["rustdesk azure oidc", "rustdesk entra id", "rustdesk azure sso", "rustdesk oidc azure", "rustdesk server pro azure"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 RustDesk Server Pro를 OpenID Connect로 Microsoft Entra ID에 연결하십시오.
|
||||
|
||||
## Azure OIDC 설정은 무엇을 하나요?
|
||||
|
||||
이 설정을 통해 사용자는 OpenID Connect를 이용해 Microsoft Entra ID 계정으로 RustDesk Server Pro에 로그인할 수 있습니다. 실제로는 Azure에서 RustDesk를 애플리케이션으로 등록하고, 클라이언트 자격 증명을 RustDesk Pro에 복사한 다음, RustDesk Pro를 Entra 테넌트 발급자 URL로 지정하면 됩니다.
|
||||
|
||||
## Azure OIDC 체크리스트
|
||||
|
||||
- 사용하려는 최종 콜백 원점을 통해 RustDesk Pro 웹 콘솔을 엽니다.
|
||||
- Microsoft Entra ID에서 앱 등록을 생성합니다.
|
||||
- Azure에서 `Client ID`를 RustDesk Pro로 복사합니다.
|
||||
- 클라이언트 시크릿을 생성하고 즉시 시크릿 값을 저장하세요.
|
||||
- 귀하의 `Directory (tenant) ID`를 사용해 발급자 URL을 구성하세요.
|
||||
- Azure 인증 설정에서 `ID tokens`를 활성화하세요.
|
||||
|
||||
## RustDesk Pro에 입력해야 하는 Azure 값은 무엇인가요?
|
||||
|
||||
| RustDesk Pro 필드 | Azure 소스 |
|
||||
| --- | --- |
|
||||
| 콜백 URL | RustDesk Pro OIDC 설정 페이지에서 복사 |
|
||||
| 클라이언트 ID | Azure 앱 개요의 `Application (client) ID` |
|
||||
| 클라이언트 비밀번호 | `Certificates & secrets` 아래에 생성된 Secret `Value` |
|
||||
| 발급자 | `https://login.microsoftonline.com/<Directory (tenant) ID>/v2.0` |
|
||||
|
||||
## 동영상 자습서
|
||||
|
||||
[https://www.youtube.com/watch?v=izGxSmifURI](https://www.youtube.com/watch?v=izGxSmifURI)
|
||||
|
||||
## 구성
|
||||
|
||||
1. [Azure portal](https://portal.azure.com)에 로그인하세요.
|
||||
2. **Microsoft Entra ID**를 검색하고 선택하세요.
|
||||
3. 왼쪽 메뉴에서 [**App registrations**](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps)를 선택하고, **새로운 등록**을 클릭하세요.
|
||||

|
||||
4. RustDesk Pro 콘솔을 열고, **설정** 페이지에서 **OIDC** 모듈을 클릭하세요. 그런 다음 **콜백 URL**을 복사하세요. **노트**: **콜백 URL**은 수정할 수 없으며, `Path` 부분은 `api/oidc/callback`로 고정되어 있고, `Protocol://Host:Port` 부분은 현재 웹페이지의 원본입니다. 만약 `http://localhost:8000/<path>` 주소를 통해 열면, **콜백 URL**은 `http://localhost:8000/api/oidc/callback`가 됩니다. 만약 `https://192.168.0.1:8000/<path>` 주소를 통해 열면, **콜백 URL**은 `https://192.168.0.1:8000/api/oidc/callback`가 됩니다. Azure는 반드시 `https://` 또는 `http://localhost`를 사용해야 하므로, 적절한 주소를 선택하여 RustDesk Pro 콘솔을 열어주세요.
|
||||

|
||||

|
||||
5. **이름**을 입력하고, **지원되는 계정 유형**을 선택한 후, RustDesk Pro에서 **리디렉션 URI**를 붙여넣으세요.
|
||||

|
||||
6. RustDesk Pro에서 **새 인증 제공자**를 클릭하세요.
|
||||

|
||||
7. Azure에서 사용하려는 애플리케이션을 선택하고, **개요**를 클릭한 후, **애플리케이션(클라이언트) ID**를 복사하세요.
|
||||

|
||||
8. RustDesk Pro에서 **클라이언트 ID**를 붙여넣으세요.
|
||||

|
||||
9. Azure에서 **인증서 및 비밀번호**, 새 비밀번호를 생성하거나 기존 비밀번호를 선택하세요. 보통 새 비밀번호를 생성합니다.
|
||||

|
||||
10. Azure에서 클라이언트 비밀번호의 값을 복사하세요. **노트**: 이 값은 처음 등록할 때만 보입니다. 페이지를 떠나면 더 이상 보이지 않습니다. 이 값을 잘 보관해 주세요.
|
||||

|
||||
11. RustDesk Pro에서 클라이언트 비밀번호의 값을 붙여넣으세요.
|
||||

|
||||
12. RustDesk Pro에서 **발급자** 필드에 `https://login.microsoftonline.com/<Directory (tenant) ID>/v2.0`를 입력하세요. `Directory (tenant) ID`를 귀하의 **디렉터리(테넌트) ID**로 바꿔주세요. **디렉터리(테넌트) ID**는 Azure의 애플리케이션 **개요** 패널에 있습니다.
|
||||

|
||||

|
||||
13. Azure에서 **인증** 메뉴를 선택하세요. 그런 다음 **ID 토큰(암시적 및 하이브리드 플로우에 사용)**을 선택하여 권한 부여를 설정하세요.
|
||||

|
||||
|
||||
## 참고문헌
|
||||
|
||||
- [Set up an OpenID Connect provider with Azure AD](https://learn.microsoft.com/en-us/power-pages/security/authentication/openid-settings)
|
||||
- [OpenID Connect on the Microsoft identity platform](https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-protocols-oidc)
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: 접근 제어
|
||||
weight: 16
|
||||
description: "RustDesk 서버 프로에서 장치 액세스 제어를 구성하려면 장치를 사용자 또는 그룹에 할당하고, 어떤 관리 대상 장치에 누가 접근할 수 있는지 정의하세요."
|
||||
keywords: ["rustdesk access control", "rustdesk device permissions", "rustdesk user group access", "rustdesk server pro permissions", "rustdesk device assignment"]
|
||||
---
|
||||
|
||||
RustDesk Server Pro에서 어떤 사용자나 그룹이 어떤 장치에 연결할 수 있는지 결정하려면 접근 제어를 사용하세요.
|
||||
|
||||
## RustDesk Server Pro의 접근 제어란 무엇인가요?
|
||||
|
||||
접근 제어는 사용자나 그룹이 특정 장치에 접속할 수 있는지를 결정합니다. 이는 연결 시작 후 운영자가 할 수 있는 작업과는 관련이 없습니다. 세션 내 권한 설정을 위해서는 [Control Role](/docs/ko/self-host/rustdesk-server-pro/control-role/)를 사용하세요.
|
||||
|
||||
## 접근 제어에 대한 간단한 답변
|
||||
|
||||
- 접근 제어는 누가 어떤 장치에 연결할 수 있는지 결정합니다.
|
||||
- 사용자 할당, 장치 그룹 및 그룹 간 접근 설정을 통해 작동합니다.
|
||||
- 한 장치는 한 사용자, 한 장치 그룹 또는 둘 다에 할당될 수 있습니다.
|
||||
- 비활성화된 사용자와 비활성화된 장치에는 접근할 수 없습니다.
|
||||
- 장치 그룹 권한과 사용자 그룹 권한을 조합하여 접근을 허용할 수 있습니다.
|
||||
|
||||
## 가장 먼저 구성해야 할 사항은 무엇인가요?
|
||||
|
||||
1. 장치를 어떻게 할당할지 결정하세요: 직접 사용자에게 할당하거나, 장치 그룹에 할당하거나, 둘 다 할당할지 선택하세요.
|
||||
2. 사용자가 자신의 그룹 외부의 장치에 접속해야 하는 경우 사용자 그룹 간 교차 규칙을 설정하세요.
|
||||
3. 사용자별 할당보다 그룹 기반 장치 접근 관리가 더 쉬운 경우 장치 그룹 규칙을 추가하세요.
|
||||
|
||||
## 장치 접근 권한
|
||||
|
||||
장치는 단일 사용자, 단일 장치 그룹 또는 둘 다에 할당될 수 있습니다.
|
||||
|
||||
장치가 사용자에게 할당되면 해당 사용자, 사용자 그룹 또는 적절한 교차 사용자 그룹 설정을 통해 접근할 수 있습니다.
|
||||
|
||||
장치가 장치 그룹에 할당되면 적절한 교차 사용자-장치 그룹 설정을 통해 접근할 수 있습니다.
|
||||
|
||||
사용자에게 장치를 할당하는 방법은 세 가지가 있습니다:
|
||||
- 콘솔 장치 페이지를 통해
|
||||
- 클라이언트 측에서 지정된 사용자 계정에 로그인하여
|
||||
- 명령줄을 통해 할당
|
||||
|
||||
장치를 장치 그룹에 할당하는 방법은 두 가지가 있습니다:
|
||||
- 콘솔 장치 페이지를 통해
|
||||
- 명령줄을 통해 할당
|
||||
|
||||
다음 두 가지 상황에서는 장치에 접근할 수 없게 됩니다:
|
||||
- 콘솔 장치 페이지에서 장치 `disable`로 설정
|
||||
- 콘솔 사용자 페이지에서 사용자 `disable`로 설정
|
||||
|
||||
## 사용자 그룹 접근 설정
|
||||
|
||||
웹 콘솔의 그룹 페이지로 이동하여, 아래와 같이 `Edit`를 클릭해 교차 그룹 설정을 편집하십시오.
|
||||
|
||||
`Access with other groups`에 대한 귀하의 수정 사항은 `OK` 버튼을 클릭할 필요 없이 즉시 적용됩니다.
|
||||
|
||||
`Can access to`와 `Can be accessed from`는 거의 동일한 기능을 수행하며, 편의를 위해 두 옵션을 모두 제공합니다. 그러나 이로 인해 약간의 혼란이 발생할 수 있습니다.
|
||||
|
||||
{{% notice note %}}
|
||||
제어 측에 할당된 사용자와 그룹은 웹 콘솔에서 할당된 사용자가 아니라 로그인한 사용자에 의해 결정됩니다. 특정 제어 측에는 iOS 클라이언트 및 웹 클라이언트와 같이 디바이스 ID가 없는 경우가 있기 때문에 이렇게 설계했습니다.
|
||||
{{% /notice %}}
|
||||
|
||||

|
||||
|
||||
## 디바이스 그룹 액세스 설정
|
||||
|
||||
디바이스 그룹은 액세스 권한을 관리하는 또 다른 방법을 제공합니다. 주요 규칙은 다음과 같습니다:
|
||||
|
||||
1. 하나의 디바이스는 오직 하나의 디바이스 그룹에만 추가될 수 있습니다.
|
||||
2. 사용자 또는 사용자 그룹에 대해 디바이스 그룹의 액세스 권한을 설정할 수 있습니다. 이러한 권한은 사용자 그룹의 액세스 권한과 누적됩니다—즉, 사용자 그룹 권한이나 디바이스 그룹 권한 둘 중 하나라도 허용한다면 액세스가 부여됩니다.
|
||||
3. 할당되지 않은 디바이스를 디바이스 그룹에 추가하면 더 이상 "할당되지 않음" 상태로 간주되지 않습니다.
|
||||
|
||||
{{% notice note %}}
|
||||
디바이스 그룹 기능을 사용하려면 RustDesk 클라이언트 버전 1.3.8 이상 및 RustDesk 서버 프로 버전 1.5.0 이상이 필요합니다.
|
||||
{{% /notice %}}
|
||||
@@ -0,0 +1,166 @@
|
||||
---
|
||||
title: 릴레이 서버 구성
|
||||
weight: 17
|
||||
description: "서버 프로 배포에 추가 RustDesk 릴레이 서버를 추가하고 지리적 위치를 사용하여 가장 가까운 사용 가능한 hbbr 인스턴스를 통해 연결을 라우팅하십시오."
|
||||
keywords: ["rustdesk relay server", "rustdesk hbbr", "rustdesk geolocation relay", "rustdesk additional relay", "rustdesk server pro relay"]
|
||||
---
|
||||
|
||||
이 가이드를 사용하여 RustDesk Server Pro에 추가 릴레이 서버를 추가하고 지리적 위치 인식 라우팅을 통해 지역별 성능을 향상시키세요.
|
||||
|
||||
## 언제 추가 릴레이 서버가 필요합니까?
|
||||
|
||||
사용자가 서로 다른 지역 간에 연결되고 직접 홀 펀칭이 항상 가능하지 않을 때 추가 릴레이 서버가 필요합니다. 추가 `hbbr` 노드를 통해 RustDesk는 보다 가까운 지역을 통해 릴레이 트래픽을 라우팅할 수 있으며, 이는 릴레이가 필요한 경우 지연 시간을 줄이고 세션 품질을 개선할 수 있습니다.
|
||||
|
||||
## 릴레이 설정 체크리스트
|
||||
|
||||
1. 대상 지역에 추가 `hbbr` 릴레이 서버를 배포합니다.
|
||||
2. `id_ed25519` 및 `id_ed25519.pub` 키 쌍을 해당 릴레이 서버로 복사합니다.
|
||||
3. TCP 포트 `21117`와 `21119`를 열어줍니다.
|
||||
4. RustDesk Pro 웹 콘솔에 새로운 릴레이 호스트명 또는 IP 주소를 추가합니다.
|
||||
5. `hbbs`에 MaxMind GeoLite2 City 데이터베이스를 설치합니다.
|
||||
6. 지오 설정을 다시 로드하고, 새 릴레이가 로그에 나타나는지 확인합니다.
|
||||
|
||||
## Docker를 사용한 추가 릴레이 서버 설치 방법
|
||||
|
||||
{{% notice note %}}
|
||||
[The simple install](/docs/ko/self-host/rustdesk-server-pro/installscript/)는 동일한 머신에서 암묵적으로 릴레이 서버(`hbbr` 프로세스)를 생성하므로, 릴레이 서버를 명시적으로 지정할 필요가 없습니다.
|
||||
|
||||
다른 컴퓨터에 추가 릴레이 서버를 명시적으로 생성하려면 [OSS installation](/docs/ko/self-host/rustdesk-server-oss/install/)를 따라 `hbbr`를 실행하세요. `hbbr`는 `rustdesk-server-linux-amd64.tar.gz`, `rustdesk-server-hbbr_<version>-<arch>.deb`, `rustdesk-server-windows-x86_64.tar.gz` 또는 `docker`(`sudo docker run ... rustdesk/rustdesk-server-pro hbbr`)에서 찾을 수 있습니다.
|
||||
|
||||
`hbbr`는 라이선스가 필요하지 않으며 오픈소스 버전과 동일합니다.
|
||||
{{% /notice %}}
|
||||
|
||||
여러 개의 릴레이 서버를 전 세계에 걸쳐 실행하고 지리적 위치를 자동으로 활용해 가장 가까운 릴레이 서버를 사용할 수 있어 원격 컴퓨터에 연결할 때 더 빠른 경험을 제공합니다. `hbbs`는 이러한 릴레이 서버들이 몇 초마다 온라인 상태인지 자동으로 확인하며, 온라인 상태인 릴레이 서버만 선택합니다.
|
||||
|
||||
{{% notice note %}}
|
||||
알려진 문제: https://github.com/rustdesk/rustdesk/discussions/7934
|
||||
{{% /notice %}}
|
||||
|
||||
> 개인 키 쌍 `id_ed25519`와 `id_ed25519.pub`가 필요합니다.
|
||||
|
||||
1 - 이미 Docker가 설치되어 있다면 SSH를 통해 서버에 연결하고 hbbr용 볼륨을 생성하세요.
|
||||
|
||||
```
|
||||
# docker volume create hbbr
|
||||
```
|
||||
|
||||
볼륨 hbbr는 `/var/lib/docker/volumes/hbbr/_data`에 위치해야 합니다.
|
||||
|
||||
2 - 개인 키 쌍을 볼륨 위치로 복사합니다. 이 경우 SCP를 사용해 파일을 복사하겠습니다.
|
||||
|
||||
명령어 구문은 `scp <path/filename> username@server:</destination/path>`입니다.
|
||||
|
||||
```
|
||||
# scp id_ed25519 root@100.100.100.100:/var/lib/docker/volumes/hbbr/_data
|
||||
# scp id_ed25519.pub root@100.100.100.100:/var/lib/docker/volumes/hbbr/_data
|
||||
```
|
||||
|
||||
3 - 이전에 생성한 볼륨을 사용하여 hbbr 컨테이너를 배포하십시오. 이 볼륨에는 개인 릴레이 서버를 실행하는 데 필요한 개인 키 쌍이 있습니다.
|
||||
|
||||
```
|
||||
# sudo docker run --name hbbr -v hbbr:/root -td --net=host rustdesk/rustdesk-server hbbr -k _
|
||||
```
|
||||
|
||||
4 - 실행 로그를 확인하여 키 쌍을 사용해 hbbr가 실행 중인지 확인하십시오.
|
||||
|
||||
```
|
||||
# docker logs hbbr
|
||||
|
||||
INFO [src/common.rs:121] **Private key comes from id_ed25519**
|
||||
NFO [src/relay_server.rs:581] Key: XXXXXXXXXXXXXXXXXXXXX
|
||||
INFO [src/relay_server.rs:60] #blacklist(blacklist.txt): 0
|
||||
INFO [src/relay_server.rs:75] #blocklist(blocklist.txt): 0
|
||||
INFO [src/relay_server.rs:81] Listening on tcp :21117
|
||||
```
|
||||
|
||||
운영체제에 따라 방화벽을 사용해 IP를 차단하거나 허용하고 싶을 수 있습니다.
|
||||
|
||||
우리의 경우 Ubuntu를 실행하며 21117과 21119 포트로의 모든 TCP 연결을 허용하고자 합니다.
|
||||
|
||||
```
|
||||
# sudo ufw allow proto tcp from any to any port 21117,21119
|
||||
```
|
||||
|
||||
**방화벽 활성화**
|
||||
|
||||
```
|
||||
# sudo ufw enable
|
||||
```
|
||||
|
||||
**상태 확인**
|
||||
|
||||
```
|
||||
# ufw status
|
||||
|
||||
Status: active
|
||||
|
||||
To Action From
|
||||
-- ------ ----
|
||||
21117,21119/tcp ALLOW Anywhere
|
||||
21117,21119/tcp (v6) ALLOW Anywhere (v6)
|
||||
```
|
||||
|
||||
## 웹 콘솔에서 지리적 위치를 구성하는 방법
|
||||
|
||||
### GeoLite2 City 데이터베이스 파일 등록 및 다운로드
|
||||
|
||||
지리적 위치 기능을 사용하려면 hbbs가 MaxMind GeoLite2 City 데이터베이스에 접근해야 합니다. 이 데이터베이스는 무료이며, 회원가입 후 파일을 다운로드하고 API 키를 받을 수 있습니다.
|
||||
|
||||
먼저 [website](https://www.maxmind.com/en/account/login)로 이동하여 계정을 생성하세요(아직 계정이 없다면). `Download Databases`로 이동해 GeoLite2 City를 다운로드한 다음, gzip 파일을 선택하면 압축을 풀 때 `mmdb` 파일을 얻게 됩니다.
|
||||
|
||||
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/e14318fb-ec52-463c-af77-d08c9479c1b5">
|
||||
|
||||
Linux 머신에서 설치 스크립트를 사용해 RustDesk Pro를 설치한 경우, `mmdb` 파일을 `/var/lib/rustdesk-server/`로 이동해야 합니다.
|
||||
|
||||
Docker 설치의 경우, 해당 파일은 컨테이너를 배포할 때 매핑한 볼륨에 있어야 하며, 이는 `/root`에 매핑됩니다.
|
||||
|
||||
### 프로세스를 자동화하려면 API 키 얻기 - Linux 서버
|
||||
|
||||
이 파일을 정기적으로 업데이트해야 하며, cronjob을 사용해 이를 수행할 수 있습니다. 무료인 다운로드 링크에 접근하려면 API 키가 필요합니다.
|
||||
|
||||
`Manage License Keys`로 이동해 새 라이선스 키를 생성하세요.<br>
|
||||
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/632aeb33-4f5d-4a31-9010-38e01c22d3c9">
|
||||
<br>
|
||||
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/3e178174-5fbf-46b7-a335-01f77125dfad">
|
||||
|
||||
몇 가지 방법으로 [download process](https://dev.maxmind.com/geoip/updating-databases)를 자동화할 수 있지만, 이전 단계에서 얻은 API 키로 {Your Access Key}를 교체하여 다음 명령을 크론탭에 추가하세요.
|
||||
|
||||
```
|
||||
/usr/bin/curl -L --silent 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key={Your Access Key}&suffix=tar.gz' | /bin/tar -C '/var/lib/rustdesk-server/' -xvz --keep-newer-files --strip-components=1 --wildcards '*GeoLite2-City.mmdb'
|
||||
```
|
||||
|
||||
### RustDesk Pro 웹 콘솔에서 설정 변경
|
||||
|
||||
`Relay Servers`에 릴레이 서버의 IP 주소 또는 DNS 이름을 추가하세요. (DNS는 버전 1.1.11부터 지원됩니다.) **포트는 필요하지 않으며, `21117` 포트가 명시적으로 사용됩니다.** <br>
|
||||
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/c4452ba4-5e1d-437a-ae1d-fc0070bfa26c">
|
||||
|
||||
Geo 오버라이드를 추가하되, 서버 IP 주소와 서버가 위치한 좌표를 함께 추가하세요. <br>
|
||||
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/41c558e3-423b-4296-90d3-cb0769f4a369">
|
||||
|
||||
`Reload Geo`를 클릭하면 목록이 이와 비슷하게 보일 것입니다. <br>
|
||||
<img width="500" alt="image" src="https://github.com/rustdesk/doc.rustdesk.com/assets/642149/5a0d39a9-4fec-46b4-a7a2-7ed38b6baeb7">
|
||||
|
||||
결과를 확인하려면 `Reload Geo`를 클릭할 때 hbbs 로그를 확인하세요. 릴레이 서버의 IP 주소와 그 좌표가 표시된 메시지를 볼 수 있어야 합니다.
|
||||
|
||||
> Linux 머신에서 RustDesk Pro를 실행 중인 경우 `RUST_LOG=debug ./hbbs` 명령어를 사용해 로그를 확인하십시오. Docker 컨테이너에서 실행 중인 경우 `docker logs hbbs`를 사용하십시오.
|
||||
|
||||
```
|
||||
RUST_LOG=debug ./hbbs
|
||||
|
||||
INFO [src/common.rs:130] GEOIP_FILE: ./GeoLite2-City.mmdb
|
||||
INFO [src/common.rs:159] override 1xx.xxx.xxx.x7: -1.xx 5x.xxx
|
||||
[src/common.rs:159] override 1xx.xxx.xxx.xx8: -3.xxx 5x.xxxx
|
||||
[src/common.rs:159] override 7xx.xxx.xxxx.xx1: 6.xxx 5x.xxxx
|
||||
GEOIP_FILE loaded, #overrides 3
|
||||
INFO [src/common.rs:119] relay-servers=["1xx.xxx.xxx.x7", "1xx.xxx.xxx.xx8", "7xx.xxx.xxx.xx1"]
|
||||
NFO [src/rendezvous_server.rs:1467] parsed relay servers: [("1xx.xxxx.xxx.xx7", Some((-1x, xxx))), ("1xx.xxx.xxx.xx8", Some((-3x, xxx))), ("7xx.xxx.xxx.xx1", Some((6x, xxx)))]
|
||||
```
|
||||
|
||||
또한, hbbr 인스턴스에서 릴레이 요청을 직접 확인할 수 있으며, 컨테이너 로그를 확인하기만 하면 됩니다.
|
||||
|
||||
```
|
||||
# docker logs hbbr
|
||||
|
||||
INFO [src/relay_server.rs:436] Relayrequest 0593e64e-4fe8-4a59-a94f-b3420ab043eb from [::ffff:100.100.123.233]:52038 got paired
|
||||
INFO [src/relay_server.rs:442] Both are raw
|
||||
```
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: SMTP
|
||||
weight: 16
|
||||
description: "RustDesk Server Pro에서 SMTP를 구성하여 자체 호스팅 서버에서 초대장, 로그인 인증 이메일 및 연결 알람을 보내세요."
|
||||
keywords: ["rustdesk smtp", "rustdesk email notifications", "rustdesk login verification email", "rustdesk invitation email", "rustdesk server pro smtp"]
|
||||
---
|
||||
|
||||
이 안내서를 사용하여 SMTP를 통해 RustDesk Server Pro의 발신 이메일을 구성하십시오.
|
||||
|
||||
SMTP 설정은 사용자 초대, 로그인 인증, 연결 알람과 같은 이메일 알림을 서버에서 보내도록 합니다.
|
||||
|
||||
## RustDesk Server Pro에서 SMTP는 어떤 용도로 사용되나요?
|
||||
|
||||
SMTP는 RustDesk Server Pro 배포에서 발신 이메일에 사용됩니다. 실제로 이는 일반적으로 초대 이메일, 로그인 인증 코드 및 연결 알람 알림을 의미합니다.
|
||||
|
||||
## SMTP 설정 체크리스트
|
||||
|
||||
1. 호스팅 환경에서 발신 메일을 허용하는 SMTP 서버를 선택하세요.
|
||||
2. 호스트, 포트, 사용자 이름, 비밀번호 및 보낸 사람 주소를 수집하세요.
|
||||
3. 이러한 설정을 RustDesk Server Pro 웹 콘솔에 추가하세요.
|
||||
4. 사용자에게 이메일 기반 흐름을 활성화하기 전에 콘솔에서 테스트를 실행하세요.
|
||||
|
||||
## 이메일이 작동하지 않는 경우 가장 먼저 확인해야 할 사항은 무엇인가요?
|
||||
|
||||
- VPS 제공업체가 `25`, `465` 또는 `587`와 같은 포트를 차단하고 있는지 여부
|
||||
- 메일 제공업체가 앱 비밀번호 또는 릴레이 전용 자격 증명을 요구하는지 여부
|
||||
- `From` 주소가 메일 제공업체에서 허용되는지 여부
|
||||
- TLS와 선택된 SMTP 포트가 메일 제공업체의 요구사항과 일치하는지 여부
|
||||
|
||||
Microsoft 365 OAuth2 설정에 대해서는 [Microsoft 365](microsoft-365/)를 참조하십시오.
|
||||
|
||||
[Video Tutorial](https://youtu.be/0LyQY1JS4Uc)
|
||||
@@ -0,0 +1,224 @@
|
||||
---
|
||||
title: Microsoft 365
|
||||
weight: 16
|
||||
description: "RustDesk 서버 Pro에서 SMTP OAuth2(Microsoft 365)를 구성하여 Exchange Online을 통해 이메일을 보내기 바랍니다."
|
||||
keywords: ["rustdesk smtp oauth2", "rustdesk smtp microsoft 365", "rustdesk smtp m365", "rustdesk smtp oauth2 microsoft 365", "rustdesk smtp oauth2 m365", "rustdesk server pro smtp oauth2", "rustdesk server pro microsoft 365", "rustdesk server pro m365", "rustdesk server pro smtp oauth2 microsoft 365", "rustdesk server pro smtp oauth2 m365"]
|
||||
---
|
||||
|
||||
이 가이드를 사용하여 RustDesk Server Pro가 OAuth2를 통해 Microsoft 365 Exchange Online를 통해 이메일을 보내도록 구성하십시오.
|
||||
|
||||
이 설정은 초대 이메일, 로그인 인증 이메일 및 연결 알람 알림에 적합합니다.
|
||||
|
||||
일반 SMTP 설정에 대해서는 [SMTP](../)를 참조하십시오.
|
||||
|
||||
## 어떤 값들이 RustDesk Pro에 들어가나요?
|
||||
|
||||
| RustDesk Pro 필드 | 입력할 내용 |
|
||||
| --- | --- |
|
||||
| 보낸 사람 | 발신 메일에 표시되는 발신자 주소입니다. |
|
||||
| 메일 계정 | RustDesk가 XOAUTH2 SMTP 사용자 이름으로 사용하는 사서함 주소입니다. |
|
||||
| OAuth2 테넌트 ID | 앱 개요에서 `Directory (tenant) ID` |
|
||||
| OAuth2 클라이언트 ID | 앱 개요에서 `Application (client) ID` |
|
||||
| OAuth2 클라이언트 비밀번호 | `Certificates & secrets` 아래에서 생성된 비밀번호 `Value` |
|
||||
|
||||
이 스크린샷은 이러한 값들이 RustDesk에서 어디에 입력되는지 보여줍니다:
|
||||

|
||||
|
||||
## 구성
|
||||
|
||||
이 구성 작업을 시작하기 전에 다음 사항을 확인하세요:
|
||||
|
||||
- RustDesk Server Pro `1.8.1` 이상
|
||||
- 기존의 Microsoft 365 사서함 또는 메일을 보내기 위해 생성할 계획인 사서함, 예를 들어 `no-reply@contoso.com`
|
||||
- Microsoft Entra에서 관리자 동의를 부여하고 Exchange Online 서비스 원칙을 관리할 수 있는 Microsoft 365 관리자 계정
|
||||
|
||||
이 구성에는 세 가지 부분이 있습니다:
|
||||
|
||||
- Azure에서 앱 등록, 클라이언트 시크릿, API 권한 및 관리자 동의를 구성하기
|
||||
- PowerShell에서 Exchange Online 서비스 원칙, 사서함 및 권한을 구성하기
|
||||
- RustDesk에서 SMTP OAuth2를 구성하고 테스트 이메일을 보내기
|
||||
|
||||
### 1. Azure에서 구성하기
|
||||
|
||||
1. [Azure portal](https://portal.azure.com)에 로그인하세요.
|
||||
1. **앱 등록**을 검색하고 선택하세요.
|
||||
1. 왼쪽 메뉴에서 [**App registrations**](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps)를 선택한 다음, **새로운 등록**을 클릭하세요.
|
||||

|
||||
1. 앱 등록을 생성하세요.
|
||||

|
||||

|
||||
1. `Directory (tenant) ID`와 `Application (client) ID`를 기록해 두세요. 나중에 RustDesk에서 이 값을 입력하게 됩니다.
|
||||

|
||||
1. **인증서 및 비밀번호**를 열고 새 클라이언트 비밀번호를 생성하세요.
|
||||

|
||||
1. 클라이언트 비밀번호 `Value`를 즉시 복사하세요. Microsoft는 이 값을 한 번만 표시합니다.
|
||||

|
||||
1. **API 권한**을 열고 Microsoft 365 Exchange Online SMTP 애플리케이션 권한을 추가하세요.
|
||||
1. **권한 추가**를 선택하세요.
|
||||
1. **내 조직에서 사용하는 API**를 선택하고 **Office 365 Exchange Online**을 검색하세요.
|
||||
1. **애플리케이션 권한**을 선택하세요.
|
||||
1. **SMTP.SendAsApp**을 선택하고 변경 사항을 저장하세요.
|
||||

|
||||

|
||||

|
||||
1. 방금 추가한 권한에 대해 관리자 동의를 부여하세요.
|
||||

|
||||

|
||||
### 2. PowerShell에서 구성하기
|
||||
|
||||
이 부분에서는 Exchange Online에 연결하고, 서비스 주체를 생성하며, 사서함을 준비하고, 권한을 부여합니다.
|
||||
|
||||
1. 로컬 관리자로 PowerShell을 엽니다.
|
||||

|
||||
1. Exchange Online 모듈을 설치하고 테넌트 관리자 계정으로 연결하세요.
|
||||
|
||||
```powershell
|
||||
Install-Module -Name ExchangeOnlineManagement
|
||||
Import-Module ExchangeOnlineManagement
|
||||
Connect-ExchangeOnline
|
||||
```
|
||||
|
||||
관리자 계정을 명시적으로 지정하려면 다음을 사용할 수도 있습니다:
|
||||
|
||||
```powershell
|
||||
Connect-ExchangeOnline -UserPrincipalName admin@contoso.com
|
||||
```
|
||||
|
||||
1. Microsoft Entra **기업용 애플리케이션**에서 앱을 찾아 해당 `Object ID`를 기록해 두세요. Exchange Online 서비스 원칙을 생성할 때 필요합니다.
|
||||
|
||||
{{% notice note %}}
|
||||
여기서 `OBJECT_ID`는 **기업용 애플리케이션**에 있는 앱의 객체 ID여야 하며, **앱 등록** 개요 페이지에 표시된 객체 ID가 아닙니다.
|
||||
{{% /notice %}}
|
||||
|
||||

|
||||
|
||||
1. 이 명령을 실행하여 앱 등록에 대한 Exchange Online 서비스 원칙을 생성하세요. Microsoft는 이 단계를 Exchange Online에서 Microsoft Entra 애플리케이션의 서비스 원칙을 등록하는 과정이라고 설명합니다.
|
||||
|
||||
```powershell
|
||||
New-ServicePrincipal -AppId <APPLICATION_ID> -ObjectId <OBJECT_ID>
|
||||
```
|
||||
|
||||
이 명령어가 Exchange 연결은 성공했음에도 불구하고 실패하는 경우, 관리자 계정에 Exchange Online 서비스 원칙을 관리할 수 있는 권한이 있는지 확인하십시오.
|
||||

|
||||
|
||||
1. Exchange가 서비스 원칙을 생성했는지 확인하고 다음 단계를 위해 해당 `Identity` 값을 기록해 두십시오.
|
||||
|
||||
```powershell
|
||||
Get-ServicePrincipal | Format-Table DisplayName,AppId,ObjectId,Identity
|
||||
```
|
||||
|
||||
여기서 반환된 `Identity` 값을 다음 두 권한 명령에서 `<SERVICE_PRINCIPAL_ID>`로 사용하십시오.
|
||||
|
||||
1. 보낼 메일함이 아직 존재하지 않는 경우, 먼저 공유 메일함을 생성할 수 있습니다. 예를 들어:
|
||||
|
||||
```powershell
|
||||
New-Mailbox -Shared -Name "No Reply" -Alias no-reply -DisplayName "No Reply" -PrimarySmtpAddress no-reply@contoso.com
|
||||
```
|
||||
|
||||
이미 메일을 보내는 사서함이 있는 경우 이 단계를 건너뛸 수 있습니다.
|
||||

|
||||
|
||||
1. 테넌트와 발송 사서함에 대해 `Authenticated SMTP`가 활성화되었는지 확인하십시오.
|
||||
|
||||
```powershell
|
||||
Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled
|
||||
Get-CASMailbox -Identity "no-reply@contoso.com" | Format-List SmtpClientAuthenticationDisabled
|
||||
```
|
||||
|
||||
|
||||
활성화되지 않은 경우, 테스트 이메일이 이 오류와 함께 실패할 수 있습니다:
|
||||
|
||||
```text
|
||||
permanent error (535): 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant. Visit https://aka.ms/smtp_auth_disabled for more information.
|
||||
```
|
||||
|
||||
사서함 수준 설정을 위해 필요할 경우 다음을 실행하십시오:
|
||||
|
||||
```powershell
|
||||
Set-CASMailbox -Identity "no-reply@contoso.com" -SmtpClientAuthenticationDisabled $false
|
||||
```
|
||||
|
||||
세입자 수준 설정이 `True`를 반환하는 경우, 귀하의 조직 정책에 따라 실행 여부를 결정하십시오:
|
||||
|
||||
```powershell
|
||||
Set-TransportConfig -SmtpClientAuthenticationDisabled $false
|
||||
```
|
||||
|
||||
|
||||
위의 두 설정이 모두 올바르게 보이지만 동일한 `535 5.7.139` 오류가 계속 발생하는 경우, 테넌트가 Microsoft Entra `Security defaults`를 사용하는지 확인하십시오. Microsoft Learn에 따르면 `Security defaults`가 활성화된 경우 Exchange Online에서 SMTP AUTH가 비활성화됩니다.
|
||||
|
||||
명령어 세부 정보는 Microsoft Learn: [Enable or disable authenticated client SMTP submission (SMTP AUTH) in Exchange Online](https://learn.microsoft.com/en-us/Exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission)를 참조하십시오.
|
||||
|
||||
1. RustDesk가 메일을 보내는 데 사용할 메일함에 Exchange 서비스 주체 `FullAccess`를 부여합니다.
|
||||
|
||||
```powershell
|
||||
Add-MailboxPermission -Identity "no-reply@contoso.com" -User <SERVICE_PRINCIPAL_ID> -AccessRights FullAccess
|
||||
```
|
||||
|
||||
RustDesk `Mail Account`에 입력하려는 사서함을 사용하세요.
|
||||
|
||||
이 명령어가 다음과 같은 오류를 반환한다면:
|
||||
|
||||
```text
|
||||
Write-ErrorMessage : ||The operation couldn't be performed because object 'no-reply@xxx.com' couldn't be found on 'xxx.xxx.PROD.OUTLOOK.COM'.
|
||||
```
|
||||
|
||||
`-Identity`에 전달된 값이 Exchange Online의 실제 사서함 객체로 해결되지 않았습니다.
|
||||
|
||||
먼저 사서함이 실제로 Exchange Online에 존재하는지 확인하십시오:
|
||||
|
||||
```powershell
|
||||
Get-EXOMailbox -Identity "no-reply@xxx.com" | Format-List DisplayName,PrimarySmtpAddress,RecipientTypeDetails
|
||||
```
|
||||
|
||||
사서함이 반환되지 않으면 먼저 사서함을 생성하거나 확인하십시오. `no-reply` 발신자 주소의 경우, 예를 들어 공유 사서함을 생성할 수 있습니다:
|
||||
|
||||
```powershell
|
||||
New-Mailbox -Shared -Name "No Reply" -Alias no-reply -DisplayName "No Reply" -PrimarySmtpAddress no-reply@xxx.com
|
||||
```
|
||||
|
||||
사서함이 이미 존재하는 경우, `Add-MailboxPermission -Identity ...`에서 사용하는 값이 사서함의 실제 주소, 별명 또는 다른 해결 가능한 사서함 식별자인지 확인하십시오.
|
||||

|
||||
|
||||
1. 동일한 서비스 원칙에 SendAs 권한을 부여하십시오.
|
||||
|
||||
```powershell
|
||||
Add-RecipientPermission -Identity "no-reply@contoso.com" -Trustee <SERVICE_PRINCIPAL_ID> -AccessRights SendAs -Confirm:$false
|
||||
```
|
||||
|
||||
이 단계는 Microsoft의 공식 앱 전용 SMTP 구성의 일부이기도 합니다.
|
||||
|
||||
### 3. RustDesk에서 구성
|
||||
|
||||
이 시점에서 이미 다음을 보유하고 있어야 합니다:
|
||||
|
||||
- `From`에서 사용할 발신자 주소
|
||||
- `Mail Account`에서 사용할 사서함 주소
|
||||
- `Directory (tenant) ID`
|
||||
- `Application (client) ID`
|
||||
- 클라이언트 시크릿 `Value`
|
||||
- 이미 확인된 Exchange Online 서비스 원칙으로, `Mail Account`에 사용된 사서함에 `FullAccess`와 `SendAs`가 이미 설정되어 있습니다
|
||||
|
||||
RustDesk는 Exchange 서비스 주체 `Identity`를 요청하지 않지만, 이메일을 테스트하기 전에 위의 권한 단계가 이미 완료되어야 합니다.
|
||||
|
||||
1. RustDesk [web console](../../console/)에서 **설정** -> **SMTP**로 이동하세요.
|
||||
1. OAuth2를 활성화하고 제공자로 **Microsoft 365**를 선택하세요.
|
||||
1. 다음 필드를 입력하세요:
|
||||
|
||||
- `From`
|
||||
- `Mail Account`
|
||||
- `OAuth2 Tenant ID`
|
||||
- `OAuth2 Client ID`
|
||||
- `OAuth2 Client secret`
|
||||
|
||||
1. **확인**을 클릭하여 구성 내용을 저장하고 테스트 이메일을 보내기 바랍니다.
|
||||

|
||||

|
||||
|
||||
테스트 이메일이 여전히 실패하는 경우, PowerShell 섹션으로 돌아가서 Exchange Online 서비스 주체, `Authenticated SMTP` 및 `Mail Account`에 사용된 사서함의 사서함 권한을 다시 확인하십시오.
|
||||
|
||||
## 참고 자료
|
||||
|
||||
- Microsoft Learn: [Authenticate an IMAP, POP or SMTP connection using OAuth](https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth). Exchange Online 앱 권한 및 서비스 주체 단계에 사용됩니다.
|
||||
- Microsoft Learn: [Enable or disable authenticated client SMTP submission (SMTP AUTH) in Exchange Online](https://learn.microsoft.com/en-us/Exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission). `Authenticated SMTP` 확인 및 활성화에 사용됩니다.
|
||||
- Microsoft Learn: [Create shared mailboxes in the Exchange admin center](https://learn.microsoft.com/en-us/exchange/collaboration/shared-mailboxes/create-shared-mailboxes). 공유 사서함을 생성하는 데 사용됩니다.
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
title: 전략(Strategy)
|
||||
weight: 200
|
||||
description: "RustDesk 서버 프로에서 전략을 사용하여 클라이언트 보안 및 설정 정책을 장치, 사용자 및 장치 그룹 전체에 일괄 적용하십시오."
|
||||
keywords: ["rustdesk strategy", "rustdesk policy management", "rustdesk bulk settings", "rustdesk device strategy", "rustdesk server pro strategy"]
|
||||
---
|
||||
|
||||
전략을 사용하여 여러 RustDesk 장치에 대해 클라이언트 정책 및 보안 설정 변경 사항을 한 번에 배포하십시오.
|
||||
|
||||
전략은 RustDesk 관리자가 클라이언트 설정 페이지의 보안 옵션을 일괄적으로 업데이트할 수 있는 도구입니다. 관리자는 서로 다른 전략을 생성하고 이를 다양한 장치에 적용할 수 있습니다.
|
||||
|
||||
## RustDesk Server Pro에서 전략이란 무엇인가요?
|
||||
|
||||
전략은 RustDesk Server Pro에서 클라이언트 설정에 대한 일괄 정책 레이어입니다. 모든 클라이언트를 수동으로 변경하지 않고도 많은 장치나 사용자 간에 보안 또는 동작 설정을 표준화하려는 경우에 사용하십시오.
|
||||
|
||||
## 전략에 대한 간단한 답변
|
||||
|
||||
- 전략은 클라이언트 구성의 일괄 관리를 위한 것입니다.
|
||||
- 한 장치는 동시에 하나의 유효한 전략만 적용받을 수 있습니다.
|
||||
- 장치 전략이 가장 높은 우선순위를 가집니다.
|
||||
- 사용자 전략은 장치 그룹 전략을 덮어씁니다.
|
||||
- 전략이 비활성화되면, 해당 전략에 할당된 장치는 더 이상 해당 전략에 의해 관리되지 않습니다.
|
||||
|
||||
## 어떤 전략 할당이 우선순위를 갖나요?
|
||||
|
||||
| 전략 유형 | 우선순위 |
|
||||
| --- | --- |
|
||||
| 장치 전략 | 최고 |
|
||||
| 사용자 전략 | 중간 |
|
||||
| 장치 그룹 전략 | 가장 낮음 |
|
||||
|
||||
## 전략 생성
|
||||
|
||||
`+` 버튼을 클릭하여 새 전략을 생성할 수 있으며, 전략 위에 마우스를 올리고 메뉴를 클릭하여 다양한 작업을 수행할 수 있습니다.
|
||||
|
||||
팝업 메뉴에서 전략을 `Enable`, `Disable`, `Rename`, `Duplicate` 또는 `Delete`로 선택할 수 있습니다. 또한 `Edit Devices`를 클릭하여 해당 전략에 적용된 장치를 수정하거나 `Edit Users`를 클릭하여 해당 전략에 적용된 사용자를 수정할 수 있습니다.
|
||||
|
||||
전략 메뉴의 오른쪽에는 전략의 우선순위를 고려해 실제로 전략에 적용된 디바이스 수가 표시됩니다.
|
||||
|
||||

|
||||
|
||||
## 디바이스 전략, 사용자 전략 및 디바이스 그룹 전략
|
||||
|
||||
전략은 다음의 우선순위 순서에 따라 적용됩니다:
|
||||
1. 디바이스 전략 (최고 우선순위)
|
||||
2. 사용자 전략
|
||||
3. 디바이스 그룹 전략 (최저 우선순위)
|
||||
|
||||
각 디바이스는 한 번에 하나의 전략만 관리할 수 있습니다. 우선순위 시스템은 다음과 같이 작동합니다:
|
||||
- 디바이스 전략은 사용자 전략과 디바이스 그룹 전략 모두보다 우선합니다.
|
||||
- 사용자 전략은 디바이스 그룹 전략보다 우선합니다.
|
||||
- 디바이스 그룹 전략은 디바이스 그룹 내에서 디바이스 전략이나 사용자 전략이 지정되지 않은 모든 디바이스에 적용됩니다.
|
||||
|
||||
## 디바이스 편집
|
||||
|
||||
`Edit Devices` 메뉴를 클릭하면 모든 디바이스가 표시되는 편집 대화상자가 열립니다. 체크박스의 선택 상태를 변경한 후 `Save` 버튼을 클릭하여 현재 페이지에서 이루어진 디바이스 변경 사항을 적용할 수 있습니다. 다른 페이지의 디바이스를 수정해야 하는 경우 해당 페이지로 이동해 주세요. 또한 오른쪽 상단의 드롭다운 메뉴를 사용해 디바이스를 필터링할 수도 있습니다.
|
||||
|
||||
전략 열 형식: 디바이스 전략/사용자 전략/디바이스 그룹 전략, 또는 기본 전략인 경우 '-'입니다.
|
||||
|
||||
다음은 "demo1" 메뉴에서 `Edit Devices`를 클릭하면 나타나는 대화상자의 예시입니다. 이 예시에서는 장치 "1981241962"가 "demo3" 전략에 적용되고, 장치 "1279471875"가 "demo2" 전략에 적용되며, 장치 "a123456"가 "demo1" 전략에 적용되고, 장치 "1227624460"가 기본 전략에 적용됩니다.
|
||||
|
||||

|
||||
|
||||
## 사용자 편집
|
||||
|
||||
`Edit Users` 메뉴를 클릭하면 모든 사용자를 표시하는 편집 대화상자가 열립니다. 체크박스의 선택 상태를 변경한 후 `Save` 버튼을 클릭하여 현재 페이지에서 이루어진 사용자 변경 사항을 적용할 수 있습니다. 다른 페이지의 사용자를 수정해야 하는 경우 해당 페이지로 이동해 주세요. 또한 오른쪽 상단의 드롭다운 메뉴를 사용해 사용자를 필터링할 수도 있습니다.
|
||||
|
||||
다음은 "demo2" 메뉴에서 `Edit Users`를 클릭했을 때 나타나는 대화 상자의 예시입니다. 이 예시에서는 사용자 "admin"이 "기본" 전략에 적용되고, 사용자 "user1"이 "demo2" 전략에 적용되며, 사용자 "user2"가 "demo3" 전략에 적용됩니다.
|
||||
|
||||

|
||||
|
||||
## 장치 그룹 편집
|
||||
|
||||
`Edit Device Group` 메뉴를 클릭하면 모든 장치 그룹이 표시되는 편집 대화 상자가 열립니다. 체크박스의 선택 상태를 변경한 다음, `Save` 버튼을 클릭하여 현재 페이지에서 수행한 장치 그룹 변경 사항을 적용할 수 있습니다. 다른 페이지의 장치 그룹을 수정해야 하는 경우 해당 페이지로 이동해 주세요. 또한 오른쪽 상단의 드롭다운 메뉴를 사용해 장치 그룹을 필터링할 수도 있습니다.
|
||||
|
||||
다음은 "demo1" 메뉴에서 `Edit Device Group`를 클릭할 때 나타나는 대화 상자의 예시입니다. 이 예시에서는 장치 그룹 "device_group1"이 "demo1" 전략에 적용되고, 장치 그룹 "group2"가 "demo2" 전략에 적용되며, 장치 그룹 "group3"이 "기본" 전략에 적용됩니다.
|
||||
|
||||

|
||||
|
||||
## 전략 동기화
|
||||
|
||||
각 장치는 하나의 전략으로만 관리될 수 있으며, 해당 전략이 비활성화되면 장치는 어떤 전략으로도 관리되지 않습니다. 전략을 동기화할 때 RustDesk는 로컬 및 서버 전략의 타임스탬프를 기록하여 동기화가 필요한지 여부를 판단합니다. 즉, 전략 동기화가 완료된 후:
|
||||
|
||||
* 사용자가 일부 옵션을 변경하면 클라이언트는 사용자의 옵션을 사용합니다.
|
||||
* 관리자가 전략 내용을 변경하면 클라이언트의 옵션이 동기화됩니다.
|
||||
* 관리자가 장치가 속한 전략을 변경하면 클라이언트의 옵션이 동기화됩니다.
|
||||
|
||||
## 전략 편집
|
||||
|
||||
전략 하단에서 `Edit`를 클릭하고 수정한 후 `Submit`를 클릭하세요. 전략은 30초 이내에 장치들에 동기화됩니다.
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: 비디오 자습서
|
||||
description: "OSS 및 Pro 배포, 설치 안내서, 보안 개요에 대한 RustDesk 동영상 자습서를 시청하세요."
|
||||
keywords: ["rustdesk videos", "rustdesk tutorial", "rustdesk installation video", "rustdesk self-hosting video", "rustdesk security video"]
|
||||
weight: 50
|
||||
---
|
||||
|
||||
RustDesk OSS, RustDesk Server Pro, 설치 및 보안 주제에 대한 시각적 안내를 위해 이 동영상 자습서를 사용하세요.
|
||||
|
||||
## 어느 동영상을 먼저 봐야 할까요?
|
||||
|
||||
RustDesk를 평가하거나 기본적인 자체 호스팅 배포를 설정하는 경우 OSS 설치 또는 사용자 가이드 동영상부터 시작하세요. 지속적인 제품 및 RustDesk Server Pro 안내가 필요하다면 RustDesk YouTube 채널을 이용하세요.
|
||||
|
||||
## OSS
|
||||
[NetworkChuck: 당신의 원격 데스크톱은 엉망이에요!! 대신 이것을 사용해보세요 (무료 + 오픈소스)](https://www.youtube.com/watch?v=EXL8mMUXs88)
|
||||
|
||||
[Installation and User Guide](https://www.youtube.com/watch?v=9nzHm3xGz2I)
|
||||
|
||||
[RustDesk Security](https://www.youtube.com/watch?v=EeFqj23jxMk)
|
||||
|
||||
## Pro
|
||||
[Youtube channel](https://youtube.com/@rustdesk)
|
||||
@@ -221,6 +221,15 @@ languages:
|
||||
description: "RustDeskの完全なドキュメント - オープンソースのリモートデスクトップソフトウェア。セルフホスティング、クライアント設定、インフラストラクチャでのRustDeskの展開方法を学びます。"
|
||||
keywords: ["rustdesk", "リモートデスクトップ", "オープンソース", "セルフホスティング", "ドキュメント", "リモートアクセス", "VNC代替", "teamviewer代替"]
|
||||
|
||||
ko:
|
||||
title: "RustDesk 문서"
|
||||
weight: 2
|
||||
languageName: "한국어"
|
||||
params:
|
||||
landingPageName: "🏠 홈"
|
||||
description: "RustDesk 완전 문서 - 오픈 소스 원격 데스크톱 소프트웨어. 셀프호스팅, 클라이언트 구성, 인프라 전반에 RustDesk를 배포하는 방법을 알아보세요."
|
||||
keywords: ["rustdesk", "원격 데스크톱", "오픈 소스", "셀프호스팅", "문서", "원격 액세스", "VNC 대안", "teamviewer 대안"]
|
||||
|
||||
zh-cn:
|
||||
title: "RustDesk文档"
|
||||
weight: 3
|
||||
|
||||
Reference in New Issue
Block a user