Stand up a community with one command.
The membership-gated relay and the organizer dashboard run on one server, co-located on purpose. The installer generates every key on the box — nothing is typed in, downloaded, or reported anywhere. Everything below runs from the public source at olightening/stiq-source.
It is a small machine's worth of work. The reference deployment is a ~1.6 GB VPS — the cheapest tier most providers sell, around $5 a month — running both Tor daemons, the relay and the dashboard together, with a 1 GB swapfile the installer adds itself. And because the relay is a Tor onion service, it needs no domain, no static IP and no inbound ports: an old laptop or a single-board computer sitting behind your router works exactly as well, so long as you leave it on.
Get a box
A small Debian or Ubuntu VPS, or a machine at home. No domain, no static IP, no TLS certificate to renew — the relay is only ever reachable as a Tor v3 onion.
$ ssh root@your-boxRun the installer
One script provisions the relay and the dashboard together: it installs Tor and Node, builds the relay from source, creates an unprivileged user, brings up the hidden service, and starts everything under systemd.
# github.com/olightening/stiq-source $ git clone https://github.com/olightening/stiq-source stiq && cd stiq $ sudo COMMUNITY="Riverside Mutual Aid" ORGANIZER="stewards" \ bash deploy/stiq-up.sh ✓ relay ✓ tor ✓ dashboard — running
Every key is born on your server
The issuer RSA key, the organizer's Nostr key, and the onion secret are generated on the box and never transmitted. There is no account with us — nothing in Stiq reports to any community, including the one that wrote it.
# generated here, transmitted nowhere issuer RSA key /opt/stiq/… organizer nostr key /opt/stiq/… onion secret key /var/lib/tor/…
Open the dashboard over Tor
The dashboard binds 127.0.0.1 and never gets a clearnet URL. By default the installer gives it a second onion locked with client authorization and a password, so you administer the community from Tor Browser. Prefer no dashboard onion at all? Reach it down an SSH tunnel instead.
address : http://<dashboard>.onion auth key : <x25519 client-auth key> # paste into Tor Browser password : <dashboard login>
Hand out the join code
The relay's onion and your issuer public key ride inside the code, so it's the only thing a new member needs. Issue them single-use or multi-use, with an expiry, and as a short link or a QR.
stiq:join:2:… # as a stiq:// link, or a QR
Build and sign the app
The first install is always by hand — no signed build ships with the source, so you build one for your community and hand it out. One build joins any community, because the relay address and issuer key live in the join code, not in the binary. Keep the signing key: swapping it later forces an uninstall, and an uninstall destroys every member's identity.
$ cd client && npm ci $ npm run verify-deps && npm test # then a signed release build — BUILDING.md walks it
Run it in the open
Write the hearth, post your standing rules, and moderate from the Log where every member can read what you did. Grant or withdraw a moderator by republishing the roster — no app rebuild, no redeploy.
Someone has to run the server. And Tor is not fast.
Self-hosting is the point, and it is real work. There is no “sign up for Stiq” — a community exists only once someone stands up a box, keeps it patched, and holds the keys. That server is a single point of failure by design: pull the plug and the community is gone, which is exactly the property you wanted, but it also means an un-backed-up onion key takes the address with it. Dashboard access equals shell access equals full control, deliberately, with no weaker remote admin surface to mislead you. And because a member's key sits non-exportably on their own device with no seed phrase, a lost phone is a lost identity.
Every connection is a Tor circuit, so nothing here is instant. Opening the app means building one first — seconds, not milliseconds. Single-onion mode trims the rendezvous and the connection ladder reuses a warm circuit where it can, but it will always be slower than an app that talks straight to a data centre. There is no CDN, no clearnet fast path, and no fallback: on a network that blocks Tor you wait out the bridge ladder or you don't connect at all.
We think both are the right trade. If either is wrong for you, Stiq is the wrong tool — better to learn that here than in the field.
One command between here and home.
Free & MIT · your hardware or a $5 VPS · no accounts, ever.
Questions first? evergreenmarble@proton.me