Simple tunneling reverse proxy with a fast web UI and auto HTTPS. Designed for self-hosters.
Go to file
2023-05-17 10:48:08 -06:00
.github Delete feature_request.md 2023-05-17 10:48:08 -06:00
cmd/boringproxy Fix bug in polling-interval-ms 2022-11-11 12:12:40 -07:00
docker accept-ca-terms 2022-02-23 12:33:36 +02:00
docs Broken URLs 2022-07-13 15:19:28 -04:00
release Finish removing go rice 2021-12-14 15:04:34 -07:00
scripts Update go version in install script 2022-10-26 18:27:08 +02:00
systemd Update README.md 2022-02-20 14:44:25 +02:00
templates Merge branch 'boringproxy:master' into update-upstream 2022-02-25 07:46:42 +02:00
.dockerignore Use multi stage dockerfile for building 2020-10-31 19:11:11 -04:00
.gitignore release with github actions and goreleaser. also add some love for Mac M1 (darwin arm64) and windows arm builds (just in case) 2022-07-06 15:38:55 +01:00
.goreleaser.yml release with github actions and goreleaser. also add some love for Mac M1 (darwin arm64) and windows arm builds (just in case) 2022-07-06 15:38:55 +01:00
api.go linting: should replace errors.New(fmt.Sprintf(...)) with fmt.Errorf(...) (golint) 2022-07-07 07:49:17 +01:00
auth.go Move executable into separate package 2020-12-07 21:41:45 -07:00
boringproxy.go Add support for custom ACME CAs 2022-05-11 11:41:42 -06:00
CHANGELOG.md Fix typo in CHANGELOG 2022-02-21 11:26:11 -07:00
client.go Fix bug in polling-interval-ms 2022-11-11 12:12:40 -07:00
database.go Add db-dir to specify where to save boringproxy_db.json 2022-02-21 14:32:31 -05:00
default_logo.png build files using docker 2022-02-18 14:30:12 +02:00
docker-compose.yml Use multi stage dockerfile for building 2020-10-31 19:11:11 -04:00
Dockerfile accept-ca-terms 2022-02-23 12:33:36 +02:00
go.mod Fix outdated RSA 2022-09-23 12:49:48 -06:00
go.sum Fix outdated RSA 2022-09-23 12:49:48 -06:00
http_proxy.go Set Host header to Tunnel.Domain 2022-09-27 12:03:18 -06:00
LICENSE Create LICENSE 2020-11-04 07:55:43 -07:00
logo_concept.svg Add logo concept svg 2020-10-21 09:50:12 -06:00
logo.png Fix bug in polling-interval-ms 2022-11-11 12:12:40 -07:00
logo.svg Improve shadows on logo 2020-10-22 10:08:20 -06:00
notes.md Update notes and todo 2020-10-26 11:11:14 -06:00
README.md Move getting help section to top 2022-01-14 15:28:19 -07:00
sni.go Improve proxyConn comments 2021-12-14 15:43:06 -07:00
tls_proxy.go Implement raw server TLS tunnels 2022-02-24 14:12:09 -07:00
todo.md Update todo 2020-11-24 19:21:59 -07:00
tunnel_manager.go Implement overriding SSH server per tunnel 2022-02-24 14:33:13 -07:00
ui_handler.go Implement managing clients through web UI 2022-02-17 13:38:27 -07:00
utils.go Strip connection headers 2021-02-22 23:04:43 -07:00

boringproxy development is sponsored by TakingNames.io. boringproxy offers full integration with TakingNames.io, providing the simplest way to get up and running with your own domain. More information here, and a demo video of boringproxy working with TakingNames.io here.

Getting Help

If you run into problems running boringproxy, the best place to ask for help is over at the IndieBits community, where we have a dedicated section for boringproxy support. If you think you've found a bug, or want to discuss development, please open an issue.

What is boringproxy?

If you have a webserver running on one computer (say your development laptop), and you want to expose it securely (ie HTTPS) via a public URL, boringproxy allows you to easily do that.

NOTE: For information on downloading and running boringproxy, it's best to start on the website, boringproxy.io. The information in this README is just for building from source.

Building

git clone https://github.com/boringproxy/boringproxy
cd boringproxy

If you don't already have golang installed:

./install_go.sh
source $HOME/.bashrc

Make the logo image file. It gets baked into the executable so it needs to be available at build time. Note that you don't have to use the official logo for the build. Any PNG will do. It's currently just used for the favicon.

./scripts/generate_logo.sh
cd cmd/boringproxy
go build

To build with version information:

go build -ldflags "-X main.Version=$(git describe --tags)"

Give the executable permission to bind low ports (ie 80/443):

sudo setcap cap_net_bind_service=+ep boringproxy

Running

Server

./boringproxy server

Client

./boringproxy client -server bpdemo.brng.pro -token fKFIjefKDFLEFijKDFJKELJF -client-name demo-client -user demo-user