rsliyu

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 月),为静态写入,非实时刷新。 实时可用性请看 服务状态页