Pineapple 基础设施与运维脚本配置管理仓库。
Notion 文档:Pineapple-Ops 多云运维平台
全平台节点、服务、流量关系总览。实线 = 业务流量,虚线 = 辅助流量(监控/运维/CI/邮件)
graph TB
User([用户浏览器]) -->|HTTPS| CF[Cloudflare CDN<br/>DNS 解析 + DDoS 防护]
CF -->|A 记录| NG[腾讯云 Nginx<br/>100.115.0.1<br/>2C 2G 50G 4Mbps<br/>SSL 终结 + 反向代理]
CF -.->|MX/SPF/DKIM| RESEND[Resend 邮件服务<br/>tentative.me 域名]
subgraph DO [DigitalOcean 新加坡 · K3s 集群]
MASTER[K3s Master<br/>100.115.0.33<br/>4C 8G 160G<br/>etcd + API Server]
W1[K3s Worker1<br/>100.115.0.40<br/>2C 4G 80G<br/>kubelet + kube-proxy]
W2[K3s Worker2<br/>100.115.0.41<br/>2C 4G 80G<br/>kubelet + kube-proxy]
end
subgraph K3S [K3s 集群内部服务]
GHOST[Ghost 博客<br/>:30080 · NodePort]
KUBOARD[Kuboard 管理<br/>:31717 · NodePort]
MINIO[MinIO 对象存储<br/>:31901 · S3 API]
ALIST[AList 网盘聚合<br/>:31717 · 40TB]
GRAFANA[Grafana 可视化<br/>:30858 · 仪表盘]
VM[VictoriaMetrics<br/>:8428 · 90天保留]
NE[node_exporter<br/>:9100 · DaemonSet]
MDB[MariaDB<br/>:3306 · InnoDB]
REDIS[Redis<br/>:6379 · 缓存层]
end
MASTER ---|控制面| K3S
W1 & W2 -.->|工作负载| K3S
NG -->|*.pineapple-user.site<br/>:31717| K3S
NG -->|pass.pineapple-user.site| JD
subgraph JD [京东云 · 独立节点]
VW[Vaultwarden<br/>100.115.0.2<br/>:8080 · 密码管理]
UK[Uptime Kuma<br/>100.115.0.2<br/>:3001 · 可用性监控]
NE2[node_exporter<br/>:9100]
end
subgraph HSY [火山云 · 堡垒机]
BASTION[Next-Terminal<br/>100.115.0.3<br/>2C 2G 40G 1Mbps<br/>仅 Tailscale 内网访问]
end
GHOST --> MDB & REDIS
GHOST -.->|附件/图片| MINIO
ALIST -.->|115 网盘挂载| CLOUD[115 云盘 40TB]
GRAFANA --> VM
VM -.->|采集指标| NE & NE2
MASTER & W1 & W2 -.->|Self-hosted Runner| GITHUB[GitHub Actions<br/>CI/CD]
RESEND -.->|ghost-tentative.me| EMAIL([163 邮箱<br/>每日 09:02 日报])
| 域名 | 解析目标 | 用途 | 备注 |
|---|---|---|---|
pineapple-user.site |
腾讯云 100.115.0.1 | 主域名,博客展示 | Cloudflare 管理,长期 SSL 证书 |
*.pineapple-user.site |
腾讯云 → K3s Ingress | 子域名通配 | Cloudflare 管理 |
tentative.me |
无云服务器解析 | Resend 邮件发送域 | ghost@tentative.me |
| 节点 | 云厂商 | Tailscale IP | 配置 | 角色 | 系统 |
|---|---|---|---|---|---|
| K3s Master | DigitalOcean 新加坡 | 100.115.0.33 |
4C 8G 160G | K3s 控制节点 + GitHub Runner | Debian 13 |
| K3s Worker1 | DigitalOcean 新加坡 | 100.115.0.40 |
2C 4G 80G | K3s 工作节点 + GitHub Runner | Debian 13 |
| K3s Worker2 | DigitalOcean 新加坡 | 100.115.0.41 |
2C 4G 80G | K3s 工作节点 + GitHub Runner | Debian 13 |
| Nginx | 腾讯云 | 100.115.0.1 |
2C 2G 50G 4Mbps | 反向代理 + SSL 终结 + Resend 邮件 | Debian 13 |
| 堡垒机 | 火山云 | 100.115.0.3 |
2C 2G 40G 1Mbps | Next-Terminal (仅内网) | Debian 13 |
| 工具节点 | 京东云 | 100.115.0.2 |
2C 4G 60G 5Mbps | Vaultwarden + Uptime Kuma | Debian 13 |
| 服务 | 用途 | 备注 |
|---|---|---|
| Ghost | 博客平台 | pineapple-user.site 展示页面 |
| Kuboard | K3s 集群可视化管理 | Web UI 管理面板 |
| MinIO | S3 兼容对象存储 | 后台管理页面 |
| AList | 网盘聚合 | 挂载 115 网盘 40TB |
| Grafana | 监控可视化面板 | 仪表盘 + 日报截图 |
| VictoriaMetrics | Prometheus 兼容时序数据库 | 指标存储 |
| MariaDB | 关系型数据库 | Ghost / 其他服务后端 |
| Redis | 内存缓存 | 会话 / 缓存层 |
所有 HTTPS 流量统一由腾讯云主机上的 Nginx 进行 SSL 终结和反向代理,采用 snippet 模式共享 ssl-params.conf 和 proxy-params.conf 配置(证书挂载至 /etc/nginx/ssl/)。
| 域名路由 | 服务 | 后端 |
|---|---|---|
pineapple-user.site |
Ghost 博客 (前端展示) | K3s Ingress |
ghost.pineapple-user.site/ghost |
Ghost 后台管理 | K3s Ingress |
kuboard.pineapple-user.site |
Kuboard 后台管理 | K3s Ingress |
grafana.pineapple-user.site |
Grafana 监控面板 | K3s Ingress |
minio.pineapple-user.site |
MinIO 后台管理 | K3s Ingress |
driver.pineapple-user.site |
AList 后台管理 | K3s Ingress |
pass.pineapple-user.site |
Vaultwarden 密码管理 | 100.115.0.2:8080 |
*.pineapple-user.site |
K3s Ingress 通配路由 | K3s Ingress |
| 组件 | 用途 |
|---|---|
| K3s | 轻量级 Kubernetes 集群 |
| Tailscale | 零配置 Mesh VPN (100.115.0.0/24) |
| Nginx | 反向代理 + SSL 终结 |
| Ghost | 博客/CMS 平台 |
| Grafana | 监控可视化 |
| VictoriaMetrics | 时序数据库 |
| node_exporter | 系统指标采集 (除堡垒机外全节点) |
| Vaultwarden | 自托管密码管理器 |
| Uptime Kuma | 服务可用性监控 |
| Next-Terminal | 堡垒机 / 运维审计 |
| Kuboard | K3s 集群 Web 管理 |
| MinIO | S3 对象存储 |
| AList | 网盘聚合 (115 网盘 40TB) |
| MariaDB + Redis | 数据库 + 缓存 |
| Resend | 邮件发送服务 (ghost@tentative.me) |
| Playwright + Chromium | Grafana 截图 + PDF 生成 |
| Cloudflare | DNS 管理 + CDN |
除火山云堡垒机外,每个节点均安装 node_exporter(端口 9100),由 VictoriaMetrics 采集存储。
每天 09:02(北京时间)通过 Python + Playwright + Chromium 自动执行:
- 从 Grafana 截取监控面板截图 (PNG)
- 合并截图生成 PDF 报告
- 通过 Resend API 发送邮件至 163 邮箱
2 9 * * * /usr/bin/python3 /opt/grafana-report.py >> /var/log/grafana-report.log 2>&1- 发送域:
tentative.me(Resend) - 发送地址:
ghost@tentative.me
DigitalOcean 三台设备(Master + Worker1 + Worker2)均配置为 GitHub Actions Self-hosted Runner,用于 CI/CD 构建任务。
- 火山云堡垒机 (
100.115.0.3) 仅限 Tailscale 内网访问,不解析域名 - 所有 HTTPS 流量经腾讯云 Nginx SSL 终结后转发
- Tailscale 提供全节点加密互联
- Vaultwarden 提供团队密码管理
- Uptime Kuma 监控各服务可用性