0.5.1 • Published 7 months ago

couloir v0.5.1

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

couloir: simple http(s) tunneling

 ______     ______     __  __     __         ______     __     ______
/\  ___\   /\  __ \   /\ \/\ \   /\ \       /\  __ \   /\ \   /\  == \
\ \ \____  \ \ \/\ \  \ \ \_\ \  \ \ \____  \ \ \/\ \  \ \ \  \ \  __<
 \ \_____\  \ \_____\  \ \_____\  \ \_____\  \ \_____\  \ \_\  \ \_\ \_\
  \/_____/   \/_____/   \/_____/   \/_____/   \/_____/   \/_/   \/_/ /_/

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.

This is still an alpha version so do not use it for anything too serious.

Requirements

Node 18.x or above.

Installation

On both the relay server and your local machine. Make sure both versions match.

npm install -g couloir

Usage

On your relay machine (ex: a cheap VPS)

  1. Ensure port 80, for cert validation, and port 443, for relay traffic, are open and accessible from Internet.
  2. Configure your (sub)domain to point to your relay machine's IP. For example:
# VPS IP being 1.2.3.4:

sub.domain.com A 1.2.3.4
*.sub.domain.com A 1.2.3.4
  1. Run the Couloir relay:
couloir relay sub.domain.com

On your local machine

  1. Start your local http server, for example on port 3000.
  2. Run the local Couloir proxy:
couloir 3000 --on sub.domain.com
  1. Open https://couloir.sub.domain.com

Recipes

Custom Couloir subdomain

You may want to choose your own subdomain name instead of "couloir". This will expose bonjour.sub.domain.com:

couloir 3000 --on sub.domain.com --as bonjour

Protect the Relay with a password

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 sub.domain.com --password foobar

# On your local machine
couloir 3000 --on sub.domain.com --password foobar

Persist your relay settings for shorter commands.

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 sub.domain.com
couloir set password foobar

Then, you can simply open a couloir with:

couloir 3000

HTTP-only mode

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 sub.domain.com --http

# On your local machine
couloir 3000 --on sub.domain.com --http

Run the relay on a different port

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 sub.domain.com --port 3000

# On your local machine
couloir 3000 --on sub.domain.com --relay-port 3000

Override the host header passed to your local server

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 sub.domain.com --override-host 127.0.0.1:3000

Run the relay as a daemon with pm2

Install pm2 with npm install -g pm2.

Then:

pm2 start "couloir relay sub.domain.com" --name couloir
pm2 save
# To have the daemon run on boot. Follow instructions.
pm2 startup
0.5.0

7 months ago

0.5.1

7 months ago

0.4.1

7 months ago

0.4.0

7 months ago

0.4.2

7 months ago

0.3.8

7 months ago

0.3.7

7 months ago

0.3.0

7 months ago

0.2.1

7 months ago

0.3.6

7 months ago

0.3.5

7 months ago

0.3.2

7 months ago

0.2.3

7 months ago

0.3.1

7 months ago

0.2.2

7 months ago

0.3.4

7 months ago

0.3.3

7 months ago

0.2.0

7 months ago

0.1.14

8 months ago

0.1.13

8 months ago

0.1.12

8 months ago

0.1.11

8 months ago

0.1.10

8 months ago

0.1.9

8 months ago

0.1.8

8 months ago

0.1.7

8 months ago

0.1.6

8 months ago

0.1.5

8 months ago

0.1.4

8 months ago

0.1.3

8 months ago

0.1.2

8 months ago

0.1.1

8 months ago

0.1.0

8 months ago

1.0.0

8 months ago