mirror of https://github.com/ekzhang/bore.git
47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# bore
|
|
|
|
[![Build status](https://github.com/ekzhang/bore/workflows/ci/badge.svg)](https://github.com/ekzhang/bore/actions)
|
|
[![Crates.io](https://img.shields.io/crates/v/bore-cli.svg)](https://crates.io/crates/bore-cli)
|
|
|
|
A modern, simple TCP tunnel in Rust that exposes local ports to a remote server, bypassing standard NAT connection firewalls. **That's all it does: no more, and no less.**
|
|
|
|
```shell
|
|
# Installation (requires Rust)
|
|
cargo install bore-cli
|
|
|
|
# On your local machine
|
|
bore local 8000 --to bore.pub
|
|
```
|
|
|
|
This will expose your local port at `localhost:8000` to the public internet at `bore.pub:<PORT>`, where the port number is assigned randomly.
|
|
|
|
Like [localtunnel](https://github.com/localtunnel/localtunnel) and [ngrok](https://ngrok.io/), except `bore` is intended to be a highly efficient, unopinionated tool for forwarding TCP traffic that is simple to install and easy to self-host, with no frills attached.
|
|
|
|
## Detailed Usage
|
|
|
|
This section describes detailed usage for the `bore` CLI command.
|
|
|
|
### Local Forwarding
|
|
|
|
TODO
|
|
|
|
### Self-Hosting
|
|
|
|
As mentioned in the startup instructions, there is an public instance of the `bore` server running at `bore.pub`. However, if you want to self-host `bore` on your own network, you can do so with the following command:
|
|
|
|
```shell
|
|
bore server
|
|
```
|
|
|
|
That's all it takes! After the server starts running at a given address, you can then update the `bore local` command with option `--to <ADDRESS>` to forward a local port to this remote server.
|
|
|
|
## Protocol
|
|
|
|
There is an implicit _control port_ at `7835`, used for creating new connections on demand. This can be configured in the command-line options.
|
|
|
|
## Acknowledgements
|
|
|
|
Created by Eric Zhang ([@ekzhang1](https://twitter.com/ekzhang1)). Licensed under the [MIT license](LICENSE).
|
|
|
|
The author would like to thank the contributors and maintainers of the [Tokio](https://tokio.rs/) project for making it possible to write ergonomic and efficient network services in Rust.
|