Revert "up readme"

This reverts commit abc0e9d907.
This commit is contained in:
ljw
2024-10-11 22:06:20 +08:00
parent abc0e9d907
commit 3d4e068266
2 changed files with 319 additions and 440 deletions

364
README.md
View File

@@ -41,45 +41,22 @@
### [Rustdesk](https://github.com/rustdesk/rustdesk) ### [Rustdesk](https://github.com/rustdesk/rustdesk)
#### PC客户端使用的是 ***1.3.0***,经测试 ***1.2.6+*** 都可以 1. PC客户端使用的是 ***1.3.0***,经测试 ***1.2.6+*** 都可以
2. server端指定key不用自带的生成的key,否则可能链接不上或者超时
#### 关于PC端链接超时或者链接不上的问题以及解决方案 ```bash
- 链接不上是因为server端相对于客户端落后版本server不会响应客户端的`secure_tcp`请求,所以客户端超时 hbbs -r <relay-server-ip[:port]> -k <key>
相关代码代码位置在`https://github.com/rustdesk/rustdesk/blob/master/src/client.rs#L322` hbbr -k <key>
```rust ```
if !key.is_empty() && !token.is_empty() {
// mainly for the security of token 比如
allow_err!(secure_tcp(&mut socket, key).await);
} ```bash
``` hbbs -r <relay-server-ip[:port]> -k abc1234567
可看到当`key`和`token`都不为空时,会调用`secure_tcp`但是server端不会响应所以客户端超时 hbbr -k abc1234567
`secure_tcp` 代码位置在 `https://github.com/rustdesk/rustdesk/blob/master/src/common.rs#L1203` ```
3. server端使用系统生成的key但如果client已登录链接时容易超时或者链接不上可以退出登录后再链接就可以了webclient可以不用退出登录
- ***解决方案***
1. server端指定key。
- 优点:简单
- 缺点:链接不是加密的
```bash
hbbs -r <relay-server-ip[:port]> -k <key>
hbbr -k <key>
```
比如
```bash
hbbs -r <relay-server-ip[:port]> -k abc1234567
hbbr -k abc1234567
```
2. server端使用系统生成的key或者自定义的密钥对但如果client已登录链接时容易超时或者链接不上可以退出登录后再链接就可以了webclient可以不用退出登录
- 优点:链接加密
- 缺点:操作麻烦
3. server端使用系统生成的key或者自定义的密钥对fork官方客户端的代码将`secure_tcp`修改成直接返回,然后通过`Github Actions`编译,下载编译后的客户端。
参考[官方文档](https://rustdesk.com/docs/en/dev/build/all/)
- 优点:链接加密,可以自定义客户端一些功能,编译后直接可用
- 缺点需要自己fork代码编译有点难度
4. 使用[我fork的代码](https://github.com/lejianwen/rustdesk),已经修改了`secure_tcp`,可以直接下载使用,[下载地址](https://github.com/lejianwen/rustdesk/releases)
- 优点:代码改动可查看,`Github Actions`编译,链接加密,直接下载使用
- 缺点:可能跟不上官方版本更新
##### 对链接加密要求不高的可以使用`1`,对链接加密要求高的可以使用`3`或`4`
## 功能 ## 功能
@@ -168,10 +145,6 @@ rustdesk:
api-server: "http://192.168.1.66:21114" api-server: "http://192.168.1.66:21114"
key: "123456789" key: "123456789"
personal: 1 personal: 1
logger:
path: "./runtime/log.txt"
level: "warn" #trace,debug,info,warn,error,fatal
report-caller: true
``` ```
* 环境变量,变量名前缀是RUSTDESK_API环境变量如果存在将覆盖配置文件中的配置 * 环境变量,变量名前缀是RUSTDESK_API环境变量如果存在将覆盖配置文件中的配置
@@ -198,27 +171,28 @@ logger:
| RUSTDESK_API_RUSTDESK_API_SERVER | Rustdesk的api服务器地址 | http://192.168.1.66:21114 | | RUSTDESK_API_RUSTDESK_API_SERVER | Rustdesk的api服务器地址 | http://192.168.1.66:21114 |
| RUSTDESK_API_RUSTDESK_KEY | Rustdesk的key | 123456789 | | RUSTDESK_API_RUSTDESK_KEY | Rustdesk的key | 123456789 |
### 运行 ### 安装步骤
#### docker运行 #### docker运行
1. 直接docker运行,配置可以通过挂载配置文件`/app/conf/config.yaml`来修改,或者通过环境变量覆盖配置文件中的配置 1. 直接docker运行,配置可以通过挂载配置文件`/app/conf/config.yaml`来修改,或者通过环境变量覆盖配置文件中的配置
```bash ```bash
docker run -d --name rustdesk-api -p 21114:21114 \ docker run -d --name rustdesk-api -p 21114:21114 \
-v /data/rustdesk/api:/app/data \ -v /data/rustdesk/api:/app/data \
-e TZ=Asia/Shanghai \ -e TZ=Asia/Shanghai \
-e RUSTDESK_API_LANG=zh-CN \ -e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \
-e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \ -e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \
-e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \ -e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \
-e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \ -e RUSTDESK_API_RUSTDESK_KEY=123456789 \
-e RUSTDESK_API_RUSTDESK_KEY=<key> \ lejianwen/rustdesk-api
lejianwen/rustdesk-api ```
```
2. 使用`docker compose` 2. 使用`docker compose`
- 简单示例
```yaml - 简单示例
```docker-compose
services: services:
rustdesk-api: rustdesk-api:
container_name: rustdesk-api container_name: rustdesk-api
@@ -227,7 +201,7 @@ logger:
- RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
- RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
- RUSTDESK_API_RUSTDESK_KEY=<key> - RUSTDESK_API_RUSTDESK_KEY=123456789
ports: ports:
- 21114:21114 - 21114:21114
image: lejianwen/rustdesk-api image: lejianwen/rustdesk-api
@@ -238,70 +212,74 @@ logger:
restart: unless-stopped restart: unless-stopped
``` ```
- 根据rustdesk官方提供的示例加上自己的rustdesk-api - 根据rustdesk提供的示例加上自己的rustdesk-api
- 如果是使用的系统生成的KEY去掉`-k <key>`参数,在启动后运行`docker-compose logs hbbs`或者`cat ./data/id_ed25519.pub`查看KEY然后再修改`RUSTDESK_API_RUSTDESK_KEY=<key>`再执行`docker-compose up -d`
```yaml ```docker-compose
networks: networks:
rustdesk-net: rustdesk-net:
external: false external: false
services: services:
hbbs: hbbs:
container_name: hbbs container_name: hbbs
ports: ports:
- 21115:21115 - 21115:21115
- 21116:21116 # 自定义 hbbs 映射端口 - 21116:21116 # 自定义 hbbs 映射端口
- 21116:21116/udp # 自定义 hbbs 映射端口 - 21116:21116/udp # 自定义 hbbs 映射端口
- 21118:21118 # web client - 21118:21118 # web client
image: rustdesk/rustdesk-server image: rustdesk/rustdesk-server
command: hbbs -r <relay-server-ip[:port]> -k <key> # 填入个人域名或 IP + hbbr 暴露端口 command: hbbs -r <relay-server-ip[:port]> -k 123456789 # 填入个人域名或 IP + hbbr 暴露端口
volumes: volumes:
- ./data:/root # 自定义挂载目录 - /data/rustdesk/hbbs:/root # 自定义挂载目录
networks: networks:
- rustdesk-net - rustdesk-net
depends_on: depends_on:
- hbbr - hbbr
restart: unless-stopped restart: unless-stopped
deploy: deploy:
resources: resources:
limits: limits:
memory: 64M memory: 64M
hbbr: hbbr:
container_name: hbbr container_name: hbbr
ports: ports:
- 21117:21117 # 自定义 hbbr 映射端口 - 21117:21117 # 自定义 hbbr 映射端口
- 21119:21119 # web client - 21119:21119 # web client
image: rustdesk/rustdesk-server image: rustdesk/rustdesk-server
command: hbbr -k <key> command: hbbr -k 123456789
volumes: #command: hbbr
- ./data:/root volumes:
networks: - /data/rustdesk/hbbr:/root # 自定义挂载目录
- rustdesk-net networks:
restart: unless-stopped - rustdesk-net
deploy: restart: unless-stopped
resources: deploy:
limits: resources:
memory: 64M limits:
rustdesk-api: memory: 64M
container_name: rustdesk-api rustdesk-api:
environment: container_name: rustdesk-api
- TZ=Asia/Shanghai environment:
- RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 - TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
- RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
- RUSTDESK_API_RUSTDESK_KEY=<key> - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
ports: - RUSTDESK_API_RUSTDESK_KEY=123456789
- 21114:21114 ports:
image: lejianwen/rustdesk-api - 21114:21114
volumes: image: lejianwen/rustdesk-api
- /data/rustdesk/api:/app/data #将数据库挂载出来方便备份 volumes:
networks: - /data/rustdesk/api:/app/data #将数据库挂载出来方便备份
- rustdesk-net networks:
restart: unless-stopped - rustdesk-net
``` restart: unless-stopped
- S6的镜像 ```
- 如果使用***自定义KEY***,会需要修改启动脚本,覆盖镜像中的`/etc/s6-overlay/s6-rc.d/hbbr/run`和`/etc/s6-overlay/s6-rc.d/hbbr/run`
1. 创建`hbbr/run`自定义KEY才需要 - 如果使用的是S6的镜像会需要修改启动脚本覆盖镜像中的`/etc/s6-overlay/s6-rc.d/hbbr/run`
和`/etc/s6-overlay/s6-rc.d/hbbr/run`
1. 创建`hbbr/run`
```bash ```bash
#!/command/with-contenv sh #!/command/with-contenv sh
cd /data cd /data
@@ -309,99 +287,63 @@ logger:
[ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}" [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
/usr/bin/hbbr $PARAMS /usr/bin/hbbr $PARAMS
``` ```
2. 创建`hbbs/run`自定义KEY才需要
```bash 2. 创建`hbbs/run`
#!/command/with-contenv sh ```bash
sleep 2 #!/command/with-contenv sh
cd /data sleep 2
PARAMS= cd /data
[ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}" PARAMS=
/usr/bin/hbbs -r $RELAY $PARAMS [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
``` /usr/bin/hbbs -r $RELAY $PARAMS
3. 修改`docker-compose.yml`中的`s6`部分 ```
```yaml 3. 修改`docker-compose.yml`中的`s6`部分
networks:
rustdesk-net: ```
external: false networks:
services: rustdesk-net:
rustdesk-server: external: false
container_name: rustdesk-server services:
ports: rustdesk-server:
- 21115:21115 container_name: rustdesk-server
- 21116:21116 ports:
- 21116:21116/udp - 21115:21115
- 21117:21117 - 21116:21116
- 21118:21118 - 21116:21116/udp
- 21119:21119 - 21117:21117
image: rustdesk/rustdesk-server-s6:latest - 21118:21118
environment: - 21119:21119
- RELAY=192.168.1.66:21117 image: rustdesk/rustdesk-server-s6:latest
- ENCRYPTED_ONLY=1 environment:
- KEY=<key> #自定义KEY - RELAY=192.168.1.66:21117
volumes: - ENCRYPTED_ONLY=1
- ./data:/data - KEY=abc123456789
- ./hbbr/run:/etc/s6-overlay/s6-rc.d/hbbr/run volumes:
- ./hbbs/run:/etc/s6-overlay/s6-rc.d/hbbs/run - ./data:/data
restart: unless-stopped - ./hbbr/run:/etc/s6-overlay/s6-rc.d/hbbr/run
rustdesk-api: - ./hbbs/run:/etc/s6-overlay/s6-rc.d/hbbs/run
container_name: rustdesk-api restart: unless-stopped
ports: rustdesk-api:
- 21114:21114 container_name: rustdesk-api
image: lejianwen/rustdesk-api ports:
environment: - 21114:21114
- TZ=Asia/Shanghai image: lejianwen/rustdesk-api
- RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 environment:
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 - TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
- RUSTDESK_API_RUSTDESK_KEY=<key> - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
volumes: - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
- /data/rustdesk/api:/app/data #将数据库挂载 - RUSTDESK_API_RUSTDESK_KEY=abc123456789
networks: volumes:
- rustdesk-net - /data/rustdesk/api:/app/data #将数据库挂载
restart: unless-stopped networks:
``` - rustdesk-net
- 如果使用***系统生成的KEY***或者***自定义KEY_PUB,KEY_PRIV***不需要修改启动脚本但要在生成KEY后获取到KEY再`docker-compose up -d` restart: unless-stopped
```yaml ```
networks:
rustdesk-net:
external: false
services:
rustdesk-server:
container_name: rustdesk-server
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21117:21117
- 21118:21118
- 21119:21119
image: rustdesk/rustdesk-server-s6:latest
environment:
- RELAY=192.168.1.66:21117
- ENCRYPTED_ONLY=1
volumes:
- ./data:/data
restart: unless-stopped
rustdesk-api:
container_name: rustdesk-api
ports:
- 21114:21114
image: lejianwen/rustdesk-api
environment:
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
- RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
- RUSTDESK_API_RUSTDESK_KEY=<key> #系统生成的KEY
volumes:
- /data/rustdesk/api:/app/data #将数据库挂载
networks:
- rustdesk-net
restart: unless-stopped
```
#### 下载release直接运行 #### 下载release直接运行
[下载地址](https://github.com/lejianwen/rustdesk-api/releases) 下载地址[release](https://github.com/lejianwen/rustdesk-api/releases)
#### 源码安装 #### 源码安装

View File

@@ -40,46 +40,21 @@ desktop software that provides self-hosted solutions.
### [Rustdesk](https://github.com/rustdesk/rustdesk) ### [Rustdesk](https://github.com/rustdesk/rustdesk)
1. The PC client version used is ***1.3.0***, and versions ***1.2.6+*** have been tested to work.
2. The server can specify a key, and not use the auto-generated key, otherwise there may be connection failures or timeouts.
#### The PC client uses version ***1.3.0***, and versions ***1.2.6+*** have been tested to work. ```bash
hbbs -r <relay-server-ip[:port]> -k <key>
hbbr -k <key>
```
#### Solutions for PC client connection timeout or connection issues Example:
- 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.
Relevant code can be found at `https://github.com/rustdesk/rustdesk/blob/master/src/client.rs#L322`
```rust
if !key.is_empty() && !token.is_empty() {
// mainly for the security of token
allow_err!(secure_tcp(&mut socket, key).await);
}
```
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.
The `secure_tcp` code is located at `https://github.com/rustdesk/rustdesk/blob/master/src/common.rs#L1203`
- ***Solutions*** ```bash
1. Specify the key on the server. hbbs -r <relay-server-ip[:port]> -k abc1234567
- Advantage: Simple hbbr -k abc1234567
- Disadvantage: The connection is not encrypted ```
```bash 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
hbbs -r <relay-server-ip[:port]> -k <key>
hbbr -k <key>
```
For example
```bash
hbbs -r <relay-server-ip[:port]> -k abc1234567
hbbr -k abc1234567
```
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.
- Advantage: Encrypted connection
- Disadvantage: Complicated operation
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.
Refer to [official documentation](https://rustdesk.com/docs/en/dev/build/all/)
- Advantage: Encrypted connection, customizable client features, ready to use after compilation
- Disadvantage: Requires forking code and compiling, which can be challenging
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)
- Advantage: Code changes are viewable, compiled with `Github Actions`, encrypted connection, ready to use
- Disadvantage: May not keep up with official version updates
##### If encryption is not a high priority, use `1`. If encryption is important, use `3` or `4`.
## Overview ## Overview
@@ -173,10 +148,6 @@ rustdesk:
api-server: "http://192.168.1.66:21114" api-server: "http://192.168.1.66:21114"
key: "123456789" key: "123456789"
personal: 1 personal: 1
logger:
path: "./runtime/log.txt"
level: "warn" #trace,debug,info,warn,error,fatal
report-caller: true
``` ```
* Environment variables, with the prefix `RUSTDESK_API_RUSTDESK_PERSONAL`, will override the settings in the * Environment variables, with the prefix `RUSTDESK_API_RUSTDESK_PERSONAL`, will override the settings in the
@@ -211,201 +182,167 @@ logger:
1. Run directly with Docker. Configuration can be modified by mounting the config file `/app/conf/config.yaml`, or by 1. Run directly with Docker. Configuration can be modified by mounting the config file `/app/conf/config.yaml`, or by
using environment variables to override settings. using environment variables to override settings.
```bash ```bash
docker run -d --name rustdesk-api -p 21114:21114 \ docker run -d --name rustdesk-api -p 21114:21114 \
-v /data/rustdesk/api:/app/data \ -v /data/rustdesk/api:/app/data \
-e RUSTDESK_API_LANG=en \ -e RUSTDESK_API_LANG=en \
-e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \ -e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \
-e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \ -e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \
-e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \ -e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \
-e RUSTDESK_API_RUSTDESK_KEY=abc123456 \ -e RUSTDESK_API_RUSTDESK_KEY=123456789 \
lejianwen/rustdesk-api lejianwen/rustdesk-api
``` ```
2. Using `docker-compose` 2. Using `docker-compose`
- Simple example: - Simple example:
```yaml
services: ```docker-compose
rustdesk-api: services:
container_name: rustdesk-api rustdesk-api:
environment: container_name: rustdesk-api
- RUSTDESK_API_LANG=en environment:
- RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
- RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
- RUSTDESK_API_RUSTDESK_KEY=<key> - RUSTDESK_API_RUSTDESK_KEY=123456789
ports: ports:
- 21114:21114 - 21114:21114
image: lejianwen/rustdesk-api image: lejianwen/rustdesk-api
volumes: volumes:
- /data/rustdesk/api:/app/data # Mount the database for easy backup - /data/rustdesk/api:/app/data # Mount the database for easy backup
networks: networks:
- rustdesk-net - rustdesk-net
restart: unless-stopped restart: unless-stopped
``` ```
- Example with RustDesk's official Docker Compose file, adding your `rustdesk-api` service: - Example with RustDesk's official Docker Compose file, adding your `rustdesk-api` service:
- 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.
```yaml
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116 # 自定义 hbbs 映射端口
- 21116:21116/udp # 自定义 hbbs 映射端口
- 21118:21118 # web client
image: rustdesk/rustdesk-server
command: hbbs -r <relay-server-ip[:port]> -k <key> # 填入个人域名或 IP + hbbr 暴露端口
volumes:
- ./data:/root # 自定义挂载目录
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
hbbr:
container_name: hbbr
ports:
- 21117:21117 # 自定义 hbbr 映射端口
- 21119:21119 # web client
image: rustdesk/rustdesk-server
command: hbbr -k <key>
volumes:
- ./data:/root
networks:
- rustdesk-net
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
rustdesk-api:
container_name: rustdesk-api
environment:
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
- RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
- RUSTDESK_API_RUSTDESK_KEY=<key>
ports:
- 21114:21114
image: lejianwen/rustdesk-api
volumes:
- /data/rustdesk/api:/app/data #将数据库挂载出来方便备份
networks:
- rustdesk-net
restart: unless-stopped
```
- S6 image ```docker-compose
- - 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. networks:
1. Create `hbbr/run`, only needed for custom KEY rustdesk-net:
```bash external: false
#!/command/with-contenv sh services:
cd /data hbbs:
PARAMS= container_name: hbbs
[ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}" ports:
/usr/bin/hbbr $PARAMS - 21115:21115
``` - 21116:21116 # 自定义 hbbs 映射端口
2. Create `hbbs/run`, only needed for custom KEY - 21116:21116/udp # 自定义 hbbs 映射端口
```bash - 21118:21118 # web client
#!/command/with-contenv sh
sleep 2 image: rustdesk/rustdesk-server
cd /data command: hbbs -r <relay-server-ip[:port]> -k 123456789 # 填入个人域名或 IP + hbbr 暴露端口
PARAMS= volumes:
[ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}" - /data/rustdesk/hbbs:/root # 自定义挂载目录
/usr/bin/hbbs -r $RELAY $PARAMS
```
3. Modify the `s6` section in `docker-compose.yml`
```yaml
networks:
rustdesk-net:
external: false
services:
rustdesk-server:
container_name: rustdesk-server
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21117:21117
- 21118:21118
- 21119:21119
image: rustdesk/rustdesk-server-s6:latest
environment:
- RELAY=192.168.1.66:21117
- ENCRYPTED_ONLY=1
- KEY=<key> #KEY
volumes:
- ./data:/data
- ./hbbr/run:/etc/s6-overlay/s6-rc.d/hbbr/run
- ./hbbs/run:/etc/s6-overlay/s6-rc.d/hbbs/run
restart: unless-stopped
rustdesk-api:
container_name: rustdesk-api
ports:
- 21114:21114
image: lejianwen/rustdesk-api
environment:
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
- RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
- RUSTDESK_API_RUSTDESK_KEY=<key>
volumes:
- /data/rustdesk/api:/app/data
networks:
- rustdesk-net
restart: unless-stopped
```
- 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`
```yaml
networks: networks:
rustdesk-net: - rustdesk-net
external: false depends_on:
services: - hbbr
rustdesk-server: restart: unless-stopped
container_name: rustdesk-server deploy:
ports: resources:
- 21115:21115 limits:
- 21116:21116 memory: 64M
- 21116:21116/udp hbbr:
- 21117:21117 container_name: hbbr
- 21118:21118 ports:
- 21119:21119 - 21117:21117 # 自定义 hbbr 映射端口
image: rustdesk/rustdesk-server-s6:latest - 21119:21119 # web client
environment: image: rustdesk/rustdesk-server
- RELAY=192.168.1.66:21117 command: hbbr -k 123456789
- ENCRYPTED_ONLY=1 #command: hbbr
volumes: volumes:
- ./data:/data - /data/rustdesk/hbbr:/root # 自定义挂载目录
restart: unless-stopped networks:
rustdesk-api: - rustdesk-net
container_name: rustdesk-api restart: unless-stopped
ports: deploy:
- 21114:21114 resources:
image: lejianwen/rustdesk-api limits:
environment: memory: 64M
- TZ=Asia/Shanghai rustdesk-api:
- RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 container_name: rustdesk-api
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 environment:
- RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
- RUSTDESK_API_RUSTDESK_KEY=<key> - RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
volumes: - RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
- /data/rustdesk/api:/app/data - RUSTDESK_API_RUSTDESK_KEY=123456789
networks: ports:
- rustdesk-net - 21114:21114
restart: unless-stopped image: lejianwen/rustdesk-api
``` volumes:
- /data/rustdesk/api:/app/data #将数据库挂载出来方便备份
networks:
- rustdesk-net
restart: unless-stopped
```
- If you are using an S6 image, you need to modify the startup script `/etc/s6-overlay/s6-rc.d/hbbr/run`
and `/etc/s6-overlay/s6-rc.d/hbbr/run`
1. create `hbbr/run`
```bash
#!/command/with-contenv sh
cd /data
PARAMS=
[ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
/usr/bin/hbbr $PARAMS
```
2. create `hbbs/run`
```bash
#!/command/with-contenv sh
sleep 2
cd /data
PARAMS=
[ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
/usr/bin/hbbs -r $RELAY $PARAMS
```
3. edit `docker-compose.yml`
```
networks:
rustdesk-net:
external: false
services:
rustdesk-server:
container_name: rustdesk-server
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21117:21117
- 21118:21118
- 21119:21119
image: rustdesk/rustdesk-server-s6:latest
environment:
- RELAY=192.168.1.66:21117
- ENCRYPTED_ONLY=1
- KEY=abc123456789
volumes:
- ./data:/data
- ./hbbr/run:/etc/s6-overlay/s6-rc.d/hbbr/run
- ./hbbs/run:/etc/s6-overlay/s6-rc.d/hbbs/run
restart: unless-stopped
rustdesk-api:
container_name: rustdesk-api
ports:
- 21114:21114
image: lejianwen/rustdesk-api
environment:
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117
- RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114
- RUSTDESK_API_RUSTDESK_KEY=abc123456789
volumes:
- /data/rustdesk/api:/app/data #将数据库挂载
networks:
- rustdesk-net
restart: unless-stopped
```
#### Running from Release #### Running from Release