Overview
TunnelKeeper v2.0.0 is a major milestone release that transforms the project from a set of command-line scripts into an automated, production-grade Minecraft tunneling gateway with a modern graphical dashboard, automated Windows installers, multi-provider DNS support, and a fully de-personalized architecture.
This release introduces native Windows WPF GUI integration, system tray minimization, dual DNS provider support (Hostinger and Cloudflare), strict configuration enforcement, zero-downtime hot-swap automation, and automated GitHub Actions CI/CD workflows for building Windows installers and release bundles.
What Is New in v2.0.0
1. Modern Native Windows WPF Dashboard
- Dedicated Graphical Interface: Run
TunnelKeeper.exefor a full-featured, dark-themed dashboard built entirely on native Windows WPF with no external dependencies (no Electron, Python, or Node.js required). - Zero-Console Flash: Compiled using a custom C# win32 application wrapper to guarantee zero console popups or terminal flashes on launch.
- Interactive Settings Tab: Configure DNS provider tokens, domain names, SRV records, local Minecraft port, hot-swap intervals, DNS TTL, and log retention directly within the interface without manually editing files.
- Password Masking & Visibility Toggle: Mask and reveal Hostinger or Cloudflare API tokens securely.
- Public Address Display & 1-Click Copy: View your player-facing address (e.g.
play.yourdomain.comor root domain) and copy it directly to your clipboard with a single click. - Live Log Viewer: Real-time embedded log streaming with auto-scroll toggles, buffer clearing, and direct shortcuts to open the active log file or logs folder.
- System Tray Integration: Minimize TunnelKeeper to the Windows notification tray next to the taskbar clock with a right-click context menu (Open, Start, Stop, Exit) to maintain 24/7 server uptime without taskbar clutter.
2. Multi-Provider DNS Dispatcher (Hostinger & Cloudflare)
- Cloudflare API Integration: Full support for Cloudflare DNS via scoped API tokens (Zone.DNS permissions), including automatic zone ID discovery, SRV record lookup, priority/weight configuration, and atomic DNS updates.
- Hostinger API Integration: Native support for Hostinger REST API SRV record management with automatic target host formatting and verification.
- Dynamic Provider Switching: Seamlessly toggle between Hostinger and Cloudflare via radio buttons in the GUI or via the
DnsProvidersetting in.env. - Sensitive Credential Redaction: All logs and console outputs automatically redact Hostinger and Cloudflare tokens to prevent accidental exposure.
3. Complete De-Personalization & Configuration Enforcement
- Generic Configuration Architecture: All personal domains, ports, and prefixes (
therealneighbors.online, port25566,TRN_) have been completely removed from public repository files. - Pre-Flight Validation Engine: Both the GUI and the background autostart daemon enforce that users specify their own registered domain name before launching. Placeholder domains (
example.com,yourdomain.com) and invalid ports or intervals are rejected with clear, descriptive guidance. - Seven Configurable Parameters: Full support and validation for:
- RootDomain: Your registered domain zone.
- SrvRecordName: The SRV record label (e.g.
_minecraft._tcp.playor_minecraft._tcp). - LocalPort: Local Minecraft server port (standard Java default
25565). - Priority: SRV record priority (0 - 65535, default: 0).
- Weight: SRV record weight for balancing (0 - 65535, default: 5).
- TTL: DNS record Time-To-Live in seconds (default: 60).
- HotSwapMinute: Elapsed minutes before pre-starting a replacement tunnel (default: 55).
- Dynamic Player Address Helper: Automatically determines whether players connect to
play.yourdomain.com, a custom subdomain, or the root domain based on the configured SRV label.
4. Process Lifecycle & System Safety Guard
- Windows Named Mutex (
Global\TunnelKeeper_Gateway): Guarantees that only a single instance of the gateway daemon can execute at any time. Handles process crashes and abandoned mutexes cleanly. - Windows Task Scheduler Coexistence: If launched while the background Task Scheduler task is active, TunnelKeeper detects the running service, displays an informational status card, and exits cleanly without throwing errors.
- Interactive Takeover (
-Force): Passing-Forceautomatically stops background scheduled tasks, terminates orphan Pinggy SSH processes, and runs the daemon interactively in the current console. - Orphan Process Cleanup: Automatically cleans up lingering child SSH tunnels if the terminal or GUI is closed abruptly.
5. Automated Windows Installers & CI/CD
- Inno Setup Wizard (
TunnelKeeper-Setup.exe): Single executable installer that installs TunnelKeeper to%LOCALAPPDATA%\TunnelKeeper, creates Desktop and Start Menu shortcuts, and provides clean Windows uninstallation. - 1-Line PowerShell Web Installer (
install.ps1): Quick-install command (irm https://raw.githubusercontent.com/CyberSphinxxx/TunnelKeeper/main/install.ps1 | iex) that downloads, compiles, and configures the app automatically. - GitHub Actions Release Workflow: Automated CI/CD pipeline (
.github/workflows/release.yml) that triggers on tag push or manual dispatch to compileTunnelKeeper.exe, generateTunnelKeeper-Setup.exe, create a portable zip bundle, generate SHA-256 checksums, and publish release assets automatically. - Continuous Integration Workflow:
.github/workflows/ci.ymlvalidates PowerShell syntax and C# compilation on every pull request and push to the main branch.
Installation Options
Option A: Windows Setup Wizard (Recommended)
- Download
TunnelKeeper-Setup.exefrom the Assets section below. - Run the installer and follow the setup prompts.
- Launch TunnelKeeper from your Desktop or Start Menu.
Option B: 1-Line PowerShell Web Installer
Run the following command in PowerShell:
irm https://raw.githubusercontent.com/CyberSphinxxx/TunnelKeeper/main/install.ps1 | iexOption C: Portable Zip Bundle
- Download
TunnelKeeper-v2.0.0-Portable.zipfrom the Assets section below. - Extract the archive to your preferred folder.
- Double-click
TunnelKeeper.exeto launch.
Configuration Reference
Copy .env.example to .env or configure these settings directly in the TunnelKeeper GUI Settings tab:
| Parameter | Default | Description |
|---|---|---|
DnsProvider |
Hostinger |
DNS provider: Hostinger or Cloudflare |
HostingerToken |
(empty) | Hostinger API token with DNS write permissions |
CloudflareApiToken |
(empty) | Cloudflare API token with Zone.DNS permissions |
CloudflareZoneId |
(auto) | Optional Cloudflare Zone ID; auto-discovered if omitted |
RootDomain |
(Required) | Your registered domain zone (e.g. yourdomain.com) |
SrvRecordName |
_minecraft._tcp.play |
SRV record label within your DNS zone |
LocalPort |
25565 |
Local Minecraft server port (Java standard: 25565) |
Priority |
0 |
SRV record priority (0 - 65535, default: 0) |
Weight |
5 |
SRV record weight (0 - 65535, default: 5) |
TTL |
60 |
DNS TTL in seconds for fast propagation |
HotSwapMinute |
55 |
Minutes elapsed before starting a replacement tunnel |
LogRetentionDays |
14 |
Days of rotated log files to retain before cleanup |
Screenshots
Detailed Commit History
9a8b3db: chore: update .gitignore to ignore .env and release artifacts2ec8ba0: feat(config): add .env.example configuration template with DNS and port settingsfdde30b: refactor(core): de-personalize tunnel daemon, add strict pre-flight validation and dynamic SRV mapping7f5da8d: feat(assets): add TunnelKeeper application icon5f914c7: feat(build): add native C# compiler script to generate TunnelKeeper.exe6360d02: feat(bin): add precompiled native Windows launcher TunnelKeeper.exe4a43637: feat(launcher): add silent VBScript background launcher24b600b: feat(launcher): add quick-start batch launcher6ddf99f: feat(gui): add native WPF dark-theme dashboard with settings and live logsf134ae4: feat(installer): add Inno Setup wizard configuration script00e0c99: feat(install): add 1-line PowerShell web installer and uninstaller3f3a3e5: ci: add GitHub Actions workflow for syntax and build validation6a09d71: ci: add GitHub Actions release workflow for automated installer compilationb13a114: docs: update README with installation options, GUI documentation, and generic examples
Full Changelog: v1.0.0...v2.0.0