"Running a personal relay: what it costs, what it gives you"

A five dollar a month VPS, a domain you already own, and an afternoon of fiddling. That is all it takes to run your own Nostr relay. Whether you should is a different question.
"Running a personal relay: what it costs, what it gives you"

The five dollar relay

You open your #nostr client and look at the relay list. There are seven of them. Six were picked by the app when you signed up. The seventh is one you added because someone on your timeline recommended it a year ago. You do not remember who runs any of these relays. You do not remember what their retention policy is. You have no idea whether the notes you posted last February still exist on any of them.

At some point this stops being acceptable. You start thinking about running your own.

I went through this exercise, came out the other side, and want to save you the weekend. This is what a personal relay actually costs, what software you pick, and what the experience gives you that the public relays do not.

What “personal relay” actually means

The phrase covers four different jobs that a single server can do at once. It is worth separating them before you start shopping for software.

A backup relay stores your own notes and nothing else. You write to it from every client you use, and it becomes the canonical archive of everything you have posted. If the public relays you use today go dark tomorrow, your history is intact.

An outbox relay announces itself through NIP-65. Your Kind 10002 relay list tells the rest of the network that this is where other people should come to read your notes. Amethyst, Damus, and the newer NDK-based clients check that list before fetching your timeline. Done right, you can connect to as many as 1,000 relays at once on Amethyst’s latest builds without killing your battery, and your personal outbox becomes one of them.

A private relay holds things no one else should see. Drafts. Ecash wallet state from NIP-60. Encrypted group chat events. You can protect it with NIP-42 AUTH so only your own pubkey can read from or write to it.

An inbox relay catches mentions. When someone replies to you or tags you in a note, their client publishes to the read relays on your Kind 10002, which can include the personal inbox you run. Your notifications live at your address instead of getting scattered across whatever public relays the sender happens to use.

One server, four roles. The software you pick determines which of those roles it can fill.

The hardware answer is boring

A relay is a small Go or C++ binary holding a single-file embedded database. It needs almost nothing.

Ben Hekster runs a strfry node on a minimal VPS. He documented the numbers plainly: $9 a month, no monitoring, no backups, and about a quarter terabyte of events accumulated over six months. That works out to roughly 42 GB per month of growth for a publicly-writable relay accepting notes from strangers. If you restrict writes to your own pubkey, the growth rate drops by two or three orders of magnitude. A personal-only relay will not hit 5 GB in a year.

You can rent a $4 VPS at Netcup, a $5 droplet at DigitalOcean, or similar at OVH. One vCPU and 2 GB of RAM is adequate to start. Disk grows with what you accept. Bandwidth is negligible unless you publish to a thousand followers or mirror other relays.

If you already run an Umbrel or Start9 node at home, there is a one-click install in the app store. Start9 ships nostr-rs-relay configured as a private relay out of the box: you paste your hex pubkey into the config, and only you can write to it. Umbrel’s package is the same binary with a different wrapper.

Home residential internet works, but the obvious caveat bites. When your phone leaves the house, your phone cannot reach the relay. The fix is either Tailscale over a WireGuard mesh, or a cheap VPS that acts as a public endpoint with your home machine as the backend. The VPS is simpler. The cost of not having to think about it is a few dollars a month.

A domain name is not strictly required. You can connect to a relay by IP if you accept self-signed TLS, which most clients do not. In practice you want a domain, Caddy for automatic Let’s Encrypt certificates, and a reverse proxy to localhost:7777. That is one hour of setup if you have never done it before.

The software answer is not

Pick based on what you want the relay to do.

If you want raw performance, strfry is what most serious public relays run. Doug Hoyte wrote it in C++ with an LMDB backend, and it implements negentropy natively for relay-to-relay sync. I wrote about #negentropy and NIP-77 a few weeks ago. The short version: two relays with ten million events in common can figure out what they are missing in three round trips instead of re-downloading everything. For a personal relay that imports your history from existing public relays, that is the difference between a five-minute sync and a five-hour one.

If you want the sovereignty package, HAVEN is the choice. Barry Deen released v1.2.2 in February 2026. It bundles all four relay roles in one binary, plus a Blossom media server for your images. The private relay locks down via NIP-42 AUTH. The chat relay accepts only encrypted DMs from your trusted contacts. The outbox blasts copies of your notes to other public relays automatically. Built on fiatjaf’s khatru framework, MIT licensed. The haven-kit project by Letdown2491 makes it a one-click install on Umbrel, Docker, or Podman. HAVEN is feature-complete as of early 2026, which is to say the author considers the design done and accepts only bug fixes.

Chronicle, by dtonon, takes the opposite approach. It stores complete conversations the owner has taken part in, and nothing else. Writes are gated by the social graph to the second degree, so spam bots cannot flood your archive. Use it if you want a personal outbox that stays clean instead of turning into a catch-all for every event on the network.

Citrine, by greenart7c3, runs on Android. The project went through a full backend rewrite in Rust in late 2025, with database write speeds pushed from 10 to 68 events per second and reads from 1.2 to nearly 5 queries per second. In January 2026 it added built-in NIP-05 verification so your phone-hosted relay gets a human-readable address for free. If you want your drafts and ecash to never leave your device, Citrine is the way to do it without renting anything.

fiatjaf’s khatru framework is what all of the above are built on. Seven lines of Go get you a working relay. The useful part is the policy hooks: reject events, reject filters, override query results, enforce arbitrary logic. If you have a specific custom need, the framework is small enough to hold in your head.

What it actually gives you

The backup story is the easy win. You have a canonical copy of your own notes that does not depend on any relay operator’s economic decisions. When relay.damus.io changes its retention policy, or when the volunteer running a small niche relay stops paying the bill, your archive is unaffected. This alone is worth the afternoon of setup.

The outbox story is subtler but matters more. The network effect of a personal outbox is that your followers can find you without coordinating with you. When Amethyst fetches a user’s posts, it reads their Kind 10002 and connects to their outbox relays. If you post to your personal outbox and nowhere else, anyone who follows you through a NIP-65-aware client sees your notes. You become less dependent on the popular five that every client defaults to, which is the only real hedge against the #decentralization problem I wrote about in my piece on relays becoming the new servers.

The privacy story is concrete. NIP-60 wallets store your Cashu tokens as encrypted events on your relays. NIP-17 gift-wrapped DMs sit on your inbox relays. NIP-23 drafts go to your private relay. Every one of these benefits from the events living on a machine you control rather than on a public relay that might log, scan, or inadvertently expose them. A private relay with NIP-42 AUTH means that even if someone guesses the URL, they cannot read anything.

Negentropy syncing makes the personal relay practical in a way it would not have been two years ago. Without it, keeping your relay in sync with the public network means either accepting every event that passes by or waking up to hundreds of megabytes of redundant download traffic. With it, a personal relay can stay current on your follow graph for a few megabytes a day.

Here is where I push back on my own argument

Most people do not need this.

Ninety-five percent of Nostr relays cannot cover their operating costs. Sixty-four percent receive zero zaps. Out of the thousand-plus relays tracked in public registries, 343 have already gone dark. Those numbers are mostly about public relays trying to serve strangers, but the same economic pressure applies to you. If you open your relay to other writers, you are joining the club that cannot pay its own bills. If you do not, the relay is just a database that you happen to host yourself.

A relay operator wrote up a useful cautionary tale on dev.to. He stood up a personal relay without access restrictions because he assumed nobody would find a random subdomain. Other people did find it, started pushing their own notes to it, and within days the disk was filling with content from strangers. He took it down. The lesson is that on a network where relay URLs get gossipped around in profile metadata and Kind 10002 events, “obscure” is not a security posture.

The honest answer for most users is that paid services do the relay work better than you will. nostr.wine charges roughly seven dollars a month for authenticated relay access with regional mirrors across three continents. relay.tools hosts a managed relay for twelve thousand sats a month, which is under ten dollars at current prices. filter.nostr.wine filters the global firehose through your web of trust for another ten thousand sats. For most people the correct answer to “should I run a relay” is “pay someone else to, and spend your afternoon on something else.”

I am not going to pretend the paid relays are free of centralization risk. They are not. But the cost of a paid relay is one decision. The cost of a personal relay is ongoing attention, and most people stop paying attention within the first month.

Who should actually do this

If you just want your notes backed up and are willing to spend thirty minutes, install Citrine on your Android phone or nostr-rs-relay on your Umbrel node and be done. No VPS, no domain, no reverse proxy. This covers 80% of the real benefit.

If you want a proper outbox that other clients can reach, rent the five dollar VPS, register a domain, install HAVEN or Chronicle, point your Kind 10002 at it, and let it run. Expect to check on it once a month.

If you want to run a public relay for other people, read the relay economics data first. Then read it again. Then decide whether you are prepared to subsidize infrastructure for strangers indefinitely.

The infrastructure is small. The discipline of keeping a public service online for five years is not. Treat your relay like the database it is. Use it for what it is good at. Do not pretend it fixes the structural problems that only show up when other people start depending on you.

#nostr #decentralization #privacy


Write a comment
No comments yet.