【lobechat能用searchxng了】 - 开发调优 - LINUX DO

看这个帖子感觉新的搜索功能好像很好用,于是来部署一下。

前情提要:我在自己的服务器(已经部署过数据库版的lobechat)上使用 caddy-docker-proxy 容器管理所有反向代理;已经创建过一个外部网络ext;每次部署新的服务(容器)时只需要加上labels标签(像下面这样)来绑定域名 + 让需要对外暴露的容器都加入ext网络即可。

1
2
3
labels:
caddy: searxng.my.domain
caddy.reverse_proxy: "{{upstreams 8080}}"

安装 searxng 并绑定域名

官方docker仓库:GitHub - searxng/searxng-docker: The docker-compose files for setting up a SearXNG instance with docker.

把repo拉下来

1
2
git clone https://github.com/searxng/searxng-docker.git
cd searxng-docker

修改.env文件

设置 hostname 为自己的域名,设置一个电子邮件(生成密钥会用到)。

1
2
SEARXNG_HOSTNAME=searxng.my.domain
LETSENCRYPT_EMAIL=example@mail.com

生成密钥

sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml

修改 docker-compose 文件

这个官方的docker-compose文件里自带了一个caddy容器,如果自己服务器配置过反向代理的话就要删掉相关的内容。

首先,删掉caddy相关的内容。services下的caddy那部分全部需要删掉(我vps上安装过了 caddy-docker-proxy),volumes下面也有要删的。

然后就是services下的searxng部分,networks加一个ext,再加一个labels标签。

1
2
3
4
5
6
networks:
- searxng # 这行原本就有的
- ext # 添加到ext网络以便与LobeChat通信
labels:
caddy: sear.yexl.top # 替换为你想用的域名
caddy.reverse_proxy: "{{upstreams 8080}}"

最后还要在networks下添加ext:

1
2
3
4
networks:
searxng:
ext:
external: true

修改配置文件 searxng/settings.yml

默认只有html格式,但lobechat需要的是json,所以加上这几行。

1
2
3
4
search:
formats:
- html
- json

启动

docker-compose up -d

现在就可以访问 https://searxng.my.domain/ 使用网页版 searxng 了。

修改 lobechat 的 .env 文件

也可以在 docker-compose 文件里加环境变量,我部署的时候是都放在 .env 文件里的。加上这行:

SEARXNG_URL=https://searxng.my.domain/

重启lobechat。就可以在 lobechat 里使用最新的联网搜索功能了。

不绑定域名只暴露给lobechat使用

不需要用到网页的话或者担心放在公网被fofa扫到了太多人拿去用的话,可以只暴露给 lobechat 。

把 searxng 的 docker-compose 文件的 SEARXNG_BASE_URL 变量的值改一下就行。因为我的所有容器(包括lobechat)都加入了 ext 网络,所以在lobechat的容器内直接使用容器名 searxng 就能访问到 searxng 服务。

1
2
environment:
- SEARXNG_BASE_URL=http://searxng:8080/

然后还要删掉上面加的两行caddy标签。

lobechat 的环境变量当然也要改一下。

SEARXNG_URL=http://searxng:8080/

然后都要重启一下就OK啦。