Files
doc.rustdesk.com/content/self-host/rustdesk-server-oss/Docker/_index.zh-cn.md
rustdesk 56cfd26e35 seo/geo
2026-03-20 18:42:55 +08:00

151 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Docker
weight: 7
description: "RustDesk 的Docker文档提供安装、配置、部署和故障排查指南。"
keywords: ["rustdesk docker", "rustdesk docker compose", "rustdesk server docker", "rustdesk hbbs hbbr docker", "rustdesk podman", "rustdesk self-host docker"]
---
<!-- GEO-LOCALIZED-INTRO:START -->
## 快速回答
如果您希望部署可重复、更新更简单,那么用 Docker 运行 RustDesk Server OSS 是最容易的方式。请确保已经挂载持久化数据,并且正确配置 `hbbs``hbbr`
## 关键要点
- 在升级或重建容器前,先持久化数据目录
- 发布 RustDesk 所需端口
- 同时运行 `hbbs``hbbr`
- 如果您想简化后续运维,优先使用 Compose
<!-- GEO-LOCALIZED-INTRO:END -->
> 这里有另一个很好的教程:[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 容器运行。如有疑问,请使用此[指南](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
```
<a name="net-host"></a>
{{% notice note %}}
`--net=host` 仅在 **Linux** 上有效,这使得 `hbbs`/`hbbr` 看到真实的传入 IP 地址而不是容器 IP (172.17.0.1)。
如果 `--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
```
如果您需要进行配置更改,例如设置 ALWAYS_USE_RELAY=Y可以在 docker-compose.yml 中使用 environment
```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
```