我完全是新手。我怎样才能通过 API 获得 Discourse 的访问权限?
首先,通过导航到 admin > advanced > API keys,单击 new API key,然后配置其详细信息来创建一个 API 密钥。然后,在 API 请求的 Api-Key 和 Api-Username 标头中使用生成的 API 密钥以及创建它的用户的用户名。@Enit
@Enit 您好,能否进一步说明?您是指通过 API 授予对私有论坛的访问权限,还是其他什么?
谢谢!
我们正在构建一个由人工智能驱动的记忆系统,其中多个 AI 代理(DeepSeek、Claude、ChatGPT 等)将我们的 Discourse 论坛用作共享知识库进行交互。
当前设置:
- 自托管 Discourse(最新稳定版)
- VPS:Ubuntu 22.04,基于 Docker 的安装
- 管理员用户:
adminjozsi - AI 代理用户:
grokenit(通过电子邮件邀请创建)
问题
我们遇到了频繁的 API 密钥失效问题:
- API 密钥意外过期,即使设置为“1 年”有效期
- 随机出现**“无效 API”错误**,需要重新生成密钥
- 昨天还能正常工作的密钥,今天突然失效,且没有进行任何配置更改
- POST 请求到
/posts.json时出现错误:{"errors":["Invalid API key"]}
我们尝试过的内容
用户级别 API 密钥(而非全局)
- 描述:“Grok - 用户 API 密钥 - adminjozsi”
- 用户级别:“单个用户”→
adminjozsi - 范围:全局
速率限制调整:
- 将“Rate limit new user create post”设置为
0 - 增加了新用户的各项速率限制
多次重新生成:
- 过去一周生成了 5 个以上的 API 密钥
- 每个密钥最初都能正常工作,但在 24-48 小时内失效
问题
1. 为什么 API 密钥会过期,尽管设置为 1 年有效期?
是否存在我们遗漏的隐藏过期机制?服务器日志未显示任何撤销事件。
2. 两个不同的 API 密钥可以共享同一个 Api-Username 标头吗?
我们的架构思路:
- API 密钥 #1 → 由人工管理员(我)用于手动操作
- API 密钥 #2 → 由 AI 代理(DeepSeek)用于自动发帖
- 两个密钥 → 相同的
Api-Username: adminjozsi标头
问题: Discourse 会正确处理这种情况,还是期望 1 个密钥 = 1 个用户?
3. 我们应该为每个 AI 代理创建单独的用户吗?
替代方案:
- 用户
adminjozsi→ 人工管理员(我) - 用户
grokenit→ AI 代理 #1(DeepSeek) - 用户
claude-ai→ AI 代理 #2(Claude) - 每个用户都有自己的 API 密钥
担忧:
- AI 代理账户是否需要调整信任级别?
- 这会引起速率限制问题吗?
- 这是机器人/代理集成的推荐模式吗?
4. 对于无头/自动化使用,是否存在 API 稳定性最佳实践?
我们需要极其稳定的 API 身份验证,因为:
- AI 代理 24/7 运行,无需人工监督
- 发帖失败 = 我们的记忆系统中丢失数据
- 重新生成密钥需要手动干预
技术细节
API 请求格式:
curl -X POST "https://www.enit.hu/posts.json" \
-H "Api-Key: [KEY]" \
-H "Api-Username: adminjozsi" \
-H "Content-Type: application/json" \
-d '{"title":"Test","raw":"Content","category":6}'
最初有效:
返回 {"id":123,"topic_id":45,...}
24-48 小时后:
返回 {"errors":["Invalid API key"]}
服务器环境:
- Discourse 版本:3.6.0.beta2-latest (f26f894bfc)
- 基于 Docker 的安装
- 无反向代理(直接通过 Let’s Encrypt 进行 HTTPS)
- 无 CDN 或缓存层
我们需要什么
理想解决方案:
- 稳定的 API 密钥,不会意外过期
- 关于多代理架构(1 个密钥 vs 多个密钥)的清晰指导
- 针对密钥应有效但出现“无效 API”错误的调试技巧
任何见解都将不胜感激!这对我们的 AI 集成项目来说是一个关键的障碍。
论坛网址: https://www.enit.hu
乐意提供更多日志/详细信息!
我做了这个。API工作几个小时后就停止工作了。
我的名字是 József,我来自匈牙利,我在一家工厂上夜班。
我不是开发人员或 IT 人员,只是想为自己构建一些有用的东西——一个用于整理工作和私人笔记的小系统。
我在自己的 VPS 上安装了 Discourse,因为我想把它用作私人日记或记忆工具。
它不是公开的,没有人使用它,它只是为我一个人准备的。
我使用它以及一些 AI 助手(如 ChatGPT 或 Claude)来撰写和整理关于日常工作、农业或家庭记忆的简短条目。
它帮助我记住工厂的例行程序,跟踪小型项目,并将事物集中在一个地方进行整理。
每次我在管理面板中创建 API 密钥时,它只能工作几个小时。
然后它突然停止工作并显示“无效的 API 密钥”。
我必须创建一个新的,这会破坏我的设置。
这在一周内已经发生过好几次了。
用户级 API 密钥(非全局)
速率限制设置为 450
已检查日志
尝试了不同的设置
什么都没有帮助——密钥在几个小时后仍然会失效。
有没有办法创建一个不会自动过期的 API 密钥?
或者,对于单用户设置,是否有更好的身份验证方法?
这个 Discourse 设置真的可以帮助我管理我的工作和个人生活。
这是一个私有系统,在我的自己的服务器上,没有公共用户——只有我。
如果这个问题可以解决,我相信其他人也可以以这种方式使用 Discourse,不仅仅是作为论坛,还可以作为个人记忆系统。
技术细节
-
版本:Discourse 3.6.0.beta2-latest
-
设置:Docker on Ubuntu 22.04 LTS
-
VPS:RackForest (2GB RAM)
-
用户:单个管理员 (adminjozsi)
-
为什么密钥会失效?
-
是否有隐藏的过期设置?
-
如何使其稳定?
我非常感谢您提供的任何帮助。
如果我找到一个有效的解决方案,我将很乐意写一篇简短的指南,以便其他处境类似的人也能使用它。
再次感谢,
József Tomkó
https://www.enit.hu