无尘阁日记

无尘阁日记

受够了把公司文档喂给别人的服务器?这个 9.5 万星的自托管 AI 工作台,能整套搬回自己机器
silcano

github监控器 · 2026-11-10 · 约 4364 字 · odysseus-dev/odysseus

 

你在 ChatGPT 里贴过客户合同、贴过没发布的财报、贴过内部代码。贴的时候心里是虚的。

Odysseus 干的事很直接:把这套东西整套搬回你自己的服务器。 聊天、agent、深度研究、文档编辑、邮件收发、笔记日历,一个 Docker 起来,数据全在你盘上。

9.5 万星,每天涨 582 星,AGPL-3.0,Python 写的。这篇文章把部署命令、首次密码怎么拿、生产环境该钉哪个 tag、哪些开关不能碰,一条条摆出来。

一、先说结论:它解决的是"数据主权"和"工具割裂"两个问题

先说第一个。市面上的 AI 产品,数据默认走别人的服务器。你能做的只有"相信它不看你"。

对个人无所谓。但只要你手上有客户资料、未公开财务、内部代码,这就不是信任问题,是合规问题。

第二个问题更日常:你的工作被切成了五六个网页。 聊天一个、写文档一个、查资料一个、收邮件一个、记笔记一个,每个都要重新登、重新贴上下文。

Odysseus 的答案是把它们塞进一个工作台,而且这个工作台跑在你自己的 7011 端口上。

odysseus 数据卡

二、它到底是什么:一句话读完 README

README 第一句就是定位,值得照抄:

"A self-hosted AI workspace for chat, agents, research, documents, email, notes, calendar, and local model workflows."

拆开看,这里有两个关键词。

self-hosted:你自己部署,数据不出你的机器。

workspace:不是一个聊天框,是一组能互相喂东西的模块。比如深度研究跑完的报告,能直接进文档编辑器接着改;邮件里读到的东西,能被 agent 拿去建日程。

这个"互相喂"才是它和"又一个 ChatGPT 套壳"的区别。

三、八个模块分别干什么

README 的 Features 列了七组,我按"你什么时候会用"重排一下:


模块
具体能力
什么时候用
Chat + Agents
本地/API 模型、工具调用、MCP、文件、shell、skills、记忆
日常主力
Cookbook
按你的硬件推荐模型、下载、起服务
第一次配模型时
Deep Research
多步联网研究,读源文,出报告
要写调研材料时
Compare
盲测并排比模型,然后综合
选模型 / 验效果时
Documents
写作优先的编辑器,AI 改写、建议、Markdown/HTML/CSV、语法高亮
正式写东西时
Email
IMAP/SMTP 收件箱,分类、打标签、摘要、提醒、起草回复
处理积压邮件时
Notes / Tasks / Calendar
提醒、待办、定时 agent 任务、CalDAV 同步
排事情时
Extras
图库/图片编辑、主题、上传、联网搜索、预设、会话、两步验证
杂项

注意 Agents 那一行里的 shell 和 MCP。这两项意味着它能真的在你机器上执行命令、接外部工具服务——这是能力,也是风险,后面安全那节会专门说。

还有 CalDAV 同步这个细节。它说明日历不是自己关起门玩的,能和你手机上的日历双向同步,这比"内置一个日历页面"实用得多。

四、装:四条命令,五分钟

官方给的是最短路径,没有花活:

git clone https://github.com/odysseus-dev/odysseus.git
cd odysseus
cp .env.example .env
docker compose up -d --build

四条命令,逐个说清楚。

第一条拉代码。注意 README 顶部那句提示:

"dev is the default branch and gets the newest changes first. Use main if you want the more curated branch."

默认分支是 dev,最新但不一定最稳。要稳就切 main:

git clone -b main https://github.com/odysseus-dev/odysseus.git

第三条 cp .env.example .env 一定要做。不建 .env,compose 里那些变量会走默认值,后面改端口、改密钥、关掉认证都没地方改。

第四条 -d 是后台,--build 是本地构建。第一次跑会拉基础镜像,视网络情况几分钟到十几分钟。

五、起来之后第一件事:去日志里拿密码

容器健康后开 http://localhost:7011。

然后你会卡在登录页——因为你没有密码。

README 写得很清楚,密码不在 .env 里,在日志里:

docker compose logs odysseus

翻输出,第一次启动时会打一行初始管理员密码。拿到立刻改掉。

这一步是很多人第一次部署就放弃的地方——习惯性去 .env 找 ADMIN_PASSWORD,找不到就以为装坏了。它在日志里。

顺手建议:把 docker compose ps 也跑一下,确认容器状态是 healthy 而不是 starting。starting 状态下页面能开但接口会 502。

README 里的界面截图

六、生产部署:为什么必须钉住那串 sha

README 里有一段专门讲这个,很多人会跳过,但它决定了你下次重启会不会突然挂:

":latest and bare :X.Y.Z tags move on every push to main, but :X.Y.Z-<sha> (e.g. 1.0.2-7c8070f) always refers to one specific build."

翻成人话:


tag 写法
会变吗
适合
:latest
每次 main 有提交就变
只适合在本机试玩
:1.0.2
跟着 main 一起移动
不要用在生产
:1.0.2-7c8070f
永远指向同一次构建
生产环境用这个

所以生产环境的启动命令应该长这样:

ODYSSEUS_IMAGE=ghcr.io/odysseus-dev/odysseus:1.0.2-7c8070f docker compose up -d

另外还有个不显眼但很值钱的细节:

"The compose files pull the official multi-arch image ... and only build locally if the pull fails — so this also works on hosts without a build toolchain."

意思是先拉现成镜像,拉不到才本地构建。所以你没有编译工具链也能跑——NAS、轻量云主机、Portainer 里点几下就行。

反过来讲:如果你看到它在长时间"building",说明镜像没拉到,八成是网络问题。

七、模型怎么接:两条路

它支持两类模型来源。

路一:本地模型。 用 Cookbook 那套,它按你的显存/内存推荐能跑多大的模型,然后帮你下载、起服务。

路二:API 模型。 在设置里填第三方 API 的地址和 key,走 OpenAI 兼容协议那一套。

实际用法建议:小活走本地,大活走 API。

本地模型处理分类、摘要、改写这些高频低难度任务,不花钱也不出网;真要做深度研究、写长文档,再切到 API 模型。

这套分工在 .env 里能配死,不用每次手点。

八、安全:两个开关必须守

README 有一段单独的安全提示,语气比一般项目重,值得逐条看:

"Odysseus is a self-hosted workspace with powerful local tools. Keep auth enabled, keep private data out of Git, and do not expose raw model/service ports publicly."

它自己给了两条硬规矩:


配置项
要求
为什么
AUTH_ENABLED
任何对外可访问的部署必须是 true
关了等于把 shell 权限公开
LOCALHOST_BYPASS
非本地开发环境必须 false
它会让本机请求免登录,反代后极易被绕过

第二条特别容易踩。LOCALHOST_BYPASS=true 原本是为了本地调试方便,但你一旦挂到 Nginx 后面,反向代理过来的请求源 IP 是 127.0.0.1,认证就被绕过了。

所以顺序是:本机调试可以开,上反代之前必须关。

再补两条 README 没写但很实际的:

  1. 别把 7011 直接暴露到公网。 前面必须有 HTTPS 反代,README 的 setup 指南里有现成配置;
  2. .env 别提交到 Git。 里面有 API key 和数据库口令。

README 里的功能总览

九、它和"自己拿开源拼一套"比,差在哪

你完全可以自己拼:Ollama + Open WebUI + n8n + Obsidian + 某个邮件客户端。也能用。

区别在三个地方:


维度
自己拼
Odysseus
模块之间通不通
各管各的,靠复制粘贴
同一套数据模型,能互相喂
部署成本
五六个服务,五六个配置
一个 compose
升级
逐个升,版本互相打架
镜像整体升
控制力
想改哪层改哪层
改得动,但要读它的代码
踩坑
坑是你自己的
坑是社区的

结论:要"能马上用起来"选它,要"每一层都自己说了算"就自己拼。

这两者不冲突——它本身就是开源的,可以拿它当骨架,把不满意的模块换掉。

十、AGPL 这条许可要注意什么

它是 AGPL-3.0-or-later,比 GPL 更严一档。

关键差别:AGPL 把"通过网络提供服务"也算作分发。

说人话:

  1. 自己用、公司内部用——随便用,没有额外义务;
  2. 改了它的代码,并且把它作为服务开放给别人用——你必须公开改动后的源码;
  3. 只是调它的 API、写插件、接自己的系统——不受影响。

所以想拿它做商业化 SaaS 的人要注意这条。内部工具、个人工作台完全没问题。

十一、谁该用,谁先别碰


你是谁
建议
手上有敏感资料,不敢往外部 AI 贴
强烈建议,这是它的主场
有一台常开的机器 / NAS / 小主机
建议,部署门槛很低
受够了在五六个网页之间切换
建议,它的价值在整合
只有笔记本,不常开
可以试,但要接受"用的时候才起"
要给别人提供 AI 服务
先读懂 AGPL 再决定
完全不想碰命令行
不建议,出问题没法自查

最后一条不是劝退,是实话。自托管的核心成本不是部署,是出问题的时候你得能看日志。

十二、版本与地址


项目
内容
仓库
github.com/odysseus-dev/odysseus
官网/演示
odysseus-dev.github.io/odysseus
许可
AGPL-3.0-or-later
语言
Python
默认端口
7011
镜像
ghcr.io/odysseus-dev/odysseus
建仓
2026-05-31
当前星数
约 9.5 万
形态: 自托管 AI 工作台(Docker Compose)
许可: AGPL-3.0-or-later
部署: cp .env.example .env && docker compose up -d --build
入口: http://localhost:7011
首次密码: docker compose logs odysseus
生产必钉: ghcr.io/odysseus-dev/odysseus:1.0.2-7c8070f

最后一句:这个项目最值得学的不是功能清单,而是它把"数据主权"做成了一个能用五条命令换来的东西。以前这件事要一个运维团队,现在要一个下午。

 

关于作者 · 江天(楠哥)
AI 实战导师 / 企业 AI 落地顾问 / 智能体工程师,17 年跨界、15,000+ 小时 AI 实操、20+ 套已交付工作流。 看完整履历海报 → skills 实验室 →