top of page

用一台小 VPS 撑起游戏服务器舰队

作家相片: Marcel Dütscher
Marcel Dütscher
7月5日
讀畢需時 1 分鐘

我们所有的在线世界——门户网站、官方世界、玩家自己创建的世界——都跑在一台租来的 Linux 服务器(VPS)上。没有数据中心,也没有五位数的云账单。这篇文章里我会讲讲这台服务器是怎么搭的,以及我们一路上学到了什么。


先加固。游戏上服务器之前,基础安全摆在第一位:只开放必要端口的防火墙(ufw)、防止自动化登录尝试的 fail2ban,还有只允许密钥登录的 SSH。Caddy 以 Docker 版本充当反向代理——它会自动获取 TLS 证书,并把请求转发到正确的容器。


每个世界都有自己的容器。游戏本身以 Docker 镜像运行,每个世界都有自己的容器,并有固定的限制:每个世界 768 MB 内存和 2 个 CPU 核心,同时最多十个活跃世界。这样,一个世界永远不会拖垮整台服务器。


会给我们打电话的监控。Netdata 用超过 140 条警报盯着服务器——从“磁盘快满了”到“门户网站没有响应”。一旦触发,手机上就会收到一条推送通知(通过 ntfy)。这样,我们总是比玩家更早知道出了问题。


最让人意外的发现:我们在空闲状态下测量时,已用内存大约有一半根本不是给游戏的——而是给了 Docker 和监控本身。撑起游戏的基础设施,空转时比游戏本身还重。这是个很好的提醒:要测量,不要猜。


运行几个月后的结论是:一台小小的、认真加固过的服务器,完全可以撑起一个独立多人游戏——只要你设好限制,并且时刻留意。

最新文章

查看全部
为什么新版本叫 2026.7.19,而不是 0.9.2 🗓️

今天更新的人,会从 0.9.1 版本一下跳到 2026.7.19。这看起来像是笔误,其实是一个刻意的决定:我们改变了版本号方案,从“语义化”版本改成了基于日期的版本(年.月.序号)。原因如下。 旧方案回答的是没人问的问题。语义化版本(0.9.1、1.2.3 ……)来自软件库的世界。在那里它很棒:第一个数字承诺“不会破坏任何东西”,第二个承诺“只有新增”,第三个承诺“只有修复”。而游戏不对任何人做这

 
 
大扫除:我们终于把 GitHub 的缓存用对了 🧹

在上一篇技术文章里,我们测量了构建和检查流水线到底花了什么:不是钱,而是等待时间和存储空间。那篇文章的结尾是“清理工作已经计划好,但还没完成”。结果比预想的快:从今天中午起,它已经进入主分支了。下面是数字。 先看结果。我们仓库的缓存用量,从 63 个条目共 5.32 GB,降到了 13 个条目共 2.46 GB。以前每个拉取请求都要跑的 C# 安全分析,现在在那里只需要 4 秒,而不是 4 分半,

 
 
每月一千次构建,而且一次都不花钱 ⚙️

先更正一件事。这篇文章的第一版声称,我们的 GitHub 构建分钟数用完了,被迫升级到 Pro 账号。这是错的,而且只要看一眼文档就能弄清楚:对公开仓库来说,GitHub 的构建分钟数是免费的。产物和缓存也一样。我们的仓库从五月底起就是公开的,所以我们从来没有为任何一分钟付过钱,以后也不会。与其悄悄改掉文字,我们宁愿重写一遍,告诉你们测量到底显示了什么。结果比错误的版本有趣得多。 先猜测,后查看。

 
 

留言


這篇文章不開放留言。請連絡網站負責人了解更多。
bottom of page