Skip to content

config.yml ​

Written with these defaults on first start (or with -init). Changes to servers, groups, join and fallback groups, forced hosts, transfer style, limbo and MOTD apply with reload (console) or POST /api/reload; listeners, keys, limits, admin and logging need a restart.

Listening ​

KeyDefaultMeaning
listen.bind"0.0.0.0:19132"TCP address for NetherNet signaling; its port is also the UDP port. Open it in TCP and UDP.
listen.udp-port0UDP port for NetherNet data, RakNet and Query; 0 = the port of bind.
listen.advertise-addresses[]Extra public IPs given to clients (when the proxy is behind NAT).
listen.advertise-hosttrueAlso offer the address the player typed.

NetherNet and RakNet ​

KeyDefaultMeaning
nethernet.enabledtrueNetherNet (WebRTC), needed by Bedrock 1.26.50+.
nethernet.identity-file"nethernet_identity.pem"Operator P-384 key. Back it up; use the same file on every proxy.
nethernet.domain"self"Name shown in the client's trust prompt.
nethernet.require-identityfalseReject clients that do not sign their connection.
nethernet.verify-identitytrueKick Xbox players whose connection is not signed with their login key (replayed logins).
nethernet.https.certificate / private-key""PEM files, reloaded when they change. iOS clients need HTTPS.
nethernet.https.acme-domains / acme-email[] / ""Let's Encrypt certificates; port 80 or 443 must reach the host while they are issued.
raknet.enabledfalseRakNet for 1.26.5x clients on the same UDP port (IPv4 only).

Players and identity ​

KeyDefaultMeaning
online-modetrueCheck Xbox Live logins.
proxy-id"proxy-1"Name of this proxy, sent in tickets.
proxy-key-file"proxy_key.pem"P-256 key that signs tickets. Its public key goes into each backend.
transfer-styledimensionHow a server change looks: dimension, seamless or cinematic.
motd.name / motd.sub-name"VanillaGate" / "Luxury Nodes"Text in the server list.
motd.max-players100Shown in the list, and the player cap; 0 = no limit.

Servers ​

KeyDefaultMeaning
servers.<name>.addresslobby-1: "127.0.0.1:19200"pm-link address of a backend. <name> = its network.proxy.server-name.
groupslobby: [lobby-1]Groups of servers; a group picks its server with the fewest players.
join-priority[lobby]Groups tried, in order, for players who join.
fallback-groups[lobby]Groups tried when a player's server stops or sends them back.
limbo-seconds90How long a player waits when no fallback is up; 0 = disconnect at once.
forced-hosts{}Host name the player typed → server or group.

Resource packs ​

KeyDefaultMeaning
resource-packs.enabledfalseThe proxy sends packs to players.
resource-packs.folder"resource_packs"Where the packs are.
resource-packs.requiredfalsePlayers must accept them.
resource-packs.encrypttrueEncrypt packs. Keys are kept in <folder>/.encrypted; a <file>.key next to a pack means it is already encrypted.

Permissions ​

KeyDefaultMeaning
player-groups{}Player name or XUID → permission groups.
permissions.defaultpmproxy.command.hub, pmproxy.command.glistNodes every player has.
permissions.adminpmproxy.command.server, .find, .send, .alert, .kickAdmin nodes. * and prefix.* wildcards work.
plugins.permissions.enabled / filefalse / "permissions.yml"Permissions plugin with groups and inheritance; replaces player-groups and permissions.

Limits ​

KeyDefaultMeaning
limits.pings-per-second / ping-burst5 / 10Server list pings per address.
limits.joins-per-minute / join-burst20 / 5Connection attempts per address.
limits.joins-per-second50Connection attempts of everyone together.
limits.max-logins-in-progress100Logins checked at the same time.
limits.max-players-per-ip5Players from one address.
limits.packets-per-second / packet-burst400 / 800Packets per player; above it the player is kicked.
limits.strikes / block-seconds30 / 300An address with more strikes than this in a minute is blocked for block-seconds. 0 disables a limit.

Several proxies, admin, logs ​

KeyDefaultMeaning
redis.address / password / db / prefix"" / "" / 0 / "pmproxy:"Shared state for several proxies; empty address = this proxy is alone.
plugins.multiversion.enabledfalseLet older clients join the newest servers (1.26.52 on 1.26.60).
admin.bind / admin.token"" / ""HTTP admin API; off when bind is empty. With a token, requests need Authorization: Bearer <token>. Never expose it publicly.
log.level / format / fileinfo / text / ""debug, info, warn, error; text or json; file also appends logs to that file.

VanillaMine is a fork of PocketMine-MP, maintained by Luxury Nodes. Not affiliated with the PMMP team or Mojang.