Links
Tags
Creators
Details
1.0.0
Compatibility
Changes
TunnelMC 🌐
Expose any port on your Minecraft server to the internet via ngrok tunnels — no extra port allocations needed.
TunnelMC is a Bukkit/Spigot/Paper plugin that automatically downloads and manages ngrok as a child process, creates tunnels for any local port, and broadcasts the public URL to console and online OPs the moment the tunnel is ready. Perfect for exposing web dashboards (like NodeRunner's WebUI) when you don't have a spare port allocation on shared or Pterodactyl hosting.
✨ Features
⚡ Zero-Touch ngrok Setup
No ngrok installed? No problem. TunnelMC automatically detects your OS and CPU architecture and downloads the correct ngrok v3 binary on first launch. Downloaded once, cached forever.
🔌 HTTP & TCP Protocol Support
Use http protocol for web dashboards and APIs — gets you a public https:// URL instantly. Use tcp for game servers, SSH, databases, or any other TCP traffic — gets you a tcp:// address. Note: UDP is not supported by ngrok.
🔀 Multiple Tunnels
Define as many tunnels as you need in config, each with its own name, port, and protocol. Each tunnel runs as an independent ngrok process.
🔔 Instant URL Broadcast
The public ngrok URL is printed to console and sent to all online OPs the moment the tunnel comes online — no need to dig through logs.
🎮 Full In-Game Control
Start, stop, restart, and check tunnel status from in-game or the console via /tunnel. Tab completion included.
🐋 Pterodactyl Compatible
Fully tested on Pterodactyl panels. No extra port allocation needed — that's the whole point. If your host throttles the ngrok download, TunnelMC will warn you after 30 seconds with manual install instructions.
⚙️ Auto-Start
Optionally start all tunnels automatically on server boot with a configurable startup delay.
📥 Installation
- Drop
TunnelMC.jarinto yourplugins/folder - Start the server once to generate the config
- Sign up free at ngrok.com and copy your authtoken from the dashboard
- Paste your authtoken into
plugins/TunnelMC/config.yml - Restart or run
/tunnel start
⚙️ Configuration
authtoken: "your-ngrok-token-here"
auto-start: true
startup-delay-seconds: 0
region: "us" # us, eu, ap, au, sa, jp, in
notify-ops: true
tunnels:
- name: "dashboard"
port: 8080
protocol: "http" # https:// URL
- name: "gameserver"
port: 25565
protocol: "tcp" # tcp:// URL
🎮 Commands & Permissions
Permission: tunnelmc.admin (default: OP)
| Command | Description |
|---|---|
/tunnel start [name] |
Start all or a specific tunnel |
/tunnel stop [name] |
Stop all or a specific tunnel |
/tunnel restart [name] |
Restart all or a specific tunnel |
/tunnel url [name] |
Show public URL(s) |
/tunnel status |
Show status of all tunnels |
/tunnel reload |
Reload config and restart tunnels |
⚠️ ngrok Free Plan Limitations
- 1 tunnel at a time — Free accounts cannot run multiple simultaneous tunnels. Multiple tunnels require a paid ngrok plan.
- Random URLs — Free accounts get a new random URL on every restart. Paid plans support fixed custom domains.
- Bandwidth limits — Free accounts have monthly bandwidth limits. See ngrok's pricing.
- UDP not supported — ngrok only supports TCP-based protocols.
🐋 Pterodactyl Notes
No extra port allocation needed — TunnelMC handles that. However, some hosts throttle downloads from bin.equinox.io. If that happens, TunnelMC warns you after 30 seconds and you can install ngrok manually instead:
- Download ngrok from ngrok.com/download on your PC — pick Linux → 64-bit
- Extract the archive — you get a single file called
ngrok - Upload it to
plugins/TunnelMC/ngrok/ngrokvia the file manager (the secondngrokis the file name itself) - Restart — TunnelMC detects it automatically and skips the download
📊 Compatibility
| Platforms | Bukkit, Spigot, Paper, Purpur |
| Minecraft | 1.13+ |
| Java | 11+ (21 recommended) |
| OS | Linux, macOS, Windows |
| Architectures | x64, ARM64 |
| Hosting | Self-hosted, Pterodactyl, any VPS |
⚠️ Java Version Note: Although the plugin API is compatible with 1.13+, the JAR is compiled with Java 21 which means your server must be running Java 21 or higher regardless of Minecraft version. Older Minecraft versions (1.13–1.16) typically run on Java 8 or 11 and will fail to load this plugin with an
UnsupportedClassVersionError. In practice, Java 21 + Paper 1.21.x is the recommended and fully tested setup.
🔗 Related
NodeRunner — Run a Node.js Discord bot directly inside your Minecraft server. TunnelMC pairs perfectly with NodeRunner to expose its web dashboard without needing an extra port.
📄 License
All Rights Reserved — This plugin and its source code are proprietary. You may not copy, redistribute, modify, or decompile this software without explicit written permission from the author.
Developed by Spider
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:cEYrTBi3:r1dKuP6W"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:cEYrTBi3:r1dKuP6W"
}

