Saját postafiók-relé
Utolsó frissítés: 2026. október 3.
A Herkos-levelek lezárt borítékokban utaznak (NIP-59 gift wrap), és az Ön magánlevél-relélistáján szereplő reléken várakoznak, amíg az alkalmazása le nem tölti őket. A legtöbb nyilvános relé bárkinek kiadja ezeket a borítékokat, aki kéri. Felnyitni senki sem tudja őket, de bárki megszámolhatja, ki kap levelet és mikor, a relé pedig bármikor törölheti őket, amikor csak akarja.
Egy saját relé, amely megkérdezi, ki olvas (NIP-42), a borítékait csak Önnek adja ki, senki másnak, és addig őrzi őket, ameddig Ön dönt. Ez az oldal elmagyarázza, hogyan állíthat be egyet három lépésben, valamint egy éjszakai biztonsági mentést. Ha már van szervere, körülbelül tizenöt percet vesz igénybe.
Melyik relét használja?
- szeptember 24-én mindkét jelöltet futtattuk, és megnéztük, mit csinálnak ténylegesen a levelekkel, nem azt, amit hirdetnek.
| nogringo/nostr-relay | HAVEN 1.2.2 | |
|---|---|---|
| Ki olvashatja a borítékait | Csak Ön, azonosítás után | /chat: bárki a bizalmi hálójából, azonosítás után. /inbox: bárki, azonosítás nélkül |
| Ki kézbesíthet Önnek levelet | Bármely feladó, aki azonosítja magát | Csak a bizalmi hálója |
| Kapott levelek törlése | Igen | Nem |
| Gyors újraszinkronizálás (NIP-77) | Igen | Nem |
| Licenc | MIT | MIT |
Postafióknak a nogringo/nostr-relay relét használja. Ez az, amelyik azt teszi, amire a levelezésnek szüksége van: bárki írhat Önnek, és csak Ön olvashatja. A HAVEN jó eszköz más célokra (személyes kimenő postafiók, média, privát jegyzetek), de postafiókként visszautasítaná a leveleket mindenkitől, akit nem követ, beleértve a hidat is, amely a hagyományos e-maileket hozza.
Amire szüksége lesz
- Egy gép, amely mindig be van kapcsolva, és elérhető az internetről: egy kis VPS (havonta kb. 4-6 €) vagy egy otthoni számítógép.
- Egy rá mutató domain vagy aldomain, például
relay.example.com. - Docker és egy HTTPS-t biztosító fordított proxy (reverse proxy). A példák a Caddy programot használják, amely magától beszerzi a tanúsítványt.
1. lépés: a relé elindítása
git clone https://github.com/nogringo/nostr-relay
cd nostr-relay
cp .env.example .env
Szerkessze a .env fájlt: adjon nevet a relének (RELAY_NAME), és a RELAY_URLS értékét állítsa a
nyilvános címére: wss://relay.example.com.
Ezután nyissa meg a docker-compose.yml fájlt, és a port sorát módosítsa erre:
"127.0.0.1:3334:3334". A relé annak a címnek hisz, amelyet a proxy továbbít neki,
amikor ellenőrzi, ki azonosítja magát, ezért csak a proxyn keresztül szabad elérhetőnek
lennie. Indítsa el:
docker compose up -d
2. lépés: HTTPS a relé elé
A Caddy esetében a teljes konfiguráció (/etc/caddy/Caddyfile) ennyi:
relay.example.com {
reverse_proxy 127.0.0.1:3334
}
Töltse újra a Caddyt (sudo systemctl reload caddy). Ha most böngészőben megnyitja a
https://relay.example.com címet, válaszolnia kell.
3. lépés: a Herkos beállítása
- A Herkosban nyissa meg a Beállítások → Hálózat és szerverek → Saját relé menüpontot, és koppintson a
Relé ellenőrzése gombra. Adja meg:
wss://relay.example.com. - A Herkos csatlakozik, és kipróbálja: elkéri valaki más leveleit, és hagy egy próbaborítékot egy idegentől (majd törli). Ezt kell látnia: Itt csak Ön olvashatja a leveleit és Bármely feladótól elfogad leveleket.
- Koppintson a Legyen ez az első magánlevél-relé gombra, majd felül a Mentés gombra.
Tartson a listában egy nyilvános relét is, második helyen: ha a szervere leáll, a levelek
akkor is várakozhatnak valahol. A relay.damus.io jó második választás, mert
az is megkérdezi, ki olvas.
4. lépés: biztonsági mentés minden éjjel
A Herkos megőrzi a saját másolatát a már letöltött levelekről, de egy boríték, amely akkor érkezett, amikor az alkalmazása be volt zárva, csak a szerverén létezik, amíg meg nem nyitja a Herkost. Egy éjszakai másolat lefedi ezt a rést, és lehetővé teszi a szerver újraépítését, ha a lemez tönkremegy, vagy a szolgáltató megszünteti a fiókját.
A relé mindent egyetlen LMDB-adatbázisban tárol, a nostr-relay_relay-db Docker-köteten
belül (a név annak a mappának a nevével kezdődik, amelybe klónozott; ellenőrizze
a docker volume ls paranccsal). Egy LMDB-fájl, amelyet akkor másolnak, amikor a relé éppen ír
bele, lehet, hogy nem nyitható meg, ezért a szkript arra a néhány másodpercre leállítja a relét, amíg egy helyi másolat
elkészül, újraindítja, és csak ezután tölti fel a másolatot. Amíg le van állítva,
a levelek azon a nyilvános relén várakoznak, amelyet a listája második helyén tartott meg.
A másolat a restic segítségével kerül le a szerverről, amely titkosítja, mielőtt elhagyná a gépet. Olyan helyet használjon, amely a szervertől eltérő szolgáltatónál van: egy SFTP-fiókot (tárhelydobozt, otthoni számítógépet) vagy egy S3-kompatibilis tárolót (bucketet).
-
Telepítse az eszközöket, és hozza létre a tárolót. A jelszót a jelszókezelőjében is tartsa meg: nélküle a másolatok nem olvashatók, és ha csak a szerveren van, a szerverrel együtt elvész. SFTP esetén a rootnak egy olyan SSH-kulcs is kell, amelyet a mentési gép elfogad (
sudo ssh-keygen -t ed25519, majd adja hozzá ott a/root/.ssh/id_ed25519.pubkulcsot).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' -
Mentse ezt
/usr/local/bin/backup-relaynéven, és tegye futtathatóvá (sudo chmod 700 /usr/local/bin/backup-relay). Módosítsa aRELAY_DIRértékét, ha nem a/root/nostr-relaymappába klónozott. A szkript megőrzi az utolsó 14 napot, 8 hetet és 12 hónapot: egy évre visszamenőleg, nagyjából az adatbázis méretével megegyező helyen.#!/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 -
Futtassa le egyszer kézzel (
sudo /usr/local/bin/backup-relay), majd ütemezze asudo crontab -eparanccsal. A második sor havonta visszaolvassa a tárolt adatok egytizedét, minden alkalommal egy másik tizedét, hogy bizonyítsa: a másolatok továbbra is megnyithatók. Időnként nézzen bele a/var/log/backup-relay.logfájlba: egyFatalszót tartalmazó sor azt jelenti, hogy az aznap éjjeli másolat nem sikerült.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
Visszaállítás (új szerver vagy lemezhiba után): állítsa be újra a relét
(1–3. lépés), és ismételje meg ennek a lépésnek az 1. és 2. pontját ugyanazzal a tárolóval,
de új jelszó létrehozása helyett a mentett jelszót írja a /root/.restic-password fájlba,
és hagyja ki a restic init parancsot. Ezután másolja a legutóbbi mentést a
relé kötetébe:
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
Évente egyszer végezze el ezt a visszaállítást egy tartalék gépen, és ellenőrizze, hogy a relé elindul-e a leveleivel együtt: ez az egyetlen próba, amely a teljes láncot igazolja, a jelszót is beleértve.
Jó tudni
- Ez egy általános célú relé. A levelei mellett bárkitől elfogad nyilvános bejegyzéseket is, így mások is tárolhatnak dolgokat a szerverén. Egyelőre nincs beállítása ezek elutasítására.
- A hagyományos e-mailből érkező levelek egy hídon keresztül jönnek, amelynek azonosítania kell magát, amikor a relé kéri. Ha a váltás után a hagyományos e-mailek nem érkeznek meg, a listában megtartott nyilvános relé akkor is fogadja őket.
- Készítsen biztonsági mentést az adatokról (4. lépés). A borítékok a
relay-dbDocker-kötetben vannak, és az alkalmazása által még le nem töltött levelek csak ott léteznek. - Az IP-címe. A relé minden hozzá csatlakozó alkalmazás címét látja, ahogy bármely relé. A saját szerverén ezeket egyedül Ön látja.