插件清理器

:information_source: 摘要 安全扫描、审计并清理由已卸载插件遗留的孤儿数据库残留。
:hammer_and_wrench: 仓库链接 GitHub - canbekcan/discourse-plugin-cleaner · GitHub
:open_book: 安装指南 如何在 Discourse 中安装插件
:computer: 编码 Vibe Coding - Gemini

![Screenshot 2026-03-29 at 04.57.52|690x404](upload://8sCSzrLcoN2qM3GO7zgz0Vz8f1w.png)

功能

当你卸载 Discourse 插件时,它通常会在数据库中留下隐藏数据。随着时间的推移,这些“残留物”可能会使数据库变得杂乱无章,并增加站点维护的复杂性。Discourse Plugin Cleaner 是一款全面的管理工具,旨在安全地识别并删除这些孤儿数据。

主要功能包括:

  • 深度扫描: 扫描多个数据库表,包括自定义字段(用户、主题、帖子、分类、群组)、插件设置、主题、徽章、API 密钥、Webhooks、标签组和上传文件。
  • 安全审计模式(零自动删除): 该插件仅作为审计工具运行,直到你采取行动。它绝不会自动删除数据。你必须手动选择并确认要删除的项目。
  • 风险评估: 自动为检测到的项目分配“风险级别”(关键、高、中、低、正常),以帮助管理员做出明智的决策,确定哪些数据可以安全删除。
  • 版本历史追踪: 在启动时拍摄已安装插件的快照。如果插件被移除,它会记录状态变化,创建关于何时卸载了什么的历史记录。
  • 现代化管理界面: 提供基于 Ember 严格模式组件构建的简洁、直观的控制台,无缝集成到 Discourse 管理界面中。

配置

该插件开箱即用,具有合理的默认设置。使用该插件的步骤如下:

  1. 访问仪表板: 导航至你的 Discourse 管理仪表板。在侧边栏的 插件 部分下,点击 插件清理器
  2. 运行扫描: 点击 “运行深度扫描” 按钮。系统将查询你的数据库,并生成其发现的所有孤儿数据的实时报告。
  3. 审查问题: 浏览分类标签页(自定义字段、插件设置等)。密切关注 风险状态 列。
  4. 选择并清理: 勾选你想要删除的孤儿项目旁边的复选框。
  5. 确认删除: 点击 “删除所选”。在数据被永久擦除之前,系统会提示你进行最终确认警告。所有删除操作都会自动记录在 Discourse 员工操作日志中,以供安全审计。

(关于上传文件的说明:如果发现孤儿上传文件,该插件将指示你在服务器控制台运行 rake uploads:clean 以物理回收磁盘空间。)

设置

你可以通过站点设置自定义扫描器的严格程度。

名称 描述
plugin_cleaner_orphan_threshold 自定义字段被视为“孤儿”的最大记录数。如果自定义字段的记录数少于此阈值,它将被标记以供审查。(默认:5,最小:1,最大:100
plugin_cleaner_stale_api_key_days API 密钥在未使用多少天后会被扫描器标记为过时/孤儿。(默认:90 天,最小:7,最大:365
plugin_cleaner_stale_upload_days 未链接的上传文件存在多少天后会被标记为孤儿。(默认:30 天,最小:1,最大:365

(注意:这是理解 Discourse 插件工作原理的项目)

2 个赞

许多优秀的插件会创建并管理自己的表。查看您的代码,我不确定您是否已经考虑到这一点?

您的挑战在于,一旦卸载插件,迁移文件就会消失。

2 个赞