【教程帖】利用Velocity中转海外高延迟MC服务器到低延迟VPS以降低国内直连延迟

【教程帖】利用Velocity中转海外高延迟MC服务器到低延迟VPS以降低国内直连延迟

写在前面的话:做这个教程的原因是因为我手里有一台满配的甲骨云新加坡的VPS,最近想着跟朋友一起玩MC,就在这台服务器上开了个mc的服务器,但这台VPS的线路并不是很好,在国内连的话只有移动可以直连,而且朋友们的地理位置和网络运营商都不一样,电信裸连延迟可以飙到200+,根本没法玩,但是国内性能能够开mc的vps价格贵的上天,没办法,于是我就琢磨着通过中转的方式,把甲骨云服务器的数据转发给离大陆距离尚可且是优化线路的机器,这就有了这期Velocity中转MC服务器的教程。如果你的情况跟我一样,有一台性能尚可的海外服务器以及一台大陆优化线路的VPS(延迟要在100以内的),而且又想开mc服务器,不妨看看这篇教程。这篇教程并非是我原创,我也只是在前人的基础上整合了一下,感谢nodeseek上大佬的支持以及曾经玩过的端口转发给我的灵感。话不多说,教程开始。


前期准备:
1.一台高性能的VPS服务器(4C8G20G起步),一台到你当你位置的优化线路的VPS(中转机内存需要≥512M,其他不做要求,带宽和流量够就好,我自己用的是阿里云香港200M带宽的服务器,三网4837直连,全国平均延迟40ms)
2.FinalShell等ssh管理软件
3.一点点动手能力、一点点耐心以及一颗会思考查阅资料的脑瓜瓜


1.下载并安装前置

  • 用自带的包管理器安装 jre (Java Runtime Environment)
    sudo apt install openjdk-21-jre-headless 或 sudo yum install openjdk-21-jre-headless
  • 或者你有其他方法安装 java 也是可以的

2.下载并启动 velocity

  • 建立运行目录
    mkdir -p /opt/velocity
    进入目录
    cd /opt/velocity
  • 拉取 velocity 核心
    wget https://fill-data.papermc.io/v1/objects/1d9dc624bef59a62f320bc22a134e44a7b9326538463e94726465297e6324751/velocity-3.4.0-SNAPSHOT-521.jar -O velocity.jar
  • 启动 velocity 生成所需文件
    java -jar velocity.jar
    然后输入 stop 或按 Ctrl+C 关闭
  • 使用Finalshell自带的文件管理编辑 velocity.toml
    在 [servers] 下编辑你所需要转发的服务器# 事例

lobby = “1.2.3.4:30066” survival = “1.2.3.4:30067” try = [“survival”] #

这里输入默认连接的服务器 如果你还有什么想配置为可以参考 velocity 官方文档 注意了中转出来的地址会默认连接try后面对应的ip+端口(是你搭建服务器的那台vps的ip+mc的端口),所以如果只需要中转一个地址,而不需要多版本多世界中转的话,可以只填写try后面对应的地址然后把其他的删掉。

同时复制 forwarding.secret 的内容备用,为了保证所有人都仅通过 velocity 进行连接,所以需要一个密钥进行验证。注意是打开forwarding.secret这个文件,里面有一串代码,而不是自己想填什么填什么。

3.配置后端

  • 打开你搭建MC服务器的VPS的SSH界面
  • 如果你用的是 paper 核心,编辑 ./config/paper-global.yml
    修改 proxies/velocity/enabled 为 true
    并把 forwarding.secret 的内容粘贴到 proxies/velocity/secret 中# 事例 proxies: bungee-cord: online-mode: true proxy-protocol: false velocity: enabled: true # 修改这里 online-mode: true secret: ‘’ # 密钥粘贴到这里
  • 同时把正版验证关闭。
  • 最后重启服务端
  • 如果你用的是其他核心,可以自行谷歌

4.velocity 代理服务器自启动

  • 回到前端代理服务器
    创建并编辑 velocity.service
    touch /etc/systemd/system/velocity.service
    vim /etc/systemd/system/velocity.service
    输入以下配置:# /etc/systemd/system/velocity.service [Unit] Description=Velocity Minecraft Proxy [Service] WorkingDirectory=/opt/velocity ExecStart=/usr/bin/java -Xms512M -Xmx512M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -jar velocity.jar User=nobody Type=simple Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
  • 重载 service 文件
    sudo systemctl daemon-reload
  • 设置开机自启动
    sudo systemctl enable velocity
  • 启动 velocity
    sudo systemctl start velocity

用 docker 启动(可选)

如果你不想这么麻烦可以试试用 docker 来启动

  • 安装 Docker(这里省略)
  • 一样先创建工作目录
    mkdir -p /opt/velocity
    cd /opt/velocity
  • 编辑 compose.yaml
    touch compose.yaml
    vim compose.yaml
    里面输入services: velocity: image: itzg/mc-proxy stdin_open: true tty: true environment: TYPE: VELOCITY MEMORY: 256M volumes: - ./:/server ports: - 25565:25565 restart: unless-stopped
  • 启动一次 docker compose 生成配置文件
    sudo docker compose up -d && sudo docker compose down
  • 编辑 velocity.toml #2
  • 配置后端 #3
  • 启动 docker compose
    sudo docker compose up -d
    完成

参考:

https://docs.papermc.io/velocity/
https://forum.level1techs.com/t/how-to-reverse-proxy-your-minecraft-server-with-velocity/163497


最后打开mc,在加入服务器中输入你的中转机的ip+mc端口即可访问游戏

Just Enjoy!!!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Back To Top