Development-build feature:
BungeeMethod: HTTPis not available in the latest public VotingPlugin release, 7.1.1. VotingPlugin PR #1594 is merged into development at commit46088736, but it has not shipped in a public release. Release users do not have theHTTPmethod, its configuration keys, or its proxy commands. Use a build containing46088736or later only for development testing; production networks should wait for a compatible public VotingPlugin release.
The HTTP proxy method gives every backend an outbound, encrypted connection to one HTTPS listener on the BungeeCord or Velocity proxy. Only the proxy listener port needs to be reachable. Backend servers do not expose an HTTP transport port.
HTTP transports VotingPlugin's normal proxy messages. It does not receive public Votifier votes, replace VotifierPlus, change player UUID handling, or change reward and offline-vote rules. Configure the public vote listener and VotingPlugin vote sites normally.
The proxy generates a private certificate authority, proxy identity, and short-lived enrollment codes. Each backend enrolls once and receives a client identity bound to its configured Server name.
Server value in BungeeSettings.yml.Use a TCP/L4 proxy only when it passes the TLS connection through unchanged. For an Internet-facing listener, also use host or provider firewall controls; the application cannot absorb a volumetric link or TCP flood.
In the proxy's bungeeconfig.yml, select HTTP and configure its listener:
BungeeMethod: HTTP
HTTP:
Host: '0.0.0.0'
Port: 1297
PublicEndpoint: 'https://proxy.example.com:1297/'
Host is the local interface on which VotingPlugin listens. Use a narrower address when the network design permits it.Port defaults to 1297 in the development configuration.PublicEndpoint has no usable default. Set the HTTPS origin that every backend can reach directly.PublicEndpoint must point to this VotingPlugin listener. Do not use an HTTP URL, a path below the origin, embedded credentials, a fragment, or a TLS-terminating CDN/reverse proxy.
Restart the proxy after selecting the method or changing listener settings.
On the running proxy, create a separate code for the exact backend name:
/votingpluginproxy httpcode lobby-1
Connection codes expire after 15 minutes, work once, and are bound to one backend name. Treat a fresh code like a temporary password: send it privately and do not place it in public logs, tickets, screenshots, or chat rooms.
The proxy command requires votingpluginproxy.admin. Velocity also registers the short /vpp alias; use /votingpluginproxy in portable instructions for both proxy platforms.
On that backend, set the same method and paste its code into BungeeSettings.yml:
UseBungeecord: true
Server: lobby-1
BungeeMethod: HTTP
HTTP:
ConnectionCode: 'paste-code-here'
Restart the backend. After enrollment succeeds, remove ConnectionCode from the configuration and restart normally. The generated client identity remains in the backend's VotingPlugin data folder and is reused automatically.
Repeat the process with a new code for every backend. Never reuse one backend's code, data folder, or client identity on another server.
Server name.A successful HTTP connection test does not prove that a vote site, Votifier token, vote-site mapping, database, reward, or player-name policy is correct. Always finish with a real end-to-end vote.
VoteParty.QuarantinedProxyEffects for manual review instead of blocking later work.SendVotesToAllServers, BlockedServers, WhiteListedServers, WaitForUserOnline, dedicated-proxy presence, offline caching, UUID mode, and BedrockPlayerPrefix keep their existing meanings.HTTP does not make duplicate backend names safe. Every backend must have a unique Server value, including Bedrock-enabled networks where name prefixes can otherwise create confusing identity collisions.
Keep the proxy's HTTP data directory private and backed up. It contains the transport authority and durable delivery state. Do not copy a backend credential directory between servers.
If a backend host or its private identity may be compromised, revoke it on the proxy before enrolling a replacement:
/votingpluginproxy httprevoke lobby-1
Generate a new code, install it only on the intended replacement backend, and restart that backend. A genuinely new code requests re-enrollment even when old local credential files still exist.
BungeeMethod: HTTP.Only one BungeeMethod is active. Do not assume the previous Redis, MQTT, MySQL, sockets, or plugin-messaging transport remains a fallback.
To roll back, select the previous method on the proxy and every backend, restore its required settings, and restart all participating instances. Keep the HTTP authority data private even when the method is inactive, or retire it according to your backup and credential policy.
Control v1.0.2 includes negotiated config.proxy-method.v2 support for HTTP. The latest public VotingPlugin release, 7.1.1, does not advertise that capability and cannot use HTTP. Configure this development transport manually unless every selected node runs a development build containing merged commit 46088736 or later.
Control PR #13 has been included since v1.0.0 and remains available in v1.0.2, while the merged-but-unreleased VotingPlugin commit 46088736 provides the node-side config.proxy-method.v2 workflow for HTTP. The proxy-method workflow previews the change and then asks for browser confirmation before applying it. Verify that the proxy and every selected backend advertise v2 before using the WebUI. For production networks, wait for a compatible public VotingPlugin release. Retain console access and external backups for rollback.
| Symptom | Check |
|---|---|
| Proxy reports that HTTP is not running | Confirm BungeeMethod, Host, Port, and PublicEndpoint, then restart the proxy. |
httpcode fails |
Confirm the listener started and PublicEndpoint is a valid directly reachable HTTPS origin with a valid port. |
| Backend cannot enroll | Confirm the code is unexpired, unused, and bound to the backend's exact unique Server name. Generate a fresh code when uncertain. |
| Backend repeatedly presents an old identity | Revoke the old backend, generate a genuinely new code, and restart with that new code. |
| TLS or hostname verification fails | Confirm DNS, the exact public hostname, time synchronization, and that no TLS-terminating proxy or CDN is replacing the listener certificate. |
| Proxy reports incomplete or missing HTTP TLS identity files | Restore the complete proxy HTTP data directory from a trusted backup. Do not delete or regenerate only part of the identity once enrollment or durable outgoing state exists; the transport refuses to replace its authority silently. |
| Connection works but votes do not | Check VotifierPlus, vote-site service mapping, proxy routing, blocked/allowed servers, player identity rules, storage, and reward configuration. |
| Votes appear delayed | Check backend reachability and queue pressure. The connector uses bounded long polling and backpressure rather than unbounded queues. |
| Delivery remains quarantined after a crash | Investigate whether the reward callback may have run before deciding how to reconcile it. Do not blindly replay an ambiguous reward. |