______ ______ __ __ __ ______ __ ______
/\ ___\ /\ __ \ /\ \/\ \ /\ \ /\ __ \ /\ \ /\ == \
\ \ \____ \ \ \/\ \ \ \ \_\ \ \ \ \____ \ \ \/\ \ \ \ \ \ \ __<
\ \_____\ \ \_____\ \ \_____\ \ \_____\ \ \_____\ \ \_\ \ \_\ \_\
\/_____/ \/_____/ \/_____/ \/_____/ \/_____/ \/_/ \/_/ /_/
Temporarily expose a http local service to the Internet using your own server.
- Encrypted: traffic in and out of the relay is encrypted with auto-generated TLS certificates.
- Self-contained: does not require anything else to work (SSH, Nginx, Caddy, ...).
- No configuration: works out-of-the-box. Can be adjusted through a few CLI options.
- Compatible with Websockets.
Host it yourself by running your own relay server or use our public relay.
Visit https://couloir.cloud for more information!
Node 18.x or above.
On both the relay server and your local machine. Make sure both versions match.
npm install -g couloir
- Sign-in on https://couloir.cloud
- Copy your CLI token
- Configure your Couloir CLI
couloir set relay-host couloir.cloud
couloir set cli-token <you CLI token>
- Start your local http server, for example on port 3000.
- Run the local Couloir proxy:
couloir 3000
- Open
https://<your subdomain>.couloir.cloud
- Ensure port 80, for cert validation, and port 443, for relay traffic, are open and accessible from Internet.
- Configure your (sub)domain to point to your relay machine's IP. For example:
# VPS IP being 1.2.3.4:
mydomain.com A 1.2.3.4
*.mydomain.com A 1.2.3.4
- Run the Couloir relay:
couloir relay mydomain.com
- Start your local http server, for example on port 3000.
- Run the local Couloir proxy:
couloir 3000 --on mydomain.com
- Open
https://couloir.mydomain.com
You may want to choose your own subdomain name instead of "couloir".
This will expose bonjour.mydomain.com
:
couloir 3000 --on mydomain.com --as bonjour
You may want to require a password to use your relay as a Couloir proxy.
Warning: using that option in combination with HTTP-only mode is not recommended as it results in the password being transmitted in clear over the TCP Socket.
# On the relay
couloir relay mydomain.com --password foobar
# On your local machine
couloir 3000 --on mydomain.com --password foobar
Once you have configured a Relay you can save its configuration to not repeat it on every new couloir.
# On your local machine
couloir set relay-host mydomain.com
couloir set password foobar
Then, you can simply open a couloir with:
couloir 3000
In this mode, you only need the relay port to be accessible from Internet (80 by default in HTTP mode).
# On the relay
couloir relay mydomain.com --http
# On your local machine
couloir 3000 --on mydomain.com --http
Run the relay service on a port different from 443. Note that unless you run in HTTP-only, the port 80 will still be required for TLS cert validation.
For example, port 3000:
# On the relay
couloir relay mydomain.com --port 3000
# On your local machine
couloir 3000 --on mydomain.com --relay-port 3000
This is useful if your local server is expecting a Host like 127.0.0.1:3000. For example:
# On your local machine
couloir 3000 --on mydomain.com --override-host 127.0.0.1:3000
Install pm2 with npm install -g pm2
.
Then:
pm2 start "couloir relay mydomain.com" --name couloir
pm2 save
# To have the daemon run on boot. Follow instructions.
pm2 startup