|
|
@@ -40,21 +40,46 @@ desktop software that provides self-hosted solutions.
|
|
40
|
40
|
|
|
41
|
41
|
### [Rustdesk](https://github.com/rustdesk/rustdesk)
|
|
42
|
42
|
|
|
43
|
|
-1. The PC client version used is ***1.3.0***, and versions ***1.2.6+*** have been tested to work.
|
|
44
|
|
-2. The server can specify a key, and not use the auto-generated key, otherwise there may be connection failures or timeouts.
|
|
45
|
43
|
|
|
46
|
|
- ```bash
|
|
47
|
|
- hbbs -r <relay-server-ip[:port]> -k <key>
|
|
48
|
|
- hbbr -k <key>
|
|
49
|
|
- ```
|
|
50
|
|
-
|
|
51
|
|
- Example:
|
|
52
|
|
-
|
|
53
|
|
- ```bash
|
|
54
|
|
- hbbs -r <relay-server-ip[:port]> -k abc1234567
|
|
55
|
|
- hbbr -k abc1234567
|
|
56
|
|
- ```
|
|
57
|
|
-3. The server use the auto-generated key, but if the client has logged in, it is easy to time out or the link failed, you can log out and then link again, and the webclient don't have to log out
|
|
|
44
|
+#### The PC client uses version ***1.3.0***, and versions ***1.2.6+*** have been tested to work.
|
|
|
45
|
+
|
|
|
46
|
+#### Solutions for PC client connection timeout or connection issues
|
|
|
47
|
+- The connection issue is due to the server version lagging behind the client version, causing the server to not respond to the client's `secure_tcp` request, resulting in a timeout.
|
|
|
48
|
+ Relevant code can be found at `https://github.com/rustdesk/rustdesk/blob/master/src/client.rs#L322`
|
|
|
49
|
+ ```rust
|
|
|
50
|
+ if !key.is_empty() && !token.is_empty() {
|
|
|
51
|
+ // mainly for the security of token
|
|
|
52
|
+ allow_err!(secure_tcp(&mut socket, key).await);
|
|
|
53
|
+ }
|
|
|
54
|
+ ```
|
|
|
55
|
+
|
|
|
56
|
+As seen, when both `key` and `token` are not empty, `secure_tcp` is called, but the server does not respond, causing the client to timeout.
|
|
|
57
|
+The `secure_tcp` code is located at `https://github.com/rustdesk/rustdesk/blob/master/src/common.rs#L1203`
|
|
|
58
|
+
|
|
|
59
|
+- ***Solutions***
|
|
|
60
|
+ 1. Specify the key on the server.
|
|
|
61
|
+ - Advantage: Simple
|
|
|
62
|
+ - Disadvantage: The connection is not encrypted
|
|
|
63
|
+ ```bash
|
|
|
64
|
+ hbbs -r <relay-server-ip[:port]> -k <key>
|
|
|
65
|
+ hbbr -k <key>
|
|
|
66
|
+ ```
|
|
|
67
|
+ For example
|
|
|
68
|
+ ```bash
|
|
|
69
|
+ hbbs -r <relay-server-ip[:port]> -k abc1234567
|
|
|
70
|
+ hbbr -k abc1234567
|
|
|
71
|
+ ```
|
|
|
72
|
+ 2. Use a system-generated key or a custom key pair on the server. If the client is already logged in, it may timeout or fail to connect. Logging out and reconnecting usually resolves the issue, and the web client does not need to log out.
|
|
|
73
|
+ - Advantage: Encrypted connection
|
|
|
74
|
+ - Disadvantage: Complicated operation
|
|
|
75
|
+ 3. Use a system-generated key or a custom key pair on the server, fork the official client code to modify `secure_tcp` to return directly, then compile using `Github Actions` and download the compiled client.
|
|
|
76
|
+ Refer to [official documentation](https://rustdesk.com/docs/en/dev/build/all/)
|
|
|
77
|
+ - Advantage: Encrypted connection, customizable client features, ready to use after compilation
|
|
|
78
|
+ - Disadvantage: Requires forking code and compiling, which can be challenging
|
|
|
79
|
+ 4. Use [my forked code](https://github.com/lejianwen/rustdesk), which has already modified `secure_tcp`. You can download and use it directly from [here](https://github.com/lejianwen/rustdesk/releases)
|
|
|
80
|
+ - Advantage: Code changes are viewable, compiled with `Github Actions`, encrypted connection, ready to use
|
|
|
81
|
+ - Disadvantage: May not keep up with official version updates
|
|
|
82
|
+##### If encryption is not a high priority, use `1`. If encryption is important, use `3` or `4`.
|
|
58
|
83
|
|
|
59
|
84
|
## Overview
|
|
60
|
85
|
|
|
|
@@ -148,6 +173,10 @@ rustdesk:
|
|
148
|
173
|
api-server: "http://192.168.1.66:21114"
|
|
149
|
174
|
key: "123456789"
|
|
150
|
175
|
personal: 1
|
|
|
176
|
+logger:
|
|
|
177
|
+ path: "./runtime/log.txt"
|
|
|
178
|
+ level: "warn" #trace,debug,info,warn,error,fatal
|
|
|
179
|
+ report-caller: true
|
|
151
|
180
|
```
|
|
152
|
181
|
|
|
153
|
182
|
* Environment variables, with the prefix `RUSTDESK_API_RUSTDESK_PERSONAL`, will override the settings in the
|
|
|
@@ -182,167 +211,201 @@ rustdesk:
|
|
182
|
211
|
|
|
183
|
212
|
1. Run directly with Docker. Configuration can be modified by mounting the config file `/app/conf/config.yaml`, or by
|
|
184
|
213
|
using environment variables to override settings.
|
|
185
|
|
-
|
|
186
|
|
-```bash
|
|
187
|
|
-docker run -d --name rustdesk-api -p 21114:21114 \
|
|
188
|
|
--v /data/rustdesk/api:/app/data \
|
|
189
|
|
--e RUSTDESK_API_LANG=en \
|
|
190
|
|
--e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \
|
|
191
|
|
--e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \
|
|
192
|
|
--e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \
|
|
193
|
|
--e RUSTDESK_API_RUSTDESK_KEY=123456789 \
|
|
194
|
|
-lejianwen/rustdesk-api
|
|
195
|
|
-```
|
|
|
214
|
+
|
|
|
215
|
+ ```bash
|
|
|
216
|
+ docker run -d --name rustdesk-api -p 21114:21114 \
|
|
|
217
|
+ -v /data/rustdesk/api:/app/data \
|
|
|
218
|
+ -e RUSTDESK_API_LANG=en \
|
|
|
219
|
+ -e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \
|
|
|
220
|
+ -e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \
|
|
|
221
|
+ -e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \
|
|
|
222
|
+ -e RUSTDESK_API_RUSTDESK_KEY=abc123456 \
|
|
|
223
|
+ lejianwen/rustdesk-api
|
|
|
224
|
+ ```
|
|
196
|
225
|
|
|
197
|
226
|
2. Using `docker-compose`
|
|
198
|
|
-
|
|
199
|
227
|
- Simple example:
|
|
200
|
|
-
|
|
201
|
|
- ```docker-compose
|
|
202
|
|
- services:
|
|
203
|
|
- rustdesk-api:
|
|
204
|
|
- container_name: rustdesk-api
|
|
205
|
|
- environment:
|
|
206
|
|
- - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
|
|
207
|
|
- - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
|
|
208
|
|
- - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
|
|
209
|
|
- - RUSTDESK_API_RUSTDESK_KEY=123456789
|
|
210
|
|
- ports:
|
|
211
|
|
- - 21114:21114
|
|
212
|
|
- image: lejianwen/rustdesk-api
|
|
213
|
|
- volumes:
|
|
214
|
|
- - /data/rustdesk/api:/app/data # Mount the database for easy backup
|
|
215
|
|
- networks:
|
|
216
|
|
- - rustdesk-net
|
|
217
|
|
- restart: unless-stopped
|
|
218
|
|
- ```
|
|
|
228
|
+ ```yaml
|
|
|
229
|
+ services:
|
|
|
230
|
+ rustdesk-api:
|
|
|
231
|
+ container_name: rustdesk-api
|
|
|
232
|
+ environment:
|
|
|
233
|
+ - RUSTDESK_API_LANG=en
|
|
|
234
|
+ - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
|
|
|
235
|
+ - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
|
|
|
236
|
+ - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
|
|
|
237
|
+ - RUSTDESK_API_RUSTDESK_KEY=<key>
|
|
|
238
|
+ ports:
|
|
|
239
|
+ - 21114:21114
|
|
|
240
|
+ image: lejianwen/rustdesk-api
|
|
|
241
|
+ volumes:
|
|
|
242
|
+ - /data/rustdesk/api:/app/data # Mount the database for easy backup
|
|
|
243
|
+ networks:
|
|
|
244
|
+ - rustdesk-net
|
|
|
245
|
+ restart: unless-stopped
|
|
|
246
|
+ ```
|
|
219
|
247
|
|
|
220
|
248
|
- Example with RustDesk's official Docker Compose file, adding your `rustdesk-api` service:
|
|
221
|
|
-
|
|
222
|
|
- ```docker-compose
|
|
223
|
|
- networks:
|
|
224
|
|
- rustdesk-net:
|
|
225
|
|
- external: false
|
|
226
|
|
- services:
|
|
227
|
|
- hbbs:
|
|
228
|
|
- container_name: hbbs
|
|
229
|
|
- ports:
|
|
230
|
|
- - 21115:21115
|
|
231
|
|
- - 21116:21116 # 自定义 hbbs 映射端口
|
|
232
|
|
- - 21116:21116/udp # 自定义 hbbs 映射端口
|
|
233
|
|
- - 21118:21118 # web client
|
|
234
|
|
-
|
|
235
|
|
- image: rustdesk/rustdesk-server
|
|
236
|
|
- command: hbbs -r <relay-server-ip[:port]> -k 123456789 # 填入个人域名或 IP + hbbr 暴露端口
|
|
237
|
|
- volumes:
|
|
238
|
|
- - /data/rustdesk/hbbs:/root # 自定义挂载目录
|
|
239
|
|
- networks:
|
|
240
|
|
- - rustdesk-net
|
|
241
|
|
- depends_on:
|
|
242
|
|
- - hbbr
|
|
243
|
|
- restart: unless-stopped
|
|
244
|
|
- deploy:
|
|
245
|
|
- resources:
|
|
246
|
|
- limits:
|
|
247
|
|
- memory: 64M
|
|
248
|
|
- hbbr:
|
|
249
|
|
- container_name: hbbr
|
|
250
|
|
- ports:
|
|
251
|
|
- - 21117:21117 # 自定义 hbbr 映射端口
|
|
252
|
|
- - 21119:21119 # web client
|
|
253
|
|
- image: rustdesk/rustdesk-server
|
|
254
|
|
- command: hbbr -k 123456789
|
|
255
|
|
- #command: hbbr
|
|
256
|
|
- volumes:
|
|
257
|
|
- - /data/rustdesk/hbbr:/root # 自定义挂载目录
|
|
|
249
|
+ - If you are using a system-generated KEY, remove the `-k <key>` parameter. However, after the first startup, run `docker-compose logs hbbs` or `cat ./data/id_ed25519.pub` to view the KEY, then modify `RUSTDESK_API_RUSTDESK_KEY=<key>` and execute `docker-compose up -d` again.
|
|
|
250
|
+ ```yaml
|
|
|
251
|
+ networks:
|
|
|
252
|
+ rustdesk-net:
|
|
|
253
|
+ external: false
|
|
|
254
|
+ services:
|
|
|
255
|
+ hbbs:
|
|
|
256
|
+ container_name: hbbs
|
|
|
257
|
+ ports:
|
|
|
258
|
+ - 21115:21115
|
|
|
259
|
+ - 21116:21116 # 自定义 hbbs 映射端口
|
|
|
260
|
+ - 21116:21116/udp # 自定义 hbbs 映射端口
|
|
|
261
|
+ - 21118:21118 # web client
|
|
|
262
|
+ image: rustdesk/rustdesk-server
|
|
|
263
|
+ command: hbbs -r <relay-server-ip[:port]> -k <key> # 填入个人域名或 IP + hbbr 暴露端口
|
|
|
264
|
+ volumes:
|
|
|
265
|
+ - ./data:/root # 自定义挂载目录
|
|
|
266
|
+ networks:
|
|
|
267
|
+ - rustdesk-net
|
|
|
268
|
+ depends_on:
|
|
|
269
|
+ - hbbr
|
|
|
270
|
+ restart: unless-stopped
|
|
|
271
|
+ deploy:
|
|
|
272
|
+ resources:
|
|
|
273
|
+ limits:
|
|
|
274
|
+ memory: 64M
|
|
|
275
|
+ hbbr:
|
|
|
276
|
+ container_name: hbbr
|
|
|
277
|
+ ports:
|
|
|
278
|
+ - 21117:21117 # 自定义 hbbr 映射端口
|
|
|
279
|
+ - 21119:21119 # web client
|
|
|
280
|
+ image: rustdesk/rustdesk-server
|
|
|
281
|
+ command: hbbr -k <key>
|
|
|
282
|
+ volumes:
|
|
|
283
|
+ - ./data:/root
|
|
|
284
|
+ networks:
|
|
|
285
|
+ - rustdesk-net
|
|
|
286
|
+ restart: unless-stopped
|
|
|
287
|
+ deploy:
|
|
|
288
|
+ resources:
|
|
|
289
|
+ limits:
|
|
|
290
|
+ memory: 64M
|
|
|
291
|
+ rustdesk-api:
|
|
|
292
|
+ container_name: rustdesk-api
|
|
|
293
|
+ environment:
|
|
|
294
|
+ - TZ=Asia/Shanghai
|
|
|
295
|
+ - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
|
|
|
296
|
+ - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
|
|
|
297
|
+ - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
|
|
|
298
|
+ - RUSTDESK_API_RUSTDESK_KEY=<key>
|
|
|
299
|
+ ports:
|
|
|
300
|
+ - 21114:21114
|
|
|
301
|
+ image: lejianwen/rustdesk-api
|
|
|
302
|
+ volumes:
|
|
|
303
|
+ - /data/rustdesk/api:/app/data #将数据库挂载出来方便备份
|
|
|
304
|
+ networks:
|
|
|
305
|
+ - rustdesk-net
|
|
|
306
|
+ restart: unless-stopped
|
|
|
307
|
+ ```
|
|
|
308
|
+
|
|
|
309
|
+ - S6 image
|
|
|
310
|
+ - - If using ***custom KEY***, you will need to modify the startup script to override the `/etc/s6-overlay/s6-rc.d/hbbr/run` and `/etc/s6-overlay/s6-rc.d/hbbr/run` in the image.
|
|
|
311
|
+ 1. Create `hbbr/run`, only needed for custom KEY
|
|
|
312
|
+ ```bash
|
|
|
313
|
+ #!/command/with-contenv sh
|
|
|
314
|
+ cd /data
|
|
|
315
|
+ PARAMS=
|
|
|
316
|
+ [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
|
|
|
317
|
+ /usr/bin/hbbr $PARAMS
|
|
|
318
|
+ ```
|
|
|
319
|
+ 2. Create `hbbs/run`, only needed for custom KEY
|
|
|
320
|
+ ```bash
|
|
|
321
|
+ #!/command/with-contenv sh
|
|
|
322
|
+ sleep 2
|
|
|
323
|
+ cd /data
|
|
|
324
|
+ PARAMS=
|
|
|
325
|
+ [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
|
|
|
326
|
+ /usr/bin/hbbs -r $RELAY $PARAMS
|
|
|
327
|
+ ```
|
|
|
328
|
+ 3. Modify the `s6` section in `docker-compose.yml`
|
|
|
329
|
+ ```yaml
|
|
|
330
|
+ networks:
|
|
|
331
|
+ rustdesk-net:
|
|
|
332
|
+ external: false
|
|
|
333
|
+ services:
|
|
|
334
|
+ rustdesk-server:
|
|
|
335
|
+ container_name: rustdesk-server
|
|
|
336
|
+ ports:
|
|
|
337
|
+ - 21115:21115
|
|
|
338
|
+ - 21116:21116
|
|
|
339
|
+ - 21116:21116/udp
|
|
|
340
|
+ - 21117:21117
|
|
|
341
|
+ - 21118:21118
|
|
|
342
|
+ - 21119:21119
|
|
|
343
|
+ image: rustdesk/rustdesk-server-s6:latest
|
|
|
344
|
+ environment:
|
|
|
345
|
+ - RELAY=192.168.1.66:21117
|
|
|
346
|
+ - ENCRYPTED_ONLY=1
|
|
|
347
|
+ - KEY=<key> #KEY
|
|
|
348
|
+ volumes:
|
|
|
349
|
+ - ./data:/data
|
|
|
350
|
+ - ./hbbr/run:/etc/s6-overlay/s6-rc.d/hbbr/run
|
|
|
351
|
+ - ./hbbs/run:/etc/s6-overlay/s6-rc.d/hbbs/run
|
|
|
352
|
+ restart: unless-stopped
|
|
|
353
|
+ rustdesk-api:
|
|
|
354
|
+ container_name: rustdesk-api
|
|
|
355
|
+ ports:
|
|
|
356
|
+ - 21114:21114
|
|
|
357
|
+ image: lejianwen/rustdesk-api
|
|
|
358
|
+ environment:
|
|
|
359
|
+ - TZ=Asia/Shanghai
|
|
|
360
|
+ - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
|
|
|
361
|
+ - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
|
|
|
362
|
+ - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
|
|
|
363
|
+ - RUSTDESK_API_RUSTDESK_KEY=<key>
|
|
|
364
|
+ volumes:
|
|
|
365
|
+ - /data/rustdesk/api:/app/data
|
|
|
366
|
+ networks:
|
|
|
367
|
+ - rustdesk-net
|
|
|
368
|
+ restart: unless-stopped
|
|
|
369
|
+ ```
|
|
|
370
|
+ - If using ***system-generated KEY*** or ***custom KEY_PUB, KEY_PRIV***, you do not need to modify the startup script, but you need to obtain the KEY after it is generated and then run `docker-compose up -d`
|
|
|
371
|
+ ```yaml
|
|
258
|
372
|
networks:
|
|
259
|
|
- - rustdesk-net
|
|
260
|
|
- restart: unless-stopped
|
|
261
|
|
- deploy:
|
|
262
|
|
- resources:
|
|
263
|
|
- limits:
|
|
264
|
|
- memory: 64M
|
|
265
|
|
- rustdesk-api:
|
|
266
|
|
- container_name: rustdesk-api
|
|
267
|
|
- environment:
|
|
268
|
|
- - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
|
|
269
|
|
- - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
|
|
270
|
|
- - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
|
|
271
|
|
- - RUSTDESK_API_RUSTDESK_KEY=123456789
|
|
272
|
|
- ports:
|
|
273
|
|
- - 21114:21114
|
|
274
|
|
- image: lejianwen/rustdesk-api
|
|
275
|
|
- volumes:
|
|
276
|
|
- - /data/rustdesk/api:/app/data #将数据库挂载出来方便备份
|
|
277
|
|
- networks:
|
|
278
|
|
- - rustdesk-net
|
|
279
|
|
- restart: unless-stopped
|
|
280
|
|
-
|
|
281
|
|
- ```
|
|
282
|
|
- - If you are using an S6 image, you need to modify the startup script `/etc/s6-overlay/s6-rc.d/hbbr/run`
|
|
283
|
|
- and `/etc/s6-overlay/s6-rc.d/hbbr/run`
|
|
284
|
|
-
|
|
285
|
|
- 1. create `hbbr/run`
|
|
286
|
|
-
|
|
287
|
|
- ```bash
|
|
288
|
|
- #!/command/with-contenv sh
|
|
289
|
|
- cd /data
|
|
290
|
|
- PARAMS=
|
|
291
|
|
- [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
|
|
292
|
|
- /usr/bin/hbbr $PARAMS
|
|
293
|
|
- ```
|
|
294
|
|
-
|
|
295
|
|
- 2. create `hbbs/run`
|
|
296
|
|
- ```bash
|
|
297
|
|
- #!/command/with-contenv sh
|
|
298
|
|
- sleep 2
|
|
299
|
|
- cd /data
|
|
300
|
|
- PARAMS=
|
|
301
|
|
- [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
|
|
302
|
|
- /usr/bin/hbbs -r $RELAY $PARAMS
|
|
303
|
|
- ```
|
|
304
|
|
- 3. edit `docker-compose.yml`
|
|
305
|
|
- ```
|
|
306
|
|
- networks:
|
|
307
|
|
- rustdesk-net:
|
|
308
|
|
- external: false
|
|
309
|
|
- services:
|
|
310
|
|
- rustdesk-server:
|
|
311
|
|
- container_name: rustdesk-server
|
|
312
|
|
- ports:
|
|
313
|
|
- - 21115:21115
|
|
314
|
|
- - 21116:21116
|
|
315
|
|
- - 21116:21116/udp
|
|
316
|
|
- - 21117:21117
|
|
317
|
|
- - 21118:21118
|
|
318
|
|
- - 21119:21119
|
|
319
|
|
- image: rustdesk/rustdesk-server-s6:latest
|
|
320
|
|
- environment:
|
|
321
|
|
- - RELAY=192.168.1.66:21117
|
|
322
|
|
- - ENCRYPTED_ONLY=1
|
|
323
|
|
- - KEY=abc123456789
|
|
324
|
|
- volumes:
|
|
325
|
|
- - ./data:/data
|
|
326
|
|
- - ./hbbr/run:/etc/s6-overlay/s6-rc.d/hbbr/run
|
|
327
|
|
- - ./hbbs/run:/etc/s6-overlay/s6-rc.d/hbbs/run
|
|
328
|
|
- restart: unless-stopped
|
|
329
|
|
- rustdesk-api:
|
|
330
|
|
- container_name: rustdesk-api
|
|
331
|
|
- ports:
|
|
332
|
|
- - 21114:21114
|
|
333
|
|
- image: lejianwen/rustdesk-api
|
|
334
|
|
- environment:
|
|
335
|
|
- - TZ=Asia/Shanghai
|
|
336
|
|
- - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
|
|
337
|
|
- - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
|
|
338
|
|
- - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
|
|
339
|
|
- - RUSTDESK_API_RUSTDESK_KEY=abc123456789
|
|
340
|
|
- volumes:
|
|
341
|
|
- - /data/rustdesk/api:/app/data #将数据库挂载
|
|
342
|
|
- networks:
|
|
343
|
|
- - rustdesk-net
|
|
344
|
|
- restart: unless-stopped
|
|
345
|
|
- ```
|
|
|
373
|
+ rustdesk-net:
|
|
|
374
|
+ external: false
|
|
|
375
|
+ services:
|
|
|
376
|
+ rustdesk-server:
|
|
|
377
|
+ container_name: rustdesk-server
|
|
|
378
|
+ ports:
|
|
|
379
|
+ - 21115:21115
|
|
|
380
|
+ - 21116:21116
|
|
|
381
|
+ - 21116:21116/udp
|
|
|
382
|
+ - 21117:21117
|
|
|
383
|
+ - 21118:21118
|
|
|
384
|
+ - 21119:21119
|
|
|
385
|
+ image: rustdesk/rustdesk-server-s6:latest
|
|
|
386
|
+ environment:
|
|
|
387
|
+ - RELAY=192.168.1.66:21117
|
|
|
388
|
+ - ENCRYPTED_ONLY=1
|
|
|
389
|
+ volumes:
|
|
|
390
|
+ - ./data:/data
|
|
|
391
|
+ restart: unless-stopped
|
|
|
392
|
+ rustdesk-api:
|
|
|
393
|
+ container_name: rustdesk-api
|
|
|
394
|
+ ports:
|
|
|
395
|
+ - 21114:21114
|
|
|
396
|
+ image: lejianwen/rustdesk-api
|
|
|
397
|
+ environment:
|
|
|
398
|
+ - TZ=Asia/Shanghai
|
|
|
399
|
+ - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
|
|
|
400
|
+ - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
|
|
|
401
|
+ - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
|
|
|
402
|
+ - RUSTDESK_API_RUSTDESK_KEY=<key>
|
|
|
403
|
+ volumes:
|
|
|
404
|
+ - /data/rustdesk/api:/app/data
|
|
|
405
|
+ networks:
|
|
|
406
|
+ - rustdesk-net
|
|
|
407
|
+ restart: unless-stopped
|
|
|
408
|
+ ```
|
|
346
|
409
|
|
|
347
|
410
|
#### Running from Release
|
|
348
|
411
|
|