bore
🕳 bore is a simple CLI tool for making tunnels to localhost
⭐ 11,114 stars on GitHub · 🍴 493 forks · 📜 License: mit · 💻 Language: Rust
What is bore?
For quick TCP exposure without accounts, dashboards, or a hosted platform dependency, bore is one of the cleanest options around. It gives you an ngrok-style localhost tunnel, but keeps the scope deliberately small: a single Rust CLI and a server you can run yourself.
Main components
- TCP tunnel client that exposes a local port through a remote bore server.
- Self-hosted tunnel server started with a single
bore servercommand. - Random or user-selected remote port assignment for public access.
- Optional shared secret for basic client/server authentication.
- Support for exposing
localhostor another host on your LAN via--local-host. - Configurable server bind addresses and tunnel port ranges for controlled deployments.
Clear use cases
- Share a local development server with a teammate, client, or webhook provider.
- Test incoming webhooks from GitHub, Stripe, Slack, or custom services against a laptop.
- Expose a temporary TCP service from behind NAT without changing router rules.
- Run a private tunneling endpoint on your own VPS instead of relying on a commercial relay.
- Give developers a lightweight, scriptable tunnel tool for demos, QA, and remote debugging.
The biggest strength is radical simplicity — bore does one thing, TCP forwarding, and avoids the product baggage of commercial tunnel services. There are no accounts, agents, web UIs, traffic inspectors, reserved domain workflows, or pricing tiers to deal with; you run the client, point it at a server, and get a reachable port. Compared with ngrok-style platforms, that makes bore especially attractive when you care more about predictable infrastructure ownership than polished collaboration features.
The tradeoff is that bore is intentionally low-level. It does not provide HTTPS termination, custom domains, request replay, access policies, analytics, or a management console. If you need a full developer ingress platform, you will outgrow it quickly. But if your requirement is “forward this local TCP port through a server I control,” the minimal design is a feature, not a limitation.
Best for developers, sysadmins, and small teams who want a fast, self-hosted TCP tunneling tool for local testing, temporary exposure, and NAT traversal without adopting a commercial tunneling platform.
Topics: the project is tagged with popular topics:
- 🏷️
cli - 🏷️
localhost - 🏷️
networking - 🏷️
proxy - 🏷️
rust - 🏷️
self-hosted - 🏷️
tcp - 🏷️
tunnel
Quick install
See the README for detailed install instructions. Most projects support Docker — if the repo has a Dockerfile, use:
git clone https://github.com/ekzhang/bore.git
cd bore
docker build -t bore .
docker run -d -p 8080:8080 bore
Minimum system requirements
| Component | Recommended |
|---|---|
| RAM | 2048 MB |
| CPU | 2 vCPU |
| Disk | 25 GB SSD |
| OS | Ubuntu 22.04 LTS / Debian 12 |
| Docker | 24.0+ |
⚡ Deploy fast on VSIS
Use the VSIS VPS Lite 2GB RAM / 2 vCPU / 25GB SSD (~104k/tháng) plan from VSIS.NET — high-speed VN-based VPS, 24/7 support, ideal for running bore smoothly.
🎯 Benefits:
- One-command
docker compose up -ddeploy in 2 minutes - Dedicated IPv4, root access, unmetered domestic bandwidth
- Daily snapshot backup
- Free install assistance from the VSIS team
👉 See matching VPS plans at vsis.net
Resources
- 🔗 GitHub: ekzhang/bore
- 🌐 Homepage: http://bore.pub
- 📚 Official docs: see README in the repo
- 💬 Community: GitHub Issues + Discussions
Article compiled from GitHub data on 05/05/2026. Star/fork counts may have changed — see live numbers via the GitHub link.
