mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-29 20:05:25 +08:00
Add Cloud promotion tips to pages where users need public IP, domain, and HTTPS for webhook callbacks: WeChat Work, WeChat Official Account, Lark, QQ Official Bot, LINE, and the proxy-and-ssl guide.
132 lines
4.5 KiB
Plaintext
132 lines
4.5 KiB
Plaintext
---
|
||
title: "配置 HTTP 反向代理或通过网关访问 LangBot"
|
||
---
|
||
|
||
LangBot 内部未支持内置 SSL 提供 HTTPS 服务,若您需要解析域名到 LangBot 实例,或需要使用 HTTPS 访问 LangBot WebUI 和各个机器人的 Webhook 地址,请参考此文档部署 NGINX 或 Caddy 实现 HTTP 反向代理。
|
||
|
||
您需要将 LangBot 部署在具有公网 IP 的主机上,并购买域名,将域名解析到主机公网 IP 上。
|
||
|
||
<Tip>
|
||
**觉得配置麻烦?** [LangBot Cloud](https://space.langbot.app/cloud) 已自带域名和 HTTPS,无需自行购买服务器、域名或配置反向代理,注册即可使用企业微信、微信公众号等 Webhook 类平台。
|
||
</Tip>
|
||
|
||
<Warning>
|
||
若您需要使用 QQ官方机器人、微信公众号、企业微信、Slack、LINE 等需要 Webhook 回调地址的机器人,请务必按照本文档配置 HTTP 反向代理。
|
||
</Warning>
|
||
|
||
## Caddy
|
||
|
||
Caddy 是一个现代的 HTTP 服务器,支持自动 HTTPS 证书申请和续期,支持反向代理,支持自动配置 DNS 解析。
|
||
|
||
[Caddy 安装文档](https://caddy2.dengxiaolong.com/docs/install)。选择对应自己操作系统的安装步骤,进行安装。
|
||
|
||
### 填写 Caddyfile
|
||
|
||
本文假设使用 ubuntu 系统部署 LangBot ,那么在系统中,Caddyfile 的默认位置为 `/etc/caddy/Caddyfile`。
|
||
使用 vim 或 nano 编辑 Caddyfile ,Caddyfile文件填写为:
|
||
|
||
```json
|
||
your.domain.com {
|
||
reverse_proxy 127.0.0.1:5300
|
||
}
|
||
```
|
||
|
||
<Info>
|
||
若您的 Caddy 和 LangBot 使用容器部署,请查看[容器网络配置详解](/zh/workshop/network-details)
|
||
</Info>
|
||
|
||
现在,您即可通过浏览器访问 `https://your.domain.com` 访问 LangBot WebUI。
|
||
|
||
### 设置机器人回调地址前缀
|
||
|
||
若您需要使用 QQ官方机器人、微信公众号、企业微信、Slack、LINE 等需要 Webhook 回调地址的机器人,请在 data/config.yaml 文件中设置`api.webhook_prefix`为您的域名。例如:`https://your.domain.com`。
|
||
|
||
之后,在机器人管理页面,您将看到正确显示的回调地址。
|
||
|
||
## NGINX
|
||
|
||
NGINX 也是常用的 HTTP 服务器和反向代理工具,可以用来实现 LangBot 的 HTTPS 接入。
|
||
|
||
### 安装 NGINX
|
||
|
||
在 Ubuntu 上可以通过以下命令安装 NGINX:
|
||
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install nginx
|
||
```
|
||
|
||
### 准备 SSL 证书
|
||
|
||
您可以使用 [Let’s Encrypt](https://letsencrypt.org/) 免费申请 SSL 证书。推荐使用 [Certbot](https://certbot.eff.org/) 工具来获取证书:
|
||
|
||
```bash
|
||
sudo apt install certbot python3-certbot-nginx
|
||
sudo certbot --nginx
|
||
```
|
||
|
||
按照提示输入域名,证书申请与 NGINX 配置会自动完成。请参考如下内容完成 NGINX 配置。
|
||
|
||
### 配置 NGINX 反向代理
|
||
|
||
LangBot 的流水线调试功能需要使用 WebSocket 连接,因此需要配置 NGINX 支持 WebSocket。
|
||
|
||
编辑 NGINX 配置文件 `/etc/nginx/sites-available/langbot`(可以使用 vim 或 nano 编辑器):
|
||
|
||
```nginx
|
||
# WebSocket 连接升级映射(放在 server 块之外)
|
||
map $http_upgrade $connection_upgrade {
|
||
default upgrade;
|
||
'' close;
|
||
}
|
||
|
||
server {
|
||
listen 80;
|
||
server_name your.domain.com;
|
||
# 将 HTTP 流量重定向到 HTTPS
|
||
return 301 https://$host$request_uri;
|
||
}
|
||
|
||
server {
|
||
listen 443 ssl;
|
||
server_name your.domain.com;
|
||
|
||
ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;
|
||
ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;
|
||
|
||
ssl_protocols TLSv1.2 TLSv1.3;
|
||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||
|
||
# 反向代理到 LangBot 实例
|
||
location / {
|
||
proxy_pass http://127.0.0.1:5300;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
|
||
# WebSocket 支持
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection $connection_upgrade;
|
||
proxy_read_timeout 86400;
|
||
}
|
||
}
|
||
```
|
||
|
||
将 `your.domain.com` 替换为您实际的域名。
|
||
|
||
启用此配置并重启 NGINX:
|
||
|
||
```bash
|
||
sudo ln -s /etc/nginx/sites-available/langbot /etc/nginx/sites-enabled/langbot
|
||
sudo nginx -t
|
||
sudo systemctl reload nginx
|
||
```
|
||
|
||
### 设置机器人回调地址前缀
|
||
|
||
同样,在 `data/config.yaml` 配置文件中将 `api.webhook_prefix` 设置为 `https://your.domain.com`,这样机器人 Webhook 回调地址才会正确。
|
||
|
||
完成上述配置后,即可通过 `https://your.domain.com` 安全访问 LangBot WebUI 和机器人 Webhook 服务。
|