master
- 修复 Cockpit 默认禁止 root 登录的问题 - 在安装脚本中自动从 disallowed-users 移除 root - 已在两台服务器上应用修复并重启服务 问题: 用户无法使用 root 登录 Cockpit Web 界面 解决: 从 /etc/cockpit/disallowed-users 移除 root 并重启服务
Contabo 服务器管理解决方案
三层管理架构:系统监控 + 容器管理 + 自动化运维
🎯 项目简介
为三台Contabo云服务器提供统一的可视化管理方案,整合Cockpit、Portainer和Ansible AWX,实现从系统层到应用层的全栈管理。
服务器配置
| IP | 角色 | 用途 |
|---|---|---|
| 84.247.162.131 | 主节点 | 管理工具部署节点 |
| 173.212.254.252 | 工作节点 | K3s应用运行节点 |
| 85.239.237.116 | 工作节点 | K3s应用运行节点 |
✨ 核心功能
🖥️ Layer 1: Cockpit - 系统监控
- 实时CPU/内存/磁盘/网络监控
- 多服务器统一Dashboard
- Web终端访问
- 系统日志查看
访问: https://84.247.162.131:9090
🐳 Layer 2: Portainer - 容器管理
- K3s集群可视化管理
- 容器/镜像/卷/网络管理
- Docker Compose Stack部署
- 多环境支持
访问: https://84.247.162.131:30776
🤖 Layer 3: Ansible AWX - 自动化运维
- PlayBook可视化执行
- 批量配置管理
- 任务调度和审计
- 与Gitea集成实现GitOps
访问: https://84.247.162.131:30443
🚀 快速开始
一键部署
cd /Users/brunogao/work/codes/tools/macos/contabo
./scripts/deploy-all.sh
⏱️ 部署时间:10-15分钟
手动部署
# 1. 部署Cockpit(所有节点)
./scripts/install-cockpit.sh
# 2. 部署Portainer(主节点)
kubectl apply -f k3s/portainer-deployment.yaml
# 3. 部署Portainer Agent(工作节点)
kubectl apply -f k3s/portainer-agent.yaml
# 4. 部署AWX(主节点)
kubectl apply -f k3s/awx-deployment.yaml
📁 项目结构
contabo/
├── README.md # 项目说明(当前文件)
├── QUICK-START.md # 快速开始指南
├── SERVER-MANAGEMENT.md # 详细管理文档
├── k3s/ # K3s部署配置
│ ├── portainer-deployment.yaml # Portainer主节点
│ ├── portainer-agent.yaml # Portainer Agent
│ └── awx-deployment.yaml # Ansible AWX
└── scripts/ # 部署脚本
├── deploy-all.sh # 一键部署
└── install-cockpit.sh # Cockpit安装
🎨 架构图
┌─────────────────────────────────────────────────────────────┐
│ 本地 macOS 环境 │
│ Harbor (镜像仓库) | Gitea (Git+CI/CD) | K8s (本地集群) │
└───────────────────────────┬─────────────────────────────────┘
│ 推送镜像/触发CI/CD
↓
┌─────────────────────────────────────────────────────────────┐
│ Contabo 云服务器集群 (3台) │
├─────────────────────────────────────────────────────────────┤
│ 📊 Cockpit (系统层监控) │
│ ├─ 84.247.162.131:9090 (主节点) │
│ ├─ 173.212.254.252:9090 (工作节点1) │
│ └─ 85.239.237.116:9090 (工作节点2) │
├─────────────────────────────────────────────────────────────┤
│ 🐳 Portainer (容器层管理) │
│ └─ 84.247.162.131:30776 (统一入口) │
│ ├─ 管理主节点K3s集群 │
│ ├─ 连接工作节点1 Agent (173.212.254.252:30779) │
│ └─ 连接工作节点2 Agent (85.239.237.116:30779) │
├─────────────────────────────────────────────────────────────┤
│ 🤖 Ansible AWX (自动化运维层) │
│ └─ 84.247.162.131:30443 │
│ ├─ PlayBook批量执行 │
│ ├─ 三台服务器统一配置 │
│ └─ 与Gitea集成触发自动化任务 │
└─────────────────────────────────────────────────────────────┘
💡 使用场景
1️⃣ 日常监控
打开Cockpit Dashboard,实时查看三台服务器的资源使用情况,快速定位性能瓶颈。
2️⃣ 应用部署
在Portainer中选择目标环境,通过Stack一键部署应用栈,支持docker-compose格式。
3️⃣ 批量配置
在AWX中创建PlayBook模板,批量更新三台服务器的配置、软件包或环境变量。
4️⃣ GitOps工作流
在Gitea中提交代码 → Actions触发 → 调用AWX API → 自动部署到Contabo集群。
🔐 安全性
- ✅ 所有Web界面支持HTTPS
- ✅ SSH密钥认证(禁用密码登录)
- ✅ 防火墙规则限制端口访问
- ✅ RBAC权限控制(K3s/AWX)
- ✅ 定期备份(AWX/Portainer数据)
📊 性能指标
| 组件 | CPU | 内存 | 存储 |
|---|---|---|---|
| Cockpit | ~50MB | ~100MB | 最小 |
| Portainer | 500m-1 | 512MB-1GB | 10GB |
| AWX | 1-2核 | 2-4GB | 30GB |
🛠️ 故障排查
Portainer无法访问
kubectl get pods -n portainer
kubectl logs -n portainer deployment/portainer
AWX部署失败
kubectl get pods -n awx
kubectl logs -n awx deployment/awx-operator-controller-manager -f
Cockpit无法连接
systemctl status cockpit.socket
journalctl -u cockpit -f
📚 文档索引
- QUICK-START.md - 快速开始指南
- SERVER-MANAGEMENT.md - 详细管理文档
🔄 集成与扩展
与本地环境集成
Harbor镜像推送:
# 配置K3s使用本地Harbor
# 参考 SERVER-MANAGEMENT.md → 集成与工作流
Gitea Actions远程部署:
# .gitea/workflows/deploy-to-contabo.yaml
# 参考 QUICK-START.md → 进阶配置
扩展监控
# 部署Prometheus + Grafana
kubectl apply -f monitoring/prometheus-stack.yaml
# 访问Grafana
kubectl port-forward -n monitoring svc/grafana 3000:3000
🎯 下一步计划
- 配置AlertManager告警
- 集成ELK/Loki日志聚合
- 配置WireGuard VPN访问
- 添加定时备份任务
- 创建常用PlayBook模板库
📝 版本历史
| 版本 | 日期 | 更新内容 |
|---|---|---|
| v1.0 | 2025-12-21 | 初始版本,三层管理架构 |
👥 维护者
- Bruno Gao - 初始创建和维护
📄 许可证
本项目仅供内部使用
快速访问链接 ⚡
问题反馈 💬
如有问题,请查看 SERVER-MANAGEMENT.md 中的故障排查章节
Languages
Shell
86.9%
Makefile
13.1%