内存映射排序列
Unraid优先的单容器部署 Mem0 OpenMemory 适用于那些希望在第一天就实现最简单可靠的自托管安装,而无需手动连接单独的矢量数据库的人。
mem0-aio 将关键的首次启动依赖项捆绑在一起:Qdrant加上持久本地存储。对于可预测的初学者安装,包装器是固执己见的,但它并没有隐藏真正的权衡:OpenMemory仍然需要有效的模型/提供程序配置来完成有用的工作,外部向量后端和托管模型端点仍然需要操作员知识,而暴露直接MCP/neneneba API端口是一个深思熟虑的安全决策,而不是默认要求。
这张图片包括什么
- 端口上的OpenMemory web UI
3000 - 内部本地主机端口上的OpenMemory API/MCP服务器
8765 - 嵌入式Qdrant矢量存储
- SQLite和Qdrant状态的持久应用程序数据存储
- 上游备份/导出辅助脚本捆绑到映像中
- Same-origin UI路由到API,因此标准Unraid安装不需要单独的面向浏览器的API网络
- 在以下位置取消扫描CA模板 mem0-aio.xml
初学者安装
如果你想要最简单的支持路径:
- 安装Unraid模板。
- 保留默认appdata路径。
- 任一组
OPENAI_API_KEY用于托管快速入门,或设置OLLAMA_BASE_URL将您的外部本地Ollama根URL转换为正常的本地LLM路径。 - 如果你使用Ollama,也设置
LLM_MODEL和EMBEDDER_MODEL对于您已经在该服务器上拉取的模型。 - 启动容器。
- 在端口上打开web UI
3000. - 如果您需要更多自定义内容,请在UI中完成提供程序配置或使用高级环境覆盖。
离开 OPENAI_API_KEY 支持空白。预期的伴随路径是外部Ollama,而不是此图像中的捆绑推理。
当 OLLAMA_BASE_URL 已设置,您没有显式覆盖 LLM_PROVIDER 或 EMBEDDER_PROVIDER,包装器现在默认为 ollama 自动。
对于正常的Ollama安装,包装器现在还可以自动检测Qdrant所需的嵌入维度。如果您使用自定义嵌入器,并且自动检测无法确定大小,请设置 EMBEDDER_DIMENSIONS 在高级视图中明确显示。
高级用户界面
这个仓库故意不是一个精简的包装器。该模板现在跟踪上游源代码和文档公开的实际OpenMemory自托管环境表面,以及捆绑的SQLite+Qdrant路径的AIO默认值。在高级视图中,您可以:
- 将OpenMemory指向Ollama、Anthropic、Groq、Together、DeepSeek、Azure OpenAI、Bedrock兼容提供商和其他上游支持的提供商价值观
- 使用本地Ollama根URL作为正常的homelab路径,或与OpenAI兼容
/v1受身份验证保护的反向代理的基本URL - 独立覆盖LLM和嵌入程序提供程序、模型、API密钥和基本URL
- 将向量存储移动到Chroma、Weaviate、Redis、pgvector、Milvus、Elasticsearch、OpenSearch或FAISS
- 使用经过身份验证的外部Qdrant
QDRANT_URL和QDRANT_API_KEY - 默认情况下,在禁用遥测的情况下,继续私下使用捆绑的Qdrant,除非您明确重新启用它
- 保留捆绑的内部默认值,以便最容易安装,同时仍向高级用户公开上游环境界面
外部矢量存储是独占的。仅配置一个后端: REDIS_URL, PG_*,外部 QDRANT_*Chroma、Weaviate、Milvus、Elasticsearch、OpenSearch或FAISS。容器拒绝竞争或部分向量存储选择器,而不是让OpenMemory默默地选择第一个匹配的后端。
包装器仍然默认为内部捆绑存储路径,因此新的Unraid用户在第一天不会被迫使用额外的服务。
运行时注意事项
- 截至
2026-04-17上游Mem0的稳定版本比原始包装器基线更新;该回购正在转移到当前的稳定状态v2.0.0而不是停留在老的v1.0.x线。 - 对于正常浏览器使用,直接API/MCP端口是可选的,因为UI通过同一发布的web端口代理到API。默认情况下,API绑定到
127.0.0.1在容器内,并且不是由Unraid模板发布的;集MEM0_API_HOST=0.0.0.0仅当有意发布端口时8765在您自己的网络或反向代理访问控制背后。 - 嵌入式Qdrant服务是有意捆绑的,因为这是AIO路径的关键首次启动依赖关系。外部矢量存储支持仍然是可选的高级配置。
- 对于经过身份验证的外部Qdrant,首选
QDRANT_URL=http://qdrant:6333加QDRANT_API_KEY而不仅仅是QDRANT_HOST和QDRANT_PORT. - 不设置
QDRANT_API_KEY与捆绑的Qdrant默认值相反。使用QDRANT_URL或外部QDRANT_HOST启用Qdrant身份验证时。 - 本地Ollama提供商支持需要根Ollama URL,例如
http://host.docker.internal:11434,不兼容OpenAI/v1路径。 - 如果你的家庭实验室前门添加了auth,并且只暴露了OpenAI风格
/v1端点,使用OpenAI兼容的基本URL字段,而不是本地Ollama提供程序路径。 - Elasticsearch/OpenSearch支持现在已连接到真正的外部部署,但这些堆栈通常需要显式的身份验证和SSL选择。对于Elasticsearch,高级模板公开
ELASTICSEARCH_USE_SSL和ELASTICSEARCH_VERIFY_CERTS对于OpenSearch,它公开了可选的用户/密码加OPENSEARCH_USE_SSL和OPENSEARCH_VERIFY_CERTSSSL和证书验证都默认为true;将验证设置为false仅适用于专用网络上的可信自签名端点。 - 如果您将OpenMemory暴露在LAN之外,请将直接MCP/neneneba API表面和您的模型/提供商凭据视为真正的攻击表面。
出版与发布
- 包装器版本使用上游版本加上AIO修订版,例如
v2.0.0-aio.1. - 上游监控、发布准备、注册表发布和目录同步由
aio-fleet从.aio-fleet.yml. - 变更日志生成和XML `
同步由以下人员集中运行aio-fleet` 在发布准备期间。 main出版latest、固定的上游版本标签、显式的AIO打包行标签,以及sha-.- 发布作业需要Docker Hub凭据,并直接推送面向CA的Docker Hub标签。
看 docs/releases.md 了解中央发布流程的详细信息。
验证
所需的本地验证在特定于应用程序的测试和 aio-fleet:
git submodule update --init --recursive
python3 -m venv .venv-local
.venv-local/bin/pip install -e "../aio-fleet[app-tests]"
.venv-local/bin/pytest tests/template --junit-xml=reports/pytest-unit.xml -o junit_family=xunit1
.venv-local/bin/pytest tests/integration -m integration --junit-xml=reports/pytest-integration.xml -o junit_family=xunit1
cd ../aio-fleet
.venv/bin/python -m aio_fleet validate-repo --repo mem0-aio --repo-path ../mem0-aio
.venv/bin/python -m aio_fleet trunk run --repo mem0-aio --repo-path ../mem0-aio --no-fixCI成本模型:
- 相关PR和
mainPushs首先运行快速验证层 - 运行Docker支持的集成测试,以进行与构建相关的更改
main发布元数据在发布仍在进行时提交,并用于手动分派 - 图像发布保持在集成套件之后,而不是将跳过的集成视为可接受的
- 外部后端矩阵是同一集成套件的一部分,因此在发布之前会测试支持的向量存储覆盖
外部后端覆盖使用相同的pytest命令。默认情况下,它会启动一个用于确定性嵌入的本地模拟Ollama容器;集 OLLAMA_CONTAINER 只有当您有意对现有的Ollama容器进行测试时:
.venv-local/bin/pytest tests/integration -m integration支持
- 回购问题: JSON无聊/内存问题
- 上游应用程序: mem0ai/mem0
- OpenMemory官方文档: 医学博士
资金
如果这项工作节省了您的时间,请在此处支持它:
明星历史

