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.

What is boringproxy?

boringproxy is a combination of a reverse proxy and a tunnel manager.

What that means is if you have a self-hosted web service (Nextcloud, Emby, Jellyfin, etherpad, personal website, etc.) running on a private network (such as behind a NAT at home), boringproxy aims to provide the easiest way to securely (i.e. HTTPS and optional password-protection) expose that server to the internet, so you can access it from anywhere.

To see how boringproxy compares to other similar software, see the comparison here.

The main features are:

Demo Video

YouTube mirror Download WebM/VP9 Download MP4/h264

Demo Instance

The boringproxy demo instance is currently down.

Installation

Learn more about the installation in the documentation.

boringproxy uses the DNS to identify the server and the tunnel endpoints. An often used pattern is to provide a domain record for the administrative web interface, and a wildcard subdomain for the tunneled services.

The clients will then be able to assign domains from the wildcard subdomain without having to reconfigure DNS beforehand.

Usage

Learn more about the usage in the documentation.

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 on GitHub.

What's with the name?

The name has two meanings; one pun and one philosophy. The pun is "bore" as in bore a hole/tunnel, highlighting the fact that boringproxy is a reverse proxy that automatically manages making tunnels.

The philosophy is that boring (as in boredom) software is often the most useful software. If you have to interact with boringproxy to get something done, I hope it ends up being the least interesting part of your day. I want it to be a tool that does its job well and gets out of the way.

This also has implications when it comes to adding features. I want boringproxy to remain simple and focused. When contemplating adding any feature, the first question I ask myself is: is it boring enough?