
OpenProject 系统信息页深度解析版本核对、安全徽章、自动检查清单与存储监控【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject在 OpenProject 中管理员通过 Administration → Information 页面获取安装实例的完整健康状况核心/产品版本、数据库版本与弃用告警、指向官方发布库的安全徽章Security badge、一组由系统自动执行的配置安全检查以及各存储挂载点的磁盘容量。本篇基于当前仓库源码逐块拆解该系统信息页app/views/admin/info.html.erb 的实际路径见下文的渲染逻辑与数据来源帮助管理员读懂每一条状态信息背后的判定条件并掌握安全徽章的关闭方式与相关配置项。页面入口与整体结构进入路径为Administration→Information对应 app/controllers/admin_controller.rb 中的info动作。该动作一次性准备了三类数据页面随后按三个属性分组Attribute group渲染版本信息组核心版本、数据库版本、构建信息与安全徽章System 组自动检查清单checklist结果存储组可多组各挂载点的剩余/已用磁盘空间。控制器中的关键赋值如下db_version OpenProject::Database.version当前数据库版本checklist [...]以标签与布尔结果成对的检查项数组随后追加文件存储、明文抽取、插件钩子、图像转换与 jemalloc 检查storage_information OpenProject::Storage.mount_information存储挂载信息定义见 lib/open_project/storage.rb。版本信息核心版本、构建号与数据库弃用告警app/views/admin/info.html.erb 中的第一个属性分组展示Core build 与 Product version仅在Setting.show_product_version?为真时显示分别链接到OpenProject::VERSION.core_sha与OpenProject::VERSION.product_sha对应的代码引用Core versionOpenProject::Info.versioned_name即产品名加版本号的主显示行Database versiondb_version。若OpenProject::Database.version_deprecated?判定当前数据库版本已被弃用页面会在该行下方渲染一个告警 BannerPrimer::Alpha::Bannerscheme 为:warning并给出指向数据库升级指南postgres_17_upgrade的链接Last change若OpenProject::VERSION.updated_on存在则显示最近一次变更时间。这意味着该页面不仅展示“你用了什么版本”还会主动提示“你的数据库版本该升级了”是管理员日常巡检的第一屏。安全徽章Security badge工作原理与关闭方式安全徽章用于把当前安装与官方 OpenProject 发布数据库比对提醒管理员是否有新版本或安全更新可用。文档说明该徽章仅在Administration→Information紧邻版本行与主页面上显示且只展示给管理员。徽章如何生成徽章由 app/helpers/security_badge_helper.rb 的security_badge_url生成以配置项security_badge_url为基地址附加以下查询参数参数取值来源说明uuidSetting.installation_uuid实例的匿名唯一 IDtypeOpenProject::Configuration[:installation_type]安装类型versionOpenProject::VERSION.to_semver当前版本号semverdbActiveRecord::Base.connection.adapter_name数据库类型lang当前用户语言用于本地化徽章eeEnterpriseToken.active?企业版状态这与官方文档“检查会携带安装类型、当前版本、数据库类型、企业状态与实例匿名唯一 ID并发送用户语言以便本地化”的描述一致传输中不包含任何个人数据。页面端通过object data... typeimage/svgxml内嵌渲染徽章app/views/admin/info.html.erb旁边附有一个帮助图标链接到徽章说明文档。由于徽章是外部 SVG 对象config/initializers/content_security_policy.rb 会在启用徽章时把徽章 URL 动态加入 CSP 的frame-src与object-src第 134 行保证内容安全策略不会阻断徽章加载。关闭徽章的两种方式界面设置在Administration→System settings→General中取消勾选该选项。对应设置项在 config/constants/settings/definition.rb 中定义为security_badge_displayed默认值为true管理界面文案见 app/forms/admin/settings/general_settings_form/security_badge_displayed_caption.html.erb配置标志传入security_badge_displayed: false可通过环境变量或config/configuration.yml覆盖。渲染前由display_security_badge_graphic?统一把关要求配置层OpenProject::Configuration.security_badge_displayed?与数据库设置层Setting.security_badge_displayed?同时为真两层任一关闭则不显示。徽章基地址由security_badge_url配置项提供默认为官方检查端点见 config/constants/settings/definition.rb其writable: false表示不能通过管理界面修改只能经配置文件/环境变量调整——这确保检查目标始终指向可信端点。系统自动检查清单System checklistAdministration → Information 页面会展示一组自动检查结果。任何一项未满足例如仍使用默认管理员账户都会以未打勾的图标呈现告警状态。从 app/views/admin/info.html.erb 的渲染逻辑看每个检查项通过Primer::Beta::Octicon图标区分通过为check-circle-fill未通过为circle并附带aria-labelYes/No供辅助技术读取。结合 app/controllers/admin_controller.rb 的info动作及其私有方法当前核心版本内置的检查项包括检查项标签判定方式说明text_default_administrator_account_changedUser.default_admin_account_changed?默认管理员账户是否已修改文档特别点名的示例text_database_allows_tsvOpenProject::Database.allows_tsv?数据库是否支持 TSV全文搜索前置条件text_file_repository_writableFile.writable?(attachments_storage_path)仅当使用本地文件存储file_storage?时检查附件目录可写性extraction.available.pdftotext / unrtf / catdoc / xls2csv / catppt / tesseract各Plaintext::*Handler.available?明文书档抽取工具是否可用仅当数据库支持 TSV 时加入清单image_conversion.imagemagick执行convert -version并检查输出含ImageMagick图像转换能力admin.jemalloc_allocator以MALLOC_CONFtrue运行一次 Ruby 并检查 stderr 含jemallocjemalloc 分配器是否实际生效值得注意的扩展点admin_information_hook_checks通过call_hook(:admin_information_checklist)收集插件注册的额外检查项app/controllers/admin_controller.rb。也就是说从源码结构看捆绑模块如modules/下的各插件可以把自己的健康检查注入这一清单清单并非写死的固定列表。存储信息Storage information同一页面还展示 OpenProject 应用文件系统uploads 等的磁盘使用情况剩余空间、已用空间与使用百分比。数据来自OpenProject::Storage.mount_informationlib/open_project/storage.rb渲染时按挂载点逐组输出 “Storage group N” 标题每组包含Storage for该挂载点承载的用途标签entries[:labels]多行展示Free spaceentries[:data][:free]经number_to_human_size转为人类可读大小Used spaceentries[:data][:used]并追加percent_used百分比保留两位小数。这使得管理员无需登录 shell 执行df -h即可在界面中直接确认附件等文件存储的容量余量。小结系统信息页作为运维巡检入口Administration → Information 页面把“版本是否最新安全徽章、数据库是否需要升级、关键账户与工具链是否就绪、磁盘是否充足”这四类运维关切集中在单一页面且每项结论都可回溯到明确的源码判定徽章参数拼装见 app/helpers/security_badge_helper.rb检查清单组装见 app/controllers/admin_controller.rb渲染逻辑见 app/views/admin/info.html.erb。对于离线或内网部署环境可按上文两种方式关闭安全徽章其余检查项与存储监控不受影响依然可用于日常健康巡检。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考