# nextcloud-ops **Repository Path**: fat-cat-barbecue/nextcloud-ops ## Basic Information - **Project Name**: nextcloud-ops - **Description**: 基于 Nextcloud 的容器化私有云盘高可用运维体系(Nginx + MySQL + Redis + Prometheus) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-10-11 - **Last Updated**: 2026-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nextcloud-ops 基于 Nextcloud 的容器化私有云盘运维体系:反向代理、数据库主从、缓存与分布式文件锁、指标监控、自动化部署。 > **状态**:架构与版本已定稿,部署实施中 --- ## 架构 ### 节点视角(谁在哪台、跑在哪儿) ```text ┌── node1 · 入口 / 存储 / 监控 ────────────────────────────┐ │ 宿主机 keepalived(VIP) · Nginx(反代 / TLS) · NFS Server │ │ 容器 prometheus · grafana · alertmanager │ └──────────────────────────────────────────────────────────┘ ┌── node2 · 应用 A / 数据库主 ─────────────────────────────┐ │ 容器 nextcloud · redis · mysql(主) │ └──────────────────────────────────────────────────────────┘ ┌── node3 · 应用 B / 数据库从 ─────────────────────────────┐ │ 容器 nextcloud · mysql(从) │ └──────────────────────────────────────────────────────────┘ node2 / node3 的 nextcloud 容器共享 node1 的 NFS data 目录 ``` ### 流量视角(一次访问怎么走) ```text 浏览器 ──▶ VIP 192.168.1.10:443 ──▶ node1 Nginx │ ┌─────────────┴─────────────┐ ▼ ▼ nextcloud(node2) nextcloud(node3) └─────────┬─────────┬───────┘ ▼ ▼ 文件 → NFS(node1) 锁 / 缓存 → Redis(node2) 元数据 → MySQL 主(node2) ``` ## 节点规划 | 节点 | 角色 | 宿主机 | 容器 | |---|---|---|---| | node1 | 入口 / 存储 / 监控 | keepalived、Nginx、NFS Server、node_exporter | prometheus、grafana、alertmanager | | node2 | 应用 A / 数据库主 | node_exporter | nextcloud、redis、mysql(主)、mysqld_exporter | | node3 | 应用 B / 数据库从 | node_exporter | nextcloud、mysql(从)、mysqld_exporter | > **分层原则**:应用层进容器(版本可钉死、环境易重建);网络层与存储层(keepalived、NFS)留在宿主机 —— 那是内核态职责,容器化只增加复杂度。 > 完整设计(组件清单 / 关键取舍 / **冗余盘点与单点说明**)见 [docs/architecture.md](docs/architecture.md)。 ## 技术栈 | 组件 | 版本 | 用途 | |---|---|---| | Rocky Linux | 9.x | 操作系统 | | Docker CE | 29.9.0 | 容器运行时 | | Docker Compose | 5.6.0(compose v2 插件)| 容器编排 | | Nginx | 1.28.3 | 反向代理、负载均衡、限流 | | Nextcloud | 35.0.1 | 私有云盘应用(nextcloud:35.0.1-fpm)| | MySQL | 8.4 LTS | 元数据存储、主从复制 | | Redis | 7.2.16 | 缓存、分布式文件锁 | | Prometheus | 3.15.0 | 指标采集与存储 | | Grafana | 13.2.3 | 指标可视化 | | Alertmanager | 0.34.1 | 告警路由 | | node_exporter | 1.12.1 | 主机指标 | | cAdvisor | 0.60.6 | 容器指标 | | mysqld_exporter | 0.20.0 | MySQL 指标 | | redis_exporter | 1.93.0 | Redis 指标 | | nginx-prometheus-exporter | 1.5.3 | Nginx 指标 | | keepalived | 2.2.8 | VIP 高可用 | > **版本原则**:本仓是**独立项目**,自带完整版本表,不引用其它项目的版本清单;优先 LTS / 稳定线;容器镜像一律钉具体版本,**不用 `latest`**;系统集成组件(keepalived 等)以发行版自带包为准,装完用 `rpm -q` 回填真实版本。 ## 关键设计 ### 为什么需要 Redis Nextcloud 多节点部署时,多个应用实例并发写入同一文件会导致数据损坏。 Redis 提供分布式文件锁(memcache.locking),同时承担会话缓存职责。 ### 为什么需要共享存储 两个应用实例必须读到同一份用户文件,因此通过 NFS 挂载同一个 data 目录。 ### 监控分层 | 层级 | 采集组件 | |---|---| | 主机(CPU / 内存 / 磁盘 / 网络)| node_exporter | | 容器(CPU / 内存 / 重启 / 网络)| cAdvisor | | 中间件(MySQL / Redis / Nginx)| mysqld_exporter / redis_exporter / nginx-prometheus-exporter | ## 目录结构 ```text nextcloud-ops/ ├── README.md ├── LICENSE ├── docs/ # 架构设计、部署手册、故障演练、排障复盘 ├── configs/ # Nginx / MySQL / Redis / Prometheus / Grafana 配置 ├── compose/ # Docker Compose 编排文件 ├── ansible/ # 自动化部署 └── scripts/ # 运维脚本 ``` ## 文档 | 文档 | 内容 | |---|---| | [docs/architecture.md](docs/architecture.md) | 架构设计:节点 / 流量视角、组件清单、关键设计、冗余盘点与单点说明 | ## 路线图 - [x] 架构与版本定稿 - [ ] 单机 Docker Compose 全栈跑通 - [ ] 中间件参数调优与压测对比 - [ ] 监控接入(Prometheus + Grafana) - [ ] 多节点扩展与共享存储 - [ ] 自动化部署与故障演练 ## License [MIT](./LICENSE)