TMG Manic
TMG Founder
Beginner-Friendly Tactical Guide: Setting Up a FULL BungeeCord Minecraft Server Network (with Proxy, Main Server, and Multiple Game Mode Rooms) Under a Single Subdomain
Need help? Ping TMG Manic on the forums or in-game and we’ll get you sorted!
If you're stuck at any step, just shoot a message to 'TMG Manic' - we troubleshoot this stuff all day! 

Let’s break down what you’ll actually get at the end of this tutorial. We’re building a MULTI-SERVER Minecraft network, fronted by a BungeeCord PROXY, routed through a single subdomain (like play.yourserver.com). Players join ONE address and can move between a main server (probably your lobby/hub) and rooms hosting different game modes (FFA, Hardcore, Creative) without ever logging off.
What’s BungeeCord?BungeeCord is not a normal Minecraft server. It’s a proxy - think of it as a doorman and a traffic manager. It lets you link together multiple Spigot/PaperMC servers and send players anywhere instantly. This is how big servers like Hypixel do multiple minigames on different "rooms" (really, different backend servers).
Key Pieces:
What you’ll need before starting:
What’s BungeeCord?BungeeCord is not a normal Minecraft server. It’s a proxy - think of it as a doorman and a traffic manager. It lets you link together multiple Spigot/PaperMC servers and send players anywhere instantly. This is how big servers like Hypixel do multiple minigames on different "rooms" (really, different backend servers).
Key Pieces:
- Proxy Server (BungeeCord): Handles logins, routes player traffic.
- Main Server (Hub/Lobby): Where players land when they join.
- Game Mode “Rooms” (Sub-Servers): A server each for FFA, Hardcore, and Creative, linked via the proxy.
- One Subdomain (e.g., play.mysupernetwork.com): Players enter this in Minecraft (no ports needed!).
- Cross-Server Permissions: With LuckPerms and a database, ranks and permissions sync everywhere.
What you’ll need before starting:
- Access to at least 4 Minecraft server instances: 1 for BungeeCord proxy, 1 for your lobby, and one each for FFA, Hardcore, and Creative. (They can be on separate machines or ports; see “Hosting Architecture” below.)
- Basic FTP/SFTP/Panel file access for uploading JARs and editing configs.
- Control over your domain’s DNS (for subdomain and SRV record setup).
- Minimum 1GB RAM for BungeeCord, and enough RAM for each sub-server (recommend 2-4GB per room depending on plugins/players).
1.1. Network Architecture – What To Host, Where, and Why
The classic (and best) BungeeCord setup needs at least 4 server instances:
- Proxy Server: BungeeCord, minimal resources needed, only handles chat and routing, no Minecraft world.
- Hub / Main Server: The lobby where players first spawn. Spigot/Paper works best.
- FFA Server: Dedicated Spigot/Paper/other backend server for Free-For-All gameplay.
- Hardcore Server: Its own backend, can customize it as you like.
- Creative Server: Backend running Creative mode, usually with extra plugins.
Hardware Choices & Hosting Plans
- Hosting all on one beefy PC or VPS won’t kill you for small groups, but for more than 20 players or for stability, spread them out (VPS slices, Docker, cheap dedicated, etc.).
- You cannot run BungeeCord and a normal Spigot/Paper server on the same port or in the same process.
- If using shared hosting, make sure your host supports custom JAR uploads and BungeeCord/Waterfall proxying.
Ports
- BungeeCord listens on 1 public port (defaults to 25565, but you can use any available TCP port).
- Each sub-server (hub, FFA, etc.) needs an open local port (not public!), (e.g., 25567, 25568, 25569…)—these often do NOT need to be open to the world.
RAM Guidance
- Proxy: 1GB is enough (unless you have hundreds of players).
- Game servers: 2-4GB each for smaller servers, more for big Creative/FFA maps or heavy plugin use.
Panel/OS Support
Works with Windows, Linux, macOS. If you’re on shared hosting with a panel (like Multicraft, Pterodactyl, or proprietary panels), you’ll usually do steps via SFTP and the panel’s file editor and restart tools.If you don’t feel like reading or get stuck, TMG Manic can walk you through setup for almost any popular host.

2.1. Why a Single Subdomain? (And How To Set It Up Without Annoying Ports)
People like “play.myserver.com” instead of “123.123.123.123:25565” - it just looks better and is easier to remember.
Here’s what you’ll do:
- Pick a subdomain (like play.yourdomain.com).
- Create an A record that points to your BungeeCord server’s public IP.
- (OPTIONAL) Set up SRV records if you need to run BungeeCord on a non-standard port (not 25565), so people don’t have to enter the port manually.
Step-by-Step: Setting an A Record & SRV (if needed)
- A Record:
- Log into your DNS provider or domain registrar panel.
- Go to DNS settings.
- Add an A record:
- Host/Name: play
- Points to: your proxy server’s IP address
- Example: [play] ➔ [111.222.333.444]
- SRV Record (if proxy port ≠ 25565):
- Some hosts don’t let you use 25565, so you’ll use an SRV.
- Minecraft clients look for _minecraft._tcp.play.yourdomain.com:
- Service: _minecraft
- Protocol: _tcp
- Name: play
- Target: play.yourdomain.com
- Port: [your BungeeCord port]
- Priority: 0
- Weight: 5
- A Record:
Quick DNS Checklist
- [ ] Created A record for your subdomain to point to BungeeCord proxy IP.
- [ ] (Optional) Created SRV record if you’re not using port 25565.
- [ ] Waited for DNS propagation (can take up to 1hr, usually minutes).
If you get stuck on domain stuff, ‘TMG Manic’ can walk you through with your actual registrar’s panel.
3.1. Download and Run BungeeCord
- Download the latest BungeeCord .jar file (Java 21 as of MC 1.21, or grab older for MC 1.20 and below)3.
- Place it in the server directory you want to use as the proxy.
- Recommended naming: BungeeCord.jar or waterfall.jar (for Waterfall, a more modern fork).
Code:
# Run this in your terminal/cmd in the BungeeCord folderjava -Xms512M -Xmx1G -jar BungeeCord.jar
- The jar will generate a config.yml file after the first start.
Panel users:
If you use Multicraft or similar, select ‘BungeeCord’ or ‘custom JAR’ as your server type and start.3.2. Basic config.yml Walkthrough
After the first start, [BungeeCord.jar] will generate its config:
- Stop the proxy before editing!
- Edit config.yml using a proper text editor ([Notepad++], [Sublime], [VScode], or your panel’s file editor).
YAML:
ip_forward: trueonline_mode: truehost: 0.0.0.0:25565max_players: 100motd: 'Welcome to your Bungee network!'servers:hub:motd: 'The Main Lobby'address: 127.0.0.1:25566restricted: falseffa:motd: 'FFA Room'address: 127.0.0.1:25567restricted: falsehardcore:motd: 'Hardcore Room'address: 127.0.0.1:25568restricted: falsecreative:motd: 'Creative Room'address: 127.0.0.1:25569restricted: falselisteners:
[LIST]
[*]query_port: 25565motd: '&1BungeeCord Network'tab_list: GLOBAL_PINGquery_enabled: falseproxy_protocol: falseforced_hosts:play.yourdomain.com: hubpriorities:
[LIST]
[*]hubbind_local_address: truehost: 0.0.0.0:25565max_players: 100tab_size: 60force_default_server: truetimeout: 30000connection_throttle: 4000player_limit: -1disabled_commands:
[/LIST]
[*]disabledcommandherepermissions:default:
[LIST]
[*]bungeecord.command.server
[*]bungeecord.command.listadmin:
[*]bungeecord.command.alert
[*]bungeecord.command.end
[*]bungeecord.command.ip
[*]bungeecord.command.reloadgroups:YOURNAME:
[*]admin
[/LIST]
What the key config options mean:
- ip_forward: trueLets player IP and UUID data pass to your backend servers (CRUCIAL for plugins/ranks/ban lists)1.
- online_mode: true (or false for cracked, but see Security section)Sets whether Mojang authentication is enforced.
- host:IP and port to listen for incoming connections (usually 0.0.0.0 lets all IPs connect on the port).
- servers:Each sub-server you plan to link (give a unique name and backend address/port).
- forced_hosts:Lets you map subdomains to specific backend servers if needed, so “creative.myserver.com” could go straight to the creative room.
- priorities:List the fallback/default servers. First one is where players spawn when they join.
Restart proxy after editing.
Validate YAML! Paste your config here. YAML fails on bad indentation or rogue tabs! Most BungeeCord “won’t start” problems are just a syntax error68.
4.1. Preparing the Spigot/Paper Servers (FFA, Hardcore, Creative, Hub)
- Set up each backend/lobby server separately (Spigot or Paper recommended).
- Each game mode/server must run on a unique port.
Changing Ports
- In server.properties, set a different ‘server-port’ for each backend (e.g., 25566 for hub, 25567 for FFA, 25568 for Hardcore, 25569 for Creative).
- Leave server-ip BLANK (unless you have a specific binding use-case).
Code:
[HEADING=2]sample [/HEADING]
server-port=25567server-ip=
BungeeCord-Specific Config for Each Backend
On EVERY backend server (except for the BungeeCord proxy), do these steps:
- In server.properties:online-mode=false(BungeeCord does the authentication! Never set this true behind a proxy, or you risk “Login Failed: Bad Login” and more.)
- In spigot.yml:bungeecord: true(This tells Spigot to trust BungeeCord’s security and IP forwarding.)
YAML:
[HEADING=2]server.properties [/HEADING]
online-mode=false
[HEADING=2]spigot.yml[/HEADING]
bungeecord: true
DON’T skip this. If you see “If you wish to use IP forwarding, please enable it in your BungeeCord config as well!” or get random UUID/skin/rank issues, you probably missed one of these.9
Restart each sub-server once configs are set.
4.2. Install Basic Game Mode Plugins
Install your core gameplay plugins here:
- Hub/Main: EssentialsX, DeluxeHub, JumpPads, fun GUI menus, or build your own custom entry area.
- FFA: Try FaithfulFFA (Modrinth), Continuum FFA (BuiltByBit), pFFA (GitHub), or other PvP minigame plugins.
- Hardcore: Hardcore Mode, or even just enable hardcore in server.properties or use plugins for bans/deathbans.
- Creative: PlotSquared, WorldEdit, EssentialsX, creative anti-grief tools.
5.1. Why Security is CRUCIAL
Because your backend servers run in offline mode (online-mode=false) and trust the proxy, they will let anyone ineven with admin or OP - IF - someone discovers the backend IP/port. Here’s how to stop hackers:
Option 1: Firewall Whitelisting (Best for Dedicated or VPS)
Use a firewall (UFW, iptables, Windows Firewall, cloud provider firewalls) to block ALL direct connections to the backend servers in 1 command. Allow local connections from localhost/127.0.0.1 (if all servers are on the same box), or only from the proxy server’s public IP (if separated)1214.
- Linux (UFW):
Code:
sudo ufw deny 25566sudo ufw deny 25567sudo ufw deny 25568sudo ufw deny 25569 [/LIST] [HEADING=2]or [/HEADING] sudo ufw allow from <proxy-ip> to any port 25566
- Windows: Use Windows Defender Firewall, block inbound on backend server ports except from proxy IP.
- Option 2: IP Whitelist Plugins (Shared Hosting, where you can’t firewall)
On your backend servers, install one of these plugins:- IPWhitelist: https://www.spigotmc.org/resources/ipwhitelist.61/Add your Bungee proxy’s IP to it. Kicks any direct connection attempts.
- BungeeIPWhitelist: Especially designed for Bungee networks https://dev.bukkit.org/bukkit-plugins/bungeeipwhitelist
- BungeeGuard: Adds a secret “token” check to every connection; used by many premium hosts, and the go-to for plugin-based security1618.
Code:[HEADING=2]Example: [/HEADING] whitelisted-ips: [LIST] [*]'123.123.123.123' # Your proxy’s IP
- Linux (UFW):
Option 3: BungeeGuard For Maximum Simplicity and Compatibility
- Install on both proxy and all sub-servers.
- On Bungee, it generates a token.
- On each backend (Spigot, Paper), paste the token into BungeeGuard’s config.
- Only connections with the correct token are allowed.
Pro tip: Even with plugins, always firewall backend ports (if possible). Extra layers are good.
Test Your Security
Try connecting to one of your backend ports directly from Minecraft - if you get a weird message or “outdated server”/“IP forwarding not enabled”/“Kicked by BungeeGuard”, you’re good! If you can join without going through BungeeCord, stop! - you’re still at risk! Re-check your configs and plugin setup.
If not sure, TMG Manic can help you test.
6.1. Opening Ports for the Proxy
- Only BungeeCord’s port (25565/your choice) needs to be forwarded publically for Minecraft to connect.
- All other server ports (backends) should NOT be open to the internet. (See above security sections).
- Use your router’s port forwarding config to open TCP port 25565 (or whatever port your proxy uses) to your host’s internal IP address.
6.2. Troubleshooting Port Issues
- Players can’t join at all: Probably forgot to port forward the proxy’s port, or DNS hasn’t propagated.
- “Connecting…” forever, then disconnects: Port is forwarded but firewall is blocking it.
- Can reach backend servers directly: Firewall is not tight enough. Fix ASAP.
Network-Wide “Proxy” Plugins (Install on BungeeCord Only):
- BungeeGuard: Security must-have (see [Security] above).
- LuckPerms (Bungee version): For proxy-specific permissions (like /alert, /glist, /send, etc.).
- LiteBans or AdvancedBan (Bungee version): Global bans, kicks, mutes.
- ChatControl/ChatFilter (Bungee version): Filter chat network-wide.
- EssentialsX: Core commands everyone expects.
- Vault: Needed for almost any economy or permissions plugin.
- LuckPerms (Spigot/Paper version): Permissions management, works with MySQL for cross-server sync.
- WorldEdit/WorldGuard: Building, anti-grief, regions.
- PlaceholderAPI: Essential for placeholder support in chat menus, scoreboards.
- Anti-cheat: NoCheatPlus, Spartan, or similar.
- FaithfulFFA (Modrinth) – Easy config, kits, stats, MySQL support.
- pFFA: Lightweight and open source (GitHub).
- Continuum FFA: Feature-rich paid option (BuiltByBit).
- EnhancedHardcore, HardcoreRevamped, or similar.
- BanOnDeath: Temporary or permanent bans after death for real Hardcore.
- PlotSquared, GriefPrevention, CoreProtect (rollback logs).
- Add GeyserMC and Floodgate (use BungeeCord version for proxy, and plugin version for rooms you want Bedrock players on).
- LuckPerms MySQL: To have same ranks, groups, and permissions everywhere2123.
- EconomyBridge, LeaderHeads: Sync economy/stats/network leaderboards.
How to Install LuckPerms & Set Up Permissions Sync
- []Upload LuckPerms-Bungee.jar to your proxy’s plugins folder.[]Upload LuckPerms-Spigot.jar to each backend room’s plugins folder.[]Setup MySQL database with your host (many panels have an instant “Create Database” button).[]Edit LuckPerms config on every proxy and backend to use mysql as storage-method, and fill in database info.[]Restart the servers.[]Grant yourself permissions and start building groups!-
Code:
/lp user YourName permission set luckperms.* true
- Use the web editor (<span>/lp </span><span>editor</span>) to make network groups, assign them to players, and experiment with per-server permissions.
- []Upload LuckPerms-Bungee.jar to your proxy’s plugins folder.[]Upload LuckPerms-Spigot.jar to each backend room’s plugins folder.[]Setup MySQL database with your host (many panels have an instant “Create Database” button).[]Edit LuckPerms config on every proxy and backend to use mysql as storage-method, and fill in database info.[]Restart the servers.[]Grant yourself permissions and start building groups!-
Check out LuckPerms’ setup wiki and KasaiSora’s YouTube guide: How To Setup LuckPerms On A Minecraft Network (Detailed Tutorial)2123.
Don’t hesitate to ask TMG Manic for a permissions file template or troubleshoot LuckPerms/SQL issues!
Cross-Server Permissions, Chat, and Data Sync: Practical Steps
- LuckPerms (MySQL): For global permissions/ranks.
- EssentialsX (on each backend): Set up with Vault for per-room features. (Prefixes, suffixes, nicknames, etc. can be synced via Vault + LuckPerms.)
- Network-wide Chat: Use BungeeChat, MultiChat, or DeluxeChat (with MySQL) for lobby-wide chatting.
- Economy Sync: Use EconomyBridge or compatible MySQL-based economy plugins.
Sample LuckPerms MySQL Config (config.yml snippet):
YAML:
storage-method: mysqldata:address: 127.0.0.1:3306database: luckpermsusername: luckuserpassword: YourSecurePassword
Configure this identically across ALL servers in your network.
Sync Troubleshooting Tips:
- If permissions don’t sync instantly, check your LuckPerms “messaging-service:” (use pluginmsg or SQL for auto-propagation across all servers).
- Run <span>/lp </span><span>sync</span> to force a reload.
- MySQL not connecting? Test your credentials and port, check for firewalls blocking 3306.
“It Won’t Start!” – Most BungeeCord Issues
YAML Formatting Errors (config.yml)
- BungeeCord uses strict YAML - indentation matters (use spaces, never tabs). Even a single stray tab/space will break the entire proxy!
- Paste configs into yamllint.com before saving.
- If you see errors in the console (“Cannot parse config.yml”), fix YAML spacing or use a generator for quick help78.
Port Conflicts
- Only ONE application can bind to each port. If "Address already in use" appears, make sure another server isn’t using 25565 or the same port as your proxy or sub-servers.
Login or UUID Issues, Player Data Not Syncing?
- Make sure <span>ip_forward: </span><span>true</span> is on in proxy config, and <span>bungeecord: </span><span>true</span> is in each sub-server’s spigot.yml9.
- In backend server.properties, always set <span>online-mode=false</span>.
- Set up LuckPerms and Vault with MySQL for synchronizing permissions.
Direct Server Bypass (Security Issue!)
- If you (or others) can join backend servers without BungeeCord, your firewall or IP whitelist isn’t set up properly.
“If you wish to use IP forwarding…” error on join
- Means you tried to join a backend room’s port directly, or have misconfigured ip_forward or backend bungeecord: true option.
Other Weird Stuff
- Permissions not working the same everywhere? MySQL misconfigured or inconsistent LuckPerms versions on servers.
- Players not seeing premium skins? See SkinRestorer plugin for skin support even in “offline mode” rooms.
When in doubt, ask TMG Manic for a hand - usually takes 1-2 minutes of staring at logs/configs to spot the problem!
Making Your Tutorial (or Thread) Look Epic On XenForo
- BBCode (bulletin board code) is what XenForo forums use - including tags to collapse big chunks of information for easy scrollability.
- Nested spoilers are possible. Use them for big guides, configs, or to group each part of your tutorial by topic.
- Use
Code:
to make a nice horizontal separator. - Lists? and [*] for bullet points.
for section headers (XenForo 2.x).- Minimal emoji? Friendly tone and a dab of light humor ≫ wall of smiley faces.
Sample:
Code:
[SPOILER="Example Config"]your bungee config here[/SPOILER]
Use as needed to help forum readers skip to the parts they need.
TMG Manic’s Tactical Takeaways
- Start simple. Get just proxy + hub + 1 room working before adding multiple game modes.
- Validate every YAML config - use online linter sites.
- Firewall EVERYTHING except Bungee’s port.
- Install LuckPerms with MySQL first! You’ll save tons of time on permissions/ranks issues later.
- Use GeyserMC+Floodgate for Bedrock player support (great for Bedrock/Java hybrid communities).
- Always restart after big config changes.
- Read logs. 9 out of 10 times the answer is there.
- Never share OP/Admin with anyone you wouldn’t trust with your whole community.
- Back up your configs before major plugin or server updates. And keep a clean template handy.
Frequently Asked Questions (FAQ)
Q: Can I add more rooms/game modes later?A: YES! Just add a new backend server, configure its port, edit BungeeCord’s config.yml, and restart. Super scalable!Q: Do I need to upload plugins to the BungeeCord proxy?A: ONLY BungeeCord-specific plugins (they won’t work if just dropped on backend servers, and vice versa).
Q: How do I reset everything if I mess up?A: Wipe the config.yml, restart proxy, rebuild from your last backup or validated config snippets.
Q: Can my moderators control all rooms from one place?A: Yes - with network-wide permissions plugins, plus BungeeCord commands like <span>/glist</span>, <span>/alert</span>, <span>/server</span>, and LuckPerms/Bungee version, you can centralize a lot of functions.
Q: How do I handle updates when Minecraft versions change?A: Always update BungeeCord first, then update your backend servers and plugins carefully (check plugin changelogs for version support).
Q: Still stuck?A: Ask TMG Manic on forums, Discord, or in-game for a quick hand - helping out with these setups is what we do!
Wrapping Up: Build, Play, Iterate, and Have Fun!
Setting up a BungeeCord network isn’t magic, but it can look like it when your friends slide between Creative and PvP rooms instantly, ranks just “work”, and you don’t have to fight with ports or security leaks. Take your time, validate every config, lock those backend ports, and enjoy the flexibility. This tutorial should be enough for any beginner (or seasoned operator) to set up a secure, multi-server network connected to a single, beautiful subdomain.
And for real - if you’re stuck or want quick troubleshooting, reach out to TMG Manic. Happy crafting!
Last edited: