vacuole · mubai 猫栈 咋组成的?
SYSTEMS NOMINAL · wg0 ↑
Star 128
服务器掉线状态:在线

猫栈在线贡献生产力
视奸面板

这里是猫栈,由两个昼寝夜出的搭建神秘森物管理,目前站点以公网VPS为枢纽,自建服务器为主力机自托管,暂时没有太多业务(主页卖hook钩子)

WireGuard wg0 FRP 内网穿透 Minecraft Forge 1.20.1 Docker Ubuntu 24.04 ×2
vacuole@homelab: ~/infra — ssh
01

实时监控

// btop
vacuole@vps:~$ btop
1cpu · 2mem · 3net · preset 2 数据监测 --:--:-- 2000ms
cpu 家庭服务器
6C / 12T
CPU · 历史负载
0%
up
i5-10400F MHz
CPU0%
Load AVG — — —
mem
62.7 GiB
disks
io
net vps · 8.138.207.237
eth0
Mbit/s
0
download
现速0.00 Mbit/s
Top0.00 Mbit/s
Total0.0 GiB
upload
现速0.00 Mbit/s
Top0.00 Mbit/s
Total0.0 GiB
阿里云的实例有下行限速喵~
proc · services homelab 扩展面板
players 0/20
pidservicehostcpu%memstatus
↑ 正在连接监控 API…
02

网络拓扑

// public players → VPS hub → home spoke
⚠ 入向瓶颈 3.14 Mbit/s 公网玩家 Internet mc.fk4today.top : 25565 VPS · 阿里云 ECS 公网 8.138.207.237 · Ubuntu 24.04 ● WireGuard Hub 10.0.0.1 ● frps :7000 / 25565 ● 2 核 · 2 GiB · 40 GiB Hub-and-Spoke · UDP 51820 家庭服务器 内网 10.0.0.2 · 无公网 IP ● frpc → MC :25565 ● x11vnc :5901 (内网) ● i5-10400F · 62.7 GiB · 936 GiB Docker · cron 自动化备份 公网 TCP WireGuard 10.0.0.0/24 FRP 加密隧道
公网链路 (玩家) WireGuard 加密内网 FRP 内网穿透 带宽瓶颈点
03

配置浏览器

// /etc/wireguard · ~/frp · server.properties
wg0.conf ×
frpc.toml ×
server.properties ×

WireGuard · Hub (VPS)

/etc/wireguard/wg0.conf · 10.0.0.1

VPS 作为 Hub,监听 UDP 51820;家庭服务器作为唯一 Spoke 主动发起连接。

1[Interface]
2Address = 10.0.0.1/24
3ListenPort = 51820
4PrivateKey = <VPS_PRIVATE_KEY>
5
6# 家庭服务器 peer
7[Peer]
8PublicKey = <HOME_SERVER_PUBLIC_KEY>
9AllowedIPs = 10.0.0.2/32
// Hub-and-Spoke · ufw 仅允许 wg0 接口流量

WireGuard · Spoke (家庭服务器)

/etc/wireguard/wg0.conf · 10.0.0.2

主动连接 VPS Endpoint,PersistentKeepalive = 25 维持 NAT 穿透。

1[Interface]
2Address = 10.0.0.2/24
3PrivateKey = <HOME_SERVER_PRIVATE_KEY>
4
5[Peer]
6PublicKey = <VPS_PUBLIC_KEY>
7Endpoint = 8.138.207.237:51820
8AllowedIPs = 10.0.0.0/24
9PersistentKeepalive = 25
// 家庭服务器额外允许 wg0 → Docker 转发 (DOCKER-USER 链)

FRP 客户端 · 内网穿透

~/frp/frpc.toml · 含压缩与多路复用

将本机 25565 暴露到 VPS 公网 25565;启用压缩 + tcpMux 缓解带宽压力。

 1serverAddr = "8.138.207.237"
 2serverPort = 7000
 3auth.token = "****"
 4transport.useCompression = true
 5transport.tcpMux = true
 6
 7[[proxies]]
 8name = "minecraft"
 9type = "tcp"
10localIP = "127.0.0.1"
11localPort = 25565
12remotePort = 25565
// systemd 管理 · 每日 6:00 由脚本定时重启

FRP 服务端 (VPS)

/home/admin/frps/frps.toml

bindPort 7000;Dashboard 通过 SSH 本地端口转发访问,不直接对公网开放。

1bindPort = 7000
2auth.token = "****"
3webServer.addr = "127.0.0.1"
4webServer.port = 7500
// Dashboard: ssh -L 7500:localhost:7500 admin@VPS -N → http://localhost:7500

Minecraft 服务端配置

~/mcserver/Server2.6.1/server.properties

已为带宽瓶颈调优:降低视距与模拟距离、压缩阈值。

1view-distance=4
2simulation-distance=3
3entity-broadcast-range-percentage=25
4network-compression-threshold=128
// 启动: screen -dmS mcserver ./run.sh nogui · JVM 8G · 每 6h 自动备份 (保留 30 份)

远程桌面 · x11vnc + Xfce

服务端 10.0.0.2:5901 (仅 WireGuard 内网)

不直接对外,通过 SSH 本地端口转发经 VPS 映射到本地后用 VNC 客户端连接。

1# 经 VPS 跳板把内网 VNC 映射到本地
2ssh -L 5901:10.0.0.2:5901 admin@8.138.207.237 -N
3
4# 随后 VNC 客户端连接
5localhost:5901
// Xfce 强制 X11 (排除 Wayland) · 屏幕 :0
04

安全设计

// access model & hardening direction
密钥认证
所有 SSH 访问采用密钥对(ed25519)认证;协作者使用各自独立密钥,私钥不共享、不外发。
最小暴露面
远程桌面与监控面绑定内网地址,经 SSH 本地端口转发访问,不直接暴露公网;对外仅开放玩家所需端口。
加密内网
VPS 与家庭服务器之间经 WireGuard 加密隧道通信;玩家流量经 FRP 内网穿透,仅映射必要的 TCP 端口。
权限分离
VPS 管理账户与服务运行账户分离;变更与备份脚本由专用流程执行,降低单点权限风险。

持续加固方向

在现有访问模型之上,按计划逐步落地的纵深防御项:
FRP 通道 TLS 加密规划 fail2ban 失败登录封禁规划 管理端口来源 IP 收紧进行中 自动安全更新 unattended-upgrades规划
05

未来计划

// reliability & ops roadmap
P1MC 服务端 systemd 自启与崩溃自动拉起计划中
现为 cron + screen 启动,崩溃后不会自动恢复;改用 systemd(Restart=on-failure)或加存活检测脚本。
P2异地备份 (rclone / restic)计划中
world 存档目前仅存于本机磁盘,无法抵御整盘损坏;定期同步到对象存储或异地机器。
P3掉线告警 / 监控 (Uptime Kuma)已规划
覆盖 MC 端口、frpc 隧道、WireGuard 握手等关键项,挂掉可及时通知 —— 也正是本监控面板要接入的真实数据源。
P4astrbot 重新整备远期
当前 Docker 容器运行异常,待排查后重新部署并补充用途 / 端口 / 访问方式。
P5更换入出对等带宽 VPS远期
替换当前阿里云 ECS 以根治入向 3.14 Mbit/s 瓶颈,或加额外 VPS 做负载分担 / 专线转发。
个人网络基础设施 · rev.3 · 维护者 vacuole · mubai
托管于 vps 数据监测服务器 · WireGuard + FRP · 本页“实时”数据为前端演示,待接入真实采集
粤ICP备 XXXXXXXX 号 核准审批中
main
rev.3
wg0 · frps · frpc
Ubuntu 24.04
UTF-8
LF
© vacuole