config.yml
Se escribe con estos valores en el primer arranque (o con -init). Los cambios en servidores, grupos, grupos de entrada y de respaldo, hosts forzados, estilo de transferencia, limbo y MOTD se aplican con reload (consola) o POST /api/reload; los puertos de escucha, claves, límites, administración y logs necesitan reiniciar.
Escucha
| Clave | Por defecto | Significado |
|---|---|---|
listen.bind | "0.0.0.0:19132" | Dirección TCP de la señalización NetherNet; su puerto es también el puerto UDP. Ábrelo en TCP y UDP. |
listen.udp-port | 0 | Puerto UDP para datos de NetherNet, RakNet y Query; 0 = el puerto de bind. |
listen.advertise-addresses | [] | IPs públicas extra que se dan a los clientes (proxy detrás de NAT). |
listen.advertise-host | true | Ofrecer también la dirección que escribió el jugador. |
NetherNet y RakNet
| Clave | Por defecto | Significado |
|---|---|---|
nethernet.enabled | true | NetherNet (WebRTC), necesario para Bedrock 1.26.50+. |
nethernet.identity-file | "nethernet_identity.pem" | Clave P-384 del operador. Haz copia de seguridad; usa el mismo archivo en todos los proxies. |
nethernet.domain | "self" | Nombre que aparece en el aviso de confianza del cliente. |
nethernet.require-identity | false | Rechazar clientes que no firman su conexión. |
nethernet.verify-identity | true | Expulsar a jugadores de Xbox cuya conexión no esté firmada con su clave de inicio de sesión (inicios de sesión reutilizados). |
nethernet.https.certificate / private-key | "" | Archivos PEM, se recargan al cambiar. Los clientes de iOS necesitan HTTPS. |
nethernet.https.acme-domains / acme-email | [] / "" | Certificados de Let's Encrypt; el puerto 80 o 443 debe llegar al servidor mientras se emiten. |
raknet.enabled | false | RakNet para clientes 1.26.5x en el mismo puerto UDP (solo IPv4). |
Jugadores e identidad
| Clave | Por defecto | Significado |
|---|---|---|
online-mode | true | Comprobar el inicio de sesión de Xbox Live. |
proxy-id | "proxy-1" | Nombre de este proxy, va en los tickets. |
proxy-key-file | "proxy_key.pem" | Clave P-256 que firma los tickets. Su clave pública va en cada backend. |
transfer-style | dimension | Cómo se ve un cambio de servidor: dimension, seamless o cinematic. |
motd.name / motd.sub-name | "VanillaGate" / "Luxury Nodes" | Texto en la lista de servidores. |
motd.max-players | 100 | Lo que se muestra en la lista y el límite de jugadores; 0 = sin límite. |
Servidores
| Clave | Por defecto | Significado |
|---|---|---|
servers.<nombre>.address | lobby-1: "127.0.0.1:19200" | Dirección pm-link de un backend. <nombre> = su network.proxy.server-name. |
groups | lobby: [lobby-1] | Grupos de servidores; un grupo elige el servidor con menos jugadores. |
join-priority | [lobby] | Grupos que se prueban, en orden, al entrar. |
fallback-groups | [lobby] | Grupos que se prueban cuando el servidor de un jugador se apaga o lo devuelve. |
limbo-seconds | 90 | Cuánto espera un jugador si no hay servidor de respaldo; 0 = desconectar en el acto. |
forced-hosts | {} | Host que escribió el jugador → servidor o grupo. |
Packs de recursos
| Clave | Por defecto | Significado |
|---|---|---|
resource-packs.enabled | false | El proxy envía packs a los jugadores. |
resource-packs.folder | "resource_packs" | Dónde están los packs. |
resource-packs.required | false | Los jugadores tienen que aceptarlos. |
resource-packs.encrypt | true | Cifrar los packs. Las claves se guardan en <carpeta>/.encrypted; un <archivo>.key junto a un pack indica que ya está cifrado. |
Permisos
| Clave | Por defecto | Significado |
|---|---|---|
player-groups | {} | Nombre de jugador o XUID → grupos de permisos. |
permissions.default | pmproxy.command.hub, pmproxy.command.glist | Permisos de todos los jugadores. |
permissions.admin | pmproxy.command.server, .find, .send, .alert, .kick | Permisos de administración. Admite comodines * y prefijo.*. |
plugins.permissions.enabled / file | false / "permissions.yml" | Plugin de permisos con grupos y herencia; sustituye a player-groups y permissions. |
Límites
| Clave | Por defecto | Significado |
|---|---|---|
limits.pings-per-second / ping-burst | 5 / 10 | Pings de la lista de servidores por dirección. |
limits.joins-per-minute / join-burst | 20 / 5 | Intentos de conexión por dirección. |
limits.joins-per-second | 50 | Intentos de conexión de todos juntos. |
limits.max-logins-in-progress | 100 | Inicios de sesión que se comprueban a la vez. |
limits.max-players-per-ip | 5 | Jugadores desde una misma dirección. |
limits.packets-per-second / packet-burst | 400 / 800 | Paquetes por jugador; si los supera, se le expulsa. |
limits.strikes / block-seconds | 30 / 300 | Una dirección con más avisos que este número en un minuto se bloquea block-seconds. 0 desactiva el límite. |
Varios proxies, administración y logs
| Clave | Por defecto | Significado |
|---|---|---|
redis.address / password / db / prefix | "" / "" / 0 / "pmproxy:" | Estado compartido entre varios proxies; dirección vacía = este proxy va solo. |
plugins.multiversion.enabled | false | Permitir que clientes más antiguos entren en los servidores más nuevos (1.26.52 en 1.26.60). |
admin.bind / admin.token | "" / "" | API HTTP de administración; desactivada si bind está vacío. Con token, las peticiones necesitan Authorization: Bearer <token>. No la expongas nunca a Internet. |
log.level / format / file | info / text / "" | debug, info, warn, error; text o json; file añade además los logs a ese archivo. |
