btunnel

command module
v0.0.0-...-14c39a2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 5, 2026 License: MIT Imports: 2 Imported by: 0

README

🌀 BTunnel

Zero-Config, E2E Encrypted Peer-to-Peer Port Forwarding & Web Proxying over CGNAT.


🌐 Language Select / Dil Seçimi:


🇺🇸 English Documentation

BTunnel is a lightweight, high-performance networking utility that connects your local Docker networks or host ports directly to remote clients using end-to-end encrypted (E2EE) Peer-to-Peer (P2P) connections. It completely bypasses CGNAT and complex firewall setups without requiring traditional port forwarding or routing traffic through expensive cloud server relays.

✨ Features

  • 🌀 Zero Configuration: No router setup, dynamic DNS, or port forwarding rules.
  • 🔒 End-to-End Encrypted (E2EE): Direct P2P tunnels secured via WebRTC DTLS 1.3. Even fallback TURN servers cannot inspect your traffic.
  • 👥 Multi-Client (Concurrent Connection): Multiple friends or clients can connect to your tunnels at the same time.
  • 🐳 Docker-Native Isolation: Share entire Docker networks securely by launching isolated sidecars instead of exposing your host machine.
  • 🌐 Zero-Install Web Mode: Share web applications directly with browser clients using a state-of-the-art Service Worker proxy.
  • 🎮 Mesh Mode (CLI-to-CLI): Direct TCP/UDP proxying for games (like Minecraft), SSH, databases, and microservices.
  • 📊 Beautiful Live TUI: Real-time connection logging, bandwidth tracking, RTT display, and interactive dashboards powered by bubbletea & lipgloss.

🗺️ Architectural Overview

+------------------------------+
|  Host CLI (Go)               |
|  (Exposes local resource)    | <--- Signaling --->  +------------------------------+
+------------------------------+     (WebSockets)     |   Public Signaling Server    |
         ^                                            | (handshake.btunnel.dpdns.org)|
         |                                            +------------------------------+
         +=========== Direct E2EE P2P ===========+                    ^
                     (WebRTC DataChannel)                             |
         +=======================================+                    |
         v                                       v                    v
+------------------------------+       +---------------------------------------------+
|  Client CLI (Go)             |       |   Web Client (Service Worker SW)            |
|  (Bridges to local port)     |       |   (Directly loaded via public domain WSS)   |
+------------------------------+       +---------------------------------------------+

🛠️ Installation & Build

Ensure you have Go 1.26+ installed.

Install BTunnel globally so you can run it from anywhere:

go install github.com/barronDEV/btunnel@latest
Option B: Run Directly (Without Compiling)

You can run any command directly from the Go source files:

# Share tunnels based on btunnel.json config
go run main.go run

# Join a mesh tunnel (Client)
go run main.go join bt-abc123xyz -l 25565
Option C: Compile & Run Binary

Compile the Go source code into a native executable:

# Compile CLI binary
go build -o btunnel main.go

To run unit tests:

go test ./... -v -short

💻 Quick Start & Configuration Examples

To learn how to define tunnels in btunnel.json (Web and Mesh configurations, multi-tunnels, local embedded mode etc.), please review the usage guide:

1. Share Tunnels (Host Side)

Ensure you have a btunnel.json in your directory, then run:

btunnel run
2. Join a Tunnel (Client Side)

Connect to a shared mesh tunnel by pasting the token (e.g. mapping to local port 25565):

btunnel join bt-a7f3c9e2b1d4f6a8 -l 25565

⚖️ How it Compares

Feature BTunnel Ngrok / Cloudflare Tunnel Tailscale / Wireguard
Data Pathway Direct P2P (No server relay) Cloud server relay Mesh VPN (Whole machine exposed)
Security Target-only isolation Host exposed to proxy IP Entire device put on network
No-Install Mode Yes (Service Worker Web) No No
Cost Natively free & open-source Subscription tiers Free tiers / Account required

🇹🇷 Türkçe Dokümantasyon

BTunnel; yerel Docker ağlarınızı veya portlarınızı, uçtan uca şifreli (E2EE) Peer-to-Peer (P2P - Eşten Eşe) bağlantılar kullanarak uzaktaki istemcilere doğrudan bağlayan hafif ve yüksek performanslı bir ağ aracıdır. Geleneksel port yönlendirmeye gerek kalmadan veya trafiği bulut sunucularından geçirmeden CGNAT ve karmaşık güvenlik duvarlarını tamamen devre dışı bırakır.

✨ Özellikler

  • 🌀 Sıfır Yapılandırma: Modem ayarı, dinamik DNS veya port yönlendirme kuralları gerektirmez.
  • 🔒 Uçtan Uca Şifreli (E2EE): WebRTC DTLS 1.3 ile korunan doğrudan P2P tüneller.
  • 👥 Eşzamanlı Çoklu Bağlantı: Aynı anda birden fazla arkadaşınız veya istemci tünelinize paralel bağlanabilir.
  • 🐳 Docker Uyumlu Yalıtım: Ana makinenizi internete maruz bırakmak yerine yalıtılmış bir sidecar konteyneri başlatarak tüm Docker ağlarını güvenle paylaşın.
  • 🌐 Kurulumsuz Web Modu: Gelişmiş Service Worker proxy altyapısını kullanarak web uygulamalarını doğrudan tarayıcı istemcileriyle paylaşın.
  • 🎮 Mesh Modu (CLI-to-CLI): Oyunlar (Minecraft vb.), SSH, veritabanları ve mikroservisler için doğrudan TCP/UDP tünelleme.
  • 📊 Kullanışlı Canlı TUI: bubbletea ve lipgloss ile güçlendirilmiş, gerçek zamanlı bağlantı günlüğü, bant genişliği takibi, RTT göstergesi ve etkileşimli dashboard'lar.
  • 🚀 Tek Komut: run komutu ve btunnel.json ile tünellerinizi tek seferde ayağa kaldırın.

🛠️ Kurulum ve Derleme

Go 1.26+ yüklü olduğundan emin olun.

Seçenek A: Sisteme Global Kurulum (Önerilen)

BTunnel'i sisteme kurun ve her yerden kullanın:

go install github.com/barronDEV/btunnel@latest
Seçenek B: Doğrudan Çalıştırın (Derlemeden)
# Tünelleri btunnel.json konfigürasyonuna göre paylaşın (Host)
go run main.go run

# Tünele bağlan (Client) — token'i yapıştırın
go run main.go join bt-abc123xyz -l 25565
Seçenek C: Derleyin ve Binary Olarak Çalıştırın
# CLI uygulamasını derleyin
go build -o btunnel main.go

💻 Kullanım Kılavuzu & Örnekler

btunnel.json dosyasını hazırlama, tekli/çoklu tünel kurulumları ve lokal çevrimdışı kullanım detayları için aşağıdaki kılavuza göz atın:

Örnek Kullanım ve Yapılandırma Rehberi

1. Paylaşım Başlatma (Host Tarafı)

Dizininde btunnel.json dosyası bulunduğundan emin olun ve ardından çalıştırın:

btunnel run
2. Tünele Bağlanma (Client Tarafı)

Paylaşılan bir mesh tüneline token ile hızlıca bağlanın (örn: yerel 25565 portuna):

btunnel join bt-a7f3c9e2b1d4f6a8 -l 25565

⚖️ Karşılaştırma Tablosu

Özellik BTunnel Ngrok / Cloudflare Tunnel Tailscale / Wireguard
Veri Yolu Doğrudan P2P (Sunucu aktarımı yok) Bulut sunucusu aktarımı Mesh VPN (Tüm makine ağa açılır)
Güvenlik Yalnızca hedeflenen port yalıtılır Host proxy IP'sine açılır Tüm cihaz ağa dahil edilir
Kurulumsuz Mod Evet (Service Worker Web) Hayır Hayır
Maliyet Tamamen ücretsiz ve açık kaynak kodlu Ücretli abonelik katmanları Ücretsiz katman limitleri / Hesap zorunlu

🛡️ Güvenlik Matrisi

  • Yeniden Oynatma Koruması (Replay Protection): Mesajlar dinamik nonce'lar ve zaman damgası toleransları ile doğrulanır.
  • SSRF Önleme: Gömülü TURN sunucularının trafiği iç özel ağlara yönlendirmesi kesinlikle engellenmiştir.
  • Dışa Doğru (Outbound-Only) İletişim: Host CLI, sinyalleşme sunucusuna dışa doğru bağlantı başlatır. Bu sayede modeminizden içeriye doğru hiçbir port açmanıza gerek kalmaz.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
sidecar-agent command
internal
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL