Releul dvs. propriu drept căsuță poștală
Ultima actualizare: 3 octombrie 2026
Corespondența Herkos circulă în plicuri sigilate (gift wraps NIP-59) și așteaptă pe releele din lista dvs. de relee pentru mesaje private până când aplicația o preia. Majoritatea releelor publice predau aceste plicuri oricui le cere. Nimeni nu le poate deschide, dar oricine poate număra cine primește corespondență și când, iar releul le poate șterge oricând dorește.
Un releu propriu care întreabă cine citește (NIP-42) vă dă plicurile doar dvs. și nimănui altcuiva și le păstrează cât timp decideți dvs. Această pagină explică cum să configurați unul în trei pași, plus o copie de rezervă în fiecare noapte. Durează aproximativ cincisprezece minute dacă aveți deja un server.
Ce releu să folosiți
Am rulat ambii candidați pe 24 septembrie 2026 și am verificat ce fac de fapt cu corespondența, nu ce declară.
| nogringo/nostr-relay | HAVEN 1.2.2 | |
|---|---|---|
| Cine vă poate citi plicurile | Doar dvs., după identificare | /chat: oricine din rețeaua dvs. de încredere, după identificare. /inbox: oricine, fără identificare |
| Cine vă poate livra corespondență | Orice expeditor care se identifică | Doar rețeaua dvs. de încredere |
| Ștergerea corespondenței primite | Da | Nu |
| Resincronizare rapidă (NIP-77) | Da | Nu |
| Licență | MIT | MIT |
Folosiți nogringo/nostr-relay drept căsuță poștală. Este cel care face ce îi trebuie corespondenței: oricine vă poate scrie și doar dvs. puteți citi. HAVEN este un instrument bun pentru alte lucruri (o căsuță de ieșire personală, fișiere media, notițe private), dar drept căsuță poștală ar respinge corespondența de la oricine nu urmăriți, inclusiv de la puntea care aduce e-mailul obișnuit.
De ce aveți nevoie
- O mașină care este mereu pornită și accesibilă de pe internet: un VPS mic (circa 4-6 € pe lună) sau un computer acasă.
- Un domeniu sau subdomeniu care indică spre ea, de exemplu
relay.example.com. - Docker și un proxy invers care oferă HTTPS. Exemplele folosesc Caddy, care obține singur certificatul.
Pasul 1: rulați releul
git clone https://github.com/nogringo/nostr-relay
cd nostr-relay
cp .env.example .env
Editați .env: dați-i releului un nume (RELAY_NAME) și setați RELAY_URLS la adresa
sa publică, wss://relay.example.com.
Apoi deschideți docker-compose.yml și schimbați linia portului în
"127.0.0.1:3334:3334". Releul are încredere în adresa pe care i-o transmite proxy-ul
atunci când verifică cine se identifică, așa că trebuie să fie accesibil doar prin
proxy. Porniți-l:
docker compose up -d
Pasul 2: puneți HTTPS în față
Cu Caddy, întreaga configurație (/etc/caddy/Caddyfile) este:
relay.example.com {
reverse_proxy 127.0.0.1:3334
}
Reîncărcați Caddy (sudo systemctl reload caddy). Deschiderea
https://relay.example.com într-un browser ar trebui acum să primească un răspuns.
Pasul 3: anunțați Herkos
- În Herkos, deschideți Setări → Rețea și servere → Releul dvs. propriu și atingeți
Verifică un releu. Introduceți
wss://relay.example.com. - Herkos se conectează și îl testează: cere corespondența altcuiva și lasă un plic de test de la un necunoscut (apoi îl șterge). Ar trebui să vedeți Doar dvs. vă puteți citi corespondența aici și Acceptă corespondență de la orice expeditor.
- Atingeți Fă-l primul releu pentru mesaje private, apoi Salvează în partea de sus.
Păstrați în listă și un releu public, pe locul al doilea: dacă serverul dvs. este căzut, corespondența
are totuși unde să aștepte. relay.damus.io este o a doua opțiune bună, pentru că
și el întreabă cine citește.
Pasul 4: faceți o copie de rezervă în fiecare noapte
Herkos își păstrează propria copie a corespondenței pe care a preluat-o, dar un plic care a sosit cât timp aplicația era închisă există doar pe serverul dvs. până când deschideți Herkos. O copie în fiecare noapte acoperă acest gol și vă permite să refaceți serverul dacă se defectează discul sau furnizorul vă închide contul.
Releul păstrează totul într-o singură bază de date LMDB în volumul Docker
nostr-relay_relay-db (numele începe cu dosarul în care ați clonat; verificați-l
cu docker volume ls). Un fișier LMDB copiat în timp ce releul scrie în el
s-ar putea să nu se deschidă, așa că scriptul oprește releul pentru cele câteva secunde cât durează o copie
locală, îl repornește și abia apoi încarcă copia. Cât timp este oprit,
corespondența așteaptă pe releul public pe care l-ați păstrat al doilea în listă.
Copia pleacă de pe server cu restic, care o criptează înainte să plece. Folosiți un loc la un alt furnizor decât cel al serverului: un cont SFTP (un storage box, un computer acasă) sau un bucket compatibil S3.
-
Instalați instrumentele și creați depozitul. Păstrați parola și în managerul de parole: fără ea copiile nu pot fi citite, iar dacă există doar pe server, moare odată cu serverul. Pentru SFTP, root are nevoie și de o cheie SSH pe care mașina de backup o acceptă (
sudo ssh-keygen -t ed25519, apoi adăugați/root/.ssh/id_ed25519.pubacolo).sudo apt install restic rsync sudo sh -c 'openssl rand -base64 32 > /root/.restic-password' sudo sh -c 'cat > /root/.restic-env' <<'END' export RESTIC_REPOSITORY=sftp:backup@backup.example.com:/relay export RESTIC_PASSWORD_FILE=/root/.restic-password END sudo chmod 600 /root/.restic-password /root/.restic-env sudo sh -c '. /root/.restic-env && restic init' -
Salvați acest script ca
/usr/local/bin/backup-relayși faceți-l executabil (sudo chmod 700 /usr/local/bin/backup-relay). SchimbațiRELAY_DIRdacă nu ați clonat în/root/nostr-relay. Păstrează ultimele 14 zile, 8 săptămâni și 12 luni: un an în urmă, cu o dimensiune apropiată de cea a bazei de date.#!/bin/sh set -eu . /root/.restic-env RELAY_DIR=/root/nostr-relay COPY=/var/backups/relay-db VOLUME=$(docker volume inspect --format '{{ .Mountpoint }}' nostr-relay_relay-db) mkdir -p "$COPY" cd "$RELAY_DIR" docker compose stop relay trap 'docker compose start relay' EXIT rsync -a --delete "$VOLUME/" "$COPY/" docker compose start relay trap - EXIT restic backup "$COPY" --tag relay restic forget --tag relay --keep-daily 14 --keep-weekly 8 --keep-monthly 12 --prune -
Rulați-l o dată manual (
sudo /usr/local/bin/backup-relay), apoi programați-l cusudo crontab -e. A doua linie recitește lunar o zecime din datele stocate, de fiecare dată o altă zecime, ca să dovedească faptul că copiile pot fi încă deschise. Aruncați din când în când o privire în/var/log/backup-relay.log: o linie cuFatalînseamnă că, în acea noapte, copia a eșuat.15 4 * * * /usr/local/bin/backup-relay >> /var/log/backup-relay.log 2>&1 45 5 1 * * . /root/.restic-env && restic check --read-data-subset=10% >> /var/log/backup-relay.log 2>&1
Pentru restabilire (un server nou sau după o defecțiune a discului): configurați din nou releul
(pașii 1-3) și repetați punctele 1 și 2 ale acestui pas cu același depozit,
dar scrieți parola salvată în /root/.restic-password în loc să
creați una nouă și săriți peste restic init. Apoi copiați cea mai recentă copie de rezervă în
volumul releului:
sudo sh -c '. /root/.restic-env && restic restore latest --tag relay --target /'
cd /root/nostr-relay && sudo docker compose stop relay
sudo rsync -a --delete /var/backups/relay-db/ "$(sudo docker volume inspect --format '{{ .Mountpoint }}' nostr-relay_relay-db)/"
sudo docker compose start relay
O dată pe an, faceți această restabilire pe o mașină de rezervă și verificați că releul pornește cu corespondența dvs. în el: este singurul test care dovedește că întregul lanț funcționează, inclusiv parola.
Bine de știut
- Este un releu de uz general. Pe lângă corespondența dvs., acceptă note publice de la oricine, așa că alte persoane ar putea stoca lucruri pe serverul dvs. Nu are încă nicio setare pentru a le refuza.
- Corespondența din e-mailul obișnuit sosește printr-o punte, care trebuie să se identifice atunci când releul dvs. o cere. Dacă e-mailurile obișnuite nu mai sosesc după schimbare, releul public pe care l-ați păstrat în listă le va primi în continuare.
- Faceți copii de rezervă ale datelor (pasul 4). Plicurile stau în volumul Docker
relay-db, iar corespondența pe care aplicația nu a preluat-o încă există doar acolo. - Adresa dvs. IP. Releul vede adresa fiecărei aplicații care se conectează la el, ca orice releu. Pe propriul server, singurul care le vede sunteți dvs.