Kendi posta kutusu aktarıcınız
Son güncelleme: 3 Ekim 2026
Herkos postası mühürlü zarflar (NIP-59 gift wrap) olarak yolculuk eder ve uygulamanız onu alana kadar DM aktarıcı listenizdeki aktarıcılarda (relay) bekler. Herkese açık aktarıcıların çoğu bu zarfları soran herkese verir. Kimse onları açamaz, ama herkes kimin ne zaman posta aldığını sayabilir ve aktarıcı onları istediği zaman silebilir.
Kimin okuduğunu soran (NIP-42) kendinize ait bir aktarıcı, zarflarınızı size ve başka hiç kimseye vermez ve onları sizin karar verdiğiniz süre boyunca saklar. Bu sayfa, birini üç adımda, artı her gece alınan bir yedekle nasıl kuracağınızı anlatır. Zaten bir sunucunuz varsa yaklaşık on beş dakika sürer.
Hangi aktarıcıyı kullanmalı
Her iki adayı 24 Eylül 2026'da çalıştırdık ve reklamlarında ne dediklerini değil, postayla gerçekte ne yaptıklarını denetledik.
| nogringo/nostr-relay | HAVEN 1.2.2 | |
|---|---|---|
| Zarflarınızı kim okuyabilir | Yalnızca siz, kimliğinizi doğruladıktan sonra | /chat: güven ağınızdaki herkes, kimliğini doğruladıktan sonra. /inbox: herkes, hiçbir kimlik doğrulaması olmadan |
| Size kim posta teslim edebilir | Kimliğini doğrulayan her gönderici | Yalnızca güven ağınız |
| Aldığınız postayı silme | Evet | Hayır |
| Hızlı yeniden eşitleme (NIP-77) | Evet | Hayır |
| Lisans | MIT | MIT |
Posta kutunuz olarak nogringo/nostr-relay kullanın. Postanın gerektirdiğini yapan odur: herkes size yazabilir ve yalnızca siz okuyabilirsiniz. HAVEN başka işler için (kişisel giden kutusu, medya, özel notlar) iyi bir araçtır, ama bir posta kutusu olarak takip etmediğiniz herkesten, sıradan e-postayı taşıyan köprü dâhil, gelen postayı geri çevirirdi.
Neye ihtiyacınız var
- Her zaman açık ve internetten erişilebilen bir makine: küçük bir VPS (ayda yaklaşık 4-6 €) veya evde bir bilgisayar.
- Ona yönlendirilmiş bir alan adı veya alt alan adı, örneğin
relay.example.com. - Docker ve HTTPS sağlayan bir ters vekil sunucu (reverse proxy). Örnekler, sertifikayı kendi başına alan Caddy kullanır.
Adım 1: aktarıcıyı çalıştırın
git clone https://github.com/nogringo/nostr-relay
cd nostr-relay
cp .env.example .env
.env dosyasını düzenleyin: aktarıcıya bir ad verin (RELAY_NAME) ve RELAY_URLS
değerini herkese açık adresi olan wss://relay.example.com olarak ayarlayın.
Ardından docker-compose.yml dosyasını açın ve port satırını
"127.0.0.1:3334:3334" olarak değiştirin. Aktarıcı, kimin kimlik doğruladığını
denetlerken vekil sunucunun kendisine ilettiği adrese güvenir; bu yüzden yalnızca vekil
sunucu üzerinden erişilebilir olmalıdır. Başlatın:
docker compose up -d
Adım 2: önüne HTTPS koyun
Caddy ile tüm yapılandırma (/etc/caddy/Caddyfile) şudur:
relay.example.com {
reverse_proxy 127.0.0.1:3334
}
Caddy'yi yeniden yükleyin (sudo systemctl reload caddy). Artık bir tarayıcıda
https://relay.example.com açıldığında yanıt vermelidir.
Adım 3: Herkos'a söyleyin
- Herkos'ta Ayarlar → Ağ ve sunucular → Kendi relay'in bölümünü açın ve
Relay kontrol et'e dokunun.
wss://relay.example.comgirin. - Herkos bağlanır ve onu dener: başka birinin postasını ister ve bir yabancıdan bir deneme zarfı bırakır (sonra onu siler). Buradaki postanı yalnızca sen okuyabilirsin ve Her göndericiden posta kabul eder ifadelerini görmelisiniz.
- İlk DM relay'in yap'a ve en üstteki Kaydet'e dokunun.
Listede ikinci sırada herkese açık bir aktarıcı da tutun: sunucunuz çökerse postanın yine
bekleyeceği bir yer olur. relay.damus.io iyi bir ikinci seçenektir, çünkü o da kimin
okuduğunu sorar.
Adım 4: her gece yedekleyin
Herkos topladığı postanın kendi kopyasını tutar, ama uygulamanız kapalıyken gelen bir zarf, siz Herkos'u açana kadar yalnızca sunucunuzda bulunur. Gecelik bir kopya bu boşluğu kapatır ve disk bozulursa ya da sağlayıcı hesabınızı kapatırsa sunucuyu yeniden kurmanızı sağlar.
Aktarıcı her şeyi nostr-relay_relay-db Docker biriminin içindeki tek bir LMDB
veritabanında tutar (ad, klonladığınız klasörün adıyla başlar; docker volume ls ile
denetleyin). Aktarıcı ona yazarken kopyalanan bir LMDB dosyası açılmayabilir; bu yüzden
betik, yerel bir kopyanın sürdüğü birkaç saniye için aktarıcıyı durdurur, yeniden başlatır
ve ancak ondan sonra kopyayı yükler. Durduğu sürece posta, listenizde ikinci sırada
tuttuğunuz herkese açık aktarıcıda bekler.
Kopya sunucudan restic ile çıkar; restic onu ayrılmadan önce şifreler. Sunucudan farklı bir sağlayıcıdaki bir yer kullanın: bir SFTP hesabı (bir depolama kutusu, evde bir bilgisayar) veya S3 uyumlu bir bucket.
-
Araçları kurun ve depoyu oluşturun. Parolayı parola yöneticinizde de saklayın: o olmadan kopyalar okunamaz ve yalnızca sunucuda yaşıyorsa sunucuyla birlikte ölür. SFTP için root kullanıcısının yedekleme makinesinin kabul ettiği bir SSH anahtarına da ihtiyacı vardır (
sudo ssh-keygen -t ed25519, ardından/root/.ssh/id_ed25519.pubdosyasını oraya ekleyin).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' -
Bunu
/usr/local/bin/backup-relayolarak kaydedin ve çalıştırılabilir yapın (sudo chmod 700 /usr/local/bin/backup-relay)./root/nostr-relayiçine klonlamadıysanızRELAY_DIRdeğerini değiştirin. Son 14 günü, 8 haftayı ve 12 ayı tutar: veritabanınınkine yakın bir boyutta, bir yıl geriye.#!/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 -
Bir kez elle çalıştırın (
sudo /usr/local/bin/backup-relay), ardındansudo crontab -eile zamanlayın. İkinci satır her ay saklanan verinin onda birini, her seferinde farklı bir onda birini geri okuyarak kopyaların hâlâ açılabildiğini kanıtlar. Arada bir/var/log/backup-relay.logdosyasına bakın:Fataliçeren bir satır, o gecenin kopyasının başarısız olduğu anlamına gelir.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
Geri yüklemek için (yeni bir sunucu ya da bir disk arızasından sonra): aktarıcıyı
yeniden kurun (1'den 3'e kadar adımlar) ve bu adımın 1. ve 2. maddelerini aynı depoyla
tekrarlayın, ancak yeni bir parola oluşturmak yerine sakladığınız parolayı
/root/.restic-password içine yazın ve restic init adımını atlayın. Ardından en son
yedeği aktarıcının birimine kopyalayın:
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
Yılda bir kez bu geri yüklemeyi yedek bir makinede yapın ve aktarıcının postanızla birlikte başladığını denetleyin: parola dâhil tüm zinciri kanıtlayan tek deneme budur.
Bilmekte yarar var
- Genel amaçlı bir aktarıcıdır. Postanızın yanı sıra herkesten herkese açık notları da kabul eder; böylece başkaları sunucunuzda bir şeyler saklayabilir. Henüz bunları reddetmek için bir ayarı yok.
- Sıradan e-postadan gelen posta bir köprü aracılığıyla gelir ve aktarıcınız sorduğunda köprünün kimliğini doğrulaması gerekir. Değişiklikten sonra sıradan e-posta gelmeyi keserse, listede tuttuğunuz herkese açık aktarıcı onu almaya devam eder.
- Verileri yedekleyin (adım 4). Zarflar
relay-dbDocker biriminde yaşar ve uygulamanızın henüz toplamadığı posta yalnızca orada bulunur. - IP adresiniz. Aktarıcı, her aktarıcı gibi, kendisine bağlanan her uygulamanın adresini görür. Kendi sunucunuzda bunları gören tek kişi sizsiniz.