[MEGA] Complete BungeeCord Setup with Subdomain and Multiple Game Modes

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:

  • 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.
Who is this guide for?Anyone with beginner-level skills, wanting a casual but secure server. If you’re not a pro server admin, you’re in the right place.

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.
Each of these is a separate Java process (not a world or dimension), so don’t cram everything into a single server folder.


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:


  1. Pick a subdomain (like play.yourdomain.com).
  2. Create an A record that points to your BungeeCord server’s public IP.
  3. (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
(For a slick web interface, follow these guides: Porkbun SRV Guide, GameHostBros SRV Guide.)


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).
Now, players can use play.yourdomain.com to join - no need for ports in the IP!

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).
A minimal config snippet:

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]
[/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.
Note: You can use external IPs (like 192.168.1.50) or “localhost”/127.0.0.1 if all your processes are on the same machine.


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.
Full plugin recommendations listed further down for each mode.




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:
      Code:
      [HEADING=2]Example: [/HEADING]
      whitelisted-ips:
      
      [LIST]
      [*]'123.123.123.123'  # Your proxy’s IP

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.
Installation instructions: https://bungeeguard.com/, https://github.com/lucko/BungeeGuard

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.
More on firewall/port setup and common fixes:





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.
On Each Room (Backend Servers):


    • 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.
FFA/KitPvP Room:


    • FaithfulFFA (Modrinth) – Easy config, kits, stats, MySQL support.
    • pFFA: Lightweight and open source (GitHub).
    • Continuum FFA: Feature-rich paid option (BuiltByBit).
Hardcore Room:


    • EnhancedHardcore, HardcoreRevamped, or similar.
    • BanOnDeath: Temporary or permanent bans after death for real Hardcore.
Creative Room:


    • PlotSquared, GriefPrevention, CoreProtect (rollback logs).
Bedrock Support:


    • Add GeyserMC and Floodgate (use BungeeCord version for proxy, and plugin version for rooms you want Bedrock players on).
Cross-Server Sync Plugins:


    • 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.

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:
      for config or Java commands, and

      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.
For full details: XenForo Standard BBCodes & XF2 BBCode Formatting Guide252729.

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:
Back
Top