
How to run a Tor relay on a VPS
To run a Tor relay on a NoKycVPS instance, pick a plan with enough bandwidth, install the official tor package, and write a torrc with ORPort, a Nickname, ContactInfo, and RelayBandwidthRate. NoKycVPS allows middle relays, guards, and exits on every plan. A middle relay runs cleanly; a busy exit draws abuse complaints daily and needs a reduced exit policy plus a published policy page.
The Tor network is carried by volunteer relays, and the network is only as strong as the diversity of operators and jurisdictions behind it. Running a relay is one of the most concrete things you can do for global circumvention and anonymity — and it is fully permitted on NoKycVPS. We allow middle relays, entry guards, and exit nodes on all VPS and dedicated plans, across all four regions (Paris, Reykjavik, Zurich, Bucharest), with no proactive content monitoring and crypto-only signup.
This guide walks through the whole lifecycle: understanding the three relay roles, choosing a plan sized for the bandwidth you intend to donate, installing and hardening tor, writing a correct torrc, deciding an exit policy you can actually defend, and monitoring throughput with Nyx. It assumes a clean Debian 13 or Ubuntu 24.04 instance and basic comfort on the command line.
Middle relay vs guard vs exit — and what we allow
Every Tor relay falls into one of three roles, and the role determines both your risk profile and how much abuse mail you will see.
- Middle relay — relays encrypted traffic between other relays. It never talks to the open internet or to clients directly, so its IP never appears as the source of anything. This is the lowest-risk, highest-value way to contribute: zero abuse complaints, no special policy needed. Start here if you are new.
- Guard (entry) relay — the first hop in a circuit. A relay is promoted to Guard automatically by the directory authorities once it has been stable and fast for long enough; you do not opt in. Guards see client IPs but not destinations, and like middle relays they generate essentially no abuse mail.
- Exit relay — the last hop, which connects out to the destination on the user's behalf. Because the exit's IP is what the destination sees, the exit's IP catches the abuse reports, scanning alerts, and occasional legal notices for everything that flows through it. Exits are the scarcest and most valuable relays, and the most operationally demanding.
NoKycVPS allows all three. Tor relays and exits are named explicitly in our acceptable use as permitted, alongside I2P, mixnets, VPN exits, and crypto nodes. We do no proactive content monitoring and act only on a binding judicial order from a court with jurisdiction over our operating entity in Saint Kitts and Nevis, with customer notification first and a monthly warrant canary. The one hard line is CSAM. If you want to run an exit without becoming the abuse desk, see our dedicated Tor exit node hosting page and pick a jurisdiction deliberately.
Choosing a plan: bandwidth is the constraint
A Tor relay is not CPU-hungry in the way a build server is, but it does want steady CPU for the AES and circuit-handshake crypto, and above all it wants bandwidth and a stable IP. Tor weights relays by observed throughput, so a relay that can move more traffic carries proportionally more of the network. RAM and disk are almost irrelevant — a relay barely touches disk and uses a few hundred MB of RAM.
- Small middle relay / learning — the S1 (2 vCPU / 4 GB DDR5 / 80 GB NVMe, from $5/mo) is plenty. Cap it with
RelayBandwidthRate 5 MBytesand you have a useful, no-maintenance relay. - Serious relay or exit — the S2 Pro (4 vCPU / 16 GB / 320 GB, from $15/mo) is the sweet spot. With 10 Gbps unmetered uplink it can push a fast relay without the CPU becoming the bottleneck. This is the plan most operators want.
- High-capacity / multiple exits — the S3 Power (8 vCPU / 32 GB / 640 GB, from $30/mo) or a dedicated R1/R2 for operators running several relays under one MyFamily.
All NoKycVPS plans include a /64 IPv6 block, AMD EPYC cores, and up to 10 Gbps unmetered network. Network is unmetered, so you will not get a surprise bandwidth bill — but you should still set RelayBandwidthRate so your relay advertises a capacity it can sustain rather than burst to and then choke. Order from /order/?product=vps and pay in Monero (XMR); the balance credits in about 30 seconds.
Install Tor from the official repository
Do not use the distro's stock tor package — it lags upstream by months. Add the official Tor Project repository so you get current builds and security fixes promptly. On Debian 13 / Ubuntu 24.04:
# become root
apt update && apt install -y apt-transport-https curl gpg
# add the Tor Project signing key
curl -fsSL https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc \
| gpg --dearmor -o /usr/share/keyrings/tor-archive-keyring.gpg
# add the repo (replace 'bookworm' with your codename if needed)
cat > /etc/apt/sources.list.d/tor.list <<'EOF'
deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org bookworm main
EOF
apt update
apt install -y tor deb.torproject.org-keyring nyxThis installs tor as a systemd service running under its own unprivileged debian-tor user, plus Nyx, the terminal monitor we use later. Confirm the binary is current with tor --version. Keep the box patched (unattended-upgrades) so the keyring and tor stay fresh.
Write your torrc
The relay's entire behaviour lives in /etc/tor/torrc. A minimal, correct non-exit (middle/guard) relay looks like this:
# /etc/tor/torrc
Nickname examplerelay # 1-19 alphanumerics, your label on the network
ORPort 9001 # the port other relays connect to
ORPort [::]:9001 # also listen on IPv6
ContactInfo tor-admin <at> example <dot> com # obfuscated; abuse handlers use this
# bandwidth: sustained rate, with a higher short burst
RelayBandwidthRate 8 MBytes
RelayBandwidthBurst 12 MBytes
# OPTIONAL hard monthly cap (uncomment to limit total transfer)
# AccountingMax 8 TBytes
# AccountingStart month 1 00:00
# group all relays you run so clients never use two in one circuit
MyFamily $FINGERPRINT1,$FINGERPRINT2
# this node is NOT an exit
ExitRelay 0Key fields, plainly:
- ORPort — the public port for relay-to-relay traffic. 9001 is conventional; any open port works. Open it in your firewall.
- Nickname — a human label, not unique, purely cosmetic on metrics sites.
- ContactInfo — set this. It lets abuse desks and the Tor Project reach you, and unreachable operators get deprioritised. Obfuscate the address against scrapers but keep it reachable.
- RelayBandwidthRate / Burst — the sustained rate Tor advertises and the short ceiling it will burst to. Set the rate to what your link genuinely sustains.
- MyFamily — fingerprints of every relay you operate (find yours in
/var/lib/tor/fingerprintafter first start). This prevents a single operator from being two hops in one circuit. On modern Tor you can use a sharedFamilyIdfile instead; MyFamily still works and is widely understood.
Validate before restarting: tor --verify-config -f /etc/tor/torrc. Then systemctl restart tor@default && systemctl enable tor@default. Watch the log with journalctl -u tor@default -f — within a few minutes you want to see "Self-testing indicates your ORPort is reachable from the outside. Excellent."
Exit policy and what abuse to expect
To turn the relay into an exit, set ExitRelay 1 and define an ExitPolicy. Do not open everything. The single most useful and abuse-light option is the reduced exit policy, which blocks the ports that generate the overwhelming majority of complaints (SMTP/spam, common scanning targets, BitTorrent-heavy ranges) while still allowing web and most useful traffic:
ExitRelay 1
IPv6Exit 1
# Tor ships a curated 'reduced' policy — reference it directly:
# https://gitlab.torproject.org/legacy/trac/-/wikis/doc/ReducedExitPolicy
# or hand-roll a conservative one, e.g. web-only:
ExitPolicy accept *:80
ExitPolicy accept *:443
ExitPolicy reject *:25 # block outbound SMTP to kill spam complaints
ExitPolicy reject *:*Abuse expectations, honestly: a middle relay produces essentially zero complaints. A reduced-policy exit on a busy IP typically draws a handful to a few dozen automated reports per day — DMCA notices, brute-force/scanning alerts from honeypots, and the occasional fraud-team email. A wide-open exit can draw hundreds and will get the IP listed on blocklists fast. Mitigations that work:
- Run the exit on a dedicated IP that hosts nothing else, and publish a DNS/web exit notice on port 80 so operators recognise it as a Tor exit.
- Pick the jurisdiction deliberately — see our offshore hosting regions; Iceland (no mandatory data retention) and Switzerland (FADP, outside 14-Eyes) are popular for exits.
- Set a real
ContactInfoand answer abuse mail promptly; engaged operators rarely have problems.
NoKycVPS does not forward, monitor, or act on these complaints itself — we have no content monitoring and respond only to a properly served judicial order from a Saint Kitts and Nevis court, notifying you first. But the upstream network abuse desks will still email the ContactInfo on record, so run exits where you can handle that. The one absolute prohibition is CSAM; for that and other network-abuse rules see the acceptable use summary.
Monitor with Nyx and verify on the metrics
Once the relay is up, watch it live with Nyx (the successor to arm), which we installed earlier. Run it as the tor user so it can read the control socket:
sudo -u debian-tor nyxNyx shows real-time upload/download against your RelayBandwidthRate, current connections, circuit roles, log tail, and your relay flags (Running, Stable, Fast, Guard, Exit). If bandwidth flatlines at exactly your configured rate, you are saturated and could raise the cap; if it never climbs, the relay may still be ramping (new relays earn trust and traffic over the first 1-2 weeks).
For an outside view, look up your fingerprint on Tor Metrics (metrics.torproject.org/rs.html) — it confirms your relay is published in the consensus, shows the flags the directory authorities assigned, and graphs your advertised bandwidth. A healthy middle relay reaches Stable and Fast within days; Guard takes longer. Set up basic host monitoring too (a simple systemctl is-active tor@default check) so you know if the daemon dies. For deeper hardening of the underlying box, see our VPS hardening guide.
- Order a VPS sized for your relay
Pick S1 from $5/mo for a capped middle relay or S2 Pro from $15/mo for a fast relay or exit (10 Gbps unmetered). Choose a region — Iceland or Switzerland for exits. Sign up with email + password only and top up with Monero (XMR); balance credits in ~30s.
- Add the official Tor repository
SSH in as root, then
apt install apt-transport-https curl gpg, import the Tor Project signing key into/usr/share/keyrings/tor-archive-keyring.gpg, and adddeb.torproject.orgto/etc/apt/sources.list.d/tor.list. Runapt update. - Install tor and Nyx
apt install -y tor deb.torproject.org-keyring nyx. This installs the current tor build as a hardened systemd service under thedebian-toruser, plus the Nyx terminal monitor. Confirm withtor --version. - Write /etc/tor/torrc
Set
Nickname,ORPort 9001(IPv4 and IPv6),ContactInfo(obfuscated but reachable), andRelayBandwidthRate/RelayBandwidthBurstto what your link sustains. LeaveExitRelay 0for a middle relay. Validate withtor --verify-config -f /etc/tor/torrc. - Open the ORPort and start the service
Allow the ORPort through your firewall (
ufw allow 9001/tcp). Thensystemctl enable --now tor@defaultand watchjournalctl -u tor@default -funtil you see "Self-testing indicates your ORPort is reachable from the outside. Excellent." - (Exits only) set a reduced exit policy
To run an exit, set
ExitRelay 1and apply the Tor reduced exit policy (or a web-only policy that accepts 80/443 and rejects 25 and everything else). Use a dedicated IP, publish an exit notice on port 80, and be ready to answer a handful to a few dozen abuse reports per day. CSAM is the one absolute prohibition. - Set MyFamily across your relays
After first start, read your fingerprint from
/var/lib/tor/fingerprint. If you run more than one relay, list every fingerprint inMyFamily(or share a FamilyId) on all of them and restart, so clients never pick two of yours for one circuit. - Monitor with Nyx and check Tor Metrics
Run
sudo -u debian-tor nyxto watch live bandwidth, connections, and flags. Look up your fingerprint onmetrics.torproject.orgto confirm you are in the consensus. Expect Stable/Fast flags within days; traffic ramps over 1-2 weeks. Add asystemctl is-activehealth check.
Perguntas que merecem resposta
Is running a Tor relay or exit allowed on NoKycVPS?
Yes. Tor middle relays, guards, and exit nodes are explicitly permitted on every VPS and dedicated plan, in all four regions. We do no proactive content monitoring and act only on a properly served judicial order from a court with jurisdiction over our Saint Kitts and Nevis entity, notifying you first. The single prohibition is CSAM.
How much abuse mail will a Tor exit node generate?
A middle relay generates effectively none. A busy exit running the reduced exit policy typically draws a handful to a few dozen automated complaints per day (DMCA notices, scanning alerts, fraud reports). A wide-open exit can draw hundreds. Use a reduced policy, a dedicated IP, and a real ContactInfo, and answer abuse promptly.
Which VPS plan should I pick for a Tor relay?
For a capped middle relay, the S1 (2 vCPU / 4 GB, from $5/mo) is plenty. For a fast relay or an exit, the S2 Pro (4 vCPU / 16 GB, from $15/mo) with 10 Gbps unmetered network is the sweet spot. Relays are bandwidth-bound, not RAM- or disk-bound.
What is RelayBandwidthRate and do I need it?
RelayBandwidthRate is the sustained throughput your relay advertises and enforces; RelayBandwidthBurst is the short ceiling it will burst to. Set the rate to what your link genuinely sustains so Tor doesn't route more traffic than you can carry. Add AccountingMax if you want a hard monthly transfer cap.
What does MyFamily do and why set it?
MyFamily lists the fingerprints of every relay you operate so Tor clients never place two of your relays in the same circuit, which would let one operator see both ends. Find your fingerprint in /var/lib/tor/fingerprint after first start and list all of them on each relay (or share a FamilyId).
Deploy your offshore server.
Escolha uma região. Escolha um plano. Cole uma chave. Pague. Os próximos 47 segundos são por nossa conta.