前几天开了一个我的世界服务器,但是买的服务器是4h4g的,内存有点不足,很快就被霍霍空了。想要加内存又贵的离谱。于是有了一个想法:通过Velocity端搭建子服务器(已老实,下次一定买雨云的)
介绍与下载
Velocity is the modern, high-performance proxy. Designed with performance and stability in mind, it’s a full alternative to Waterfall with its own plugin ecosystem.
直白点来说就是代理端,可以让你的服务器划分各个子服务器。
需要代理端的几类用户:
1、我有一台服务器A,但是我担心暴露A的iP会受到攻击。
2、我的玩家很多,单个服务器性能不足,需要划分生存一区二区
从PaperMC下载(国内不推荐)
从幻昼云直链下载
领取与安装
这里以雨云为例,如果没有服务器的话可以点击积分中心免费领取一台2h4g20m100m的服务器
领取教程
点击卡片注册账号即可领取,购买服务器还可用卷码:
MjI3ODI5
点击领取https://xn--www-4m0a.rainyun.com/MjI3ODI5_s=?csdn
安装教程
进入云产品-游戏云-我的产品
进入管理
切换/重装游戏
选择纯环境-Java21
配置
进入云产品-游戏云-我的产品-进入面板
进入MCSM面板,点击服务器-管理
文件管理
下滑进入文件管理,删掉server.properties,上传velocity3.4.jar
最后效果为这样
修改启动脚本
(velocity3.4.jar根据自己的核心命名)
java -jar velocity3.4.jar
返回,开启服务器。
velocity服务端没有eula.txt,无需同意。
toml文件配置
运行成功后关闭服务器,打开文件管理,可见这个toml文件
点击编辑,根据下面的教程来
配置文件的汉化
# 配置版本。请勿更改此项
config-version = "2.7"
# 代理服务器绑定端口
bind = "0.0.0.0:25565"
# MOTD,当玩家将你的服务器添加到他们的服务器列表时,将显示这串内容。
# 支持中文,但请将汉字转换为unicode编码
# 只接受MiniMessage格式。
motd = "<#09add3>一个Velocity服务器"
# 显示的最大玩家数量?(Velocity不支持控制在线玩家数量的上限,仅为显示值)
show-max-players = 500
# 是否启用正版验证
online-mode = true
# 是否强制执行代理新的公钥安全标准?
force-key-authentication = true
# 如果来自此代理的客户端的ISP/AS与来自Mojang的身份验证服务器的不同,
# 玩家将被踢出。这将阻止一些VPN和代理连接,但是一种较弱的保护形式。
prevent-client-proxy-connections = false
# 我们是否应该将IP地址和其他数据转发给后端服务器?
# 可用选项:
# - "none":不进行转发。所有玩家将显示是从代理连接的,并将具有离线模式UUID。
# - "legacy":以前BungeeCord兼容的格式转发玩家IP和UUID。
# 如果你运行的是使用Minecraft 1.12或更低版本的服务器,请使用这个。
# - "bungeeguard":以前BungeeGuard插件支持的格式转发玩家IP和UUID。
# 如果你运行的是使用Minecraft 1.12或更低版本的服务器,并且无法实现网络级别的防火墙(在共享主机上),请使用这个。
# - "modern":作为登录过程的一部分使用Velocity的原生转发来转发玩家IP和UUID。仅适用于Minecraft 1.13或更高版本。
player-info-forwarding-mode = "NONE"
# 如果你使用的是modern或BungeeGuard IP转发,请在这里配置密钥文件。
# 文件应该是UTF-8编码的,并且不为空。
forwarding-secret-file = "forwarding.secret"
# 是否显示你的服务器支持Forge?如果你运行的是模组服务器,我们建议开启这个。
# 如果你的网络持续运行一个模组包,考虑使用ping-passthrough = "mods"以获得更美观的服务器列表显示。
announce-forge = false
# 如果启用,并且代理处于在线模式,如果发生重复的连接尝试,Velocity将踢出任何在线的现有玩家。
kick-existing-players = false
# Velocity是否应该将服务器列表ping请求传递给后端服务器?
# 可用选项:
# - "disabled":不进行传递。velocity.toml和server-icon.png
# 将决定初始的服务器列表ping响应。
# - "mods":只从你的后端服务器传递模组列表到响应中。
# 尝试列表(或强制主机)中的第一个具有模组列表的服务器将被使用。如果没有可以联系的后端服务器,Velocity将不会显示任何模组信息。
# - "description":使用后端服务器的描述和模组列表。
# 尝试列表(或强制主机)中第一个响应的服务器将被用于描述和模组列表。
# - "all":使用后端服务器的响应作为代理响应。如果没有服务器可以联系,将使用Velocity配置。
ping-passthrough = "DISABLED"
# 如果不启用,则玩家IP地址将在日志中被<ip address withheld>替换
enable-player-address-logging = true
[servers]
# 在这里配置你的服务器。每个键代表服务器的名称,值代表要连接的服务器的IP地址。
lobby = "127.0.0.1:30066"
factions = "127.0.0.1:30067"
minigames = "127.0.0.1:30068"
# 当玩家登录或被服务器踢出时,我们应该按什么顺序尝试服务器。
try = [
"lobby"
]
[forced-hosts]
# 在这里配置你的强制主机。
"lobby.example.com" = [
"lobby"
]
"factions.example.com" = [
"factions"
]
"minigames.example.com" = [
"minigames"
]
[advanced]
# Minecraft数据包需要有多大才进行压缩。将其设置为0将压缩所有数据包,
# 设置为-1将完全禁用压缩。
compression-threshold = 256
# 应该进行多少压缩(从0到9)。默认是-1,使用默认级别6。
compression-level = -1
# 客户端在最后一次连接后多久可以连接(以毫秒为单位)。默认为三秒。禁用此功能,请将其设置为0。
login-ratelimit = 3000
# 在这里指定连接超时的自定义超时时间。默认是五秒。
connection-timeout = 5000
# 在这里指定连接的读取超时时间。默认是30秒。
read-timeout = 30000
# 启用与HAProxy的PROXY协议的兼容性。如果你不知道这是用于什么的,那么不要启用它。
haproxy-protocol = false
# 在代理上启用TCP快速打开支持。需要在Linux上运行代理。
tcp-fast-open = false
# 在Velocity上启用BungeeCord插件消息通道支持。
bungee-plugin-message-channel = true
# 显示客户端对代理的ping请求。
show-ping-requests = false
# 默认情况下,Velocity将尝试优雅地处理用户意外断开与服务器的连接的情况,通过尝试将用户回退,
# 除了读取超时的情况。BungeeCord会断开用户连接。你可以禁用此设置以使用BungeeCord的行为。
failover-on-unexpected-server-disconnect = true
# 向1.13+客户端声明代理命令。
announce-proxy-commands = true
# 启用命令执行的日志记录
log-command-executions = false
# 启用记录玩家连接到代理、切换服务器和从代理断开连接的情况。
log-player-connections = true
# 允许接收通过Transfer数据包(Minecraft 1.20.5)从其他主机转移来的玩家。
accepts-transfers = false
[query]
# 是否启用响应GameSpy 4查询响应?
enabled = false
# 查询协监听端口
port = 25565
# 这是报告给查询服务的地图名称。
map = "Velocity"
# 是否默认显示插件在查询响应中
show-plugins = false
需要修改的点
其中有几项需要我们注意的。
首先就是
bind = "0.0.0.0:25565"
和最后的
port = 25565
在这里,我们需要修改为服务器开放端口
online-mode = true
老生常谈的正版验证。即使子服务器未开启正版验证,这开了子服务器没开也是进不了服务器哒
[servers]
# 在这里配置你的服务器。每个键代表服务器的名称,值代表要连接的服务器的IP地址。
lobby = "127.0.0.1:30066"
factions = "127.0.0.1:30067"
minigames = "127.0.0.1:30068"
# 当玩家登录或被服务器踢出时,我们应该按什么顺序尝试服务器。
try = [
"lobby"
]
[forced-hosts]
# 在这里配置你的强制主机。
"lobby.example.com" = [
"lobby"
]
"factions.example.com" = [
"factions"
]
"minigames.example.com" = [
"minigames"
]
最重要的就是这一段。配置服务器的信息
前面三个是子服的iP,try即为连接顺序。删除[forced-hosts]中的内容,一般用不着
最后保存,可以选择上传server-icon.png。请注意server-icon必须为64*64大小的!
示例
我的服务器配置如下
# 配置版本。请勿更改此项
config-version = "2.7"
# 代理服务器绑定端口
bind = "0.0.0.0:58518"
# MOTD,当玩家将你的服务器添加到他们的服务器列表时,将显示这串内容。
# 支持中文,但请将汉字转换为unicode编码
# 只接受MiniMessage格式。
motd = "<#09add3>问号服"
# 显示的最大玩家数量?(Velocity不支持控制在线玩家数量的上限,仅为显示值)
show-max-players = 500
# 是否启用正版验证
online-mode = false
# 是否强制执行代理新的公钥安全标准?
force-key-authentication = true
# 如果来自此代理的客户端的ISP/AS与来自Mojang的身份验证服务器的不同,
# 玩家将被踢出。这将阻止一些VPN和代理连接,但是一种较弱的保护形式。
prevent-client-proxy-connections = false
# 我们是否应该将IP地址和其他数据转发给后端服务器?
# 可用选项:
# - "none":不进行转发。所有玩家将显示是从代理连接的,并将具有离线模式UUID。
# - "legacy":以前BungeeCord兼容的格式转发玩家IP和UUID。
# 如果你运行的是使用Minecraft 1.12或更低版本的服务器,请使用这个。
# - "bungeeguard":以前BungeeGuard插件支持的格式转发玩家IP和UUID。
# 如果你运行的是使用Minecraft 1.12或更低版本的服务器,并且无法实现网络级别的防火墙(在共享主机上),请使用这个。
# - "modern":作为登录过程的一部分使用Velocity的原生转发来转发玩家IP和UUID。仅适用于Minecraft 1.13或更高版本。
player-info-forwarding-mode = "none"
# 如果你使用的是modern或BungeeGuard IP转发,请在这里配置密钥文件。
# 文件应该是UTF-8编码的,并且不为空。
forwarding-secret-file = "forwarding.secret"
# 是否显示你的服务器支持Forge?如果你运行的是模组服务器,我们建议开启这个。
# 如果你的网络持续运行一个模组包,考虑使用ping-passthrough = "mods"以获得更美观的服务器列表显示。
announce-forge = false
# 如果启用,并且代理处于在线模式,如果发生重复的连接尝试,Velocity将踢出任何在线的现有玩家。
kick-existing-players = false
# Velocity是否应该将服务器列表ping请求传递给后端服务器?
# 可用选项:
# - "disabled":不进行传递。velocity.toml和server-icon.png
# 将决定初始的服务器列表ping响应。
# - "mods":只从你的后端服务器传递模组列表到响应中。
# 尝试列表(或强制主机)中的第一个具有模组列表的服务器将被使用。如果没有可以联系的后端服务器,Velocity将不会显示任何模组信息。
# - "description":使用后端服务器的描述和模组列表。
# 尝试列表(或强制主机)中第一个响应的服务器将被用于描述和模组列表。
# - "all":使用后端服务器的响应作为代理响应。如果没有服务器可以联系,将使用Velocity配置。
ping-passthrough = "DISABLED"
# 如果不启用,则玩家IP地址将在日志中被<ip address withheld>替换
enable-player-address-logging = true
[servers]
# 在这里配置你的服务器。每个键代表服务器的名称,值代表要连接的服务器的IP地址。
lobby = "xxx.xxx.xxx.xxx:24463"
factions = "xxx.xxx.xxx.xxx:24463"
minigames = "xxx.xxx.xxx.xxx:24463"
# 当玩家登录或被服务器踢出时,我们应该按什么顺序尝试服务器。
try = [
"lobby"
]
[advanced]
# Minecraft数据包需要有多大才进行压缩。将其设置为0将压缩所有数据包,
# 设置为-1将完全禁用压缩。
compression-threshold = 256
# 应该进行多少压缩(从0到9)。默认是-1,使用默认级别6。
compression-level = -1
# 客户端在最后一次连接后多久可以连接(以毫秒为单位)。默认为三秒。禁用此功能,请将其设置为0。
login-ratelimit = 3000
# 在这里指定连接超时的自定义超时时间。默认是五秒。
connection-timeout = 5000
# 在这里指定连接的读取超时时间。默认是30秒。
read-timeout = 30000
# 启用与HAProxy的PROXY协议的兼容性。如果你不知道这是用于什么的,那么不要启用它。
haproxy-protocol = false
# 在代理上启用TCP快速打开支持。需要在Linux上运行代理。
tcp-fast-open = true
# 在Velocity上启用BungeeCord插件消息通道支持。
bungee-plugin-message-channel = true
# 显示客户端对代理的ping请求。
show-ping-requests = false
# 默认情况下,Velocity将尝试优雅地处理用户意外断开与服务器的连接的情况,通过尝试将用户回退,
# 除了读取超时的情况。BungeeCord会断开用户连接。你可以禁用此设置以使用BungeeCord的行为。
failover-on-unexpected-server-disconnect = true
# 向1.13+客户端声明代理命令。
announce-proxy-commands = true
# 启用命令执行的日志记录
log-command-executions = false
# 启用记录玩家连接到代理、切换服务器和从代理断开连接的情况。
log-player-connections = true
# 允许接收通过Transfer数据包(Minecraft 1.20.5)从其他主机转移来的玩家。
accepts-transfers = false
[query]
# 是否启用响应GameSpy 4查询响应?
enabled = false
# 查询协监听端口
port = 58518
# 这是报告给查询服务的地图名称。
map = "Velocity"
# 是否默认显示插件在查询响应中
show-plugins = false
最后即可打开服务器
加入服务器
mc选择界面输入代理服务器iP
代理端可以看到转发信息,服务端展示为代理iP(我没有设置Modern转发)
代理端服务器信息提示
主服务器信息提示
可以在游戏内使用/server切换子服