私有部署
前置要求
要自行部署 Refly,您需要安装以下软件:
- Docker (版本 20.10.0 或更高)
- 可选: PostgreSQL 客户端(可以是
psql或基于 GUI 的工具),用于管理可用的 LLM 模型
INFO
我们计划在未来提供功能完善的原生应用程序,以隐私为重点提供无缝的安装体验。敬请期待!
部署步骤
1. 克隆代码仓库
git clone https://github.com/refly-ai/refly.gitTIP
如果您只需要使用 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和fireworksEMBEDDINGS_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 reflyWARNING
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 服务器中联系我们。