Skip to main content

Host from your own machine

This runs the server on your own computer and puts a temporary public address in front of it, so people outside your network can join. It suits a one-off evening.

For anything regular, hosting on Render is less work: the address never changes, nobody has to keep a laptop open, and it is also free.

Two things to know before you start. The address is different every time, so everyone re-enters it for each party. And the room lives on your machine, so it ends if your laptop sleeps, loses Wi-Fi, or you close the terminal.

What you need​

  • Node 22.6 or newer, or Docker. Nothing else is installed.
  • cloudflared, which makes the temporary address. On macOS: brew install cloudflared.

1. Start the server​

Download gather-and-join-server-<version>.mjs from the latest release and run it:

node gather-and-join-server-0.3.1.mjs

Or, if you would rather use Docker:

docker run -d --name gather-and-join -p 8080:8080 \
ghcr.io/thatjoaoguy/gather-and-join-server:latest

Either way it listens on port 8080. Check it by opening http://localhost:8080/ — a running server answers in plain words.

2. Open the tunnel​

In a second terminal:

cloudflared tunnel --protocol http2 --url http://localhost:8080

It prints an address like https://some-random-words.trycloudflare.com.

3. Share the address​

Swap https:// for wss:// and send that to everyone:

wss://some-random-words.trycloudflare.com

Each person pastes it on the extension's setup page. They will have to do it again next time — this address is new on every run.

While the party runs​

Keep both the server and the tunnel running, and keep the machine awake — on a Mac, caffeinate -d in another terminal will do it. Everything stops when you press Ctrl-C.

If the tunnel drops and you restart it, the address changes and everyone has to paste the new one.

If you already have the source code​

You do not need it — the steps above are the whole job. But if you have the repository checked out anyway, one command replaces both of them:

pnpm host

It starts the server, opens the tunnel, and prints the finished address:

Server URL for everyone's setup page: wss://some-random-words.trycloudflare.com

Ctrl-C stops both halves together.

Why the tunnel at all​

The address has to start with wss://, which means it needs a certificate. Cloudflare provides one for the temporary address it hands you. Without a tunnel, other people cannot reach your machine at all unless you open ports on your router — and even then the connection would not be encrypted.

If everyone is on the same Wi-Fi as you, none of this applies: see hosting on your local network instead.