Oma postilaatikkopalvelin
Viimeksi päivitetty: 3. lokakuuta 2026
Herkos-posti kulkee suljettuina kirjekuorina (NIP-59-gift wrapit) ja odottaa yksityisviestien välityspalvelinlistasi välityspalvelimilla, kunnes sovelluksesi noutaa sen. Useimmat julkiset välityspalvelimet antavat nämä kirjekuoret kenelle tahansa, joka niitä pyytää. Kukaan ei voi avata niitä, mutta kuka tahansa voi laskea, kuka saa postia ja milloin, ja välityspalvelin voi poistaa ne milloin haluaa.
Oma välityspalvelin, joka kysyy, kuka lukee (NIP-42), antaa kirjekuoresi sinulle eikä kenellekään muulle ja säilyttää ne niin kauan kuin itse päätät. Tämä sivu kertoo, miten sellainen pystytetään kolmessa vaiheessa, sekä öisestä varmuuskopiosta. Siihen menee noin vartti, jos sinulla on jo palvelin.
Mikä välityspalvelin valita
Ajoimme molempia ehdokkaita 24. syyskuuta 2026 ja tarkistimme, mitä ne todella tekevät postille, emme sitä, mitä ne mainostavat.
| nogringo/nostr-relay | HAVEN 1.2.2 | |
|---|---|---|
| Kuka voi lukea kirjekuoresi | Vain sinä, tunnistauduttuasi | /chat: kuka tahansa luottamusverkostostasi, tunnistauduttuaan. /inbox: kuka tahansa, ilman tunnistautumista |
| Kuka voi toimittaa sinulle postia | Kuka tahansa tunnistautuva lähettäjä | Vain luottamusverkostosi |
| Vastaanotetun postin poistaminen | Kyllä | Ei |
| Nopea uudelleensynkronointi (NIP-77) | Kyllä | Ei |
| Lisenssi | MIT | MIT |
Käytä nogringo/nostr-relayta postilaatikkonasi. Se tekee sen, mitä posti tarvitsee: kuka tahansa voi kirjoittaa sinulle, ja vain sinä voit lukea. HAVEN on hyvä työkalu muihin tarkoituksiin (henkilökohtainen lähtevien laatikko, media, yksityiset muistiinpanot), mutta postilaatikkona se torjuisi postin keneltä tahansa, jota et seuraa, mukaan lukien sillan, joka kuljettaa tavallista sähköpostia.
Mitä tarvitset
- Koneen, joka on aina päällä ja tavoitettavissa internetistä: pieni VPS (noin 4–6 € kuukaudessa) tai kotitietokone.
- Siihen osoittavan verkkotunnuksen tai aliverkkotunnuksen, esimerkiksi
relay.example.com. - Dockerin ja käänteisen välityspalvelimen (reverse proxy), joka tarjoaa HTTPS:n. Esimerkeissä käytetään Caddya, joka hankkii varmenteen itse.
Vaihe 1: käynnistä välityspalvelin
git clone https://github.com/nogringo/nostr-relay
cd nostr-relay
cp .env.example .env
Muokkaa tiedostoa .env: anna välityspalvelimelle nimi (RELAY_NAME) ja aseta RELAY_URLS sen
julkiseksi osoitteeksi, wss://relay.example.com.
Avaa sitten docker-compose.yml ja muuta porttirivi muotoon
"127.0.0.1:3334:3334". Välityspalvelin luottaa osoitteeseen, jonka proxy välittää sille,
kun se tarkistaa, kuka tunnistautuu, joten siihen on päästävä vain proxyn
kautta. Käynnistä se:
docker compose up -d
Vaihe 2: lisää HTTPS eteen
Caddylla koko määritys (/etc/caddy/Caddyfile) on:
relay.example.com {
reverse_proxy 127.0.0.1:3334
}
Lataa Caddyn määritys uudelleen (sudo systemctl reload caddy). Kun avaat
https://relay.example.com selaimessa, sen pitäisi nyt vastata.
Vaihe 3: kerro Herkosille
- Avaa Herkosissa Asetukset → Verkko ja palvelimet → Oma palvelin ja napauta
Tarkista palvelin. Syötä
wss://relay.example.com. - Herkos muodostaa yhteyden ja kokeilee sitä: se pyytää jonkun toisen postia ja jättää testikirjekuoren tuntemattomalta (ja poistaa sen sitten). Sinun pitäisi nähdä Vain sinä voit lukea postisi täällä ja Ottaa vastaan postia keneltä tahansa lähettäjältä.
- Napauta Aseta ensimmäiseksi yksityisviestien palvelimeksi ja ylhäältä Tallenna.
Pidä listalla myös julkinen välityspalvelin, toisena: jos palvelimesi on alhaalla, postilla
on silti paikka, jossa odottaa. relay.damus.io on hyvä toinen vaihtoehto, koska se
myös kysyy, kuka lukee.
Vaihe 4: varmuuskopioi joka yö
Herkos säilyttää oman kopionsa noutamastaan postista, mutta kirjekuori, joka saapui sovelluksesi ollessa suljettuna, on olemassa vain palvelimellasi, kunnes avaat Herkosin. Öinen kopio paikkaa tämän aukon, ja sen avulla voit rakentaa palvelimen uudelleen, jos levy hajoaa tai palveluntarjoaja sulkee tilisi.
Välityspalvelin säilyttää kaiken yhdessä LMDB-tietokannassa Docker-taltiossa
nostr-relay_relay-db (nimi alkaa sen kansion nimellä, johon kloonasit; tarkista
se komennolla docker volume ls). LMDB-tiedosto, joka on kopioitu välityspalvelimen kirjoittaessa
siihen, ei välttämättä aukea, joten skripti pysäyttää välityspalvelimen niiksi muutamaksi sekunniksi, jotka paikallinen kopio
vie, käynnistää sen uudelleen ja vasta sitten lähettää kopion. Pysäytyksen aikana
posti odottaa julkisella välityspalvelimella, jonka pidit listallasi toisena.
Kopio siirretään pois palvelimelta resticillä, joka salaa sen ennen lähtöä. Käytä paikkaa, joka on eri palveluntarjoajalla kuin palvelin: SFTP-tili (tallennuslaatikko, kotitietokone) tai S3-yhteensopiva bucket.
-
Asenna työkalut ja luo repositorio. Säilytä salasana myös salasanojen hallintasovelluksessasi: ilman sitä kopioita ei voi lukea, ja jos se on vain palvelimella, se kuolee palvelimen mukana. SFTP:tä varten root tarvitsee myös SSH-avaimen, jonka varmuuskopiokone hyväksyy (
sudo ssh-keygen -t ed25519, ja lisää sitten/root/.ssh/id_ed25519.pubsinne).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' -
Tallenna tämä nimellä
/usr/local/bin/backup-relayja tee siitä suoritettava (sudo chmod 700 /usr/local/bin/backup-relay). MuutaRELAY_DIR, jos et kloonannut kansioon/root/nostr-relay. Se säilyttää viimeiset 14 päivää, 8 viikkoa ja 12 kuukautta: vuoden taaksepäin, suunnilleen tietokannan kokoisena.#!/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 -
Aja se kerran käsin (
sudo /usr/local/bin/backup-relay) ja ajasta se sitten komennollasudo crontab -e. Toinen rivi lukee joka kuukausi takaisin kymmenesosan tallennetuista tiedoista, joka kerta eri kymmenesosan, todistaakseen, että kopiot voi yhä avata. Katso tiedostoa/var/log/backup-relay.logsilloin tällöin: rivi, jossa onFatal, tarkoittaa, että sen yön kopio epäonnistui.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
Palauttaminen (uusi palvelin tai levyvian jälkeen): pystytä välityspalvelin uudelleen
(vaiheet 1–3) ja toista tämän vaiheen kohdat 1 ja 2 samalla repositoriolla,
mutta kirjoita tallentamasi salasana tiedostoon /root/.restic-password uuden
luomisen sijaan ja ohita restic init. Kopioi sitten uusin varmuuskopio
välityspalvelimen taltioon:
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
Tee tämä palautus kerran vuodessa varakoneella ja tarkista, että välityspalvelin käynnistyy postisi kanssa: se on ainoa testi, joka todistaa koko ketjun toimivan, salasana mukaan lukien.
Hyvä tietää
- Se on yleiskäyttöinen välityspalvelin. Postisi lisäksi se ottaa vastaan julkisia muistiinpanoja keneltä tahansa, joten muut ihmiset voivat tallentaa asioita palvelimellesi. Siinä ei vielä ole asetusta niiden torjumiseen.
- Tavallisesta sähköpostista tuleva posti saapuu sillan kautta, jonka on tunnistauduttava, kun välityspalvelimesi sitä pyytää. Jos tavallinen sähköposti lakkaa saapumasta muutoksen jälkeen, listalle jättämäsi julkinen välityspalvelin ottaa sen silti vastaan.
- Varmuuskopioi tiedot (vaihe 4). Kirjekuoret ovat Docker-taltiossa
relay-db, ja posti, jota sovelluksesi ei ole vielä noutanut, on olemassa vain siellä. - IP-osoitteesi. Välityspalvelin näkee jokaisen siihen yhdistävän sovelluksen osoitteen, kuten mikä tahansa välityspalvelin. Omalla palvelimellasi ainoa, joka näkee ne, olet sinä.