TunnelMCСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (6)
release
TunnelMC 1.5.0
1.5.030 авг. 2026 г.412Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2bukkit, paper, purpur, spigot
Что нового
## 🆕 What's New in 1.5.0: Reliability & Security Fixes
A maintenance release from a systematic audit, plus one addition to keep pace with an ngrok change:
- **Added: ngrok tunnels can now use a reserved/static domain.** ngrok moved domain selection to their own dashboard ("Choose your URL") — pick one there, drop it into the new `hostname` field, and it's passed along with `--url`. Leave it blank for a random domain each start, same as before.
- **Fixed: editing a tunnel could silently wipe its saved authtoken/cfToken.** The edit form correctly never sends secrets back to the browser, but saving an unrelated change (like toggling auto-start) was overwriting the stored token with blank — breaking the tunnel on its next start. Blank secret fields on save now keep the existing value; only an actual new value overwrites it.
- **Fixed: a tunnel name containing an apostrophe broke every action button on that tunnel's card.** Start/Stop/Restart/Delete/Copy buttons are now correctly escaped for names, URLs, and IDs containing `'`, `"`, or `\`.
- **Fixed: renaming a tunnel to an existing tunnel's name silently orphaned the old one.** The old tunnel's process kept running with nothing left tracking it, and it disappeared from `config.yml` entirely. Renaming to a name already in use is now rejected instead.
- **Fixed: clicking Stop immediately after Start could leave an untracked tunnel process running,** and later resurrect it as "running" in the dashboard even though you'd explicitly stopped it. A start/stop race no longer lets a launch that lost the race adopt its process.
- **Fixed: playit.gg's "Try Again" button could hand back a dead claim session** for up to ~11 minutes after a rejected or cancelled link attempt, instead of issuing a fresh code.
- **Fixed: an unsanitized tunnel name could write ngrok's per-tunnel config file outside the intended directory.** Tunnel names are now restricted to letters, numbers, `_`, and `-`.
- **Fixed: editing any tunnel could silently wipe a saved ngrok reserved domain back to blank,** since the persistence path rebuilt every tunnel's entry from scratch on every save.
- **Fixed: a malformed dashboard API request could return an empty, unexplained server error** with nothing in the log. Bad requests now get a clear JSON error and the real cause is logged server-side.
- **Improved: error logging** for playit/ngrok/cloudflared download and connection failures now always includes the exception type (and throw site when there's no message), instead of sometimes printing a bare "null".
release
TunnelMC 1.4.0
1.4.011 авг. 2026 г.122Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2bukkit, paper, purpur, spigot
Что нового
## 🆕 What's New in 1.4.0: playit.gg Support
**A static address, right protocol per tunnel.** playit.gg is the pick for Bedrock/Geyser — TCP for Java Edition, UDP for Bedrock (Bedrock/RakNet is UDP-only), both with an address that survives restarts. Neither ngrok's free tier nor cloudflared quick tunnels can do that, and the official playit.gg plugin doesn't support UDP either. Combined TCP+UDP and TCP-only custom tunnels are also available (require playit premium); UDP-only and the two Minecraft presets work on the free tier.
**No token to paste.** Link an account from the dashboard's Settings tab — click **Link**, open the generated claim link, approve it in your browser, and the dashboard flips to linked automatically.
**One shared agent.** playit's model is one agent per machine (accounts have a limited agent quota), so TunnelMC runs a single `playitd` process shared by every playit tunnel you add. Every claim provisions a fresh agent identity — there's no API to target an existing one — so Unlink deletes this server's tunnels from your playit.gg account before clearing the secret, and a re-link recreates them fresh with new addresses. That keeps tunnels from piling up on your account; the one thing that still needs manual cleanup is the old agent record itself at playit.gg/account/agents, since playit has no API to delete an agent at all.
**Clean up leftovers without leaving the dashboard.** A "Check for Other Tunnels" button in Settings finds any tunnel on your playit agent that TunnelMC isn't tracking and lets you delete it in place. Deleting a tunnel from the Tunnels tab deletes it on playit's side too.
**macOS:** playit.gg publishes no official Mac binary. The dashboard offers a TunnelMC-compiled build (SHA-256 verified) or self-build instructions — ngrok and cloudflared are unaffected and work normally on macOS.
release
TunnelMC 1.3.0
1.3.014 мая 2026 г.207Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2bukkit, paper, purpur, spigot
Что нового
## 🆕 What's New in 1.3.0
### Java 25 & Build Modernization
- **Upgraded to Java 25** — compiled with Java 25 bytecode for the latest JVM performance and language features.
- **Gradle 9.5.1** — build system upgraded from Gradle 8.x to 9.5.1 for native Java 25 support.
- **Virtual thread executor** — the dashboard HTTP server now uses `newVirtualThreadPerTaskExecutor()` for non-blocking I/O scaling on Java 25.
- **`plugin.yml` api-version** updated from `1.13` to `1.21` to match the target platform and suppress Paper deprecation warnings.
### Security Hardening
- **CSRF protection** — all mutating API endpoints now require an `X-TM-Request` header.
- **Brute-force login protection** — lockout after 5 failed attempts with 500ms delay per failure.
- **Timing-safe password comparison** — login now uses `MessageDigest.isEqual()` to prevent timing attacks.
- **CSP headers** — Content-Security-Policy added to all dashboard responses to mitigate XSS risks.
- **Session sweep** — expired sessions and stale lockout entries are automatically cleaned up hourly.
### Stability
- **`volatile` singleton** — static plugin instance is now `volatile` and nulled on disable to prevent classloader leaks during reloads.
- **Config bounds checking** — all numeric config getters now clamp to valid ranges via `Math.max`.
- **Default password warning** — a prominent console warning at startup if the dashboard password is still `"changeme"`.
### Compatibility
- **Minecraft 1.21.x – 26.2.x** — compiled against Paper 1.21.1 API, which is forward-compatible with all Paper versions through 26.2.x.
Existing configs remain fully compatible — no config changes required.
release
TunnelMC 1.2.0
1.2.013 апр. 2026 г.44Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
## 🆕 What's New in 1.2.0
### Cloudflared Support
Every tunnel now has its own `provider` field. Choose `ngrok` or `cloudflared` per tunnel, or mix them in the same config.
**Cloudflared quick tunnels** — zero account setup, random `*.trycloudflare.com` URL, HTTP only. Great for dashboards and web services.
**Cloudflared named tunnels** — paste a Cloudflare Zero Trust token and your custom hostname. Persistent URL, any protocol you've configured in Cloudflare.
### Multiple ngrok Accounts
Each ngrok tunnel now has its own `authtoken` field (required for ngrok v3). Authtokens are passed as a CLI flag instead of writing to the global ngrok config, so you can run tunnels from completely different ngrok accounts at the same time.
### Per-Tunnel Region
Each ngrok tunnel can set its own `region`, overriding the global default.
### Web Dashboard
A full browser-based management dashboard on port `8090` (local only). From it you can:
- View all tunnels — status, URL, uptime, restarts
- Start / stop / restart tunnels individually
- **Create, edit, and delete tunnels live** — no server restart needed
- Download ngrok and cloudflared binaries with one click
- Edit all global settings
### Auto-Expose on First Run
If no tunnels are configured, TunnelMC automatically downloads cloudflared and creates a quick tunnel to the dashboard on first startup so you can access it from anywhere right away.
### Per-Tunnel Auto-Start
Each tunnel has its own `auto-start` field. Set it to `true` to start a tunnel on server boot even when global auto-start is off. The default `dashboard` tunnel ships with `auto-start: true`.
release
TunnelMC 1.1.0
1.1.031 мар. 2026 г.20Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
## 🆕 What's new in 1.1.0
### Auto-Restart & Crash Loop Protection
Tunnels now restart automatically if the ngrok process exits unexpectedly. Crash loop protection kicks in if a tunnel fails too many times within a configurable time window, stopping the retry cycle to prevent runaway restarts. Both the restart delay and failure threshold are fully configurable.
### Health Checks
TunnelMC now periodically verifies each tunnel is still alive by querying ngrok's local API. If a tunnel silently dies without crashing, the health check catches it and triggers an automatic restart. The check interval is configurable, or can be disabled entirely.
### `/tunnel download` Command
You can now trigger the ngrok binary download manually at any time from in-game or console with `/tunnel download`. Useful if the initial download failed or you want to re-fetch the binary without restarting your server.
### NodeRunner & PyRunner Integration
If [NodeRunner](https://modrinth.com/plugin/noderunner) or [PyRunner](https://modrinth.com/plugin/pyrunner) is installed and one of your configured tunnel ports matches their dashboard port, TunnelMC will print a helpful suggestion in console. This is purely informational — these bot runners are never auto-started by TunnelMC.
---
### Config changes
Four new options have been added to `config.yml`:
```yaml
auto-restart: true
restart-delay-seconds: 10
max-restarts: 5
crash-window-seconds: 60
health-check-interval-seconds: 30
integrations:
noderunner-suggestion: true
pyrunner-suggestion: true
```
Existing configs remain fully compatible — all new keys will use their defaults if not present.
release
TunnelMC 1.0.0
1.0.029 мар. 2026 г.35Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot
Что нового
# 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](https://modrinth.com/plugin/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
1. Drop `TunnelMC.jar` into your `plugins/` folder
2. Start the server once to generate the config
3. Sign up free at [ngrok.com](https://ngrok.com) and copy your authtoken from the [dashboard](https://dashboard.ngrok.com/get-started/your-authtoken)
4. Paste your authtoken into `plugins/TunnelMC/config.yml`
5. Restart or run `/tunnel start`
---
## ⚙️ Configuration
```yaml
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](https://ngrok.com/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:
1. Download ngrok from [ngrok.com/download](https://ngrok.com/download) on your PC — pick **Linux → 64-bit**
2. Extract the archive — you get a single file called `ngrok`
3. Upload it to `plugins/TunnelMC/ngrok/ngrok` via the file manager (the second `ngrok` is the file name itself)
4. 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](https://modrinth.com/plugin/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](https://github.com/Spider2742)*