From 9a5a3f847504b249e6347753d89f1fcd163d0b5f Mon Sep 17 00:00:00 2001 From: Joywayer Date: Tue, 28 Apr 2026 17:07:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Erustdesk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 37 ++++++++++++++++++++++++++++++++----- base/.env.example | 7 +++++++ base/README.md | 35 +++++++++++++++++++++++++++++++++++ base/setup.sh | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 108 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a7b82ff..751254a 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ | [joplin/](joplin/) | 笔记同步服务器(Joplin Server + PostgreSQL) | 443 | | [siyuan/](siyuan/) | 知识管理笔记(思源笔记 SiYuan) | 443 | | [portainer/](portainer/) | Docker 可视化管理(Portainer CE) | 443 | +| [rustdesk/](rustdesk/) | 自托管远程桌面服务器(RustDesk) | 21115-21117, 443 | ## 架构概览 @@ -30,6 +31,13 @@ │+MySQL 8.4│ │ │ │+PgSQL│ │ │ │ │ │ │ └──────────┘ └────────┘ └──────┘ └──────┘ └─────────┘ └─────────┘ Docker Docker Docker Docker Docker Docker + + ┌─────────────────────────────────┐ + │ RustDesk (hbbs + hbbr) │ + │ TCP 21115/21116/21117(外网直达)│ + │ WS 21118/21119(Nginx 代理) │ + └─────────────────────────────────┘ + Docker ``` 所有服务通过 Nginx 反向代理提供 HTTPS 访问,容器端口仅监听 `127.0.0.1`。 @@ -75,11 +83,18 @@ docker/ │ ├── backup.sh │ ├── nginx/siyuan.conf │ └── README.md -└── portainer/ # Portainer CE Docker 管理 - ├── docker-compose.yml +├── portainer/ # Portainer CE Docker 管理 +│ ├── docker-compose.yml +│ ├── deploy.sh # 部署脚本(依赖 base/) +│ ├── backup.sh +│ ├── nginx/portainer.conf +│ └── README.md +└── rustdesk/ # RustDesk 自托管远程桌面 + ├── docker-compose.yml # hbbs + hbbr 容器编排 ├── deploy.sh # 部署脚本(依赖 base/) ├── backup.sh - ├── nginx/portainer.conf + ├── uninstall.sh + ├── nginx/rustdesk.conf # Nginx WebSocket 代理配置 └── README.md ``` @@ -89,7 +104,7 @@ docker/ ```bash # 1. 上传所有文件到服务器 -scp -r base/ gitea/ certd/ joplin/ vaultwarden/ siyuan/ portainer/ root@:/opt/ +scp -r base/ gitea/ certd/ joplin/ vaultwarden/ siyuan/ portainer/ rustdesk/ root@:/opt/ # 2. 安装基础环境 ssh root@ @@ -132,6 +147,12 @@ cd /opt/portainer bash deploy.sh vi .env bash deploy.sh + +# 9. 部署 RustDesk(自托管远程桌面) +cd /opt/rustdesk +bash deploy.sh +vi .env +bash deploy.sh ``` ### 场景二:已有 Gitea 的服务器,追加部署 Certd @@ -176,6 +197,7 @@ bash deploy.sh | Joplin | `joplin.example.com` | A → 服务器 IP | | Vaultwarden | `vault.example.com` | A → 服务器 IP | | SiYuan | `note.example.com` | A → 服务器 IP | +| RustDesk | `rustdesk.example.com` | A → 服务器 IP | ## 日常运维 @@ -196,6 +218,9 @@ cd /opt/vaultwarden && docker compose ps # SiYuan cd /opt/siyuan && docker compose ps + +# RustDesk +cd /opt/rustdesk && docker compose ps ``` ### 备份所有服务 @@ -206,6 +231,7 @@ cd /opt/certd && bash backup.sh cd /opt/joplin && bash backup.sh cd /opt/vaultwarden && bash backup.sh cd /opt/siyuan && bash backup.sh +cd /opt/rustdesk && bash backup.sh ``` ### SSL 证书续期 @@ -222,7 +248,8 @@ certbot renew --dry-run ## 注意事项 -- **Gitea 的 deploy.sh 是自包含的**,不依赖 base/(历史兼容)。Certd、Joplin、Vaultwarden 和 SiYuan 依赖 base/。 +- **Gitea 的 deploy.sh 是自包含的**,不依赖 base/(历史兼容)。Certd、Joplin、Vaultwarden、SiYuan、Portainer 和 RustDesk 依赖 base/。 +- **RustDesk 需额外开放防火墙端口** 21115/21116(TCP)、21116(UDP)、21117(TCP),这些端口需从外网可直接访问,不经过 Nginx。 - 所有容器端口仅监听 `127.0.0.1`,通过 Nginx 反向代理对外提供 HTTPS 服务。 - `.env` 文件包含敏感信息,不要提交到公开仓库。 - 首次部署每个服务时需要运行两次 `deploy.sh`:第一次生成 `.env`,修改配置后第二次正式部署。 diff --git a/base/.env.example b/base/.env.example index d4a7ead..1e91cd5 100644 --- a/base/.env.example +++ b/base/.env.example @@ -2,3 +2,10 @@ # Docker 镜像加速(国内服务器推荐配置) DOCKER_REGISTRY_MIRRORS=https://docker.1ms.run,https://docker.m.daocloud.io,https://dockerpull.org,https://docker.rainbond.cc,https://docker.udayun.com,https://hub.rat.dev + +# SSH 公钥认证(可选) +# 填入本机公钥内容,setup.sh 运行时自动写入服务器 authorized_keys,后续无需密码登录 +# 获取本机公钥(Windows PowerShell): Get-Content ~/.ssh/id_ed25519.pub +# 获取本机公钥(Linux/macOS): cat ~/.ssh/id_ed25519.pub +# 若本机还没有密钥,先生成: ssh-keygen -t ed25519 +SSH_PUBLIC_KEY= diff --git a/base/README.md b/base/README.md index 424c765..11e1239 100644 --- a/base/README.md +++ b/base/README.md @@ -26,9 +26,43 @@ scp -r base/ root@<服务器IP>:/opt/base cd /opt/base cp .env.example .env # 编辑 .env 配置 Docker 镜像加速(可选) +# 配置 SSH_PUBLIC_KEY 可实现密钥登录(推荐) bash setup.sh ``` +### 配置 SSH 密钥认证(推荐) + +首次部署前,将本地公钥填入 `base/.env`,`setup.sh` 运行时会自动配置服务器,后续 SSH/SCP 无需再输入密码。 + +**第一步:生成本地 SSH 密钥(如果还没有)** + +```powershell +# Windows PowerShell +ssh-keygen -t ed25519 +``` + +**第二步:将公钥写入 base/.env** + +```powershell +# Windows PowerShell:复制公钥内容 +Get-Content ~/.ssh/id_ed25519.pub +``` + +将输出的内容(形如 `ssh-ed25519 AAAA... comment`)填入 `base/.env`: + +```env +SSH_PUBLIC_KEY=ssh-ed25519 AAAA...(你的公钥内容) +``` + +**第三步:上传 .env 并运行 setup.sh** + +正常执行上传和 `bash setup.sh` 后,SSH 密钥即自动配置完成。后续连接直接: + +```bash +ssh root@<服务器IP> # 无需密码 +scp -r ... root@<服务器IP> # 无需密码 +``` + ### 方式二:被其他服务脚本调用 ```bash @@ -57,6 +91,7 @@ install_nginx | `install_certbot` | 安装 Certbot | | `setup_firewall_base` | 开放 22/80/443 端口 | | `firewall_allow_port [desc]` | 开放额外端口 | +| `setup_ssh_key ` | 配置 SSH 公钥认证 | | `setup_ssl_cert [name]` | 申请 SSL 证书 | | `deploy_nginx_conf