自上一篇法布拉发布以来的进展。搬迁至新主机。配置邮件服务器、备份及服务器资源通知系统。程序员地下城(programmer-underworlds)的本地化工作。
向大家问好。现在是中部标准时间 2026 年 4 月 26 日凌晨 01:37。 我决定是时候记录下自 2 月份发布上一篇法布拉以来我的所作所为了。 请准备好您在看 YouTube 时最喜欢的饮品,我们这就开始…… :)
我希望以一种自由随性的思路来撰写这篇文章,而不是一份经过深思熟虑的报告。 :) 我一直致力于项目的各个部分,下文会详细说明,这段时间的工作相当充实且紧张。 这篇文章我可能会分几次写完。
一个重大且负责任的决定是搬迁到新的主机,因为之前在 Google Cloud 上的免费主机已经无法满足我的需求和项目增长,甚至有一天直接挂掉了。 我推测是内存不足,因为 Google 的免费套餐只有 2GB 内存。 就在那之后的第二天,我开始寻找其他价格合适的选择,并找到了 Contabo 主机。 在我看来,它的条件相当不错(相对于 Google 的方案而言)。 于是搬迁开始了……我开始将旧主机的配置迁移到新主机,并成功在约一周内完成了所有工作。
接下来的重要一步是考虑配置备份。 因为很大一部分配置是在 ChatGPT 的帮助下完成的,如果丢失,重新配置将耗费极长的时间。 我曾考虑过 rsync,但 AI 推荐了 restic。 我非常喜欢 restic 的增量备份功能,它比全量备份快得多,而且运行方式类似 git 仓库,允许在需要时回滚到以前的版本。 我非常高效地将 restic 集成到了服务器备份中,对结果非常满意。 现在进行系统完整备份,我只需登录 Contabo 的 VPS,运行一个脚本,就能将所有配置备份到本地电脑。
接下来是我长期以来的一个愿望:当服务器出现状况时能收到通知。 具体来说,如果磁盘空间不足(顺便提一下,Google 以前只有 10GB,现在有 100GB),或者我的程序员地下城项目(Java 进程)因某种原因挂掉时,我希望能收到邮件提醒。 为此,我意识到最好拥有自己的邮件服务器,因为现在的 VPS 配置(4 核 CPU 和 4GB 内存,相比 Google 的 2 核)完全支持这样做。 既然我已经购买了域名,我认为在 LLM 的帮助下配置邮件服务器会非常简单。 事实证明我是对的。 :) Mailcow 是一个非常简洁方便的解决方案,包含了所有我需要的功能(Web 界面、IMAP、SpamAssassin)。 顺便说一下,如果您想在 @programmer-underworlds.dev 域名下拥有一个邮箱(同时还有一个 @p-u.dev 别名,这样在见面或通话时告知邮箱地址会更方便),请通过 pasha@p-u.dev 联系我。 :)
配置完邮件服务器后,需要设置资源监控系统(监控内存占用、磁盘剩余空间、Java 进程状态)。 在 ChatGPT 的建议下,我使用了 monit 工具。 这是一个非常方便的工具,我很满意。例如,这是 monit 的监控页面,它提供了我关注的资源的视觉信息。
我添加了对 Java 进程(icoupserver, programmer-underworlds)的跟踪,以及对网站 SSL 证书更新状态的检查。 现在,如果我关闭 Java 进程(例如为了更新),我的邮箱就会收到如下通知:
现在是 2026 年 4 月 26 日 18:29,我继续撰写这篇法布拉。
接着我问自己:“如果我的邮件服务器挂了,我该如何收到来自 monit 的通知呢?” 起初我想设置手机短信通知,但在咨询 LLM 后,我被说服改用 Telegram。 我立即付诸行动,过程非常简单。借助 LLM,我创建了一个 Telegram 机器人和一段 monit 脚本,将邮件服务器的状态直接发送到我的 Telegram 账号。
看到我的服务器越来越像一个真正的生产级服务器,这种感觉非常棒。 :)
我意识到,最好为邮件服务器的 Web 界面和程序员地下城应用程序分别设置不同的域名,且在访问时 URL 中无需包含端口号。 当然,我早就听说过由 Igor Sysoev 创建的 nginx,它被业界几乎所有巨头(以及像我这样的“小矮人”)广泛使用。 在 LLM 的帮助下,这一步大约耗时 2 天完成。我创建了符合我需求的 nginx 配置,现在我的服务器可以成功处理指向 programmer-underworlds.dev 和 mail.programmer-underworlds.dev 的请求。
随后,我将项目拆分为两部分:programmer-underworlds 和 icoupserver。 我决定将游戏逻辑部分移至独立项目,因为现在我较少修改游戏,更多是在完善网站部分。
与此同时,我越来越强烈地希望与我的母亲和说俄语的朋友们分享我的文章。 我知道他们中很少有人能舒适地阅读英文文章,我不希望让他们承担“手动”翻译页面的负担,而是希望他们能以最舒适的方式阅读我的网站。 因此,我开始了网站接口和文章的本地化工作,支持俄语(以及中文、日语等)。 目标在大约 2 周内实现,现在来自许多国家的用户都能舒适地阅读母语法布拉了。 在此之后,我还为俄语、中文、日语和印地语连接了精美的哥特体字体。
顺便提一下,我的一个好朋友 Zakhar 最近表达了类似这样的观点,引用如下:“这字体根本没法读,简直辣眼睛”。 如果您也认同他的观点(我个人认为这些字体是视觉盛宴),我建议您看看这篇法布拉。
现在,我终于有时间写完这篇总结性文章了。 当然,我也想分享自上一篇法布拉以来发生的许多事。 例如,我的 YouTube 账号被封禁,我尝试联系客服以获取我多年来(约 10 年)上传的视频的访问权限却遭到拒绝,以及由此产生的对 YouTube 的反感。 也许我会专门写一篇关于这件事的文章,但现在我想将这篇报告本地化为服务器支持的其他语言,并将其分享给世界。
感谢您的时间和关注。一如既往……
帝皇保佑。