- 云原生
- 运维
- 后端
- 容器编排
【免费下载链接】all-in-one
📦 The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.
导读
Glances 是一款基于 Web 的系统监控仪表盘,能够在浏览器中集中查看 CPU、内存、磁盘、网络与容器运行状态。本文以 Nextcloud All-in-One(AIO)官方仓库中 community-containers/glances/readme.md 为骨架,结合仓库内的 glances.json 容器定义与 PHP 后端源码,完整讲解如何在 AIO 栈内一键部署 Glances、理解其 Docker 配置背后的原理、配置密码与反向代理、以及将监控数据纳入 AIO 备份体系。读完本文,你将能够在自己的 AIO 实例上安全地运行 Glances,并掌握社区容器体系的通用接入方法。
一、Glances 社区容器是什么
Glances 本身是一个跨平台的开源系统监控工具,本项目以 Docker 容器的方式将其打包为 AIO 的“社区容器”(Community Container)。该容器的定义文件为 community-containers/glances/glances.json,核心信息如下:
| 配置项 | 值 | 说明 |
|---|---|---|
container_name | nextcloud-aio-glances | 容器在 AIO 栈内的固定名称 |
display_name | Glances | AIO 界面中显示的名称 |
image | nicolargo/glances | 上游官方镜像 |
image_tag | latest-full | 使用包含 Web 界面功能的完整版本 |
internal_port | 61208 | 容器内 Glances Web 服务监听端口 |
restart | unless-stopped | 异常退出后自动重启 |
ui_secret | NEXTCLOUD_GLANCES_CADDY_PASSWORD | 与 Caddy 反向代理配合时用于界面登录的密码变量 |
⚠️重要安全提示:该容器会将宿主机上的 Docker Socket 挂载进容器(
/var/run/docker.sock),因此容器拥有对宿主 Docker 引擎的管理权限。请务必只在可信环境(如家庭网络)中使用,并理解其安全边界。
容器启动后,你可以直接通过http://ip.address.of.server:61208/访问 Glances 的 Web 界面。
二、JSON 容器定义逐项解读
glances.json 中的aio_services_v1是 AIO 社区容器的标准声明格式,各字段含义如下。
端口映射
"internal_port": "61208", "ports": [ { "ip_binding": "", "port_number": "61208", "protocol": "tcp" } ]internal_port声明容器内部服务端口;ports数组将宿主机的61208端口以 TCP 协议映射到容器内。ip_binding为空字符串,表示默认绑定行为;如需收紧暴露范围,可以结合反向代理与防火墙策略限制访问来源。
数据卷与 Docker Socket
"volumes": [ { "source": "nextcloud_aio_glances", "destination": "/etc/glances", "writeable": true }, { "source": "%WATCHTOWER_DOCKER_SOCKET_PATH%", "destination": "/var/run/docker.sock", "writeable": false } ]nextcloud_aio_glances是 AIO 自动创建的命名卷,挂载到容器内/etc/glances,用于保存 Glances 的配置与运行时数据,因此可以被 AIO 的备份机制捕获(见下文“备份集成”一节)。%WATCHTOWER_DOCKER_SOCKET_PATH%是 AIO 的占位符变量,运行时会被替换为宿主机的 Docker Socket 路径(通常是/var/run/docker.sock),以只读方式挂载。这使 Glances 能够通过 Docker API 展示容器级监控信息,也是文档中明确警告的“挂载了宿主机 Docker Socket”的来源。
环境变量
"environment": [ "GLANCES_OPT=-w" ]GLANCES_OPT=-w是 Glances 镜像的启动参数入口,-w表示以 Web 服务器模式运行(对应 Glances 的-w/--webserver选项),这也是端口61208提供 HTTP 仪表盘的根本原因。
密钥(Secret)机制
"ui_secret": "NEXTCLOUD_GLANCES_CADDY_PASSWORD", "secrets": [ "NEXTCLOUD_GLANCES_CADDY_PASSWORD" ]这是 AIO 社区容器接入反向代理时的标准做法。后端在解析容器定义时会执行registerSecret注册密钥,并在需要时按需生成,见 php/src/ContainerDefinitionFetcher.php:
if (isset($entry['secrets'])) { // All secrets are registered with the configuration when they // are discovered so they can be later generated at time-of-use. foreach ($entry['secrets'] as $secret) { $this->configurationManager->registerSecret($secret); } } $uiSecret = ''; if (isset($entry['ui_secret'])) { $uiSecret = $entry['ui_secret']; }而ConfigurationManager::getRegisteredSecret()则要求密钥必须已注册,否则抛出异常,见 php/src/Data/ConfigurationManager.php。这意味着:只有当你启用了 Caddy 社区容器时,NEXTCLOUD_GLANCES_CADDY_PASSWORD才会被生成并在 AIO 界面中展示;容器本身通过ui_secret将该密钥与界面展示逻辑绑定,见 php/src/Container/Container.php。
三、部署步骤:从 AIO 界面添加 Glances
自 AIO v11 起,社区容器的管理已内置到 AIO 的 Web 界面中(界面最底部的“Community Containers”区块)。启用 Glances 的步骤如下:
- 登录 AIO 管理界面,滚动到页面最底部的Community Containers区域。
- 勾选Glances,点击Save changes。
- 回到容器概览页面,点击Start containers(或 Start and update containers)启动全部容器。
启动完成后即可直接访问http://ip.address.of.server:61208/打开 Glances 仪表盘。
⚠️ 添加任何社区容器前,务必先阅读该容器目录下的 readme 文档(community-containers/readme.md 明确要求先审阅文档再启用)。部分社区容器之间存在兼容性问题,同时启用过多容器可能导致 AIO 启动失败。社区容器由社区维护,AIO 不保证其持续更新与安全,使用需自担风险。
启用后,AIO 后端会读取该 JSON 文件并将定义合并进全局容器列表。相关实现见 php/src/ContainerDefinitionFetcher.php:后端遍历aioCommunityContainers配置,逐个加载community-containers/<名称>/<名称>.json,通过array_merge_recursive与内置的containers.json定义合并,再统一解析成Container对象。界面端则在 php/templates/includes/community-containers.twig 中渲染启用/停用开关,并通过community-form提交配置。
四、使用 Caddy 反向代理访问与密码机制
Glances 自身没有内置认证,文档明确建议仅在家用网络中使用。若想通过域名安全访问,推荐配合 AIO 的Caddy 社区容器:
- 在社区容器列表中同时启用Caddy与Glances。
- 启用后,Glances 会自动通过 Caddy 暴露为
https://glances.your-server.com(子域名前缀由 Caddy 容器自动生成)。 - 出于安全考虑,AIO 会为该地址生成一个随机密码,并显示在 AIO 界面中(点击 Glances 条目的“显示密钥/secret”即可查看)。用户名固定为
glances。
这套“界面展示密钥”机制的背后就是上文提到的ui_secret与secrets字段:AIO 按需生成密码(getAndGenerateSecret,见 php/src/Docker/DockerActionManager.php),随后由 Caddy 代理在访问https://glances.your-server.com时要求 Basic Auth 认证。
若你想在局域网之外访问 Glances,则必须自行搭建反向代理。AIO 仓库提供了通用的反向代理配置说明,见 reverse-proxy.md;也可以参考 Caddy 社区容器的配置示例 community-containers/caddy/。
五、备份集成:监控数据随 AIO 备份
Glances 的持久化数据会自动纳入 AIO 的备份方案,其关键在于backup_volumes字段:
"backup_volumes": [ "nextcloud_aio_glances" ]AIO 的备份逻辑会遍历各容器的backup_volumes,将列出的命名卷(此处为nextcloud_aio_glances,即容器内/etc/glances目录对应的卷)一并纳入备份归档。这意味着:
- 你无需为 Glances 单独编写备份脚本;
- 在 AIO 界面触发备份或每日自动备份时,Glances 的配置数据会被同时保存;
- 恢复备份时,Glances 数据也会被一同恢复。
需要注意:如果备份中包含社区容器数据,恢复时可能需要对同一备份执行第二次恢复才能完整还原社区容器数据,界面提示见 php/templates/containers.twig。
六、卸载与清理
若不再需要 Glances,可通过 AIO 界面停用并移除该社区容器。如需彻底清理残留数据,可参考 community-containers/readme.md 中的通用流程:
- 先移除容器:
sudo docker rm nextcloud-aio-glances - 清理不再使用的镜像:
sudo docker image prune -a - 检查残留卷并删除:
sudo docker volume ls找到nextcloud_aio_glances后执行sudo docker volume rm nextcloud_aio_glances
若服务器上没有 CLI 访问权限,也可以通过社区提供的 container-management 容器在 Web 会话中执行上述 Docker 命令,见 community-containers/container-management/。
七、常见问题与安全建议
- 为什么访问 61208 端口没有认证?因为容器默认以
-w模式直接暴露 Web 服务,未启用内置认证。生产环境务必叠加反向代理的 HTTP Basic Auth(如 Caddy 生成的glances用户密码),或将端口限制在可信网络内。 - Docker Socket 被挂载意味着什么?Glances 借此读取 Docker API 展示容器级指标;与此同时,任何能访问 Glances 界面的攻击者都具备较高权限,因此切勿将未认证的 Glances 暴露到公网。
- 域名解析问题?若使用 Caddy 子域名访问异常,请检查 Caddy 社区容器的配置与域名 DNS 解析,参见 community-containers/caddy/readme.md。
- 恢复备份后 Glances 数据未出现?确认对包含社区容器的备份执行了第二次恢复(见第五节)。
八、延伸阅读
- 社区容器体系总览与添加/测试方法:community-containers/readme.md
- Glances 容器定义 JSON:community-containers/glances/glances.json
- 社区容器解析与合并源码:php/src/ContainerDefinitionFetcher.php
- 密钥注册与生成实现:php/src/Data/ConfigurationManager.php、php/src/Docker/DockerActionManager.php
- AIO 反向代理通用指南:reverse-proxy.md
- 内置容器完整 JSON 定义示例:php/containers.json
- 社区容器 JSON 校验 Schema:php/containers-schema.json
通过本文的配置项解读与源码佐证,你可以放心地在 Nextcloud AIO 栈中启用 Glances,将其作为服务器与容器的实时监控仪表盘,并与反向代理、自动备份体系无缝集成。
- 云原生
- 运维
- 后端
- 容器编排
【免费下载链接】all-in-one
📦 The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.
相关推荐
Nextcloud AIO 部署 Gitea 社区容器:子域反向代理、SSH 端口映射与备份集成实战指南
Nextcloud AIO 部署 Gitea 社区容器:子域反向代理、SSH 端口映射与备份集成实战指南 导读 本文围绕 Nextcloud All in On
云原生运维后端容器编排Nextcloud AIO 社区容器部署 Home Assistant:从家庭自动化到反向代理外网访问
Nextcloud AIO 社区容器部署 Home Assistant:从家庭自动化到反向代理外网访问 本指南讲解如何在 Nextcloud AIO(All i
云原生运维后端容器编排AVA Node 参数传递机制全解析:`--node-arguments`、`nodeArguments` 配置与 `filterNodeArgumentsForWorkerThreads` 过滤实践
AVA Node 参数传递机制全解析: node arguments 、 nodeArguments 配置与 filterNodeArgumentsForWor
云原生运维后端容器编排
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考