Relé Nostr
Un relé de nostr escrit en Rust amb suport per a tot el protocol de relés i persistència de dades utilitzant SQLite.
Preparacions
Instal·leu dependències
Aquestes són dependències de construcció (es pot eliminar després de la instal·lació, si voleu)
$SU apk add --virtual .build-deps cargo cargo-auditable clang-dev cmake git \
make pkgconf protobuf-c-compiler sqlite-dev
Aquestes són dependències en temps d’execució
$SU apk add sqlite
Creeu l’usuari/grup nostr
$SU addgroup -S nostr
$SU adduser \
-S \
-D \
-H \
-h /dev/null \
-s /sbin/nologin \
-G nostr \
-g nostr \
nostr
Afegiu també l’usuari satoshi
al grup nostr
$SU adduser satoshi nostr
Instal·lació
Clona el codi font
Obtenim l’última versió del codi font de nostr-rs-relay, el compilem en un binari executable i l’instal·lem.
- Baixeu el codi font de la darrera versió de nostr-rs-relay. Podeu consultar la pàgina de llançament per veure si hi ha disponible una versió més recent. Tanmateix, és possible que altres versions no s’hagin provat correctament amb la resta de la configuració de Microbolt.
cd /tmp
VERSION=0.9.0
git clone --branch $VERSION https://git.sr.ht/~gheartsfield/nostr-rs-relay && cd nostr-rs-relay
Configurar, compilar i instal·lar
- Ara compileu el codi font en un binari executable i instal·leu-lo.
cargo auditable build \
--bin nostr-rs-relay \
--release \
--locked \
--jobs "$(nproc)"
$SU install -m 0755 -o root -g root -t /usr/bin ./target/release/nostr-rs-relay
$SU install -D -m 0660 -o nostr -g nostr ./config.toml /etc/nostr-rs-relay/config.toml
”Strip” els binaris instal·lats
$SU strip /usr/bin/nostr-rs-relay
Neteja
cd
rm -rf /tmp/nostr-rs-relay
$SU apk del .build-deps
Configuració
- Modifiqueu el fitxer de configuració amb el contingut següent
$SU $EDITOR /etc/nostr-rs-relay/config.toml
/etc/nostr-rs-relay/config.toml
[...]
#relay_url = "wss://nostr.example.com/"
[...]
name = "Microbolt Nostr Relay"
[...]
description = "A Nostr Relay running on Microbolt"
[...]
address = "127.0.0.1"
[...]
port = 8880
[...]
Inici automàtic a l’arrencada
Nostr Relay s’ha d’iniciar automàticament a l’arrencada del sistema.
- Creeu la unitat nostr-rs-relay init.d i copieu/enganxeu la configuració següent
$SU $EDITOR /etc/init.d/nostr-rs-relay
/etc/init.d/nostr-rs-relay
#!/sbin/openrc-run
: ${NOSTR_RELAY_CONFIGFILE:=/etc/nostr-rs-relay/config.toml}
: ${NOSTR_RELAY_DATADIR:=/var/lib/nostr-rs-relay}
: ${NOSTR_RELAY_LOGDIR:=/var/log/nostr-rs-relay}
: ${NOSTR_RELAY_USER:=nostr}
: ${NOSTR_RELAY_GROUP:=nostr}
: ${NOSTR_RELAY_BIN:=/usr/bin/nostr-rs-relay}
: ${NOSTR_RELAY_RUST_LOG:=info,nostr_rs_relay=info}
: ${NOSTR_RELAY_OPTS=${NOSTR_RELAY_OPTS}}
: ${NOSTR_RELAY_SIGTERM_TIMEOUT:=600}
NOSTR_RELAY_PIDDIR="/run/nostr-rs-relay"
required_files="${NOSTR_RELAY_CONFIGFILE}"
pidfile="${NOSTR_RELAY_PIDDIR}/${SVCNAME}.pid"
retry="${NOSTR_RELAY_SIGTERM_TIMEOUT}"
name="Nostr Relay"
description="A Rust implementation of Nostr relay"
command="${NOSTR_RELAY_BIN}"
command_args="--db ${NOSTR_RELAY_DATADIR}
--config ${NOSTR_RELAY_CONFIGFILE}
${NOSTR_RELAY_OPTS}"
command_user="${NOSTR_RELAY_USER}:${NOSTR_RELAY_GROUP}"
command_background="true"
start_stop_daemon_args="--env RUST_LOG=${NOSTR_RELAY_RUST_LOG}
--stdout ${NOSTR_RELAY_LOGDIR}/debug.log
--stderr ${NOSTR_RELAY_LOGDIR}/debug.log"
depend() {
need net
after logger firewall
}
start_pre() {
checkpath --file --mode 0660 --owner "${command_user}" "${NOSTR_RELAY_CONFIGFILE}"
checkpath --directory --mode 0750 --owner "${command_user}" "${NOSTR_RELAY_DATADIR}"
checkpath --directory --mode 0755 --owner "${command_user}" "${NOSTR_RELAY_LOGDIR}"
checkpath --directory --mode 0755 --owner "${command_user}" "${NOSTR_RELAY_PIDDIR}"
}
stop() {
ebegin "Stopping ${SVCNAME}"
pkill -TERM -P "$(cat ${pidfile})" > /dev/null 2>&1
start-stop-daemon \
--stop \
--pidfile="${pidfile}" \
--retry="${NOSTR_RELAY_SIGTERM_TIMEOUT}" \
--exec="${NOSTR_RELAY_BIN}"
eend $?
}
- Habilita el permís d’execució
$SU chmod +x /etc/init.d/nostr-rs-relay
Habilita logrotate
- Introduïu la configuració següent completa. Guardar i sortir
/etc/logrotate.d/nostr-rs-relay
/var/log/nostr-rs-relay/*.log {
weekly
missingok
rotate 104
compress
delaycompress
notifempty
create 0640 nostr nostr
sharedscripts
postrotate
killall -HUP `cat /run/nostr-rs-relay/nostr-rs-relay.pid`
endscript
}
- Prova
$SU logrotate /etc/logrotate.d/nostr-rs-relay --debug
Activa i inicia Nostr relay
$SU rc-update add nostr-rs-relay
$SU rc-service nostr-rs-relay start
- Comproveu el registre per veure la sortida del relé Nostr. Sortiu amb
Ctrl-C
tail -f /var/log/nostr-rs-relay/debug.log
- Assegureu-vos que el servei estigui funcionant i escoltant al port
predeterminat
8880
$SU netstat -lntup | grep LISTEN | grep nostr
output
tcp 0 0 0.0.0.0:8880 0.0.0.0:* LISTEN 7030/nostr-rs-relay
Per al futur: actualització de Nostr relay
Torneu a seguir la pàgina Relé Nostr substituint el valor de la
variable d’entorn VERSION=x.xx
per l’últim si encara no s’ha modificat en
aquesta guia.
- Actualitzeu la configuració del relé Nostr si cal (vegeu les notes de la versió)
$SU $EDITOR /etc/nostr-rs-relay/config.toml
- Reinicieu el servei per aplicar els canvis
$SU rc-service nostr-rs-relay restart