Server
我的服务器
一台 ARM 机器承载全部对外服务,外加一台 x86 机器专跑游戏服务端。 所有应用只监听回环地址,公网入口一律经 Cloudflare Tunnel—— 防火墙上没有任何一条入站放行规则。
- 运行中容器
- 43
- 本地镜像
- 50
- 监听端口
- 105
- 入站放行
- 0
01 — 硬件与系统
主机规格
- 处理器
- Arm Neoverse-N1 · 4 核aarch64 架构,服务全部为 ARM64 原生镜像,个别应用需自行构建
- 内存
- 23 GB常驻占用约 11 GB,43 个容器同时运行仍有一半余量
- 存储
- 146 GB NVMe已用 93 GB(64%),媒体库与数据卷占大头
- 操作系统
- Ubuntu 22.04.5 LTS内核 6.8.0,未做发行版跨版本升级,保持长期稳定
- 连续运行
- 11 周 5 天期间未重启,服务更新一律走容器重建或 systemd reload
- 第二台机器
- x86 独立服务器专跑游戏服务端:两个区服 + 账号服,systemd 托管,与主机之间不共享数据
02 — 网络接入
公网怎么进来
公网请求 │ ├─→ Cloudflare 边缘(WAF · TLS · 缓存) │ │ │ └─→ cloudflared 隧道 ×23(出站长连接,无入站端口) │ │ │ ├─→ 直连容器端口 127.0.0.1:8911 / :8123 / :3001 … │ │ │ └─→ nginx 反代 :80 ──按 Host 头分流──→ 16 组站点 │ └─→ Cloudflare Pages(本站,静态托管,不经过服务器)
- 隧道
- 23 条 · 27 个进程按服务粒度拆分,单条隧道故障不影响其他服务;每条独立凭据,存放在 600 权限的环境文件里
- 入站端口
- 0105 个监听端口全部绑定在回环或内网地址,公网扫不到任何服务
- 反向代理
- nginx:alpine · host 网络模式配置以只读方式挂载进容器,16 个 vhost 按 Host 头分流;变更走 nginx -t 校验后热重载
- 证书
- 全自动边缘证书由 Cloudflare 签发续期,源站不持有任何私钥
- 域名
- 11 个 · 35 项服务自建巡检脚本每天两次检查解析、到期与可用性,结果落地为清单文件
03 — 编排与运行时
43 个容器怎么组织
按项目成组
每个业务是一个 Compose 项目,应用与它的 PostgreSQL / MySQL / Redis 打包在一起, 数据落在独立数据卷,互不干扰。
端口只绑回环
容器端口一律映射到 127.0.0.1,需要对外的才由隧道单独接出去。 内部服务连暴露的机会都没有。
ARM64 原生
能拉官方 arm64 镜像的直接用,没有的自己构建——比如无限画布就是本地打的 ARM64 镜像。
systemd 托管非容器部分
隧道、Python 服务与游戏服务端用 systemd 单元管理,开机自启、崩溃自拉。共 24 个自建单元。
04 — 监控与备份
出事之前先知道
- 可用性
- Uptime Kuma持续探测全部对外服务的真实响应,异常即时推送
- 指标
- 哪吒面板 + 自建探针两台机器的 CPU、内存、磁盘与网络,一屏看完
- 域名巡检
- 每天 09:17 / 09:23自动核对解析记录、到期时间与站点可达性,避免域名悄悄过期
- 备份
- Cloudflare R2配置与数据定时打包上传到对象存储,走 S3 兼容接口
- 变更纪律
- 先备份,后校验,再生效改反代配置必过 nginx -t;改隧道配置先导出当前配置留底;DNS 变更留注释标明来源
本页数字取自这台机器的真实运行状态(统计于 2026 年 8 月),为静态写入,非实时刷新。 实时可用性请看 服务状态页。