Run a relay of your own

A relay only forwards ciphertext — it cannot see what you write, nor who talks to whom. Run your own and that ciphertext lands in your account. This page walks all three routes end to end.

What you get

A wss:// address running on your own Cloudflare account. Set it as your main relay in Cinderous and your offline messages live there. We cannot reach it or manage it — including if we wanted to shut it down.

Three routes, pick one

RouteDifficultyAboutBest for
One-click from the desktop app*3 minMost people
The Deploy button here (coming soon)**10 minHave GitHub, no desktop app
Run wrangler yourself***15 minWant to change config or use your own domain

Route 1: one-click from the desktop app

1

Open the Cinderous desktop app, go to Settings, Connection and backup, and press Run my own node.

2

Press the button that opens Cloudflare. The permissions are pre-selected for you: upload a Worker, and read account. Create the token and paste it back.

3

Pick a Cloudflare account. If this is your first Worker, you will be asked to name your address. That name cannot be changed later, so think before you type.

4

Wait. It uploads the relay, then actually connects to it and only reports success once the node answers.

5

The last screen has Make this my main relay, already ticked. Press Done and it switches. Untick it if you would rather not — the address stays in your settings and you can switch whenever you like.

Route 2: the Deploy button (coming soon)

It copies the Cinderous relay into your own GitHub account and has Cloudflare deploy it. Good if you do not want to install the desktop app.

Two things to know first. It creates a new repository in your GitHub account. And when the deploy finishes, the address does not come back to the app by itself — you copy it from the Cloudflare page and paste it into Cinderous settings yourself.

Route 3: run wrangler yourself

For changing config, using your own domain, or just running it locally first. Commands below.

git clone https://github.com/VaalRL/Cinderous cinder && cd cinder
pnpm install
cd relay
npx --yes wrangler@4 login
pnpm run deploy

If you want one address that friends can simply open in a browser, use deploy:unified instead. It deploys the web client and the relay as a single Worker. Know the trade: that server also serves the client code, so compromising it means being able to replace that code. A plain relay has no such path, which is why the official nodes do not use this mode.

pnpm run deploy:unified

Does it cost anything

It runs on your Cloudflare account, so that account pays. One person or a small group stays well under the free allowance. But the terms of that allowance have changed more than once, so we do not claim it is free here — read Cloudflare pricing instead.

After it is deployed

To check it is alive, open your address with /healthz on the end; ok means yes. (Do not judge by the home page — in unified mode the home page serves the web client by design.) If you are happy for others to use your node, you can apply to the public list; that process checks behaviour, not who you are.

Stuck?

It says the token lacks permissions

Create a new token and make sure Workers Scripts: Edit is selected. Using the link we give you selects it automatically.

It says your account has no workers.dev name

Every account gets this on its first Worker. Just pick a name — but it becomes a permanent part of your address.

The address opens in a browser, but Cinderous cannot connect

In unified mode this is what a missing run_worker_first looks like: the home page serves the web client fine, but the WebSocket never completes. Cloudflare serves a matching asset straight from storage without running your code, and the relay entry point is exactly the home page. Our config already sets it; check that line if you changed it.

It says a Durable Object migration conflicts

An existing Worker of the same name in that account used a different migration tag. Deploy under a different Worker name, or delete the old one first.

The honest limits

  • A workers.dev address contains your Cloudflare account name. Anyone you give your share ID to will see that name. Use your own domain if that bothers you.
  • While your node is down, messages already delivered to it that you have not collected wait until it returns. New messages route elsewhere automatically, but the ones already sitting there do not move.
  • In unified mode that server also serves the client code. Compromising it means being able to replace that code and steal keys. A plain relay has no such path.