宁园剪影

癸卯年秋,游宁园,留所见之影。明年夏,集录于此。

图片
图片
图片
图片
图片
图片
图片
图片
图片
图片
图片
图片
图片
图片
图片

故时游园之乐已不可得,悠然之心亦然不可得。集录于此,亦忆旧日。

2023 年终总结

正文

2023年,承前启后,新的生活从这一年开始。旧梦初醒之时,即为新梦将启之刻。告别了高中的校园,走进了更加开阔的天地,也在这一年中能够完成之前所一直搁置的事情。

高中生活结束后,拾起了搁置已久的 Minecraft 服务器,第一次尝试近些年来日益流行的互通服务器,并且也应用了身份验证等技术来确保服务器的安全性(对应博文)。在几个月后,通过将服务器迁移到云计算服务的方式,实现了服务器的连续运行(对应博文)。

同时,今年对网站也进行了修改,对博客的主题进行了一些调整。希望能够在新的一年中派上用场,而不是依然只有寥寥无几的博文。

尾声

今年的年终总结更加短小,想到了很多,却又不知道如何写出,或许这一年依然不是充实的一年。

每一年的惯例,在一年的最后一天总是要拍下日落时的天空,今年也不例外。

落日倒映在冰面上,四周寂静无声。

向这一年告别。

2023 年最后一天的天空

云上的 Minecraft 服务器 - 服务器上云记录

前言

春去秋来,自己的 Minecraft 服务器已在不知不觉中运行了近七年。然而,服务器依然是依靠家用计算机,并无法具备全天运行的条件,且由于网络原因,必须依靠第三方应用才能使用,这就导致了不稳定性。而使用云服务器的条件也渐渐成熟,故在今年做出了将服务器迁移到云上的决定。

服务商的选择

对于几大云服务商,自己采用了阿里云。阿里云提供三个月的免费试用,且对于学生,阿里云也提供数月的免费云服务器,对于刚刚接触云服务器的自己,这显然是一个较好的选择。

操作系统的选择

在本文写作时,阿里云的免费试用已经升级为了 4C4G 的机型,在运行 Windows Server 操作系统的情况下搭建 Minecraft 服务器的性能较为充足(在 1C2G 的情况下依靠虚拟内存依旧可以勉强运行),如果对 Linux 的了解不足,此时 Windows Server 显然是好的选择。然而,在开始上云时,阿里云提供的免费试用依然为 2C2G 机型,为了确保服务器的流畅运行,只能选择 Linux 机型。

出于节省内存和易于维护的综合考量,最终选择了 Alibaba Cloud OS 3.0。

操作流程

当云服务器实例创建后,先修改服务器密码,后将本地的服务器目录通过 SFTP 上传至服务端。为了方便管理,新建了新的账号来替代 root 账户运行服务器。

作为 Alibaba Cloud OS,软件仓库内包含 Dragonwell JDK 便相当自然,通过 dnf 命令即可完成 JDK17 的安装。

Fabric 服务端安装器为我们生成了一个 start.sh 文件,为其赋予执行权限即可直接运行。

此外,当服务器成功启动后,需要前往安全组打开 TCP 的 25565 和 UDP 的 19132 端口,以便可以正常从外部连接。在服务器运行的过程中,发现了一些异常的 IP 地址尝试连接,可通过安全组设置拒绝入站。

最后,不要忘记打开系统的虚拟内存功能,否则内存用尽时会直接卡死,只能强制重启。

从此,一个 Minecraft 就成功迁移至云上了。

后记

当本文完成时,自己的 Linux 云服务器也已经到期,服务器迁移到了 Windows Server 上。本文是基于本地已有的 Minecraft Server,因而迁移也较为简单,平日内更新服务器 Mods 也只需通过 rm -rf 和 wget 命令进行操作。对于最难的服务器配置阶段,实际上是在 Windows 设备上完成的。将前后两个服务器比较,当资源有限时,Linux 服务器是更优的选择,而服务器迁移回 Windows Server 后,从基岩端连接的体验出现了显著的下降。

Minecraft 1.20 互通服务器搭建记录

准备

前言

自上一次搭建 Minecraft 服务器已经过去很长时间了,这段时间内 Minecraft 与社区发生了很大的变化,但抛下各种纷扰,高版本互通服务器确实充满吸引力,也因此开启了这一旅程。

概况

版本与服务端选择

为了实现 Java 与基岩端的互通,版本只能选择最新版本(事实上,可以通过相关插件来搭建旧版服务器,但显然会降低体验)。在高版本 Minecraft 下,官方原版服务端的性能并不佳,而 Paper 之类的插件端作为传统选择比较适宜,但本次接触到了 Fabric 这个涵盖了服务端和客户端的新一代加载器,并且这一加载器具有较多的优化 Mod 和其它辅助类 Mod,故选择 Fabric 服务端。

Java 选择

在 1.17 或更高版本上,Mojang 将 Minecraft Java 版的最低 Java 版本提升到了 Java 17。这意味着 Java 的安装也不像过去直接下载即可。同时,各类的 JDK 纷纷出现,而本次选择具有较好性能表现的 Alibaba Dragonwell 17。

愿景

本次目的是实现 1.20 下的 Java 端与基岩端的互联,实现无缝切换的体验,同时使服务器对于玩家的安全性和便利性有所提升,服务器流畅运行。

实践

Java 下载与安装

Java 下载

阿里在 GitHub 上提供了 Alibaba Dragonwell 17 的二进制发行版本,但下载速度缓慢,而 Wiki 页提供了镜像源
对于一般 Windows 用户,选择 Alibaba_Dragonwell_Standard_jdk-17.x.x.x.x+x_x64_windows.zip 下载即可。

Java 安装

对于 Oracle Java,其一键式的安装程序会解决大部分问题,但对于此,需要解压并设置环境变量手动安装。
系统属性 里的 高级 选项卡,你可以找到环境变量设置。在用户变量的 Path 处点击编辑,新建值为 “解压后的位置”\bin 的变量即可。(注意,这里假定你之前从未安装过 Java,如果你安装过,请自行寻找如何更改 Java 默认版本。

服务端安装与初期配置

服务端安装

Fabric 为我们提供了一键式的安装体验。我们只需前往其下载页面,选择服务端安装选项并按照页面提示创建启动脚本,运行启动脚本稍后会自动完成安装。

初期配置

为了最大化减少性能占用同时保障游戏体验,view-distance 被设置为 4 ,同时为了保障正版玩家的体验 online-mode 被设置为 true。同时为了保障安全性,白名单也设置为开启。
至此,尝试运行并加入,一切正常。

Mod 选择

功能性 Mod 选择

为了实现 Java 版与基岩版的互通,我们选择并下载了 Gersey 及 Floodgate 作为基岩端的协议翻译与用户鉴权。注意,请在下载页面选择 Fabric 选项卡下载,之后拖入 mods 文件夹即可。
为了实现正版用户与离线玩家同时在线,我们选择 EasyAuth 作为 Java 端的用户鉴权。注意,这一 Mod 依赖于 Fabric API,请一并安装。

优化性 Mod 选择

为了优化服务器,添加了以下 Mod。

同时,这些 Mod 也可以考虑安装

后期配置

Gersey 配置

Gersey 的配置文件为 \config\Geyser-Fabric\config.yml。这里唯一需要修改的是 auth-type 项,应被修改为 floodgate。其余选项可以按需修改。

Floodgate 配置

Gersey 的配置文件为 \config\floodgate\config.yml。我们需要进行以下操作。

  1. 修改 player-link 下的 require-linkenable-own-linkingtrue
  2. 下载 SQLite 扩展floodgate-sqlite-database.jar),并放置于配置文件同目录下。

EasyAuth 配置

Gersey 的配置文件为 \mods\EasyAuth\config.json。这里唯一需要修改的是 floodgateAutologin 项,应被修改为 true。其余选项可以按需修改。

结束

测试服务器

此时对服务器进行测试,正版登录与离线模式(需手动编辑白名单文件)都可以登入,基岩版用户在 Global Link 绑定账号后可以直接登入。对于其它未绑定的基岩版玩家,可以手动编辑 \config\floodgate\ 下的数据库文件,手动录入玩家登入时服务台控制台显示的 XUID 和应该具有的 UUID 与游戏名。服务器在 JVM 预热完成后占用较低,相对流畅。

最后的话

显然,这个解决方案依然具有不完善之处,比较明显的正如测试服务器一节中所写。这些问题依然需要日后的探索。

博客搭建小记

前言

回想起当初技术力不足时搭建博客的尝试,相比每次手动修改页面 Html 内容和相应的超链接,这次采用 Hexo 框架并采用 GitHub Action 自动构建的确是极大的进步。在搭建过程中大大小小的“坑”和解决方案,在此罗列。

搭建过程

准备

在详细比较了 Hexo,Hugo,Jekyll 后,为了追求性能和易用性的平衡,选择了 Hexo 作为最终的方案。不仅是性能高于 Jekyll 的原因,更是因为本地已经具有了 Node.JS 的环境。在考虑之后,放弃了本地上传文件,决定使用 GitHub Action 自动构建。并选择 Anatolo 作为主题。

本地配置

Hexo 本体的配置相对简单,不多赘述。但由于 Anatolo 和其上游主题的缘故,在采用 /blog/ 的子路径搭建博客时,生成的页面存在许多链接错误,需要修改配置文件。

logo_dir: /images/logo@2x.webp

rss: /atom.xml

以上是无需添加 /blog/ 前缀的配置内容,诸如 favicon 等配置均需添加 /blog/ 前缀。

此外,主题默认使用 zh-cn 作为语言代码,并非 zh-Hans 语言代码,需要注意。

GitHub Action 部署

由于 GitHub 的环境更新,官方脚本将会提示警告,修正版本如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
pages:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
# If your repository depends on submodule, please see: https://github.com/actions/checkout
submodules: recursive
- name: Use Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Cache NPM dependencies
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.OS }}-npm-cache
restore-keys: |
${{ runner.OS }}-npm-cache
- name: Install Dependencies
run: npm install
- name: Build
run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public

此外,还需注意修改主题目录的 .gitignore 并且删除对 _config.yml 的忽略,或者使用代替配置文件的方法,否则上传到 GitHub 后自动构建无法正常进行。

评论插件

主题内置 GitTalk 的支持,但由于一些原因,此插件在部分地区无法正常使用,暂无解决方案。

后记

经过上述步骤并结合官方文档,一切已经可以正常运行,后续其它插件的配置均有完备的说明,故不再叙述。期望以上的“坑”可以被你所避开,感谢你的阅读。

旅程的开始

惭愧的记录

记忆中,最初有搭建博客的想法已经是六年前的初中时代,当初的实践却因为技术力的不足半途而废,仅仅留下了一个网站沿用数年,到升入高中后才略微修缮。后来,随着疫情的到来,在漫长的网课纪元中,虽然创作出了 ClassTable 和 UcansHelper 两个真正看得过去的作品,却依旧没有把博客的建立提上日程。即使是高考后最“自由”的那一段时间里开始了搭建的准备,却因为出乎意料的结果而不了了之。或许,自己终究是个没有定力的人,但在这似乎回到了2020年初的网课时光时,这个念头再度浮上脑海,终得以实践,赶上了2022年的末尾。

简杂的过程

本以为繁杂却又简单,本以为简单却又繁杂。选择了 Hexo 作为博客框架,依据文档配置,输入生成命令,配置本地的 IIS 服务,博客的确建了起来。本以为只需将主题配置好,上传到 GitHub 就大功告成,却踩到了许许多多的坑,经过无数次调试,终于一切正常。或许不远的未来,会再写一篇博文去记录详细的过程,为这个博客增添些许的技术性,但不是现在。

未来的展望

或许,这次依旧是三分钟热度,但在热度未消的当下,一切已有了模糊的规划。这里会是个记录技术的地方,无论是开发还是实践都会记录于此;这里会是个记录感想的地方,对世间万物的想法也会记录于此;这里也许也会是一个记录生活碎碎念的地方,像一个日记本,记录生活的点滴。或许,以后还会有别的内容。

尾言

在寒冷的冬日里,在夜深人静时,在成堆的作业下,忙里偷闲,这些文字被写下。希望一切能如所愿,有始而有终。