Vaše vlastné poštové relé
Naposledy aktualizované: 3. októbra 2026
Pošta Herkos cestuje v zapečatených obálkach (NIP-59 gift wraps) a čaká na relé vo vašom zozname relé pre súkromnú poštu, kým si ju vaša aplikácia nevyzdvihne. Väčšina verejných relé vydá tieto obálky komukoľvek, kto o ne požiada. Otvoriť ich nemôže nikto, ale ktokoľvek môže spočítať, kto dostáva poštu a kedy, a relé ich môže odstrániť, kedykoľvek sa mu zachce.
Vlastné relé, ktoré sa pýta, kto číta (NIP-42), dá vaše obálky vám a nikomu inému a uchová ich tak dlho, ako sa rozhodnete. Táto stránka vysvetľuje, ako ho nastaviť v troch krokoch, plus nočnú zálohu. Ak už server máte, zaberie to asi pätnásť minút.
Ktoré relé použiť
Obidvoch kandidátov sme 24. septembra 2026 spustili a overili, čo s poštou naozaj robia, nie čo inzerujú.
| nogringo/nostr-relay | HAVEN 1.2.2 | |
|---|---|---|
| Kto môže čítať vaše obálky | Len vy, po identifikácii | /chat: ktokoľvek z vašej siete dôvery, po identifikácii. /inbox: ktokoľvek, bez identifikácie |
| Kto vám môže doručiť poštu | Akýkoľvek odosielateľ, ktorý sa identifikuje | Len vaša sieť dôvery |
| Odstraňovanie prijatej pošty | Áno | Nie |
| Rýchla opätovná synchronizácia (NIP-77) | Áno | Nie |
| Licencia | MIT | MIT |
Ako poštovú schránku použite nogringo/nostr-relay. Je to to, ktoré robí, čo pošta potrebuje: písať vám môže ktokoľvek a čítať môžete len vy. HAVEN je dobrý nástroj na iné veci (osobný outbox, médiá, súkromné poznámky), ale ako poštová schránka by odmietal poštu od kohokoľvek, koho nesledujete, vrátane mostu, ktorý prenáša bežné e-maily.
Čo potrebujete
- Stroj, ktorý je stále zapnutý a dostupný z internetu: malý VPS (asi 4 – 6 € mesačne) alebo počítač doma.
- Doménu alebo subdoménu, ktorá naň smeruje, napríklad
relay.example.com. - Docker a reverzný proxy server, ktorý poskytuje HTTPS. Príklady používajú Caddy, ktorý si certifikát získa sám.
Krok 1: spustite relé
git clone https://github.com/nogringo/nostr-relay
cd nostr-relay
cp .env.example .env
Upravte .env: dajte relé meno (RELAY_NAME) a nastavte RELAY_URLS na jeho
verejnú adresu, wss://relay.example.com.
Potom otvorte docker-compose.yml a zmeňte riadok s portom na
"127.0.0.1:3334:3334". Pri kontrole, kto sa identifikuje, relé dôveruje adrese, ktorú mu
proxy odovzdá, preto musí byť dostupné len cez
proxy. Spustite ho:
docker compose up -d
Krok 2: dajte pred neho HTTPS
S Caddy je celá konfigurácia (/etc/caddy/Caddyfile):
relay.example.com {
reverse_proxy 127.0.0.1:3334
}
Znova načítajte Caddy (sudo systemctl reload caddy). Keď teraz otvoríte
https://relay.example.com v prehliadači, mal by odpovedať.
Krok 3: povedzte to Herkos
- V Herkos otvorte Nastavenia → Sieť a servery → Vaše vlastné relé a ťuknite na
Skontrolovať relé. Zadajte
wss://relay.example.com. - Herkos sa pripojí a vyskúša ho: vyžiada si poštu niekoho iného a nechá tam testovaciu obálku od cudzieho odosielateľa (potom ju odstráni). Mali by ste vidieť Vašu poštu si tu môžete prečítať len vy a Prijíma poštu od akéhokoľvek odosielateľa.
- Ťuknite na Nastaviť ako prvé relé pre súkromné správy a hore na Uložiť.
V zozname si ponechajte aj verejné relé, ako druhé: ak bude váš server mimo prevádzky, pošta
bude mať stále kde čakať. relay.damus.io je dobrá druhá voľba, pretože sa
tiež pýta, kto číta.
Krok 4: zálohujte ho každú noc
Herkos si uchováva vlastnú kópiu pošty, ktorú vyzdvihol, ale obálka, ktorá prišla, kým bola vaša aplikácia zatvorená, existuje len na vašom serveri, kým Herkos neotvoríte. Nočná kópia túto medzeru pokryje a umožní vám obnoviť server, ak zlyhá disk alebo poskytovateľ zruší váš účet.
Relé uchováva všetko v jednej databáze LMDB vo zväzku Docker
nostr-relay_relay-db (názov začína priečinkom, do ktorého ste klonovali; overte
ho príkazom docker volume ls). Súbor LMDB skopírovaný počas toho, ako doň relé zapisuje,
sa nemusí dať otvoriť, preto skript zastaví relé na tých pár sekúnd, ktoré trvá lokálna kópia,
znova ho spustí a až potom kópiu nahrá. Kým je zastavené,
pošta čaká na verejnom relé, ktoré ste si v zozname ponechali ako druhé.
Kópia odchádza zo servera pomocou restic, ktorý ju zašifruje skôr, než odíde. Použite miesto u iného poskytovateľa, než je server: účet SFTP (storage box, počítač doma) alebo úložisko kompatibilné s S3.
-
Nainštalujte nástroje a vytvorte repozitár. Heslo si uložte aj do správcu hesiel: bez neho sa kópie nedajú prečítať, a ak by bolo len na serveri, zanikne spolu so serverom. Pre SFTP potrebuje root aj kľúč SSH, ktorý záložný stroj akceptuje (
sudo ssh-keygen -t ed25519, potom tam pridajte/root/.ssh/id_ed25519.pub).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' -
Uložte toto ako
/usr/local/bin/backup-relaya nastavte ho ako spustiteľný (sudo chmod 700 /usr/local/bin/backup-relay). Ak ste neklonovali do/root/nostr-relay, zmeňteRELAY_DIR. Uchováva posledných 14 dní, 8 týždňov a 12 mesiacov: rok dozadu, pri veľkosti blízkej veľkosti databázy.#!/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 -
Spustite ho raz ručne (
sudo /usr/local/bin/backup-relay) a potom ho naplánujte cezsudo crontab -e. Druhý riadok každý mesiac spätne prečíta desatinu uložených údajov, zakaždým inú desatinu, aby overil, že sa kópie stále dajú otvoriť. Z času na čas sa pozrite do/var/log/backup-relay.log: riadok sFatalznamená, že kópia v tú noc zlyhala.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
Obnovenie (nový server alebo po zlyhaní disku): znova nastavte relé
(kroky 1 až 3) a zopakujte body 1 a 2 tohto kroku s tým istým repozitárom,
ale namiesto vytvárania nového hesla zapíšte uložené heslo do /root/.restic-password
a vynechajte restic init. Potom skopírujte najnovšiu zálohu do
zväzku relé:
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
Raz za rok vykonajte toto obnovenie na náhradnom stroji a overte, že sa relé spustí s vašou poštou: je to jediný test, ktorý preverí celý reťazec vrátane hesla.
Dobré vedieť
- Je to relé na všeobecné použitie. Okrem vašej pošty prijíma verejné poznámky od kohokoľvek, takže iní ľudia by mohli ukladať veci na váš server. Zatiaľ nemá nastavenie, ktorým by ich odmietlo.
- Pošta z bežných e-mailov prichádza cez most, ktorý sa musí identifikovať, keď sa ho vaše relé spýta. Ak po zmene prestanú prichádzať bežné e-maily, verejné relé, ktoré ste si v zozname ponechali, ich bude naďalej prijímať.
- Zálohujte údaje (krok 4). Obálky sú uložené vo zväzku Docker
relay-dba pošta, ktorú vaša aplikácia ešte nevyzdvihla, existuje len tam. - Vaša IP adresa. Relé vidí adresu každej aplikácie, ktorá sa k nemu pripojí, ako každé relé. Na vašom vlastnom serveri ich vidíte len vy.