私有部署
前置要求
要自行部署 Refly,您需要安装以下软件:
- Docker (版本 20.10.0 或更高)
- 可选: PostgreSQL 客户端(可以是
psql
或基于 GUI 的工具),用于管理可用的 LLM 模型
INFO
我们计划在未来提供功能完善的原生应用程序,以隐私为重点提供无缝的安装体验。敬请期待!
部署步骤
1. 克隆代码仓库
git clone https://github.com/refly-ai/refly.git
TIP
如果您只需要使用 Docker 部署,可以在 clone
命令中添加 --depth 1
参数来节省磁盘空间和下载时间。
2. 准备环境配置
cd refly/deploy/docker
cp ../../apps/api/.env.example .env
环境变量说明:
- LLM 推理相关环境变量:
OPENAI_API_KEY
:您的 OpenAI API 密钥OPENAI_BASE_URL
: 其他 OpenAI 兼容提供商的根 URLOPENROUTER_API_KEY
:您的 OpenRouter API 密钥(如果提供,将覆盖官方 OpenAI 端点)
- 向量嵌入相关环境变量:
EMBEDDINGS_PROVIDER
:向量嵌入提供商,目前支持openai
、jina
和fireworks
EMBEDDINGS_MODEL_NAME
:向量嵌入模型名称,不同提供商可能不同OPENAI_API_KEY
:如果EMBEDDINGS_PROVIDER
为openai
则必需JINA_API_KEY
:如果EMBEDDINGS_PROVIDER
为jina
则必需FIREWORKS_API_KEY
:如果EMBEDDINGS_PROVIDER
为fireworks
则必需
- 网络搜索相关环境变量:
SERPER_API_KEY
:Serper API 密钥
INFO
所有配置选项的完整列表可以在配置指南中找到。
3. 通过 docker compose 启动应用
docker compose up -d
对于热情的用户
默认情况下,docker compose 文件会拉取 latest
镜像,这是最新的稳定版本。如果您想使用与 Refly Cloud 同步的最新开发版本,可以在 docker-compose.yml
文件中将镜像标签 latest
替换为 nightly
。
您可以运行 docker ps
来检查容器的状态。每个容器的预期状态应该是 Up
和 healthy
。以下是示例输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
71681217973e reflyai/refly-api:latest "docker-entrypoint.s…" 5 hours ago Up 5 hours (healthy) 3000/tcp, 0.0.0.0:5800-5801->5800-5801/tcp, :::5800-5801->5800-5801/tcp refly_api
462d7e1181ca reflyai/qdrant:v1.13.1 "./entrypoint.sh" 5 hours ago Up 5 hours (healthy) 0.0.0.0:6333-6334->6333-6334/tcp, :::6333-6334->6333-6334/tcp refly_qdrant
fd287fa0a04e redis/redis-stack:6.2.6-v18 "/entrypoint.sh" 5 hours ago Up 5 hours (healthy) 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp, 0.0.0.0:8001->8001/tcp, :::8001->8001/tcp refly_redis
16321d38fc34 reflyai/refly-web:latest "/docker-entrypoint.…" 5 hours ago Up 5 hours 0.0.0.0:5700->80/tcp, [::]:5700->80/tcp refly_web
2e14ec2e55a2 reflyai/elasticsearch:7.10.2 "/tini -- /usr/local…" 5 hours ago Up 5 hours (healthy) 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp refly_elasticsearch
a13f349fe35b minio/minio:RELEASE.2025-01-20T14-49-07Z "/usr/bin/docker-ent…" 5 hours ago Up 5 hours (healthy) 0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp refly_minio
e7b398dbd02b postgres:16-alpine "docker-entrypoint.s…" 5 hours ago Up 5 hours (healthy) 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp refly_db
最后,您可以通过访问 http://${HOST_IP}:5700
来使用 Refly 应用程序,其中 ${HOST_IP}
是主机的 IP 地址。
INFO
如果无法访问 Refly 应用,请检查以下内容:
HOST_IP
是否正确。- 应用是否正常运行。如果未运行,请跳转到故障排除部分。
- 端口
5700
是否被任何应用程序防火墙阻止。如果您使用的是云服务器,请特别注意这一点。
4. 初始化模型
模型配置通过 refly_db
PostgreSQL 数据库中的 refly.model_infos
表进行管理。我们为一些常见的提供商准备了推荐的模型 SQL 文件:
提供商 | OPENAI_BASE_URL | SQL 文件 |
---|---|---|
OpenAI | (空) | openai.sql |
OpenRouter | https://openrouter.ai/api/v1 | openrouter.sql |
DeepSeek | https://api.deepseek.com | deepseek.sql |
Ollama | http://host.docker.internal:11434/v1 | ollama.sql |
选择一个提供商并执行其 SQL 文件:
# 初始化推荐的 OpenAI 模型
curl https://raw.githubusercontent.com/refly-ai/refly/main/deploy/model-providers/openai.sql | docker exec -i refly_db psql -U refly -d refly
# 或者,初始化推荐的 OpenRouter 模型
curl https://raw.githubusercontent.com/refly-ai/refly/main/deploy/model-providers/openrouter.sql | docker exec -i refly_db psql -U refly -d refly
# 或者,初始化推荐的 DeepSeek 模型
curl https://raw.githubusercontent.com/refly-ai/refly/main/deploy/model-providers/deepseek.sql | docker exec -i refly_db psql -U refly -d refly
WARNING
Refly 目前仅支持一个模型提供商。如果决定切换到另一个提供商或遇到错误 duplicate key value violates unique constraint "model_infos_name_key"
,您需要先清空 refly.model_infos
表:
docker exec -it refly_db psql -U refly -d refly -c "TRUNCATE TABLE refly.model_infos;"
INFO
有关模型配置的详细说明,请参阅配置指南。
升级指南
要升级到最新稳定版本,您可以拉取最新镜像并重启容器:
docker compose pull
docker compose down
docker compose up -d --remove-orphans
如果遇到任何问题,请参阅故障排除部分。
故障排除
如果应用程序无法正常运行,您可以尝试以下步骤:
- 运行
docker ps --filter name=refly_ | grep -v 'healthy'
来识别 不健康 的容器(状态不处于healthy
)。 - 运行
docker logs <container_id>
来获取更多关于不健康容器的错误信息。 - 如果不健康的容器是
refly_api
,您可以首先尝试运行docker restart refly_api
来重启容器。 - 对于其他容器,您可以在容器日志中搜索错误消息的原因。
如果问题仍然存在,您可以在我们的 GitHub 仓库提出问题,或在我们的 Discord 服务器中联系我们。