在服务器上搭建perplexia

Perplexia是一个人工智能搜索引擎,是Perplexity的开源替代版本。最近正好在公司内网的服务器上搭建一个Perplexia服务,记录一下中间遇到的问题,主要是来自于网络环境。

docker镜像的拉取

总所周知的原因,docker在国内拉取镜像并不友好,然而perplexia最合适的办法是通过docker compose启动服务。再试过几个镜像站都不好使之后,我尝试给服务器配置一个clash。具体方法可以使用部署脚本,或者你自己配置。
之后就是指定docker拉取镜像的时候使用本地代理,修改配置文件之后重启即可:

1
2
3
4
# /lib/systemd/system/docker.service 不同机器可能环境不一样
Environment="HTTPS_PROXY=127.0.0.1:7890"
Environment="HTTP_PROXY=127.0.0.1:7890"
Environment=NO_PROXY=localhost,127.0.0.1

Perplexia前端镜像编译

Perplexia默认提供的前端镜像是使用127.0.0.1作为后端服务地址的,因此如果使用默认的部署,前端就无法使用了。此时需要通过修改配置来更新默认地址(这奇葩的脑洞,改一次配置要编译一次新的),操作方式见官方教程
这时候你会发现docker image编译的时候依旧会报npm包拉不下来的情况,这是因为编译是单独启动一个镜像,这个镜像并不会使用我们本地的代理。所以需要在官方的docker-compose.yaml的perplexia-frontend修改一下build的配置:

1
2
3
4
5
6
7
8
9
10
11
perplexica-frontend:
build:
context: .
dockerfile: app.dockerfile
args:
- NEXT_PUBLIC_API_URL=http://127.0.0.1:3001/api
- NEXT_PUBLIC_WS_URL=ws://127.0.0.1:3001
# 增加以下的配置,使得docker image使用本地代理
- HTTP_PROXY=http://127.0.0.1:7890
- HTTPS_PROXY=http://127.0.0.1:7890
- NO_PROXY=localhost,127.0.0.1

这个脑回路也是挺奇特的,每次改ip都需要重新编译一次。建议如果长期部署的,单独本地编译前端代码并且弄个nginx之类的反向代理。

searxng配置代理

Perplexia使用searxng作为搜索引擎,此时需要可以访问google这些搜索引擎,因此也需要配置代理。因为python本身httplib不默认使用系统当前的代理,因此注入HPPTS_PROXY是没意义的。
需要修改searxng/settings.yml,添加以下内容:

1
2
3
4
outgoing:
proxies:
all://:
- http://127.0.0.1:7890

在服务器上搭建perplexia
http://redhand.com.cn/2025/02/22/perplexia/
作者
Zhang Jian
发布于
2025年2月22日
许可协议