HTTPS
用免费的 Let's Encrypt 证书,或者由主控直接使用你自己的证书,通过 HTTPS 提供面板。
只要面板能从公网访问,就请使用 HTTPS。面板是 http:// 时,浏览器每次打开都会提示“不安全”,而且密码和会话 Cookie 在网络上以明文传输。大屏模式要保持屏幕常亮,也需要 HTTPS;通行密钥(用来为你批准的 AI 修复签名)只能在 HTTPS 下使用。
有两种方式:
方式一:Let's Encrypt(--https) | 方式二:主控直接提供 HTTPS | |
|---|---|---|
| 需要 | 域名、主控上的 Nginx 或 Apache、80 端口能从外网访问 | PEM 格式的证书和私钥 |
| 证书 | 免费,由 certbot 自动申请和续期 | 你自己的证书,例如免费的 Cloudflare 源服务器证书 |
| 面板地址 | https://monitor.example.com/ | https://monitor.example.com:8443/(或其他端口) |
方式一:Let's Encrypt 免费证书
在发布包目录里执行:
sudo bash install.sh master --domain monitor.example.com --https --email you@example.com如果这台服务器同时运行被控,把 master 换成 both。在已有的安装上执行时,账号、设置和数据都会保留。
安装脚本会:
- 在 Nginx(
/etc/nginx/conf.d/3rmonitor.conf)或 Apache(/etc/apache2/sites-available/3rmonitor.conf或/etc/httpd/conf.d/3rmonitor.conf)中生成反向代理; - 需要时安装 certbot 及其 Nginx 或 Apache 插件(apt、dnf 或 yum);
- 为域名申请免费的 Let's Encrypt 证书。certbot 会自动续期;
--email可选,用来接收到期提醒; - 把面板地址改为
https://monitor.example.com/(如果给了--public-url则不改)。
运行之前:已安装 Nginx 或 Apache,域名已解析到这台服务器,80 端口能从外网访问。
经过 Cloudflare 代理时
开启了 Cloudflare 代理(橙色云朵)时,申请证书期间先把 DNS 记录改为“仅 DNS”,或者使用方式二。
在全新安装时可以加 --listen 127.0.0.1,这样 8899 端口不对外暴露,面板只能通过反向代理访问。如果其他服务器上的被控用 http://IP:8899 上报,不要这样做:它们会连不上主控。(主控本机的被控向 127.0.0.1 上报,不受影响。)
方式二:主控直接提供 HTTPS
在 /etc/3rmonitor/master.conf 中填写 PEM 证书和私钥的路径,并用 tls_listen 给 HTTPS 单独开一个端口。免费的 Cloudflare 源服务器证书很合适:在 Cloudflare 中进入 SSL/TLS → 源服务器,创建证书,然后把 SSL/TLS 加密模式设为 完全(严格)(Full (strict))。
listen = 0.0.0.0:8899
tls_listen = 0.0.0.0:8443
tls_cert = /etc/3rmonitor/origin.pem
tls_key = /etc/3rmonitor/origin.key8899 端口照常提供 HTTP,所以用 http://…:8899 上报的被控(包括主控本机的被控)不受影响。
证书文件必须能被 3rmonitor 用户读取:
sudo chgrp 3rmonitor /etc/3rmonitor/origin.pem /etc/3rmonitor/origin.key
sudo chmod 640 /etc/3rmonitor/origin.pem /etc/3rmonitor/origin.key
sudo systemctl restart 3rmonitor-master然后把 设置 → 常规 → 面板对外地址 改为 https:// 地址,例如 https://monitor.example.com:8443/,并在防火墙中放行这个端口。
- Cloudflare 只代理部分端口的 HTTPS(443、2053、2083、2087、2096 和 8443),所以示例用 8443。只有没有 Web 服务器占用 443 端口时,才用
tls_listen = 0.0.0.0:443。 - 不填
tls_listen时,listen端口本身改为 HTTPS(1.0.4 之前版本的做法)。这时被控的master_url(/etc/3rmonitor/agent.conf)必须改用https://。Cloudflare 源服务器证书只有 Cloudflare 信任,所以要用经过 Cloudflare 的地址,或在被控上设置insecure = true。
用 http:// 地址访问时
- 设置 里的面板地址是
https://时,浏览器用http://打开同一个域名会跳转到https://。反向代理需要传X-Forwarded-Proto;install.sh生成的 Nginx 和 Apache 配置以及 Cloudflare 都会传。 - 仍用
http://地址上报的被控照常工作:上报不会被跳转。使用方式一之后不需要改被控。面板里新生成的安装命令会使用https://地址。 - 用 IP 访问面板(
http://IP:8899)永远不会跳转,也能正常登录:登录 Cookie 只在 HTTPS 请求时标记为 Secure。
另见 Cloudflare 使用提示。