Khoj 是一个开源的第二大脑AI 应用,能让你在自己的文档和互联网上进行语义搜索与对话
Khoj 是一个开源的“第二大脑”AI 应用,能让你在自己的文档和互联网上进行语义搜索与对话。它支持自托管,数据完全由你掌控。
部署 Khoj 主要分为三种场景,你可以根据自己的需求选择最合适的方案:
🐳 方案一:使用 Docker Compose 部署(最通用)
这是官方推荐的方式,适合大多数用户,能一次性启动所有核心服务,包括主服务器、向量数据库、代码执行沙箱和搜索引擎。
1. 准备工作
- 确保服务器已安装 Docker 和 Docker Compose。
- (可选)如果你打算使用 Ollama 运行本地模型,请提前安装并启动 Ollama。
2. 下载与配置
在终端中执行以下命令:
1 | # 创建并进入项目目录 |
修改环境变量:编辑 docker-compose.yml 文件,在 server 服务的 environment 部分,必须设置以下变量:
KHOJ_ADMIN_EMAIL:你的管理员邮箱。KHOJ_ADMIN_PASSWORD:你的管理员密码。KHOJ_DJANGO_SECRET_KEY:一个长的随机字符串,用于会话加密。可用openssl rand -hex 50生成。- 添加模型API密钥(至少选择一个):
OPENAI_API_KEY:你的 OpenAI API 密钥。ANTHROPIC_API_KEY:你的 Anthropic API 密钥。GEMINI_API_KEY:你的 Google Gemini API 密钥。
- 使用本地模型(如 Ollama):取消
OPENAI_BASE_URL的注释,并将其值设置为你的 Ollama 服务地址(例如http://host.docker.internal:11434)。
3. 启动服务
1 | docker-compose up -d |
等待镜像拉取和启动完成。
4. 访问与配置
打开浏览器访问 http://localhost:42110,使用你设置的管理员邮箱和密码登录。首次登录后,你可以在后台继续配置其他模型或上传文档。
☁️ 方案二:部署到云端(以 Railway 为例)
如果你想快速在云上部署,避免维护自己的服务器,Railway 提供了一键部署模板。
- 访问 Railway 上的 Khoj 部署页面(如
railway.com/deploy/khoj-self-hosted-ai-second-brain--khoj-ai-second-brain)。 - 点击 “Deploy Now” 按钮,按照指引连接 GitHub 账号。
- 在部署前,Railway 会让你设置环境变量,其中 必须填写 的包括
KHOJ_ADMIN_EMAIL、KHOJ_ADMIN_PASSWORD、KHOJ_DJANGO_SECRET_KEY以及至少一个大模型提供商的 API 密钥(如OPENAI_API_KEY)。 - 点击部署,Railway 会自动为你配置好 PostgreSQL (pgvector)、Terrarium 沙箱和 SearxNG 搜索服务。部署完成后,Railway 会提供一个公网 URL 供你访问。
注意:在 Railway 这类平台部署时,建议将 GUNICORN_WORKERS 环境变量设为 2 或 3,以避免因默认工作进程数过多导致内存溢出(OOM)。
💻 方案三:从源码运行(高级用户/开发者)
这种方式更灵活,适合需要深度自定义或开发调试的用户。要求已安装 Python 3.11+ 环境。
1. 安装 Khoj
建议在虚拟环境中安装,以避免包冲突。
1 | # 创建并激活虚拟环境(可选) |
2. 启动服务
使用匿名模式快速启动(适合本地单用户):
1 | khoj --anonymous-mode |
首次运行会引导你创建管理员账户。访问 http://localhost:42110 即可使用。
🔧 部署后配置要点
无论使用哪种方式,部署后建议进行以下配置:
- 添加聊天模型:登录管理员后台 (
/server/admin),在“Server Chat Settings”中添加你拥有的模型 API 密钥。 - 配置代码执行(可选):如需让 AI 执行代码,需配置 Terrarium(本地)或 E2B(云端)沙箱。
docker-compose.yml已包含 Terrarium 服务,通常无需额外操作。 - 设置远程访问(如需从外网访问):务必配置好反向代理(如 Nginx)并启用 HTTPS。同时,需要设置
KHOJ_DOMAIN和KHOJ_ALLOWED_DOMAIN环境变量,以解决跨域和 CSRF 验证问题。
部署中最关键的是确保 LLM API 密钥配置正确,以及如果是远程访问,务必做好安全加固(如使用 HTTPS 和强密码)。文档中提到的 KHOJ_ANONYMOUS_MODE=true 适合本地局域网使用,暴露到公网时强烈建议关闭此模式并设置强密码。

