Просмотр исходного кода

Add README for Traditional Chinese (#364)

* Add README-TW.md

* Add "繁體中文" hyperlink to README.md

* Add English hyperlink to README-TW.md

* Add "繁體中文" hyperlink to README-NL.md

* Add "繁體中文" hyperlink to README-DE.md
XLion 1 год назад
Родитель
Сommit
bac9548f86
4 измененных файлов с 350 добавлено и 3 удалено
  1. 1 1
      README-DE.md
  2. 1 1
      README-NL.md
  3. 347 0
      README-TW.md
  4. 1 1
      README.md

+ 1 - 1
README-DE.md

@@ -5,7 +5,7 @@
5 5
   <a href="#ein-schlüsselpaar-erstellen">Schlüsselpaar</a> •
6 6
   <a href="#debian-pakete">Debian-Pakete</a> •
7 7
   <a href="#umgebungsvariablen">Umgebungsvariablen</a><br>
8
-  [<a href="README.md">English</a>] | [<a href="README-NL.md">Nederlands</a>]<br>
8
+  [<a href="README.md">English</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-TW.md">繁體中文</a>]<br>
9 9
 </p>
10 10
 
11 11
 # RustDesk Server-Programm

+ 1 - 1
README-NL.md

@@ -5,7 +5,7 @@
5 5
   <a href="#hoe-maak-je-een-key-paar">Key paar</a> •
6 6
   <a href="#deb-pakketten">Debian pakketten</a> •
7 7
   <a href="#env-variabelen">ENV variabelen</a><br>
8
-  [<a href="README.md">English</a>] | [<a href="README-DE.md">Deutsch</a>]<br>
8
+  [<a href="README.md">English</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-TW.md">繁體中文</a>]<br>
9 9
 </p>
10 10
 
11 11
 # RustDesk Server Programa

+ 347 - 0
README-TW.md

@@ -0,0 +1,347 @@
1
+<p align="center">
2
+  <a href="#如何自行建置">自行建置</a> •
3
+  <a href="#Docker-映像檔">Docker</a> •
4
+  <a href="#基於-S6-overlay-的映象檔">S6-overlay</a> •
5
+  <a href="#如何建立金鑰對">金鑰對</a> •
6
+  <a href="#deb-套件">Debian</a> •
7
+  <a href="#ENV-環境參數">環境參數</a><br>
8
+  [<a href="README.md">English</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-NL.md">Nederlands</a>]<br>
9
+</p>
10
+
11
+# RustDesk Server Program
12
+
13
+[![build](https://github.com/rustdesk/rustdesk-server/actions/workflows/build.yaml/badge.svg)](https://github.com/rustdesk/rustdesk-server/actions/workflows/build.yaml)
14
+
15
+[**下載**](https://github.com/rustdesk/rustdesk-server/releases)
16
+
17
+[**說明文件**](https://rustdesk.com/docs/zh-tw/self-host/)
18
+
19
+[**FAQ**](https://github.com/rustdesk/rustdesk/wiki/FAQ)
20
+
21
+自行建置屬於您自己的 RustDesk 伺服器,它是免費的且開源。
22
+
23
+## 如何自行建置
24
+
25
+```bash
26
+cargo build --release
27
+```
28
+
29
+在 target/release 中會產生三個可執行檔。
30
+
31
+- hbbs - RustDesk ID/會合伺服器
32
+- hbbr - RustDesk 中繼伺服器
33
+- rustdesk-utils - RustDesk 命令行工具
34
+
35
+您可以在 [releases](https://github.com/rustdesk/rustdesk-server/releases) 頁面上找到更新的執行檔。
36
+
37
+如果您需要額外功能,[RustDesk 專業版伺服器](https://rustdesk.com/pricing.html) 或許更適合您。
38
+
39
+如果您想開發自己的伺服器,[rustdesk-server-demo](https://github.com/rustdesk/rustdesk-server-demo) 可能是一個比這個倉庫更好、更簡單的開始。
40
+
41
+## Docker 映像檔
42
+
43
+Docker 映像檔會在每次 GitHub 發布時自動生成並發布。我們有兩種映像檔。
44
+
45
+### Classic 映像檔
46
+
47
+這些映像檔是基於 `ubuntu-20.04` 建置的,僅添加了兩個主要的執行檔(`hbbr` 和 `hbbs`)。它們可在 [Docker Hub](https://hub.docker.com/r/rustdesk/rustdesk-server/) 上取得,帶有以下tags:
48
+
49
+| 架構    | image:tag                                 |
50
+| ------- | ----------------------------------------- |
51
+| amd64   | `rustdesk/rustdesk-server:latest`         |
52
+| arm64v8 | `rustdesk/rustdesk-server:latest-arm64v8` |
53
+
54
+您可以使用以下指令,直接透過 ``docker run`` 來啟動這些映像檔:
55
+
56
+```bash
57
+docker run --name hbbs --net=host -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbs -r <relay-server-ip[:port]> 
58
+docker run --name hbbr --net=host -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbr 
59
+```
60
+
61
+或刪去 `--net=host`, 但 P2P 直接連線會無法運作。
62
+
63
+對於使用 SELinux 的系統,需要將 ``/root`` 替換為 ``/root:z``,以便容器正確運行。或者,也可以通過添加選項 ``--security-opt label=disable`` 完全禁用 SELinux 容器隔離。
64
+
65
+```bash
66
+docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbs -r <relay-server-ip[:port]> 
67
+docker run --name hbbr -p 21117:21117 -p 21119:21119 -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbr 
68
+```
69
+
70
+`relay-server-ip` 參數是執行這些容器的伺服器的 IP 地址(或 DNS 名稱)。如果您為 `hbbr` 使用的端口不是 **21117**,則必須使用 **可選** 的 `port` 參數。
71
+
72
+您也可以使用 docker-compose 使用這個設定做為範例:
73
+
74
+```yaml
75
+version: '3'
76
+
77
+networks:
78
+  rustdesk-net:
79
+    external: false
80
+
81
+services:
82
+  hbbs:
83
+    container_name: hbbs
84
+    ports:
85
+      - 21115:21115
86
+      - 21116:21116
87
+      - 21116:21116/udp
88
+      - 21118:21118
89
+    image: rustdesk/rustdesk-server:latest
90
+    command: hbbs -r rustdesk.example.com:21117
91
+    volumes:
92
+      - ./data:/root
93
+    networks:
94
+      - rustdesk-net
95
+    depends_on:
96
+      - hbbr
97
+    restart: unless-stopped
98
+
99
+  hbbr:
100
+    container_name: hbbr
101
+    ports:
102
+      - 21117:21117
103
+      - 21119:21119
104
+    image: rustdesk/rustdesk-server:latest
105
+    command: hbbr
106
+    volumes:
107
+      - ./data:/root
108
+    networks:
109
+      - rustdesk-net
110
+    restart: unless-stopped
111
+```
112
+
113
+請編輯第 16 行,將其指向您的中繼伺服器 (監聽端口 21117 那一個)。 如果需要的話,您也可以編輯 volume  (第 18 和 33 行)。
114
+
115
+(感謝 @lukebarone 和 @QuiGonLeong 協助提供 docker-compose 的設定範例)
116
+
117
+## 基於 S6-overlay 的映象檔
118
+
119
+這些映象檔是針對 `busybox:stable` 建置的,並添加了執行檔(hbbr 和 hbbs)以及 [S6-overlay](https://github.com/just-containers/s6-overlay)。 它們在以及這些 tags 在 [Docker hub](https://hub.docker.com/r/rustdesk/rustdesk-server-s6/) 可用:
120
+
121
+| 架構      | version | image:tag                                    |
122
+| --------- | ------- | -------------------------------------------- |
123
+| multiarch | latest  | `rustdesk/rustdesk-server-s6:latest`         |
124
+| amd64     | latest  | `rustdesk/rustdesk-server-s6:latest-amd64`   |
125
+| i386      | latest  | `rustdesk/rustdesk-server-s6:latest-i386`    |
126
+| arm64v8   | latest  | `rustdesk/rustdesk-server-s6:latest-arm64v8` |
127
+| armv7     | latest  | `rustdesk/rustdesk-server-s6:latest-armv7`   |
128
+| multiarch | 2       | `rustdesk/rustdesk-server-s6:2`              |
129
+| amd64     | 2       | `rustdesk/rustdesk-server-s6:2-amd64`        |
130
+| i386      | 2       | `rustdesk/rustdesk-server-s6:2-i386`         |
131
+| arm64v8   | 2       | `rustdesk/rustdesk-server-s6:2-arm64v8`      |
132
+| armv7     | 2       | `rustdesk/rustdesk-server-s6:2-armv7`        |
133
+| multiarch | 2.0.0   | `rustdesk/rustdesk-server-s6:2.0.0`          |
134
+| amd64     | 2.0.0   | `rustdesk/rustdesk-server-s6:2.0.0-amd64`    |
135
+| i386      | 2.0.0   | `rustdesk/rustdesk-server-s6:2.0.0-i386`     |
136
+| arm64v8   | 2.0.0   | `rustdesk/rustdesk-server-s6:2.0.0-arm64v8`  |
137
+| armv7     | 2.0.0   | `rustdesk/rustdesk-server-s6:2.0.0-armv7`    |
138
+
139
+強烈建議您使用 `multiarch` 映象檔 可以選擇使用 `major version` 或 `latest` tags。
140
+
141
+S6-overlay 在此充當監督程序,保持兩個進程運行,因此使用此映象檔,您無需運行兩個獨立的容器。
142
+
143
+您可以直接使用以下命令使用 `docker run` 來啟動這個映象檔:
144
+
145
+```bash
146
+docker run --name rustdesk-server \ 
147
+  --net=host \
148
+  -e "RELAY=rustdeskrelay.example.com" \
149
+  -e "ENCRYPTED_ONLY=1" \
150
+  -v "$PWD/data:/data" -d rustdesk/rustdesk-server-s6:latest
151
+```
152
+
153
+或刪去 `--net=host`, 但 P2P 直接連線會無法運作。
154
+
155
+```bash
156
+docker run --name rustdesk-server \
157
+  -p 21115:21115 -p 21116:21116 -p 21116:21116/udp \
158
+  -p 21117:21117 -p 21118:21118 -p 21119:21119 \
159
+  -e "RELAY=rustdeskrelay.example.com" \
160
+  -e "ENCRYPTED_ONLY=1" \
161
+  -v "$PWD/data:/data" -d rustdesk/rustdesk-server-s6:latest
162
+```
163
+
164
+或是您可以使用 docker-compose 文件:
165
+
166
+```yaml
167
+version: '3'
168
+
169
+services:
170
+  rustdesk-server:
171
+    container_name: rustdesk-server
172
+    ports:
173
+      - 21115:21115
174
+      - 21116:21116
175
+      - 21116:21116/udp
176
+      - 21117:21117
177
+      - 21118:21118
178
+      - 21119:21119
179
+    image: rustdesk/rustdesk-server-s6:latest
180
+    environment:
181
+      - "RELAY=rustdesk.example.com:21117"
182
+      - "ENCRYPTED_ONLY=1"
183
+    volumes:
184
+      - ./data:/data
185
+    restart: unless-stopped
186
+```
187
+
188
+對於此容器映象檔,您可以使用這些環境變數,**除了**以下**環境變數**部分指定的那些。
189
+
190
+| 環境變數       | 是否可選 | 敘述                                       |
191
+| -------------- | -------- | ------------------------------------------ |
192
+| RELAY          | 否       | 運行此容器的機器的 IP 地址/ DNS 名稱       |
193
+| ENCRYPTED_ONLY | 是       | 如果設置為 **"1"**,將不接受未加密的連接。 |
194
+| KEY_PUB        | 是       | 金鑰對中的公鑰(Public Key)               |
195
+| KEY_PRIV       | 是       | 金鑰對中的私鑰(Private Key)               |
196
+
197
+###  在基於 S6-overlay 的 Secret 管理
198
+
199
+您可以將金鑰對保存在 Docker volume 中,但最佳實踐建議不要將金鑰寫入文件系統;因此,我們提供了一些選項。
200
+
201
+在容器啟動時,會檢查金鑰對的是否存在(`/data/id_ed25519.pub` 和 `/data/id_ed25519`),如果其中一個金鑰不存在,則會從環境變數或 Docker Secret 重新生成它。
202
+然後檢查金鑰對的有效性:如果公鑰和私鑰不匹配,容器將停止運行。
203
+如果您未提供金鑰,`hbbs` 將為您產生一個,並將其放置在默認位置。
204
+
205
+#### 使用 ENV 存儲金鑰對
206
+
207
+您可以使用 Docker 環境變數來儲存金鑰。只需按照以下範例操作:
208
+
209
+```bash
210
+docker run --name rustdesk-server \ 
211
+  --net=host \
212
+  -e "RELAY=rustdeskrelay.example.com" \
213
+  -e "ENCRYPTED_ONLY=1" \
214
+  -e "DB_URL=/db/db_v2.sqlite3" \
215
+  -e "KEY_PRIV=FR2j78IxfwJNR+HjLluQ2Nh7eEryEeIZCwiQDPVe+PaITKyShphHAsPLn7So0OqRs92nGvSRdFJnE2MSyrKTIQ==" \
216
+  -e "KEY_PUB=iEyskoaYRwLDy5+0qNDqkbPdpxr0kXRSZxNjEsqykyE=" \
217
+  -v "$PWD/db:/db" -d rustdesk/rustdesk-server-s6:latest
218
+```
219
+
220
+```yaml
221
+version: '3'
222
+
223
+services:
224
+  rustdesk-server:
225
+    container_name: rustdesk-server
226
+    ports:
227
+      - 21115:21115
228
+      - 21116:21116
229
+      - 21116:21116/udp
230
+      - 21117:21117
231
+      - 21118:21118
232
+      - 21119:21119
233
+    image: rustdesk/rustdesk-server-s6:latest
234
+    environment:
235
+      - "RELAY=rustdesk.example.com:21117"
236
+      - "ENCRYPTED_ONLY=1"
237
+      - "DB_URL=/db/db_v2.sqlite3"
238
+      - "KEY_PRIV=FR2j78IxfwJNR+HjLluQ2Nh7eEryEeIZCwiQDPVe+PaITKyShphHAsPLn7So0OqRs92nGvSRdFJnE2MSyrKTIQ=="
239
+      - "KEY_PUB=iEyskoaYRwLDy5+0qNDqkbPdpxr0kXRSZxNjEsqykyE="
240
+    volumes:
241
+      - ./db:/db
242
+    restart: unless-stopped
243
+```
244
+
245
+#### 使用 Docker Secret 來儲存金鑰對
246
+
247
+您還可以使用 Docker Secret來儲存金鑰。
248
+如果您使用 **docker-compose** 或 **docker swarm**,這很有用。
249
+只需按照以下示例操作:
250
+
251
+```bash
252
+cat secrets/id_ed25519.pub | docker secret create key_pub -
253
+cat secrets/id_ed25519 | docker secret create key_priv -
254
+docker service create --name rustdesk-server \
255
+  --secret key_priv --secret key_pub \
256
+  --net=host \
257
+  -e "RELAY=rustdeskrelay.example.com" \
258
+  -e "ENCRYPTED_ONLY=1" \
259
+  -e "DB_URL=/db/db_v2.sqlite3" \
260
+  --mount "type=bind,source=$PWD/db,destination=/db" \
261
+  rustdesk/rustdesk-server-s6:latest
262
+```
263
+
264
+```yaml
265
+version: '3'
266
+
267
+services:
268
+  rustdesk-server:
269
+    container_name: rustdesk-server
270
+    ports:
271
+      - 21115:21115
272
+      - 21116:21116
273
+      - 21116:21116/udp
274
+      - 21117:21117
275
+      - 21118:21118
276
+      - 21119:21119
277
+    image: rustdesk/rustdesk-server-s6:latest
278
+    environment:
279
+      - "RELAY=rustdesk.example.com:21117"
280
+      - "ENCRYPTED_ONLY=1"
281
+      - "DB_URL=/db/db_v2.sqlite3"
282
+    volumes:
283
+      - ./db:/db
284
+    restart: unless-stopped
285
+    secrets:
286
+      - key_pub
287
+      - key_priv
288
+
289
+secrets:
290
+  key_pub:
291
+    file: secrets/id_ed25519.pub
292
+  key_priv:
293
+    file: secrets/id_ed25519      
294
+```
295
+
296
+## 如何建立金鑰對
297
+
298
+加密需要一對金鑰;您可以按照前面所述提供它,但需要一種生成金鑰對的方法。
299
+
300
+您可以使用以下命令生成一對金鑰:
301
+
302
+```bash
303
+/usr/bin/rustdesk-utils genkeypair
304
+```
305
+
306
+如果您沒有(或不想)在系統上安裝 `rustdesk-utils` 套件,您可以使用 Docker執行相同的命令:
307
+
308
+```bash
309
+docker run --rm --entrypoint /usr/bin/rustdesk-utils  rustdesk/rustdesk-server-s6:latest genkeypair
310
+```
311
+
312
+輸出將類似於以下內容:
313
+
314
+```text
315
+Public Key:  8BLLhtzUBU/XKAH4mep3p+IX4DSApe7qbAwNH9nv4yA=
316
+Secret Key:  egAVd44u33ZEUIDTtksGcHeVeAwywarEdHmf99KM5ajwEsuG3NQFT9coAfiZ6nen4hfgNICl7upsDA0f2e/jIA==
317
+```
318
+
319
+## .deb 套件
320
+
321
+每個執行檔都有單獨的 .deb 套件可供使用,您可以在 [releases](https://github.com/rustdesk/rustdesk-server/releases) 中找到它們。
322
+這些套件適用於以下發行版:
323
+
324
+- Ubuntu 22.04 LTS
325
+- Ubuntu 20.04 LTS
326
+- Ubuntu 18.04 LTS
327
+- Debian 11 bullseye
328
+- Debian 10 buster
329
+
330
+## ENV 環境參數
331
+
332
+可以使用這些 ENV 參數來配置 hbbs 和 hbbr。
333
+您可以像往常一樣指定參數,或者使用 .env 文件。
334
+
335
+| 參數                  | 執行檔    | 敘述                                                                 |
336
+| --------------------- | --------- | -------------------------------------------------------------------- |
337
+| ALWAYS_USE_RELAY      | hbbs      | 如果設為 **"Y"**,禁止直接點對點連接                                 |
338
+| DB_URL                | hbbs      | 資料庫的路徑                                                         |
339
+| DOWNGRADE_START_CHECK | hbbr      | 降級檢查之前的延遲時間(以秒為單位)                                 |
340
+| DOWNGRADE_THRESHOLD   | hbbr      | 降級檢查的閾值(bit/ms)                                             |
341
+| KEY                   | hbbs/hbbr | 如果設置了,將強制使用特定金鑰,如果設為 **"_"**,則強制使用任何金鑰 |
342
+| LIMIT_SPEED           | hbbr      | 速度限制(以Mb/s為單位)                                             |
343
+| PORT                  | hbbs/hbbr | 監聽端口(hbbs為21116,hbbr為21117)                                 |
344
+| RELAY_SERVERS         | hbbs      | 運行hbbr的機器的IP地址/DNS名稱(用逗號分隔)                         |
345
+| RUST_LOG              | all       | 設定 debug level (error\|warn\|info\|debug\|trace)                   |
346
+| SINGLE_BANDWIDTH      | hbbr      | 單個連接的最大頻寬(以Mb/s為單位)                                   |
347
+| TOTAL_BANDWIDTH       | hbbr      | 最大總頻寬(以Mb/s為單位)                                           |

+ 1 - 1
README.md

@@ -5,7 +5,7 @@
5 5
   <a href="#how-to-create-a-keypair">Keypair</a> •
6 6
   <a href="#deb-packages">Debian</a> •
7 7
   <a href="#env-variables">Variables</a><br>
8
-  [<a href="README-DE.md">Deutsch</a>] | [<a href="README-NL.md">Nederlands</a>]<br>
8
+  [<a href="README-DE.md">Deutsch</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-TW.md">繁體中文</a>]<br>
9 9
 </p>
10 10
 
11 11
 # RustDesk Server Program