diff --git a/content/_index.ko.md b/content/_index.ko.md
new file mode 100644
index 00000000..ff4c6fa8
--- /dev/null
+++ b/content/_index.ko.md
@@ -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" %}}
\ No newline at end of file
diff --git a/content/client/_index.ko.md b/content/client/_index.ko.md
new file mode 100644
index 00000000..28ba68c3
--- /dev/null
+++ b/content/client/_index.ko.md
@@ -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: "1. "
+---
+
+## 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-.deb
+```
+
+#### 레드햇 파생 상품
+
+```sh
+sudo yum localinstall ./rustdesk-.rpm
+```
+
+#### Arch Linux/Manjaro
+
+```sh
+sudo pacman -U ./rustdesk-.pkg.tar.zst
+```
+
+#### openSUSE (≥ Leap 15.0)
+
+```sh
+sudo zypper install --allow-unsigned-rpm ./rustdesk--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" %}}
\ No newline at end of file
diff --git a/content/client/android/_index.ko.md b/content/client/android/_index.ko.md
new file mode 100644
index 00000000..0862924b
--- /dev/null
+++ b/content/client/android/_index.ko.md
@@ -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`를 선택하세요.
+
+| 홈 | 성공적으로 연결됨 |
+| --- | --- |
+|  |  |
+
+- 초기 디렉터리는 기기의 홈 디렉터리이며, 를 클릭하여 빠르게 홈으로 돌아갈 수 있습니다.
+- 제목 표시줄 아래에는 디렉터리 레벨이 표시되며, 해당 폴더를 클릭하면 빠르게 이동할 수 있습니다.
+- 를 클릭하여 상위 디렉터리에 접근할 수 있습니다.
+- 현재 절대 경로와 프로젝트 통계는 목록 하단에 표시됩니다.
+- 제목 표시줄에서 `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
+
+
+
+#### 모바일 터미널
+
+| 언제든지 서비스를 중지하거나 지정된 연결을 닫을 수 있습니다 | 채팅을 받거나 시작할 수 있습니다 |
+| --- | --- |
+|  |  |
\ No newline at end of file
diff --git a/content/client/linux/_index.ko.md b/content/client/linux/_index.ko.md
new file mode 100644
index 00000000..b470fa81
--- /dev/null
+++ b/content/client/linux/_index.ko.md
@@ -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-.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-.rpm
+```
+
+### Arch Linux/Manjaro
+
+```sh
+sudo pacman -U ./rustdesk-.pkg.tar.zst
+```
+
+### openSUSE (≥ Leap 15.0)
+
+```sh
+sudo zypper install --allow-unsigned-rpm ./rustdesk--suse.rpm
+```
+
+### AppImage
+
+```sh
+# For Fedora
+sudo yum install libnsl
+./rustdesk-.AppImage
+```
+
+```sh
+# For Ubuntu
+sudo yum install libfuse2
+./rustdesk-.AppImage
+```
+
+### 플랫팩
+
+```sh
+flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
+flatpak --user install ./rustdesk-.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 %}}
\ No newline at end of file
diff --git a/content/client/mac/_index.ko.md b/content/client/mac/_index.ko.md
new file mode 100644
index 00000000..fcfa1ad9
--- /dev/null
+++ b/content/client/mac/_index.ko.md
@@ -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)
+기타 무력한 시도:
+`tccutil reset ScreenCapture com.carriez.RustDesk`
+`tccutil reset Accessibility com.carriez.RustDesk`
+재부팅이 여전히 필요합니다.
+{{% /notice %}}
+
+| `-` 및 `+` 버튼 | `RustDesk` 선택 |
+| --- | --- |
+|  |  |
+
+**화면 녹화** 권한에 대한 위의 단계를 복사해 주세요.
+
+
\ No newline at end of file
diff --git a/content/client/windows/MSI/_index.ko.md b/content/client/windows/MSI/_index.ko.md
new file mode 100644
index 00000000..d91be04a
--- /dev/null
+++ b/content/client/windows/MSI/_index.ko.md
@@ -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
+```
\ No newline at end of file
diff --git a/content/client/windows/_index.ko.md b/content/client/windows/_index.ko.md
new file mode 100644
index 00000000..952c98a4
--- /dev/null
+++ b/content/client/windows/_index.ko.md
@@ -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" %}}
\ No newline at end of file
diff --git a/content/client/windows/windows-portable-elevation/_index.ko.md b/content/client/windows/windows-portable-elevation/_index.ko.md
new file mode 100644
index 00000000..48e3961c
--- /dev/null
+++ b/content/client/windows/windows-portable-elevation/_index.ko.md
@@ -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 창을 수락해야 합니다**. 따라서 상대방에 사람이 없을 경우, 제어 측에서 권한 상승을 요청해서는 안 됩니다.
+
+| 메뉴 | 대화 |
+| :---: | :---: |
+|  |  |
+| **대기** | **성공** |
+|  |  |
+
+## 선택 방법
+
+| 시나리오 | 방법 |
+| :---: | :---: |
+| 권한 상승 요청 필요 없음 | 프로그램 설치하기 |
+| 제어되는 쪽에 사용자가 없음 | 이름 바꾸기 *또는* 관리자로 실행 |
+| 제어되는 쪽에 사용자가 있음 *및* 연결 시 즉시 권한 상승 *및* 클릭을 통한 연결 수락 | 제어되는 쪽에서 연결을 받을 때 `Accept and Elevate`을 클릭하세요 |
+| 제어되는 쪽에 사용자가 있음 *및* 필요에 따라 권한 상승 | 제어되는 쪽의 연결 관리 창에서 `Elevate`을 클릭하세요 *또는* 제어하는 쪽에서 권한 상승 요청 |
\ No newline at end of file
diff --git a/content/dev/_index.ko.md b/content/dev/_index.ko.md
new file mode 100644
index 00000000..12c16f40
--- /dev/null
+++ b/content/dev/_index.ko.md
@@ -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: "3. "
+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" %}}
\ No newline at end of file
diff --git a/content/dev/build/_index.ko.md b/content/dev/build/_index.ko.md
new file mode 100644
index 00000000..54656de8
--- /dev/null
+++ b/content/dev/build/_index.ko.md
@@ -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" %}}
\ No newline at end of file
diff --git a/content/dev/build/faq/_index.ko.md b/content/dev/build/faq/_index.ko.md
new file mode 100644
index 00000000..cc2b959a
--- /dev/null
+++ b/content/dev/build/faq/_index.ko.md
@@ -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= 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`로 추가하세요.
\ No newline at end of file
diff --git a/content/dev/build/linux/_index.ko.md b/content/dev/build/linux/_index.ko.md
new file mode 100644
index 00000000..ddea7216
--- /dev/null
+++ b/content/dev/build/linux/_index.ko.md
@@ -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
+```
\ No newline at end of file
diff --git a/content/dev/build/osx/_index.ko.md b/content/dev/build/osx/_index.ko.md
new file mode 100644
index 00000000..7f6ede57
--- /dev/null
+++ b/content/dev/build/osx/_index.ko.md
@@ -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 :admin /usr/local/include
+sudo chmod 775 /usr/local/include
+```
+
+## vcpkg 설치
+Vcpkg는 RustDesk에서 사용하는 C/C++ 종속성을 관리하는 데 사용됩니다. 설치를 원하는 위치를 결정하고, `vcpkg` 폴더가 저장되기를 원하는 폴더에서 다음 명령을 실행하십시오. 이 예제에서는 `/Users//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//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` 파일이 있을 것입니다.
\ No newline at end of file
diff --git a/content/dev/build/windows/_index.ko.md b/content/dev/build/windows/_index.ko.md
new file mode 100644
index 00000000..9b2f9a55
--- /dev/null
+++ b/content/dev/build/windows/_index.ko.md
@@ -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`=`\vcpkg`를 추가하세요. ``는 위에서 선택한 `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`=`/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
+```
\ No newline at end of file
diff --git a/content/self-host/_index.ko.md b/content/self-host/_index.ko.md
new file mode 100644
index 00000000..f6d77ad7
--- /dev/null
+++ b/content/self-host/_index.ko.md
@@ -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: "2. "
+---
+
+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" %}}
\ No newline at end of file
diff --git a/content/self-host/client-configuration/_index.ko.md b/content/self-host/client-configuration/_index.ko.md
new file mode 100644
index 00000000..909c4f5a
--- /dev/null
+++ b/content/self-host/client-configuration/_index.ko.md
@@ -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: "2.3. "
+---
+
+## 자체 호스팅 서버용 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 `
+
+웹 콘솔에서 구성 문자열을 얻을 수 있습니다(위 그림에서 확인할 수 있음) 또는 RustDesk 클라이언트의 "설정 → 네트워크"에서 얻을 수 있습니다([here](https://github.com/rustdesk/rustdesk/discussions/7118)는 이에 대한 논의입니다).
\ No newline at end of file
diff --git a/content/self-host/client-configuration/advanced-settings/_index.ko.md b/content/self-host/client-configuration/advanced-settings/_index.ko.md
new file mode 100644
index 00000000..7d6f1531
--- /dev/null
+++ b/content/self-host/client-configuration/advanced-settings/_index.ko.md
@@ -0,0 +1,1602 @@
+---
+title: 고급 설정
+weight: 49
+description: "RustDesk 사용자 지정 클라이언트에서 사용 가능한 고급 설정을 참조하세요. 여기에는 권한 수준과 재정의, 기본값, 사용자 및 하드코딩된 설정 간의 옵션 동작이 포함됩니다."
+keywords: ["rustdesk advanced settings", "rustdesk custom client settings", "rustdesk privilege levels", "rustdesk override settings", "rustdesk default settings"]
+---
+
+RustDesk의 고급 사용자 지정 클라이언트 설정과 각 설정이 서로 다른 권한 수준에서 어떻게 동작하는지 이해하려면 이 참조를 사용하세요.
+
+사용자 지정 클라이언트의 모든 고급 설정이 여기에 포함되어 있습니다.
+
+## RustDesk 사용자 지정 클라이언트의 고급 설정이란 무엇인가요?
+
+고급 설정은 RustDesk 사용자 지정 클라이언트, 사용자 설정 및 서버 측 정책을 통해 제어할 수 있는 저수준 클라이언트 옵션입니다. 여러 클라이언트 간에 반복 가능한 동작이 필요하거나 보안, 권한 및 UX 기본값에 대해 더 엄격한 제어를 원할 때 유용합니다.
+
+## 설정 우선순위는 어떻게 작동하나요?
+
+| 소스 | 우선순위 |
+| --- | --- |
+| 덮어쓰기 | 최고 |
+| 전략 | 높음 |
+| 사용자 | 보통 |
+| 기본값 | 가장 낮음 |
+
+## 고급 설정 빠른 답변
+
+- 재정의 설정은 다른 모든 소스보다 우선합니다.
+- 전략(Strategy) 설정은 사용자 및 기본 설정을 재정의할 수 있습니다.
+- 사용자 설정은 더 높은 우선순위의 소스가 이를 재정의하지 않는 경우에만 적용됩니다.
+- 기본 설정은 백업 레이어입니다.
+- 이 페이지는 정확한 설정 키, 값, 기본값 및 예제에 대한 참고 자료입니다.
+
+## 설정에 대한 권한 수준
+
+설정에는 네 가지 유형이 있습니다:
+
+1. 설정 덮어쓰기, `Web Console` → `Custom Clients`
+2. 기본 설정, `Web Console` → `Custom Clients`
+3. 사용자 설정, RustDesk 클라이언트에서
+4. 전략 설정, `Web Console` → `Strategies`
+
+이 설정의 권한 계층은 다음과 같습니다: `Override > Strategy > User > Default`.
+
+## 보안 설정
+
+### access-mode
+
+수신 연결에 대한 접근 모드(권한)를 설정합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | custom, full, view | custom | `access-mode=custom` |
+
+### 키보드
+
+수신 연결에 대한 키보드/마우스 입력을 허용합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 키보드 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-keyboard=Y` |
+
+### 클립보드 허용
+
+수신 연결에 대한 복사 및 붙여넣기를 허용합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 클립보드 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-clipboard=Y` |
+
+### 파일 전송 허용
+
+수신 연결에 대해 파일 복사 및 붙여넣기 또는 파일 전송(세션)을 허용합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 파일 전송 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-file-transfer=Y` |
+
+### 카메라 허용
+
+수신 연결에 대한 카메라 허용을 활성화합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 카메라 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-camera=Y` |
+
+### 터미널 허용
+
+수신 연결에 대한 터미널 허용을 활성화합니다.
+
+**위치**:
+
+**데스크톱** 설정 → 보안 → 권한 → 터미널 허용
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-terminal=Y` |
+
+### 원격 프린터 허용
+
+수신 연결에 대해 원격 프린터를 허용합니다.
+
+**위치**:
+
+1. **Windows** 설정 → 보안 → 권한 → 원격 프린터 허용
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-remote-printer=Y` |
+
+### 오디오 허용
+
+오디오 녹음 및 피어로 전송을 허용합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 오디오 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-audio=Y` |
+
+### 터널링 활성화
+
+TCP 터널링을 활성화합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → TCP 터널링 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-tunnel=Y` |
+
+### 원격 재시작 허용
+
+제어 측에서 재시작을 허용합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 원격 재시작 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-remote-restart=Y` |
+
+### 세션 녹화 허용
+
+세션이 녹화되도록 허용합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 세션 녹화 허용
+2. **모바일** 설정 → 화면 공유 → 세션 녹화 허용
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-record-session=Y` |
+
+### enable-block-input
+
+제어 측에서 다른 사용자의 입력을 차단하도록 허용합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 사용자 입력 차단 허용(Windows만 해당)
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-block-input=Y` |
+
+### 개인정보 보호 모드 사용함
+
+제어되는 측에서 제어하는 측이 개인정보 보호 모드를 사용하도록 허용하는지 여부를 제어합니다.
+
+이는 [`privacy-mode`](#privacy-mode)와 다릅니다: 해당 설정은 첫 번째 연결 이후 각 피어에 대한 기본 개인정보 보호 모드 동작을 제어하는 반면, `enable-privacy-mode`는 개인정보 보호 모드가 허용되는지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 개인정보 보호 모드 사용함
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-privacy-mode=Y` |
+
+### 원격 구성 수정 허용
+
+제어 측에서 제어되는 RustDesk UI의 설정을 변경할 수 있도록 허용합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 권한 → 원격 구성 수정 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `allow-remote-config-modification=Y` |
+
+### LAN 검색 거부 활성화
+
+LAN 피어가 나를 발견하도록 허용합니다.
+
+LAN 검색 후, 로컬에서 지원된다면 [WOL](https://en.wikipedia.org/wiki/Wake-on-LAN)가 작동할 수 있습니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 보안 → LAN 검색 거부
+2. **모바일** 설정 → 화면 공유 → LAN 검색 거부
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| Y | Y, N | Y | `enable-lan-discovery=Y` |
+
+### 직접 서버
+
+직접 IP 액세스 허용.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 보안 → 직접 IP 액세스 허용
+2. **모바일** 설정 → 화면 공유 → 직접 IP 연결
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `direct-server=Y` |
+
+### 직접-액세스-포트
+
+직접 IP 액세스 포트.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 보안 → 직접 IP 액세스 포트 (직접 IP 액세스 허용이 체크된 경우 표시)
+2. **모바일** 설정 → 화면 공유 → 직접 IP 연결
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | | 21118 | `direct-access-port=21118` |
+
+### 화이트리스트
+
+IP 화이트리스트 사용.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 보안 → IP 화이트리스트 사용
+2. **모바일** 설정 → 화면 공유 → IP 화이트리스트 사용
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | `,` or `,,` | `,` means no filter | `whitelist=,` |
+
+### 허용-자동 연결 해제 및 자동 연결 해제 시간 초과
+
+사용자 비활성 상태가 지속된 후 수신 세션을 자동으로 종료합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 보안 → 사용자 비활성 상태에서 수신 세션 자동 종료
+2. **모바일** 설정 → 화면 공유 → 사용자 비활성 상태에서 수신 세션 자동 종료
+
+| 옵션 | 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: | :------: |
+| allow-auto-disconnect | N | Y, N | N | `allow-auto-disconnect=Y` |
+| auto-disconnect-timeout | N | Timeout in minutes | 10 | `auto-disconnect-timeout=10` |
+
+### 허용-연결-창-열림
+
+RustDesk 창이 열려 있는 경우에만 연결을 허용합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 보안 → RustDesk 창이 열려 있는 경우에만 연결 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| Y | Y, N | N | `allow-only-conn-window-open=N` |
+
+### 승인 모드
+
+비밀번호를 통해 수신 연결을 수락하거나 수동으로 클릭하십시오.
+
+**위치**:
+
+1. **데스크톱** 설정 → 보안 → 비밀번호 → 드롭다운 상자
+2. **모바일** 화면 공유 → 오른쪽 상단 모서리의 드롭다운 메뉴
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | password, click, password-click | password-click | `approve-mode=password-click` |
+
+### 인증 방법
+
+사용할 수 있는 비밀번호 유형은 무엇이며, `temporary password`는 일회성 임의 비밀번호를 의미합니다.
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | use-temporary-password, use-permanent-password, use-both-passwords | use-both-passwords | `verification-method=use-permanent-password` |
+
+### 일회용 비밀번호 길이
+
+1. **데스크톱** 설정 → 보안 → 비밀번호 → 일회용 비밀번호 길이
+2. **모바일** 화면 공유 → 오른쪽 상단 모서리의 드롭다운 메뉴 → 일회용 비밀번호 길이
+
+임시 비밀번호의 길이.
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | 6, 8, 10 | `temporary-password-length=6` |
+
+### 프록시-URL
+
+프록시 URL입니다.
+
+현재 `http` 및 `socks5`를 지원합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 네트워크 → 프록시 → Socks5/Http(s) 프록시
+2. **모바일**
+
+예제:
+
+1. **http** `proxy-url=http://192.168.0.2:12345`
+2. **https** `proxy-url=https://192.168.0.2:12345`
+3. **socks5** `proxy-url=socks5://192.168.0.2:1080`
+
+### 프록시-사용자 이름 & 프록시-비밀번호
+
+프록시 사용자 이름과 비밀번호입니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 네트워크 → 프록시 → Socks5/Http(s) 프록시
+2. **모바일**
+
+| 옵션 | 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: | :------: |
+| proxy-username | N | | | `proxy-username=user` |
+| proxy-password | N | | | `proxy-password=pass` |
+
+## 일반 설정
+
+### 테마
+
+RustDesk 클라이언트의 UI 테마를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 테마
+2. **모바일** 설정 → 설정 → 테마
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | dark, light, system | system | `theme=system` |
+
+### lang
+
+RustDesk 클라이언트의 언어를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 언어
+2. **모바일** 설정 → 설정 → 언어
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | default, ar, bg, ... | default | `lang=default` |
+
+현재 사용 가능한 언어는 다음과 같습니다:
+
+ar, bg, ca, cs, da, de, el, en, eo, es, et, fa, fr, he, hr, hu, id, it, ja, ko, kz, lt, lv, nb, nl, pl, pt, ro, ru, sk, sl, sq, sr, sv, th, tr, uk, vn, zh-cn, zh-tw
+
+최신 언어 목록은 코드에서 [LANGS](https://github.com/rustdesk/rustdesk/blob/master/src/lang.rs#L45)를 확인할 수 있습니다.
+
+### allow-auto-record-incoming
+
+수신 세션 자동 녹화.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 녹화 → 수신 세션 자동 녹화
+2. **모바일** 설정 → 녹화 → 수신 세션 자동 녹화
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `allow-auto-record-incoming=Y` |
+
+### allow-auto-record-outgoing
+
+발신 세션 자동 녹화.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 녹화 → 발신 세션 자동 녹화
+2. **모바일** 설정 → 녹화 → 발신 세션 자동 녹화
+
+| 설치 필요 | 값 | 기본값 | 예시 | 버전 |
+| :------: | :------: | :------: | :------: | :------: |
+| N | Y, N | N | `allow-auto-record-outgoing=Y` | >= 1.3.2 |
+
+### 비디오 저장 디렉터리
+
+녹화된 동영상을 저장할 디렉터리입니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 녹화 → 비디오 저장 디렉터리
+2. **모바일** 설정 → 녹화
+
+기본값:
+
+1. **macOS** ~/Movies/**앱_이름**
+2. **Linux** ~/Videos/**앱_이름**
+3. **Windows** %USERPROFILE%\Videos\\**앱_이름**
+4. **Android** /Storage/emulated/0/**앱_이름**/ScreenRecord
+
+**노트**: **앱_이름**을 현재 앱 이름으로 대체하십시오.
+
+### 자동 업데이트 허용
+
+자동 업데이트를 허용합니다. 이 옵션을 활성화하면, 새로운 버전이 출시되면 클라이언트가 GitHub 공식 릴리스에서 최신 버전을 자동으로 다운로드하고 설치합니다.
+
+이 설정은 연결 유형이 양방향 또는 수신으로 설정된 경우에만 Windows에서 적용됩니다. 발신에는 적용되지 않습니다.
+
+**위치**:
+
+1. **Windows** 설정 → 일반 → 기타 → 자동 업데이트
+
+| 설치 필요 | 값 | 기본값 | 예시 | 버전 |
+| :------: | :------: | :------: | :------: | :------: |
+| Y | Y, N | N | `allow-auto-update=Y` | >= 1.4.6 |
+
+### enable-confirm-closing-tabs
+
+모든 원격 탭을 닫기 전에 확인 대화상자를 표시할지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 기타 → 여러 탭을 닫기 전에 확인
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-confirm-closing-tabs=Y` |
+
+### enable-abr
+
+적응형 비트레이트를 활성화합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 기타 → 적응형 비트레이트
+2. **모바일** 설정 → 화면 공유 → 적응형 비트레이트 (베타)
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-abr=Y` |
+
+### 허용-벽지제거
+
+수신 세션 동안 벽지를 제거합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 기타 → 수신 세션 동안 벽지 제거
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `allow-remove-wallpaper=N` |
+
+### 새 탭에서 연결 열기 활성화
+
+새 연결을 열 때 새 탭을 사용할지 새 창을 사용할지 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 기타 → 새 탭에서 연결 열기
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-open-new-connections-in-tabs=Y` |
+
+### allow-always-software-render
+
+항상 소프트웨어 렌더링 사용.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 기타 → 항상 소프트웨어 렌더링 사용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `allow-always-software-render=N` |
+
+### allow-linux-headless
+
+디스플레이 없음일 경우 수신 연결을 허용합니다.
+
+이 옵션은 데스크톱 환경, Xorg 서버 및 GDM을 필요로 하며, [PR 3902](https://github.com/rustdesk/rustdesk/pull/3902)를 참조하십시오.
+
+**위치**:
+
+1. **데스크톱** 설정 → 일반 → 기타 → Linux headless 허용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| Y | Y, N | N | `allow-linux-headless=N` |
+
+### enable-hwcodec
+
+하드웨어 인코딩을 활성화하여 그림을 더 부드럽게 만듭니다.
+
+**위치**:
+
+1. **데스크톱**
+2. **모바일** 설정 → 하드웨어 코덱
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | Y | `enable-hwcodec=Y` |
+
+### peer-card-ui-type
+
+피어 카드의 뷰를 제어하며, "큰 타일", "작은 타일" 및 "목록"을 포함합니다.
+
+**위치**:
+
+1. **데스크톱** 홈 → 피어 패널 → 오른쪽 상단 그리드 아이콘
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | 0, 1, 2 | 0 | `peer-card-ui-type=0` |
+
+**0** 큰 타일
+**1** 작은 타일
+**2** 목록
+
+### 피어 정렬
+
+피어 카드의 순서를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 홈 → 피어 패널 → 오른쪽 상단 정렬 아이콘
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Remote ID, Remote Host, Username | Remote ID | `peer-sorting=Remote ID` |
+
+### 주소록과 최근 세션 동기화
+
+주소록을 최근 세션과 동기화할지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 홈 → 피어 패널 → 주소록 → 태그 → 드롭다운 메뉴 → 최근 세션과 동기화
+2. **모바일** 홈 → 피어 패널 → 주소록 → 태그 → 드롭다운 메뉴 → 최근 세션과 동기화
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `sync-ab-with-recent-sessions=N` |
+
+### sync-ab-tags
+
+주소록 태그를 정렬할지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 홈 → 피어 패널 → 주소록 → 태그 → 드롭다운 메뉴 → 태그 정렬
+2. **모바일** 홈 → 피어 패널 → 주소록 → 태그 → 드롭다운 메뉴 → 태그 정렬
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `sync-ab-tags=N` |
+
+### 교차해서 필터링
+
+태그 교차를 통해 주소록을 필터링합니다.
+
+**미리보기**: [PR #5985](https://github.com/rustdesk/rustdesk/pull/5985)
+
+**위치**:
+
+1. **데스크톱** 홈 → 피어 패널 → 주소록 → 태그 → 드롭다운 메뉴 → 교차해서 필터링
+2. **모바일** 홈 → 피어 패널 → 주소록 → 태그 → 드롭다운 메뉴 → 교차해서 필터링
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `filter-ab-by-intersection=N` |
+
+### 텍스처 렌더링 사용
+
+**위치**:
+
+**데스크톱** 설정 → 일반 → 기타 → 텍스처 렌더링 사용
+
+텍스처 렌더링을 사용하여 이미지를 더 부드럽게 만듭니다. 렌더링 문제가 발생하면 이 옵션을 비활성화해 보세요. 데스크톱에서만 사용 가능합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | linux:Y, macOS:N, win7:N, win10+:Y | `use-texture-render=Y` |
+
+### UDP 홀 펀칭 사용
+
+**위치**:
+
+**데스크톱** 설정 → 일반 → 기타 → UDP 홀 펀칭 사용
+**모바일** 설정 → UDP 홀 펀칭 사용
+
+RustDesk 1.4.1, RustDesk Server Pro 1.6.2부터 사용 가능합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | Y | `enable-udp-punch=N` |
+
+### IPv6 P2P 연결 사용
+
+**위치**:
+
+**데스크톱** 설정 → 일반 → 기타 → IPv6 P2P 연결 사용
+**모바일** 설정 → 일반 → 기타 → IPv6 P2P 연결 사용
+
+RustDesk 1.4.1, RustDesk Server Pro 1.6.2부터 사용 가능합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | selfhost:N, otherwise:Y | `enable-ipv6-punch=N` |
+
+## 디스플레이 설정
+
+### 보기 전용
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "보기 전용" 옵션을 설정합니다.
+
+그런 다음 각 피어의 설정에서 "보기 전용" 옵션이 연결이 보기 전용인지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 보기 모드
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 보기 모드
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `view-only=Y` |
+
+### show-monitors-toolbar
+
+도구 모음에 모니터를 표시할지 여부를 제어합니다.
+
+
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 도구 모음에 모니터 표시
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `show-monitors-toolbar=Y` |
+
+### 도구 모음 접기
+
+원격 도구 모음이 연결된 후 접히는지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 도구 모음 접기
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `collapse-toolbar=Y` |
+
+### 원격 커서 표시
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "원격 커서 표시" 옵션을 설정합니다.
+
+그런 다음 각 피어의 설정에서 "원격 커서 표시" 옵션이 원격 제어 페이지에 원격 커서가 표시되는지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 원격 커서 표시
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 원격 커서 표시
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `show-remote-cursor=N` |
+
+### 원격 커서 따라가기
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "원격 커서 따라가기" 옵션을 설정합니다.
+
+그런 다음 각 피어의 설정에서 "원격 커서 따라가기" 옵션이 원격 커서를 따라갈지 여부를 제어합니다.
+
+**미리보기**: [PR 7717](https://github.com/rustdesk/rustdesk/pull/7717)
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 원격 커서 따라가기
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 원격 커서 따라가기
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `follow-remote-cursor=Y` |
+
+### 원격 창 초점 따라가기
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "원격 창 초점 따라가기" 옵션을 설정합니다.
+
+그런 다음 각 피어의 설정에서 "원격 창 초점 따라가기" 옵션이 원격 창을 따라갈지 여부를 제어합니다.
+
+**미리보기**: [PR 7717](https://github.com/rustdesk/rustdesk/pull/7717)
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 원격 창 초점 따라가기
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 원격 창 초점 따라가기
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `follow-remote-window=Y` |
+
+### 커서 확대/축소
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "커서 확대/축소" 옵션을 설정합니다.
+
+각 피어의 설정에서 "커서 확대/축소" 옵션은 현재 이미지 배율에 따라 커서가 스케일링되는지를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 커서 확대/축소
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `zoom-cursor=Y` |
+
+### 품질 모니터 표시
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "품질 모니터 표시" 옵션을 설정합니다.
+
+그러면 각 피어의 설정에서 "품질 모니터 표시" 옵션이 품질 모니터를 표시할지 여부를 제어하게 됩니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 품질 모니터 표시
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 품질 모니터 표시
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `show-quality-monitor=Y` |
+
+### 음소거
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "음소거" 옵션을 설정합니다.
+
+그러면 각 피어의 설정에 있는 "음소거" 옵션이 사운드 재생 여부를 제어하게 됩니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 음소거
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 음소거
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `disable-audio=Y` |
+
+### 파일 복사 및 붙여넣기 허용
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "파일 복사 및 붙여넣기 허용" 옵션을 설정합니다.
+
+그러면 각 피어의 설정에 있는 "파일 복사 및 붙여넣기 허용" 옵션이 연결 시 파일 복사 및 붙여넣기 허용 여부를 제어하게 됩니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 파일 복사 및 붙여넣기 허용 (Windows만 해당)
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `enable-file-copy-paste=Y` |
+
+### 클립보드 사용 안 함
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "클립보드 사용 안 함" 옵션을 설정합니다.
+
+각 피어의 설정에서 "클립보드 사용 안 함" 옵션은 텍스트 복사 및 붙여넣기 기능을 활성화할지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 클립보드 사용 안 함
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 클립보드 사용 안 함
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `disable-clipboard=Y` |
+
+### 세션 종료 후 잠금
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "세션 종료 후 잠금" 옵션을 설정합니다.
+
+그러면 각 피어의 설정에 있는 "세션 종료 후 잠금" 옵션이 세션 종료 후 피어 컴퓨터를 잠금 상태로 설정할지 여부를 제어하게 됩니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 세션 종료 후 잠금
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 세션 종료 후 잠금
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `lock-after-session-end=Y` |
+
+### 개인정보 보호 모드
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "개인정보 보호 모드" 옵션을 설정합니다.
+
+그러면 각 피어의 설정에 있는 "개인정보 보호 모드" 옵션이 연결 후 개인정보 보호 모드를 사용할지 여부를 제어하게 됩니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 개인정보 보호 모드
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 개인정보 보호 모드
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `privacy-mode=Y` |
+
+### i444
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "i444" 옵션을 설정합니다.
+
+각 피어의 설정에서 "i444" 옵션은 실제 색상을 사용할지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 진짜 색상 (4:4:4)
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 진짜 색상 (4:4:4)
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `i444=Y` |
+
+### 마우스 휠 반전
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "마우스 휠 반전" 옵션을 설정합니다.
+
+각 피어의 설정에서 "마우스 휠 반전" 옵션은 마우스 휠을 반전할지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 마우스 휠 반전
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 마우스 휠 반전
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `reverse-mouse-wheel=Y` |
+
+### 마우스 왼쪽 버튼과 오른쪽 버튼 교체
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "마우스 왼쪽 버튼과 오른쪽 버튼 교체" 옵션을 설정합니다.
+
+그러면 각 피어의 설정에서 "마우스 왼쪽 버튼과 오른쪽 버튼 교체" 옵션이 왼쪽-오른쪽 마우스 버튼 교체 여부를 제어하게 됩니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 마우스 왼쪽 버튼과 오른쪽 버튼 교체
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 마우스 왼쪽 버튼과 오른쪽 버튼 교체
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `swap-left-right-mouse=Y` |
+
+### displays-as-individual-windows
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "디스플레이를 개별 창으로 표시" 옵션을 설정합니다.
+
+그러면 각 피어의 설정에서 "디스플레이를 개별 창으로 표시" 옵션이 디스플레이를 개별 창으로 표시할지 여부를 제어하게 됩니다.
+
+**미리보기**: [PR 5945](https://github.com/rustdesk/rustdesk/pull/5945)
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 디스플레이를 개별 창으로 표시
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `displays-as-individual-windows=Y` |
+
+### 원격 세션에 내 모든 디스플레이 사용
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "원격 세션에 내 모든 디스플레이 사용" 옵션을 설정합니다.
+
+각 피어의 설정에서 "원격 세션에 내 모든 디스플레이 사용" 옵션은 원격 세션에 내 모든 디스플레이를 사용할지 여부를 제어하게 됩니다.
+
+**미리보기**: [PR 6064](https://github.com/rustdesk/rustdesk/pull/6064)
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 원격 세션에 내 모든 디스플레이 사용
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `use-all-my-displays-for-the-remote-session=Y` |
+
+### 보기 스타일
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "보기 스타일" 옵션을 설정합니다.
+
+그런 다음 각 피어의 설정에 있는 "보기 스타일" 옵션이 보기 스타일을 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기본 보기 스타일
+2. **모바일** 설정 → 디스플레이 설정 → 기본 보기 스타일
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | original, adaptive | original | `view-style=original` |
+
+### 스크롤 스타일
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "스크롤 스타일" 옵션을 설정합니다.
+
+그런 다음 각 피어의 설정에서 "스크롤 스타일" 옵션이 스크롤 스타일을 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기본 스크롤 스타일
+2. **모바일**
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | scrollauto, scrollbar, scrolledge | scrollauto | `scroll-style=scrollauto` |
+
+**노트**: `scrolledge` 옵션은 RustDesk 1.4.4부터 사용 가능합니다.
+
+### edge-scroll-edge-thickness
+
+이 옵션은 `scroll-style`가 `scrolledge`로 설정되었을 때 가장자리 두께를 제어합니다. 가장자리 두께는 화면 가장자리에서 스크롤 가능한 영역의 크기를 결정합니다.
+
+이 옵션은 `scroll-style=scrolledge`일 때만 효과적입니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 가장자리 스크롤 가장자리 두께
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | 20-150 | 100 | `edge-scroll-edge-thickness=100` |
+
+**노트**: 이 옵션은 RustDesk 1.4.4부터 사용 가능합니다.
+
+### 이미지 품질
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "이미지 품질" 옵션을 설정합니다.
+
+그러면 각 피어의 설정에 있는 "이미지 품질" 옵션이 이미지 품질을 제어하게 됩니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기본 이미지 품질
+2. **모바일** 설정 → 디스플레이 설정 → 기본 이미지 품질
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | best, balanced, low, custom | balanced | `image-quality=balanced` |
+
+### 사용자 지정 이미지 품질
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "사용자 지정 이미지 품질" 옵션을 설정합니다.
+
+각 피어의 설정에서 "사용자 지정 이미지 품질" 옵션이 "이미지 품질"을 사용자 지정으로 설정한 경우 이미지 품질을 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기본 이미지 품질 → 사용자 지정
+2. **모바일** 설정 → 디스플레이 설정 → 기본 이미지 품질 → 사용자 지정
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | [10.0, 2000.0] | 50.0 | `custom-image-quality=50` |
+
+### custom-fps
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "custom-fps" 옵션을 설정합니다.
+
+각 피어의 설정에서 "custom-fps" 옵션이 "image-quality"를 사용자 지정으로 설정한 경우 fps를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기본 이미지 품질 → 사용자 지정
+2. **모바일** 설정 → 디스플레이 설정 → 기본 이미지 품질 → 사용자 지정
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | [5, 120] | 30 | `custom-fps=30` |
+
+### 코덱 선호도
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "코덱 선호도" 옵션을 설정합니다.
+
+각 피어의 설정에서 "코덱 선호도" 옵션은 이미지에 대한 코덱을 제어하게 됩니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기본 코덱
+2. **모바일** 설정 → 디스플레이 설정 → 기본 코덱
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | auto, vp8, vp9, av1, h264, h265 | auto | `codec-preference=auto` |
+
+**주의**: "vp8" 및 "vp9" 이외의 옵션은 작동하지 않을 수 있습니다. 이는 사용자의 기기가 지원하는 사항에 따라 달라집니다.
+
+### 터미널 지속성
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "터미널 지속성" 옵션을 설정합니다.
+
+각 피어의 설정에서 "터미널 지속성" 옵션은 연결 해제 시 터미널 세션을 유지할지 여부를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기타 기본 옵션 → 연결이 끊어져도 터미널 세션 유지
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 연결이 끊어져도 터미널 세션 유지
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `terminal-persistent=Y` |
+
+### 트랙패드 속도
+
+이 옵션은 첫 번째 연결 이후 모든 피어에 대해 "트랙패드 속도" 옵션을 설정합니다.
+
+각 피어의 설정에서 "트랙패드 속도" 옵션이 사용자 지정으로 설정된 경우, 해당 옵션이 fps를 제어합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 디스플레이 → 기본 트랙패드 속도
+2. **모바일** 설정 → 디스플레이 설정 → 기본 트랙패드 속도
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | [10, 1000] | 100 | `trackpad-speed=100` |
+
+## 기타
+
+### 사전 설정 주소록 이름 & 사전 설정 주소록 태그 & 사전 설정 주소록 별명 & 사전 설정 주소록 비밀번호 & 사전 설정 주소록 노트
+
+사전 설정 주소록 이름, 기기 태그, 기기 별명, 기기 비밀번호, 기기 노트, https://github.com/rustdesk/rustdesk-server-pro/issues/257.
+태그를 설정하고 싶지 않은 경우에만 사전 설정 주소록 이름을 설정할 수 있습니다.
+웹 콘솔의 주소록 페이지에서 유효한 주소록 이름과 태그를 사용하십시오.
+
+| 옵션 | 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: | :------: |
+| preset-address-book-name | N | | | `preset-address-book-name=` |
+| preset-address-book-tag | N | | | `preset-address-book-tag=` |
+| preset-address-book-alias | N | | | `preset-address-book-alias=` |
+| preset-address-book-password | N | | | `preset-address-book-password=` |
+| preset-address-book-note | N | | | `preset-address-book-note=` |
+
+preset-address-book-alias, preset-address-book-password, preset-address-book-note는 RustDesk 클라이언트 >=1.4.3, 프로 >= 1.6.6에서 사용할 수 있습니다.
+
+### disable-group-panel
+
+RustDesk 클라이언트에서 그룹 패널을 비활성화하세요(주소록 패널 옆에 있으며, 1.3.8부터는 "액세스 가능한 장치"라고 명명됨). https://github.com/rustdesk/rustdesk-server-pro/issues/250.
+
+| 옵션 | 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: | :------: |
+| disable-group-panel | N | Y, N | N | `disable-group-panel=Y` |
+
+### 사전 권한 상승 서비스
+
+Windows 휴대용에 대한 실행 시 자동 권한 상승, https://github.com/rustdesk/rustdesk-server-pro/issues/252.
+
+| 옵션 | 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: | :------: |
+| pre-elevate-service | N | Y, N | N | `pre-elevate-service=Y` |
+
+### 플로팅 창 비활성화
+
+Android 서비스가 시작되면 플로팅 창이 표시되며, 이는 시스템이 RustDesk 서비스를 종료하는 것을 방지하는 데 도움이 됩니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `disable-floating-window=Y` |
+
+### 플로팅 창 크기
+
+Android 서비스가 시작되면 플로팅 창이 표시되며, 이는 시스템에서 RustDesk 서비스를 종료하는 것을 방지하는 데 도움이 됩니다. 크기가 120보다 작으면 플로팅 창을 클릭하기 어려워집니다. 매우 작은 크기는 일부 기기에서 백그라운드 서비스를 유지할 수 없을 수도 있습니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| [32, 320] | 120 | `floating-window-size=120` |
+
+### 플로팅 창-터치 불가
+
+기본적으로 플로팅 창을 클릭하면 메뉴가 표시됩니다. '터치 불가'로 설정한 후에는 클릭하거나 스와이프해도 플로팅 창을 통과해 아래에 있는 창으로 전달됩니다. '터치 불가'로 설정된 후에는 플로팅 창의 위치를 변경할 수 없으며, 시스템에서 자동으로 플로팅 창을 반투명으로 설정할 수 있습니다. 그러나 일부 애플리케이션에서는 이 기능이 작동하지 않을 수 있으며, 예를 들어 GitHub 앱이 그러합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `floating-window-untouchable=Y` |
+
+### 플로팅 창 투명도
+
+Android 플로팅 창은 투명도를 조정할 수 있습니다. 플로팅 창을 활성화하되 숨기고 싶다면 투명도를 0으로 설정하면, 플로팅 창은 클릭 이벤트를 통과하도록 자동으로 '터치 불가' 상태로 설정됩니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| [0, 10] | 10 | `floating-window-transparency=5` |
+
+### 플로팅 창-SVG
+
+Android 플로팅 창에 아이콘이 설정되지 않은 경우 기본적으로 RustDesk 아이콘이 표시됩니다.
+설정 시 SVG의 텍스트 내용을 한 줄로 작성하고, [SVG support limitations](https://bigbadaboom.github.io/androidsvg/index.html)에 유의해 주십시오.
+
+| 기본값 | 예시 |
+| :------: | :------: |
+| RustDesk icon | `floating-window-svg=` |
+
+### 화면 켜기 유지
+
+이는 Android 제어 측용입니다. 화면을 켜둔 상태로 유지하는 것은 플로팅 창에 의존합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| never, during-controlled, service-on | during-controlled | `keep-screen-on=never` |
+
+### 수신 세션 동안 화면을 깨워두기
+
+수신 원격 데스크톱 세션 동안 화면을 깨워둡니다. 이는 애플리케이션이 원격 연결에 적극적으로 사용되는 동안 장치가 절전 모드로 전환되지 않도록 도와줍니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | Y | `keep-awake-during-incoming-sessions=N` |
+
+### 발신 세션 동안 화면을 깨워두기
+
+원격 데스크톱 발신 세션 동안 화면을 깨워둡니다. 이는 애플리케이션이 원격 연결에 적극적으로 사용되는 동안 장치가 절전 모드로 전환되지 않도록 도와줍니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | Y | `keep-awake-during-outgoing-sessions=N` |
+
+### enable-directx-capture
+
+이는 Windows 제어 측용입니다. 문제가 발생하지 않는다면, GDI를 직접 사용하는 대신 DirectX를 스크린샷에 우선적으로 사용하도록 하는 기본 설정을 사용하는 것이 좋습니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | Y | `enable-directx-capture=N` |
+
+### android 소프트웨어 인코딩 반값 활성화
+
+이는 Android 제어 측에 적용됩니다. 기본적으로 해상도가 1200보다 클 경우 하드웨어 인코딩은 원본 해상도를 사용하고, 소프트웨어 인코딩은 속도가 느리므로 해상도의 절반을 사용합니다. 이 옵션은 소프트웨어 인코딩이 해상도의 절반으로 스케일링되어야 하는지 설정하는 데 사용됩니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | Y | `enable-android-software-encoding-half-scale=N` |
+
+### 원격 cm 수정 허용
+
+제어 측에서 수락 창(연결 관리 창)을 클릭하여 연결을 수락하고 권한을 변경하는 등의 작업을 허용할지 여부를 제어합니다.
+
+https://github.com/rustdesk/rustdesk/issues/7425
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-remote-cm-modification=Y` |
+
+### enable-perm-change-in-accept-window
+
+사용자가 수신 세션을 수락하기 전에 수락 창(연결 관리 창)에서 권한을 변경할 수 있는지 여부를 제어합니다.
+
+데스크톱에서는 이 설정이 수락 창(연결 관리 창)의 모든 권한에 영향을 미칩니다. Android에서는 다음 권한에 영향을 미칩니다: 파일 전송, 오디오 캡처 및 클립보드 허용입니다. 화면 캡처와 입력 제어는 영향을 받지 않습니다.
+
+**미리보기**: https://github.com/rustdesk/rustdesk/pull/14875
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | Y | `enable-perm-change-in-accept-window=Y` |
+
+### preset-password-경고제거
+
+사용자 지정 클라이언트에 사전 설정된 비밀번호가 있을 때 GUI에서 보안 경고를 제거할지 여부를 제어합니다.
+
+https://github.com/rustdesk/rustdesk-server-pro/discussions/286
+
+https://github.com/rustdesk/rustdesk/discussions/7956
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | Y | `remove-preset-password-warning=Y` |
+
+### hide-security-settings / hide-network-settings / hide-server-settings / hide-proxy-settings / hide-websocket-settings / hide-remote-printer-settings
+
+일부 설정을 숨길지 여부를 제어합니다. `Disable settings`가 꺼짐 상태인지 확인하십시오. 그렇지 않으면 이 설정들이 작동하지 않습니다.
+
+https://github.com/rustdesk/rustdesk-server-pro/issues/263
+
+https://github.com/rustdesk/rustdesk-server-pro/issues/276
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `hide-security-settings=Y` |
+
+### 카드에서 사용자 이름 숨기기
+
+장치 목록에 사용자 이름을 표시할지 여부를 제어합니다. 때로는 사용자 이름이 너무 길어 다른 정보를 숨깁니다.
+
+https://github.com/rustdesk/rustdesk-server-pro/issues/284#issuecomment-2216521407
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `hide-username-on-card=Y` |
+
+### hide-help-cards
+
+GUI에서 UAC/권한 경고를 표시할지 여부를 제어합니다.
+
+https://github.com/rustdesk/rustdesk/issues/8687
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `hide-help-cards=Y` |
+
+### 표시 이름
+
+원격 장치에 연결할 때 팝업에 표시되는 표시 이름을 변경하세요. 기본적으로 로그인 사용자의 이름이 먼저 표시되며, 그렇지 않으면 운영 체제의 사용자 이름이 표시됩니다.
+
+https://github.com/rustdesk/rustdesk-server-pro/issues/277
+
+### UDP 비활성화
+
+TCP만 사용할지 여부를 제어합니다. 더 이상 UDP 21116를 사용하지 않고 대신 TCP 21116를 사용하게 됩니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `disable-udp=Y` |
+
+### 사전 설정된 사용자 이름 / 사전 설정된 전략 이름 / 사전 설정된 장치 그룹 이름 / 사전 설정된 장치 사용자 이름 / 사전 설정된 장치 이름 / 사전 설정된 노트
+
+사용자 / 전략 / 장치 그룹 / 장치 사용자 이름 / 장치 이름(호스트명) / 노트를 장치에 할당하십시오. [command line](/docs/ko/self-host/rustdesk-server-pro/console/#웹-콘솔을-통해-장치-사용자전략장치-그룹을-장치에-할당하기)를 통해 이 작업을 수행할 수도 있습니다.
+
+https://github.com/rustdesk/rustdesk-server-pro/discussions/304
+
+장치 그룹은 RustDesk 클라이언트 >=1.3.8, 프로 >= 1.5.0에서 사용 가능합니다.
+
+사전 설정된 장치 사용자 이름, 사전 설정된 장치 이름, 사전 설정된 노트는 RustDesk 클라이언트 >=1.4.3, 프로 >= 1.6.6에서 사용 가능합니다.
+
+### 기본 연결 비밀번호
+
+`default connection password`를 사용하여 원격 장치와의 연결을 설정합니다. 이 비밀번호는 제어 측에서 구성되며, 제어되는(수신 전용) 클라이언트에서 발견되는 어떤 [preset password](https://github.com/rustdesk/rustdesk/wiki/FAQ#how-can-we-set-up-a-client-with-a-fixed-password-for-unattended-remote-access)와도 혼동되어서는 안 됩니다.
+
+예: `default-connect-password=abcd1234`
+
+### 신뢰할 수 있는 장치 활성화
+
+신뢰할 수 있는 장치가 2FA 인증을 건너뛸 수 있도록 허용합니다.
+
+https://github.com/rustdesk/rustdesk/discussions/8513#discussioncomment-10234494
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | Y | `enable-trusted-devices=N` |
+
+### 트레이 숨기기
+
+시스템 트레이의 트레이 아이콘을 비활성화합니다.
+
+https://github.com/rustdesk/rustdesk-server-pro/issues/332
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `hide-tray=Y` |
+
+### hide-stop-service
+
+서비스가 실행 중일 때 서비스 중지/전환 컨트롤을 숨깁니다. 이는 주로 사용자 지정 클라이언트에서 사용자가 UI(데스크톱 설정, 트레이 메뉴, Android 서버 페이지 및 Android 플로팅 창 메뉴)에서 서비스를 중지하는 것을 방지하기 위한 것입니다.
+
+서비스가 중지되면 시작/활성화 항목은 계속 표시됩니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `hide-stop-service=Y` |
+
+### 일방향 클립보드 리디렉션
+
+제어된 측에서 제어하는 측으로의 클립보드 동기화를 사용 안 함, RustDesk 클라이언트 >=1.3.1(제어된 측)에서 사용 가능
+
+https://github.com/rustdesk/rustdesk/discussions/7837
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `one-way-clipboard-redirection=Y` |
+
+### 일방향 파일 전송
+
+제어되는 쪽에서 제어하는 쪽으로의 파일 전송을 비활성화하며, RustDesk 클라이언트 >=1.3.1(제어되는 쪽)에서 사용 가능합니다.
+
+https://github.com/rustdesk/rustdesk/discussions/7837
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `one-way-file-transfer=Y` |
+
+### sync-init-clipboard
+
+연결을 설정할 때 클립보드를 동기화하려면(제어 측에서 제어 대상 측으로만), RustDesk 클라이언트 >=1.3.1(제어 측)에서 사용 가능합니다.
+
+https://github.com/rustdesk/rustdesk/discussions/9010
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `sync-init-clipboard=Y` |
+
+### 로그온 화면 비밀번호 허용
+
+[click-only approve mode](/docs/ko/self-host/client-configuration/advanced-settings/#승인-모드)를 사용할 때 로그온 화면에서 비밀번호 입력을 허용하는 경우, RustDesk 클라이언트 >=1.3.1(제어 측)에서 사용 가능합니다.
+
+활성화 시 현재 세션이 로그온 또는 잠금 화면 상태일 때 영구 비밀번호도 허용됩니다. 이는 클릭, 비밀번호, 그리고 둘 다 승인 모드에 적용됩니다. RustDesk 클라이언트 >=1.4.7(제어 측)
+
+https://github.com/rustdesk/rustdesk/discussions/9269
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-logon-screen-password=Y` |
+
+### allow-https-21114
+
+일반적으로 HTTPS는 포트 443을 사용합니다. API 서버의 포트가 실수로 21114로 설정된 경우, RustDesk 클라이언트는 기본적으로 21114 포트 설정을 제거합니다. 옵션을 Y로 설정하면 21114를 HTTPS 포트로 사용할 수 있습니다. RustDesk 클라이언트 >=1.3.9에서 사용 가능합니다.
+
+https://github.com/rustdesk/rustdesk-server-pro/discussions/570
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-https-21114=Y` |
+
+### allow-d3d-render
+
+D3D 렌더링은 높은 FPS를 얻을 수 있고 CPU 사용량을 줄일 수 있지만, 일부 장치에서는 원격 제어 화면이 검게 표시될 수 있습니다. RustDesk 클라이언트 >=1.3.9에서 사용 가능하며, Windows에서만 지원됩니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-d3d-render=Y` |
+
+### 호스트명을 ID로 허용
+
+[Use hostname as id](https://github.com/rustdesk/rustdesk-server-pro/discussions/483), 호스트명에 공백이 있으면 '-'로 대체됩니다. 이는 100% 보장되는 것은 아니며, RustDesk 클라이언트를 처음 실행할 때만 발생합니다(즉, 새로 설치된 클라이언트에서만). 충돌이 발생하면 임의의 ID가 할당됩니다.
+
+RustDesk 클라이언트 버전 1.4.0 이상에서 사용 가능합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-hostname-as-id=Y` |
+
+### 웹소켓 사용
+
+서버와 클라이언트를 연결하려면 웹소켓 프로토콜을 사용하세요. 이 기능은 RustDesk 클라이언트 버전 1.4.0 이상 및 Pro 서버 버전 1.5.7 이상에서만 사용 가능합니다. 웹소켓은 릴레이 연결만 지원한다는 점에 유의해 주세요.
+
+웹소켓이 작동하도록 하려면 역프록시를 올바르게 구성해야 합니다. 자세한 내용은 [여기](/docs/ko/self-host/rustdesk-server-pro/faq/#8-id-서버와-릴레이-서버에-websocket-secure-wss-지원을-추가하여-모든-플랫폼에서-안전한-통신을-가능하게-하십시오)를 참조하세요.
+
+**위치**:
+
+**데스크톱** 설정 → 네트워크 → 웹소켓 사용
+**모바일** 설정 → 웹소켓 사용
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-websocket=Y` |
+
+### 허용-숫자-only-일회용비밀번호
+
+이 옵션은 숫자만 포함된 일회용 비밀번호의 사용을 활성화하거나 비활성화합니다.
+RustDesk 클라이언트 1.4.1 이상 및 Pro 서버 1.5.9 이상에서만 사용 가능합니다.
+
+**토론**: https://github.com/rustdesk/rustdesk-server-pro/discussions/685
+
+**미리보기**: https://github.com/rustdesk/rustdesk/pull/11846
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-numeric-one-time-password=Y` |
+
+### 디바이스 등록
+
+디바이스를 등록하지 마세요. 그러면 웹 콘솔의 디바이스 페이지에 표시되지 않습니다.
+
+**Pro 서버 >= 1.6.0에서만 사용 가능하며, [custom2 license](https://rustdesk.com/pricing#custom2) 및 동시 연결 수 >= 2가 필요합니다.**
+
+`register-device=N`인 경우, 아래는 이 장치에서 작동하지 않습니다.
+- 로그인
+- `--assign` 명령
+- `preset-address-book-name`, `preset-address-book-tag`, `preset-address-book-alias`, `preset-address-book-password`, `preset-address-book-note`, `preset-user-name`, `preset-strategy-name`, `preset-device-group-name`, `preset-device-username`, `preset-device-name`, `preset-note`
+- 감사 로그
+- 전략
+
+**토론**: https://github.com/rustdesk/rustdesk-server-pro/discussions/672 및 https://github.com/rustdesk/rustdesk-server-pro/discussions/182
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | Y | `register-device=N` |
+
+### 메인-윈도우-항상-최상위
+
+메인 창을 항상 최상위에 유지합니다.
+
+**토론**: https://github.com/rustdesk/rustdesk-server-pro/issues/761
+
+RustDesk 클라이언트 1.4.2에서만 사용 가능합니다.
+
+| 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: |
+| N | Y, N | N | `main-window-always-on-top=N` |
+
+### 릴레이-서버
+
+https://github.com/rustdesk/rustdesk-server-pro/issues/776#issuecomment-3306524913
+
+### 디스커버리 패널 비활성화
+
+RustDesk 클라이언트에서 `Discovered` 패널(또는 `Favorites` 패널 옆)을 비활성화합니다.
+
+| 옵션 | 설치 필요 | 값 | 기본값 | 예시 |
+| :------: | :------: | :------: | :------: | :------: |
+| disable-discovery-panel | N | Y, N | N | `disable-discovery-panel=Y` |
+
+### 터치 모드
+
+원격 제어 세션 중에 터치 모드를 사용할지 마우스 모드를 사용할지 여부를 제어합니다.
+
+#### 버전별 동작 차이
+
+##### RustDesk(제어 측) < 1.4.3
+
+첫 번째 연결 이후, 이 옵션은 각 피어에 대해 "터치 모드" 설정을 지정합니다. 이후에는 각 피어의 개별 설정이 터치 모드 또는 마우스 모드 사용 여부를 결정합니다.
+
+**위치**:
+
+1. **데스크톱**
+2. **모바일** 설정 → 디스플레이 설정 → 기타 기본 옵션 → 터치 모드
+
+##### RustDesk(제어 측) >= 1.4.3
+
+이 옵션은 모든 피어 장치가 터치 모드 또는 마우스 모드를 사용하도록 통합적으로 제어하며, 개별 장치 설정을 무시합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `touch-mode=Y` |
+
+### show-virtual-mouse
+
+https://github.com/rustdesk/rustdesk/pull/12911
+
+모바일 -> 데스크톱으로 전환 시 가상 마우스의 디스플레이를 제어합니다.
+
+**위치**:
+
+1. **데스크톱**
+2. **모바일** 원격 세션 -> 하단 탐색 바 -> 제스처 도우미
+
+RustDesk 1.4.3부터 사용 가능합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `show-virtual-mouse=Y` |
+
+**노트**: 이 옵션은 **재정의 설정**이 아닌 **기본 설정**에서 구성해야 합니다.
+
+### show-virtual-joystick
+
+https://github.com/rustdesk/rustdesk/pull/12911
+
+모바일 -> 데스크톱 시 전환 시 가상 조이스틱의 디스플레이를 제어합니다.
+
+이 옵션을 사용하려면 **show-virtual-mouse**가 활성화되어 있어야 합니다.
+
+**위치**:
+
+1. **데스크톱**
+2. **모바일** 원격 세션 -> 하단 탐색 바 -> 제스처 도우미
+
+RustDesk 1.4.3부터 사용 가능합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `show-virtual-joystick=Y` |
+
+**노트**: 이 옵션은 **재정의 설정**이 아닌 **기본 설정**에서 구성해야 합니다.
+
+### 보안되지 않은 TLS 폴백 허용
+
+기본적으로 RustDesk는 TLS를 사용하는 프로토콜에 대해 서버 인증서를 검증합니다.
+
+이 옵션을 활성화하면, 검증 실패 시 RustDesk가 검증 단계를 건너뛰고 계속 진행하게 됩니다.
+
+**위치**:
+
+**데스크톱** 설정 → 네트워크 → 보안되지 않은 TLS 폴백 허용
+**모바일** 설정 → 보안되지 않은 TLS 폴백 허용
+
+RustDesk 1.4.4부터 사용 가능합니다.
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-insecure-tls-fallback=Y` |
+
+### allow-ask-for-note
+
+연결이 끝날 때 제어 측에 노트를 입력하도록 요청합니다.
+
+클라이언트 UI에서 이 옵션을 활성화하고 아직 로그인하지 않은 경우, RustDesk는 먼저 로그인하도록 요청합니다.
+
+**위치**:
+
+1. **데스크톱** 설정 → 기타 → 연결 종료 시 노트 요청
+2. **모바일** 설정 → 연결 종료 시 노트 요청
+
+RustDesk 1.4.4부터 사용 가능합니다.
+
+**토론**: https://github.com/rustdesk/rustdesk/discussions/14606
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-ask-for-note=Y` |
+
+### 비밀번호 변경 영구 금지
+
+영구 비밀번호를 변경할 수 있는 기능을 비활성화합니다. 활성화된 경우 사용자는 UI 또는 명령줄을 통해 영구 비밀번호를 설정하거나 수정할 수 없습니다.
+
+RustDesk 1.4.5부터 사용 가능
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `disable-change-permanent-password=Y` |
+
+### 변경-ID 비활성화
+
+장치 ID를 변경할 수 있는 기능을 비활성화합니다. 활성화된 경우 사용자는 UI 또는 명령줄을 통해 ID를 변경할 수 없습니다.
+
+RustDesk 1.4.5부터 사용 가능
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `disable-change-id=Y` |
+
+### unlock-pin 비활성화
+
+PIN을 사용하여 설정 잠금 해제를 비활성화합니다. 활성화된 경우, PIN이 설정되어 있더라도 사용자는 시스템 관리자 권한을 사용해야만 설정을 잠금 해제할 수 있습니다.
+
+RustDesk 1.4.5부터 사용 가능
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `disable-unlock-pin=Y` |
+
+### 설정 비활성화 시 명령줄 설정 허용
+
+사용자 지정 클라이언트에서 `Disable settings`가 활성화된 경우 명령줄 설정을 통해 구성할 수 있습니다. Y로 설정하면 UI 설정만 비활성화되며, 명령줄 설정을 사용해 클라이언트를 구성할 수 있습니다.
+
+RustDesk 1.4.7부터 사용 가능
+
+| 값 | 기본값 | 예시 |
+| :------: | :------: | :------: |
+| Y, N | N | `allow-command-line-settings-when-settings-disabled=Y` |
\ No newline at end of file
diff --git a/content/self-host/client-deployment/_index.ko.md b/content/self-host/client-deployment/_index.ko.md
new file mode 100644
index 00000000..5cde6adf
--- /dev/null
+++ b/content/self-host/client-deployment/_index.ko.md
@@ -0,0 +1,426 @@
+---
+title: 클라이언트 배포
+weight: 400
+pre: "2.4. "
+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/(?.*)/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 ", 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
+```
+
+macOS 및 Linux에서는 `sudo`와 함께 명령어를 실행하십시오:
+
+```sh
+sudo rustdesk --deploy --token
+```
+
+### 선택적 사용자 지정 ID
+
+특정 RustDesk ID로 장치를 배포하려면 `--id `를 추가하세요:
+
+```sh
+rustdesk --deploy --token --id
+```
+
+ID가 이미 다른 기계에서 사용되고 있으면 배포가 실패하고 RustDesk는 해당 ID가 이미 사용 중이라고 보고합니다.
+
+### Android
+
+Android는 명령줄 배포 흐름을 사용하지 않습니다. 서버가 배포를 요구하고 Android 클라이언트가 아직 배포되지 않은 경우, RustDesk는 **배포** 프롬프트를 표시합니다. **확인**을 탭하고 배포 대화상자에 API 토큰을 입력한 다음, 선택적으로 사용자 지정 ID를 입력하세요. 또한 **설정 → 배포**에서 동일한 대화상자를 수동으로 열 수도 있습니다.
+
+배포가 성공하면 장치가 서버 장치 목록에 추가되고 클라이언트는 정상적으로 등록할 수 있습니다.
\ No newline at end of file
diff --git a/content/self-host/nat-loopback-issues/_index.ko.md b/content/self-host/nat-loopback-issues/_index.ko.md
new file mode 100644
index 00000000..804f0efa
--- /dev/null
+++ b/content/self-host/nat-loopback-issues/_index.ko.md
@@ -0,0 +1,155 @@
+---
+title: NAT 루프백 문제
+weight: 500
+pre: "2.5. "
+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 홈
+광고 차단 기능을 사용하면 문제가 발생할 수 있습니다. 해결 방법을 찾고 싶지 않고 이 기능을 비활성화하고 싶다면, '보호 비활성화' 버튼을 클릭하세요.
+
+
+
+
+'DNS 재작성' 설정으로 이동하세요.
+
+
+
+
+'DNS 재작성 추가'를 클릭한 다음, 필드에 `domain`와 서버의 `LAN IP`를 입력하세요.
+
+
+
+다음은 최종 결과의 모습입니다.
+
+
+
+***라우터의 LAN DHCP에 AdGuard 홈을 할당하는 것을 잊지 마세요!***
+
+
+#### 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
+```
+
+
+
+형식은 세 운영 체제 모두 동일합니다. `IP`가 먼저 오고 그다음에 `domain`가 옵니다. 한 줄에 하나의 항목입니다.
+
+예:
+
+```text
+192.168.11.20 rustdesk.example.com
+```
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-oss/Docker/_index.ko.md b/content/self-host/rustdesk-server-oss/Docker/_index.ko.md
new file mode 100644
index 00000000..7e577da5
--- /dev/null
+++ b/content/self-host/rustdesk-server-oss/Docker/_index.ko.md
@@ -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
+```
+
+
+
+{{% 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
+```
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-oss/_index.ko.md b/content/self-host/rustdesk-server-oss/_index.ko.md
new file mode 100644
index 00000000..4fee87c4
--- /dev/null
+++ b/content/self-host/rustdesk-server-oss/_index.ko.md
@@ -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: "2.1. "
+---
+
+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" %}}
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-oss/install/_index.ko.md b/content/self-host/rustdesk-server-oss/install/_index.ko.md
new file mode 100644
index 00000000..fb120465
--- /dev/null
+++ b/content/self-host/rustdesk-server-oss/install/_index.ko.md
@@ -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 .deb` 또는 `dpkg -i .deb`로 설치해 주세요.
+
+## 서버 설치 후 클라이언트는 무엇이 필요합니까?
+
+서버가 실행된 후, 클라이언트는 보통 `ID Server` 주소와 서버 공개 `Key`를 필요로 합니다. RustDesk Server Pro 클라이언트를 구성하는 경우, `API Server`도 필요할 수 있습니다. [this](/docs/ko/self-host/client-configuration/#2-수동-구성)를 확인해 주세요.
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-oss/synology/_index.ko.md b/content/self-host/rustdesk-server-oss/synology/_index.ko.md
new file mode 100644
index 00000000..815da046
--- /dev/null
+++ b/content/self-host/rustdesk-server-oss/synology/_index.ko.md
@@ -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" %}}
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-oss/synology/dsm-6/_index.ko.md b/content/self-host/rustdesk-server-oss/synology/dsm-6/_index.ko.md
new file mode 100644
index 00000000..5a2408ad
--- /dev/null
+++ b/content/self-host/rustdesk-server-oss/synology/dsm-6/_index.ko.md
@@ -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`를 다운로드하고 텍스트 편집기로 열어 키를 통해 확인하세요.
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-oss/synology/dsm-7/_index.ko.md b/content/self-host/rustdesk-server-oss/synology/dsm-7/_index.ko.md
new file mode 100644
index 00000000..6c67586b
--- /dev/null
+++ b/content/self-host/rustdesk-server-oss/synology/dsm-7/_index.ko.md
@@ -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
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-oss/windows/_index.ko.md b/content/self-host/rustdesk-server-oss/windows/_index.ko.md
new file mode 100644
index 00000000..9224dfe9
--- /dev/null
+++ b/content/self-host/rustdesk-server-oss/windows/_index.ko.md
@@ -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
+nssm install
+```
+
+**서비스 시작**
+
+서비스를 성공적으로 설치한 후에는 서비스를 시작해야 합니다.
+
+```cmd
+nssm start
+nssm start
+```
+
+**완료!**
+
+(위의 방법은 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`에 아래 명령어를 입력하고 각 줄마다 Enter 키를 누른 후 한 줄씩 실행해주세요.
+
+```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
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-pro/2fa/_index.ko.md b/content/self-host/rustdesk-server-pro/2fa/_index.ko.md
new file mode 100644
index 00000000..a72f6d8e
--- /dev/null
+++ b/content/self-host/rustdesk-server-pro/2fa/_index.ko.md
@@ -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 %}}
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-pro/_index.ko.md b/content/self-host/rustdesk-server-pro/_index.ko.md
new file mode 100644
index 00000000..9b87aa6d
--- /dev/null
+++ b/content/self-host/rustdesk-server-pro/_index.ko.md
@@ -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: "2.2. "
+---
+
+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://: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
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-pro/admin-role/_index.ko.md b/content/self-host/rustdesk-server-pro/admin-role/_index.ko.md
new file mode 100644
index 00000000..a163f68d
--- /dev/null
+++ b/content/self-host/rustdesk-server-pro/admin-role/_index.ko.md
@@ -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 관리자 역할
+
+- 관리자만이 관리자 역할을 편집하고 사용자에게 관리자 역할을 할당할 수 있습니다.
+- 관리자는 관리자 역할에 의해 제한되지 않으며, 관리자에게 관리자 역할을 할당할 수 있습니다.
+- 비관리자 사용자는 전역 사용자 권한이 부여되어 있더라도 관리자 계정을 편집할 수 없습니다.
+
+## 역할 유형
+
+관리자 역할은 세 가지 유형으로 나뉘며, 각각 다른 범위와 사용 가능한 권한을 갖습니다.
+
+| 유형 | 설명 |
+|------|-------------|
+| **전체** | 전체 팀의 모든 리소스를 관리할 수 있음 |
+| **개별** | 사용자의 자체 기기와 감사 로그만 관리할 수 있음 |
+| **그룹 범위** | 지정된 그룹 내의 사용자와 기기를 관리할 수 있음 |
+
+### 그룹 범위 정보
+
+| 선택됨 권한 | 적용 대상 |
+|-------|-------------|
+| **사용자 권한** | 선택된 사용자 그룹 내 사용자에 적용 |
+| **장치 권한** | 다음에서 장치에 적용:
선택된 장치 그룹
선택된 사용자 그룹 내 사용자에게 할당된 장치
할당되지 않은 장치(활성화된 경우)
|
+
+그룹 범위 역할에서 사용자 권한 또는 장치 권한만 선택하여 권한과 범위를 보다 명확히 할 수 있습니다. 예를 들어, 사용자 권한만 선택하면 어떤 장치 접근 권한 없이 사용자를 관리할 수 있으며, 장치 권한만 선택하면 사용자 그룹, 장치 그룹 또는 미할당 장치를 범위로 선택하여 장치를 관리할 수 있습니다.
+
+## 권한 규칙
+
+### 모든 편집 권한에는 해당하는 보기 권한이 포함됩니다
+
+모든 편집 권한은 자동으로 해당하는 보기 권한을 포함합니다. 예를 들어, "장치 활성화/비활성화" 권한에는 "장치 보기" 권한이 포함됩니다.
+
+### 편집 권한에는 할당이 포함되지 않습니다
+
+리소스(사용자 그룹, 장치 그룹, 전략, 제어 역할)에 대한 편집 권한은 리소스 자체만 편집할 수 있도록 하며, 이를 사용자나 장치에 할당하는 것은 허용되지 않습니다.
+
+예를 들어, "장치 그룹 편집" 권한은 장치 그룹을 생성하고 수정할 수 있지만, 그룹에 장치를 추가하거나 제거하려면 "장치 그룹 업데이트" 권한이 필요합니다.
+
+### 보기 권한에는 구성원이 포함되지 않습니다
+
+리소스(사용자 그룹, 장치 그룹, 전략, 제어 역할)에 대한 보기 권한은 리소스 자체만 볼 수 있도록 하며, 그 안의 구성원을 볼 수는 없습니다.
+
+예를 들어, "디바이스 그룹 보기" 권한은 디바이스 그룹 목록을 볼 수 있도록 허용하지만, 그룹 내의 디바이스를 보려면 "디바이스 보기" 권한 또는 어떤 디바이스 편집 권한이 필요합니다. 디바이스 권한이 전역인 경우 그룹 내 모든 디바이스를 볼 수 있으며, 그룹 범위 또는 개별 권한인 경우 허용된 범위 내의 디바이스만 볼 수 있습니다.
+
+{{% notice note %}}
+주소록의 디바이스 읽기는 관리자 역할에 의해 제한되지 않습니다. 클라이언트의 액세스 가능한 장치 피어 탭은 콘솔의 **설정 → 기타 → 액세스 가능한 장치 가져오기 비활성화**에 의해서만 제어되며, 관리자 역할에 의해 제한되지 않습니다.
+{{% /notice %}}
+
+## 콘솔 작업
+
+### 역할 생성
+
+1. **관리자 역할** 페이지로 이동하여 **생성**을 클릭하세요.
+2. 역할에 대한 **이름**을 입력하세요.
+3. **유형**을 선택하세요(그룹 범위인 경우 범위도 구성하세요).
+4. 부여할 **권한**을 선택하세요.
+
+
+
+
+### 역할 할당
+
+사용자에게 관리자 역할을 할당하는 방법은 두 가지가 있습니다:
+
+1. **사용자 페이지** → 사용자에서 **편집**을 클릭한 후 **관리자 역할** 필드에서 역할을 선택하세요.
+2. **관리자 역할 페이지** → **사용자 수** 또는 **사용자 할당**을 클릭한 후 역할에 사용자를 추가하거나 제거하세요.
+
+
+
+
+{{% notice note %}}
+- 사용자는 여러 개의 관리자 역할을 할당받을 수 있습니다. 할당된 모든 역할의 권한이 결합됩니다(모든 권한의 합집합).
+{{% /notice %}}
+
+## 권한 참조
+
+### 글로벌 권한
+
+| 권한 | 설명 |
+|------------|-------------|
+| 사용자-보기 | 모든 사용자의 목록 정보를 읽습니다. |
+| 사용자-생성 | 비관리자 사용자를 직접 생성합니다. |
+| 사용자-초대 | 이메일을 통해 사용자를 초대합니다. |
+| 사용자-삭제 | 비관리자 사용자를 삭제합니다. 사용자는 비활성화된 후에만 삭제할 수 있습니다. |
+| 사용자-활성화/비활성화 | 비관리자 사용자를 활성화하거나 비활성화합니다. |
+| 사용자-이메일 편집 | 비관리자 사용자의 이메일을 변경합니다. |
+| 사용자-비밀번호 변경 | 비관리자 사용자의 비밀번호를 변경합니다. |
+| 사용자-노트 편집 | 비관리자 사용자의 노트를 변경합니다. |
+| 사용자-2FA 관리 | 비관리자 사용자의 로그인 인증을 관리합니다. 2FA 강제 활성화/비활성화, 2FA 구성 재설정, 이메일 로그인 인증 비활성화 포함됩니다. |
+| 사용자-강제 로그아웃 | 모든 기기에서 비관리자 사용자의 로그아웃을 강제합니다. |
+| 사용자-그룹 업데이트 | 비관리자 사용자의 그룹을 변경합니다. |
+| 사용자-전략 업데이트 | 비관리자 사용자의 전략을 변경합니다. |
+| 사용자-제어 역할 업데이트 | 비관리자 사용자의 제어 역할을 변경합니다. |
+| 기기-보기 | 모든 기기의 목록 정보를 읽습니다. |
+| 기기-활성화/비활성화 | 어떤 기기도 활성화하거나 비활성화합니다. |
+| 기기-삭제 | 어떤 기기도 삭제합니다. 기기는 비활성화된 후에만 삭제할 수 있습니다. |
+| 기기-정보 편집 | 어떤 기기의 이름, 기기 사용자 이름(기기의 시스템 사용자 이름, RustDesk 사용자가 아님), 그리고 노트를 편집합니다. |
+| 기기-사용자 할당 | 어떤 기기를 어떤 사용자에게 할당합니다. |
+| 기기-그룹 업데이트 | 어떤 기기의 그룹을 변경합니다. |
+| 기기-전략 업데이트 | 어떤 기기의 전략을 변경합니다. |
+| 사용자 그룹-보기 | 모든 사용자 그룹의 목록 정보를 읽습니다. 사용자 보기 권한이 있으면 그룹 구성원을 볼 수 있습니다. 사용자 그룹 업데이트 권한이 있으면 여기서 사용자의 그룹을 일괄 업데이트할 수 있습니다. |
+| 사용자 그룹-편집 | 사용자 그룹을 생성, 편집, 삭제하며, 그룹 구성원 업데이트는 포함하지 않습니다. |
+| 기기 그룹-보기 | 모든 기기 그룹의 목록 정보를 읽습니다. 기기 보기 권한이 있으면 그룹 구성원을 볼 수 있습니다. 기기 그룹 업데이트 권한이 있으면 여기서 기기의 그룹을 일괄 업데이트할 수 있습니다. |
+| 기기 그룹-편집 | 기기 그룹을 생성, 편집, 삭제하며, 그룹 구성원 업데이트는 포함하지 않습니다. 전략 업데이트 권한도 포함됩니다. |
+| 기기 그룹-전략 업데이트 | 어떤 기기 그룹의 전략을 변경합니다. |
+| 감사 로그-보기 | 모든 로그를 읽습니다. 노트를 편집할 수 있습니다. "관리자만 로그에 접근 가능" 옵션이 활성화되어 있어도 가능합니다. |
+| 감사 로그-편집 | 어떤 활성 연결도 연결 해제할 수 있습니다. |
+| 전략-보기 | 어떤 전략도 읽습니다. 사용자 보기, 기기 보기, 기기 그룹 보기 권한이 있으면 사용자, 기기, 기기 그룹의 전략을 읽을 수 있습니다. 사용자 전략 업데이트, 기기 전략 업데이트, 기기 그룹 전략 업데이트 권한이 있으면 여기서 해당 전략을 일괄 업데이트할 수 있습니다. |
+| 전략-편집 | 전략을 생성, 편집, 삭제하며, 사용자, 기기, 기기 그룹의 전략 업데이트는 포함하지 않습니다. |
+| 제어 역할-보기 | 어떤 제어 역할도 읽습니다. 사용자 보기 권한이 있으면 사용자의 제어 역할을 읽을 수 있습니다. 사용자 제어 역할 업데이트 권한이 있으면 여기서 해당 제어 역할을 일괄 업데이트할 수 있습니다. |
+| 제어 역할-편집 | 제어 역할을 생성, 편집, 삭제하며, 사용자의 제어 역할 업데이트는 포함하지 않습니다. |
+| 사용자 지정 클라이언트-보기 | 사용자 지정 클라이언트의 목록을 읽습니다. 컴파일된 사용자 지정 클라이언트를 다운로드할 수 있습니다. 사용자 지정 클라이언트의 상세 구성은 읽을 수 없습니다. |
+| 사용자 지정 클라이언트-편집 | 사용자 지정 클라이언트를 생성, 편집, 삭제합니다.
+
+### 개별 권한
+
+| 권한 | 설명 |
+|------------|-------------|
+| 장치-보기 | 사용자의 장치 목록 정보를 읽습니다. |
+| 장치-활성화/비활성화 | 사용자의 장치를 활성화하거나 비활성화합니다. |
+| 장치-삭제 | 사용자의 장치를 삭제합니다. 장치를 삭제하려면 먼저 비활성화해야 합니다. |
+| 장치-정보 편집 | 사용자의 장치 이름, 장치 사용자 이름(장치의 시스템 사용자 이름이 아니라 RustDesk 사용자 이름), 및 노트를 편집합니다. |
+| 장치-전략 변경 | 사용자의 장치 전략을 변경합니다. |
+| 감사 로그-보기 | 개인 로그를 읽습니다. 노트를 편집할 수 있습니다. "관리자만 로그에 접근 가능" 옵션이 활성화된 경우에도 가능합니다. |
+| 감사 로그-편집 | 개인의 활성 연결을 연결 해제할 수 있습니다. |
+
+### 그룹 범위 권한
+
+| 권한 | 설명 |
+|------------|-------------|
+| 사용자-보기 | 선택된 사용자 그룹 내 사용자의 목록 정보를 읽습니다. |
+| 사용자-생성 | 선택된 사용자 그룹 내 비관리자 사용자를 생성합니다. |
+| 사용자-초대 | 선택된 사용자 그룹 내 이메일을 통해 사용자를 초대합니다. |
+| 사용자-삭제 | 선택된 사용자 그룹 내 비관리자 사용자를 삭제합니다. 사용자는 삭제되기 전에 비활성화되어야 합니다. |
+| 사용자-활성화/비활성화 | 선택된 사용자 그룹 내 비관리자 사용자를 활성화하거나 비활성화합니다. |
+| 사용자-이메일 편집 | 선택된 사용자 그룹 내 비관리자 사용자의 이메일을 변경합니다. |
+| 사용자-비밀번호 변경 | 선택된 사용자 그룹 내 비관리자 사용자의 비밀번호를 변경합니다. |
+| 사용자-노트 편집 | 선택된 사용자 그룹 내 비관리자 사용자의 노트를 변경합니다. |
+| 사용자-2FA 관리 | 선택된 사용자 그룹 내 비관리자 사용자의 로그인 인증을 관리합니다. 2FA 강제 활성화/비활성화, 2FA 구성 재설정, 이메일 로그인 인증 비활성화 포함됩니다. |
+| 사용자-강제 로그아웃 | 선택된 사용자 그룹 내 비관리자 사용자를 모든 기기에서 강제로 로그아웃시킵니다. |
+| 사용자-전략 업데이트 | 선택된 사용자 그룹 내 비관리자 사용자의 전략을 변경합니다. |
+| 사용자-제어 역할 업데이트 | 선택된 사용자 그룹 내 비관리자 사용자의 제어 역할을 변경합니다. |
+| 기기-보기 | 현재 역할이 관리하는 기기의 목록 정보를 읽습니다. |
+| 기기-활성화/비활성화 | 현재 역할이 관리하는 기기를 활성화하거나 비활성화합니다. |
+| 기기-삭제 | 현재 역할이 관리하는 기기를 삭제합니다. 기기는 삭제되기 전에 비활성화되어야 합니다. |
+| 기기-정보 편집 | 현재 역할이 관리하는 기기의 이름, 기기 사용자 이름(기기의 시스템 사용자 이름, RustDesk 사용자가 아님), 그리고 노트를 편집합니다. |
+| 기기-전략 업데이트 | 현재 역할이 관리하는 기기의 전략을 변경합니다. |
\ No newline at end of file
diff --git a/content/self-host/rustdesk-server-pro/console/_index.ko.md b/content/self-host/rustdesk-server-pro/console/_index.ko.md
new file mode 100644
index 00000000..62d012a5
--- /dev/null
+++ b/content/self-host/rustdesk-server-pro/console/_index.ko.md
@@ -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://:21114`를 입력하여 콘솔 페이지로 들어가세요. 기본 관리자 사용자 이름/비밀번호는 `admin`/`test1234`입니다:
+
+
+
+HTTPS 지원이 필요하다면 `Nginx`와 같은 웹 서버를 설치하거나 Windows용 `IIS`를 사용하십시오.
+
+로그인한 후 반드시 비밀번호를 변경하십시오. 오른쪽 상단의 계정 메뉴에서 `Settings`를 선택하여 비밀번호 변경 페이지로 이동하십시오. 아래 그림과 같습니다. 또한 다른 관리자 계정을 생성하고 현재 계정을 삭제할 수도 있습니다. 이메일 로그인 인증을 활성화하는 것이 좋습니다.
+
+
+
+
+비관리자 사용자도 로그인하여 기기 및 로그를 둘러보고 사용자 설정을 변경할 수 있습니다.
+
+## 자동 구성
+`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 주소를 입력하고 Enter 키를 누르세요.
+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 --user_name
+```
+
+지원되는 매개변수
+
+| 매개변수 | 설명 | RustDesk 서버 Pro | RustDesk 클라이언트 |
+| --------------------------------------- | --------------------------------------- | ------------------- | --------------- |
+| `--user_name ` | 사용자를 장치에 할당 | | |
+| `--strategy_name ` | 장치에 전략을 할당 | | |
+| `--address_book_name ` | 장치를 주소록에 할당 | | |
+| `--address_book_tag ` | 주소록 태그로 할당 | | |
+| `--address_book_alias ` | 주소록 별명으로 할당 | 1.5.8 | 1.4.1 |
+| `--address_book_password ` | 주소록 항목의 비밀번호 설정 | 1.6.6 | 1.4.3 |
+| `--address_book_note ` | 주소록 항목의 노트 설정 | 1.6.6 | 1.4.3 |
+| `--device_group_name ` | 장치를 장치 그룹에 할당 | | |
+| `--note ` | 장치에 노트 추가 | 1.6.6 | 1.4.3 |
+| `--device_username ` | 장치의 사용자 이름 설정 | 1.6.6 | 1.4.3 |
+| `--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" ... | more` 또는 `"C:\Program Files\RustDesk\rustdesk.exe" ... | Out-String`, [here](https://github.com/rustdesk/rustdesk/discussions/6377#discussioncomment-8094952)를 참조하세요.
+
+### Python CLI 관리 도구
+
+#### 사용자 관리 (`users.py`)
+
+**도움말 표시:**
+`./users.py -h`
+
+**사용자 보기:**
+`./users.py --url --token view [--name ] [--group_name ]`
+
+**필터:**
+- `--name`: 사용자 이름(퍼지 검색)
+- `--group_name`: 사용자 그룹(정확한 일치)
+
+**예제:**
+`./users.py --url https://example.com --token view --group_name Default`
+
+**기본 작업:**
+
+- **사용자 비활성화:**
+ `./users.py --url --token disable --name testuser`
+
+- **사용자 활성화:**
+ `./users.py --url --token enable --name testuser`
+
+- **사용자 삭제:**
+ `./users.py --url --token delete --name testuser`
+
+**사용자 생성 및 초대:**
+
+- **새 사용자 생성:**
+ `./users.py --url --token new --name username --password 'password123' --group_name Default [--email user@example.com] [--note "note"]`
+
+ 필수: `--name`, `--password`, `--group_name`
+ 선택적: `--email`, `--note`
+
+- **이메일로 사용자 초대:**
+ `./users.py --url --token invite --email user@example.com --name username --group_name Default [--note "note"]`
+
+ 필수: `--email`, `--name`, `--group_name`
+ 선택적: `--note`
+
+**2FA 및 보안 작업:**
+
+- **2FA 시행 활성화:**
+ `./users.py --url --token enable-2fa-enforce --name username --web-console-url `
+
+ 필수: `--web-console-url`
+
+- **2FA 시행 비활성화:**
+ `./users.py --url --token disable-2fa-enforce --name username [--web-console-url ]`
+
+ 선택적: `--web-console-url`
+
+- **2FA 재설정:**
+ `./users.py --url --token reset-2fa --name username`
+
+- **이메일 인증 비활성화:**
+ `./users.py --url --token disable-email-verification --name username`
+
+- **강제 로그아웃:**
+ `./users.py --url --token force-logout --name username`
+
+**참고:**
+- 여러 사용자(필터로 매칭됨)를 작업할 때, 확인을 요청받게 됩니다.
+- 필터에 맞는 사용자가 없으면 "사용자 0명 발견"이라고 표시됩니다.
+
+---
+
+#### 사용자 그룹 관리 (`user_group.py`)
+
+**도움말 표시:**
+`./user_group.py -h`
+
+**사용자 그룹 보기:**
+`./user_group.py --url --token view [--name ]`
+
+**예제:**
+`./user_group.py --url https://example.com --token view --name "Sales Team"`
+
+**그룹 작업:**
+
+- **사용자 그룹 생성:**
+ `./user_group.py --url --token add --name "GroupName" [--note "description"] [--accessed-from ''] [--access-to '']`
+
+ 접근 제어 포함 예제:
+ `./user_group.py --url --token add --name "Engineering" --accessed-from '[{"type":0,"name":"Managers"}]' --access-to '[{"type":1,"name":"DevServers"}]'`
+
+- **사용자 그룹 업데이트:**
+ `./user_group.py --url --token update --name "GroupName" [--new-name "NewName"] [--note "new note"] [--accessed-from ''] [--access-to '']`
+
+- **사용자 그룹 삭제:**
+ `./user_group.py --url --token delete --name "GroupName"`
+
+ 쉼표로 구분된 이름 지원: `--name "Group1,Group2,Group3"`
+
+**그룹 내 사용자 관리:**
+
+- **그룹의 사용자 보기:**
+ `./user_group.py --url --token view-users [--name ] [--user-name ]`
+
+ 필터:
+ - `--name`: 그룹 이름(정확한 일치, 선택 사항)
+ - `--user-name`: 사용자 이름(부분 일치 검색, 선택 사항)
+
+ 예제:
+ `./user_group.py --url --token view-users --name Default --user-name john`
+
+- **그룹에 사용자 추가:**
+ `./user_group.py --url --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 --token view [--name ]`
+
+**예제:**
+`./device_group.py --url https://example.com --token view`
+
+**그룹 작업:**
+
+- **디바이스 그룹 생성:**
+ `./device_group.py --url --token add --name "GroupName" [--note "description"] [--accessed-from '']`
+
+ 예제:
+ `./device_group.py --url --token add --name "Production" --accessed-from '[{"type":0,"name":"Admins"}]'`
+
+- **기기 그룹 업데이트:**
+ `./device_group.py --url --token update --name "GroupName" [--new-name "NewName"] [--note "new note"] [--accessed-from '']`
+
+- **기기 그룹 삭제:**
+ `./device_group.py --url --token delete --name "GroupName"`
+
+ 쉼표로 구분된 이름 지원: `--name "Group1,Group2,Group3"`
+
+**그룹별 기기 관리:**
+
+- **그룹의 장치 보기:**
+ `./device_group.py --url --token view-devices [filters]`
+
+ 사용 가능한 필터:
+ - `--name`: 장치 그룹 이름(정확한 일치)
+ - `--id`: 장치 ID(부분 일치 검색)
+ - `--device-name`: 장치 이름(부분 일치 검색)
+ - `--user-name`: 사용자 이름/소유자(부분 일치 검색)
+ - `--device-username`: 장치에서 로그인한 사용자 이름(부분 일치 검색)
+
+ 예시:
+
+ ```bash
+ # View all devices in a group
+ ./device_group.py --url --token view-devices --name Production
+
+ # Search by device name
+ ./device_group.py --url --token view-devices --device-name server
+
+ # Combine filters
+ ./device_group.py --url --token view-devices --name Production --user-name john
+ ```
+
+- **그룹에 장치 추가:**
+ `./device_group.py --url --token add-devices --name "GroupName" --ids "deviceid1,deviceid2"`
+
+- **그룹에서 장치 제거:**
+ `./device_group.py --url --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 --token view [--id ] [--device_name ] [--user_name ] [--group_name ] [--device_group_name ] [--offline_days ]`
+
+**필터:**
+`--id`: 장치 ID
+`--device_name`: 장치 이름
+`--user_name`: 할당된 사용자
+`--group_name`: 사용자 그룹
+`--device_group_name`: 장치 그룹
+`--offline_days`: 오프라인 일수
+
+**예제:**
+`./devices.py --url https://example.com --token view --user_name mike`
+
+**작업:**
+view는 `enable`, `disable`, `delete` 또는 `assign`로 대체할 수 있습니다.
+
+**예제 (장치 할당):**
+`./devices.py --url https://example.com --token assign --device_name PC01 --assign_to user_name=mike`
+
+---
+
+#### 주소록 관리 (`ab.py`)
+
+**도움말 표시:**
+`./ab.py -h`
+
+**공유된 주소록 보기:**
+`./ab.py --url --token view-ab [--ab-name ]`
+
+**개인 주소록 GUID 받기:**
+`./ab.py --url --token get-personal-ab`
+
+**공유 주소록 추가하기:**
+`./ab.py --url --token add-ab --ab-name [--note ] [--password ]`
+
+**공유 주소록 업데이트 또는 삭제하기:**
+`./ab.py --url --token update-ab --ab-guid [--ab-update-name ] [--note ]`
+`./ab.py --url --token delete-ab --ab-guid `
+
+**주소록에서 피어 보기:**
+`./ab.py --url --token view-peer --ab-guid [--peer-id ] [--alias ]`
+
+**피어 추가, 업데이트 또는 삭제:**
+`./ab.py --url --token add-peer --ab-guid --peer-id [--alias ] [--note ] [--tags tag1,tag2]`
+`./ab.py --url --token update-peer --ab-guid --peer-id [--alias ] [--note ] [--tags tag1,tag2]`
+`./ab.py --url --token delete-peer --ab-guid --peer-id `
+
+**태그 관리:**
+`./ab.py --url --token view-tag --ab-guid `
+`./ab.py --url --token add-tag --ab-guid --tag-name [--tag-color 0xFF00FF00]`
+`./ab.py --url --token update-tag --ab-guid --tag-name --tag-color 0xFFFF0000`
+`./ab.py --url --token delete-tag --ab-guid --tag-name `
+
+**액세스 규칙 관리:**
+`./ab.py --url --token view-rule --ab-guid `
+`./ab.py --url --token add-rule --ab-guid [--rule-type user|group|everyone] [--rule-user ] [--rule-group ] --rule-permission ro|rw|full`
+`./ab.py --url --token update-rule --rule-guid --rule-permission rw`
+`./ab.py --url --token delete-rule --rule-guid `
+
+**예제 (사용자 "mike"에 대한 읽기 전용 규칙 추가):**
+`./ab.py --url https://example.com --token <토큰> add-rule --ab-guid --rule-user mike --rule-permission ro`
+
+---
+
+#### 전략 관리(`strategies.py`)
+
+**도움말 표시:**
+`./strategies.py -h`
+
+**모든 전략 목록 보기:**
+`./strategies.py --url --token <토큰> list`
+
+**특정 전략 보기:**
+
+```bash
+# By name
+./strategies.py --url --token view --name "Default"
+
+# By GUID
+./strategies.py --url --token view --guid "01983006-fcca-7c12-9a91-b1df483c6073"
+```
+
+**전략 활성화 또는 비활성화:**
+
+```bash
+./strategies.py --url --token enable --name "StrategyName"
+./strategies.py --url --token disable --name "StrategyName"
+```
+
+**장치, 사용자 또는 장치 그룹에 전략 할당:**
+
+```bash
+# Assign to devices (by device ID)
+./strategies.py --url --token assign --name "Default" --peers "1849118658,1337348840"
+
+# Assign to users (by username)
+./strategies.py --url --token assign --name "Default" --users "admin,user1"
+
+# Assign to device groups (by group name)
+./strategies.py --url --token assign --name "Default" --device-groups "device_group1,Production"
+
+# Mixed assignment
+./strategies.py --url --token assign \
+ --name "Default" \
+ --peers "1849118658" \
+ --users "admin" \
+ --device-groups "device_group1"
+```
+
+**할당 해제 전략:**
+
+```bash
+# Unassign from devices
+./strategies.py --url --token unassign --peers "1849118658,1337348840"
+
+# Unassign from users
+./strategies.py --url --token unassign --users "admin"
+
+# Unassign from device groups
+./strategies.py --url --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 --token view-conn [--remote ] [--conn-type ] [--page-size ] [--current ] [--created-at <"YYYY-MM-DD HH:MM:SS">] [--days-ago ]`
+
+**파일 감사 보기:**
+`./audits.py --url --token view-file [--remote ] [--page-size ] [--current ] [--created-at <"YYYY-MM-DD HH:MM:SS">] [--days-ago