up readme

This commit is contained in:
ljw
2024-10-11 21:39:58 +08:00
parent 5d361d05cc
commit abc0e9d907
2 changed files with 440 additions and 319 deletions

364
README.md
View File

@@ -41,22 +41,45 @@
### [Rustdesk](https://github.com/rustdesk/rustdesk) ### [Rustdesk](https://github.com/rustdesk/rustdesk)
1. PC客户端使用的是 ***1.3.0***,经测试 ***1.2.6+*** 都可以 #### PC客户端使用的是 ***1.3.0***,经测试 ***1.2.6+*** 都可以
2. server端指定key不用自带的生成的key,否则可能链接不上或者超时
```bash #### 关于PC端链接超时或者链接不上的问题以及解决方案
hbbs -r <relay-server-ip[:port]> -k <key> - 链接不上是因为server端相对于客户端落后版本server不会响应客户端的`secure_tcp`请求,所以客户端超时
hbbr -k <key> 相关代码代码位置在`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);
```bash }
hbbs -r <relay-server-ip[:port]> -k abc1234567 ```
hbbr -k abc1234567 可看到当`key`和`token`都不为空时,会调用`secure_tcp`但是server端不会响应所以客户端超时
``` `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`
## 功能 ## 功能
@@ -145,6 +168,10 @@ 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环境变量如果存在将覆盖配置文件中的配置
@@ -171,28 +198,27 @@ rustdesk:
| 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_RUSTDESK_ID_SERVER=192.168.1.66:21116 \ -e RUSTDESK_API_LANG=zh-CN \
-e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \ -e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \
-e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \ -e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \
-e RUSTDESK_API_RUSTDESK_KEY=123456789 \ -e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \
lejianwen/rustdesk-api -e RUSTDESK_API_RUSTDESK_KEY=<key> \
``` 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
@@ -201,7 +227,7 @@ lejianwen/rustdesk-api
- 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=123456789 - RUSTDESK_API_RUSTDESK_KEY=<key>
ports: ports:
- 21114:21114 - 21114:21114
image: lejianwen/rustdesk-api image: lejianwen/rustdesk-api
@@ -212,74 +238,70 @@ lejianwen/rustdesk-api
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`
```docker-compose ```yaml
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 123456789 # 填入个人域名或 IP + hbbr 暴露端口 command: hbbs -r <relay-server-ip[:port]> -k <key> # 填入个人域名或 IP + hbbr 暴露端口
volumes: volumes:
- /data/rustdesk/hbbs:/root # 自定义挂载目录 - ./data:/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 123456789 command: hbbr -k <key>
#command: hbbr volumes:
volumes: - ./data:/root
- /data/rustdesk/hbbr:/root # 自定义挂载目录 networks:
networks: - rustdesk-net
- rustdesk-net restart: unless-stopped
restart: unless-stopped deploy:
deploy: resources:
resources: limits:
limits: memory: 64M
memory: 64M rustdesk-api:
rustdesk-api: container_name: rustdesk-api
container_name: rustdesk-api environment:
environment: - TZ=Asia/Shanghai
- TZ=Asia/Shanghai - 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 #将数据库挂载出来方便备份
- /data/rustdesk/api:/app/data #将数据库挂载出来方便备份 networks:
networks: - rustdesk-net
- rustdesk-net restart: unless-stopped
restart: unless-stopped ```
``` - S6的镜像
- 如果使用***自定义KEY***,会需要修改启动脚本,覆盖镜像中的`/etc/s6-overlay/s6-rc.d/hbbr/run`和`/etc/s6-overlay/s6-rc.d/hbbr/run`
- 如果使用的是S6的镜像会需要修改启动脚本覆盖镜像中的`/etc/s6-overlay/s6-rc.d/hbbr/run` 1. 创建`hbbr/run`自定义KEY才需要
和`/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
@@ -287,63 +309,99 @@ lejianwen/rustdesk-api
[ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}" [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
/usr/bin/hbbr $PARAMS /usr/bin/hbbr $PARAMS
``` ```
2. 创建`hbbs/run`自定义KEY才需要
2. 创建`hbbs/run` ```bash
```bash #!/command/with-contenv sh
#!/command/with-contenv sh sleep 2
sleep 2 cd /data
cd /data PARAMS=
PARAMS= [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
[ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}" /usr/bin/hbbs -r $RELAY $PARAMS
/usr/bin/hbbs -r $RELAY $PARAMS ```
``` 3. 修改`docker-compose.yml`中的`s6`部分
3. 修改`docker-compose.yml`中的`s6`部分 ```yaml
networks:
``` rustdesk-net:
networks: external: false
rustdesk-net: services:
external: false rustdesk-server:
services: container_name: rustdesk-server
rustdesk-server: ports:
container_name: rustdesk-server - 21115:21115
ports: - 21116:21116
- 21115:21115 - 21116:21116/udp
- 21116:21116 - 21117:21117
- 21116:21116/udp - 21118:21118
- 21117:21117 - 21119:21119
- 21118:21118 image: rustdesk/rustdesk-server-s6:latest
- 21119:21119 environment:
image: rustdesk/rustdesk-server-s6:latest - RELAY=192.168.1.66:21117
environment: - ENCRYPTED_ONLY=1
- RELAY=192.168.1.66:21117 - KEY=<key> #自定义KEY
- ENCRYPTED_ONLY=1 volumes:
- KEY=abc123456789 - ./data:/data
volumes: - ./hbbr/run:/etc/s6-overlay/s6-rc.d/hbbr/run
- ./data:/data - ./hbbs/run:/etc/s6-overlay/s6-rc.d/hbbs/run
- ./hbbr/run:/etc/s6-overlay/s6-rc.d/hbbr/run restart: unless-stopped
- ./hbbs/run:/etc/s6-overlay/s6-rc.d/hbbs/run rustdesk-api:
restart: unless-stopped container_name: rustdesk-api
rustdesk-api: ports:
container_name: rustdesk-api - 21114:21114
ports: image: lejianwen/rustdesk-api
- 21114:21114 environment:
image: lejianwen/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 volumes:
- RUSTDESK_API_RUSTDESK_KEY=abc123456789 - /data/rustdesk/api:/app/data #将数据库挂载
volumes: networks:
- /data/rustdesk/api:/app/data #将数据库挂载 - rustdesk-net
networks: restart: unless-stopped
- rustdesk-net ```
restart: unless-stopped - 如果使用***系统生成的KEY***或者***自定义KEY_PUB,KEY_PRIV***不需要修改启动脚本但要在生成KEY后获取到KEY再`docker-compose up -d`
``` ```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直接运行
下载地址[release](https://github.com/lejianwen/rustdesk-api/releases) [下载地址](https://github.com/lejianwen/rustdesk-api/releases)
#### 源码安装 #### 源码安装

View File

@@ -40,21 +40,46 @@ 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.
```bash #### The PC client uses version ***1.3.0***, and versions ***1.2.6+*** have been tested to work.
hbbs -r <relay-server-ip[:port]> -k <key>
hbbr -k <key>
```
Example: #### Solutions for PC client connection timeout or connection issues
- 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`
```bash - ***Solutions***
hbbs -r <relay-server-ip[:port]> -k abc1234567 1. Specify the key on the server.
hbbr -k abc1234567 - Advantage: Simple
``` - Disadvantage: The connection is not encrypted
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 ```bash
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
@@ -148,6 +173,10 @@ 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
@@ -182,167 +211,201 @@ rustdesk:
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=123456789 \ -e RUSTDESK_API_RUSTDESK_KEY=abc123456 \
lejianwen/rustdesk-api lejianwen/rustdesk-api
``` ```
2. Using `docker-compose` 2. Using `docker-compose`
- Simple example: - Simple example:
```yaml
```docker-compose services:
services: rustdesk-api:
rustdesk-api: container_name: rustdesk-api
container_name: rustdesk-api environment:
environment: - RUSTDESK_API_LANG=en
- 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=123456789 - RUSTDESK_API_RUSTDESK_KEY=<key>
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
```
```docker-compose - S6 image
networks: - - 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.
rustdesk-net: 1. Create `hbbr/run`, only needed for custom KEY
external: false ```bash
services: #!/command/with-contenv sh
hbbs: cd /data
container_name: hbbs PARAMS=
ports: [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
- 21115:21115 /usr/bin/hbbr $PARAMS
- 21116:21116 # 自定义 hbbs 映射端口 ```
- 21116:21116/udp # 自定义 hbbs 映射端口 2. Create `hbbs/run`, only needed for custom KEY
- 21118:21118 # web client ```bash
#!/command/with-contenv sh
image: rustdesk/rustdesk-server sleep 2
command: hbbs -r <relay-server-ip[:port]> -k 123456789 # 填入个人域名或 IP + hbbr 暴露端口 cd /data
volumes: PARAMS=
- /data/rustdesk/hbbs:/root # 自定义挂载目录 [ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k ${KEY}"
/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:
depends_on: external: false
- hbbr services:
restart: unless-stopped rustdesk-server:
deploy: container_name: rustdesk-server
resources: ports:
limits: - 21115:21115
memory: 64M - 21116:21116
hbbr: - 21116:21116/udp
container_name: hbbr - 21117:21117
ports: - 21118:21118
- 21117:21117 # 自定义 hbbr 映射端口 - 21119:21119
- 21119:21119 # web client image: rustdesk/rustdesk-server-s6:latest
image: rustdesk/rustdesk-server environment:
command: hbbr -k 123456789 - RELAY=192.168.1.66:21117
#command: hbbr - ENCRYPTED_ONLY=1
volumes: volumes:
- /data/rustdesk/hbbr:/root # 自定义挂载目录 - ./data:/data
networks: restart: unless-stopped
- rustdesk-net rustdesk-api:
restart: unless-stopped container_name: rustdesk-api
deploy: ports:
resources: - 21114:21114
limits: image: lejianwen/rustdesk-api
memory: 64M environment:
rustdesk-api: - TZ=Asia/Shanghai
container_name: rustdesk-api - RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116
environment: - 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 volumes:
- RUSTDESK_API_RUSTDESK_KEY=123456789 - /data/rustdesk/api:/app/data
ports: networks:
- 21114:21114 - rustdesk-net
image: lejianwen/rustdesk-api restart: unless-stopped
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