它是什么
这是我自己开的 Minecraft 基岩版生存服,跑在 homelab 的机器上:用 Endstone 做服务端,装插件扩展玩法,再用 AmberMap 把世界渲染成网页地图,想看地形和建筑进度随时打开网页就行。
为什么做
公共服限制多、延迟不可控,朋友之间玩又需要一个常驻稳定的环境。放在自己的机器上,配置、插件、白名单都自己说了算,成本也可控。
解决什么问题
- 基岩版走 UDP,家用网络没有公网入口,于是用隧道把游戏端口转发出去,外面也能连。
- 世界存档怕丢,所以定时做备份,出问题能直接回滚。
- 不想每次都登机器敲命令,留好远程管理入口,重启、看日志都快。
现在的状态
目前运行中,日常给朋友联机用。插件按需加,地图定期刷新,备份保持在能回滚的粒度上。后面想补的是更省心的监控和更细的权限配置。
功能
- 用 Endstone 搭基岩版服务端,插件扩展玩法
- AmberMap 渲染网页世界地图,随时看地形与建筑
- systemd 托管进程,异常自动重启,日志统一收口
- UDP 隧道转发,家用网络也能让外网连进来
- 定时备份世界存档,保留可回滚的若干份
- 白名单加远程管理入口,日常维护不用守着机器
技术栈
使用 / 部署教程
部署步骤
1. 准备环境
一台常开的 Linux 机器(家里的小主机够用),按 Endstone 官方文档装好依赖,给它单独建个用户和目录,比如 /srv/minecraft。
2. 跑起服务端
把服务端解压到 /srv/minecraft/server,首次启动生成配置后停掉,改 server.properties:难度、白名单、正版验证按需设置,默认端口 19132/UDP。
3. 装插件与地图
插件丢进 plugins/,重启生效;AmberMap 按其说明生成配置并指向世界目录,渲染输出放到能被反向代理访问的静态目录。
4. 用 systemd 托管
写一个 minecraft.service:WorkingDirectory 指向服务端目录,ExecStart 启动服务端,User 用专用账号,加 Restart=on-failure,然后 systemctl enable --now minecraft。
5. 远程访问
基岩版是 UDP,普通 HTTP 反代没用。用隧道工具把本地 19132/UDP 映射到有公网入口的节点,客户端填隧道地址和端口即可。
6. 备份
用 systemd timer 定时打包世界目录,保留最近若干份。打包前先 save-off + save-all,或者短暂停服,别直接 copy 正在写的存档。
7. 验证
从外网连一次,用 journalctl -u minecraft -f 看日志;确认地图页面能打开、备份文件大小正常。
注意
- 公网只放行必要端口,白名单比密码可靠,别图省事关掉。
- 备份要先保证存档一致性,直接复制世界目录可能拿到写一半的数据。
- 升级插件或服务端前先备份世界,版本变动容易造成插件不兼容。