DocumentacióNostrAplicació web

Aplicació web

Executa la teva WebGUI privada de Nostr Relay per fer una còpia de seguretat de tota la teva activitat a Nostr. Una aplicació oficial de Umbrel. Impulsat per nostr-rs-relay.

Umbrel Nostr Relay webapp

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 git npm

Aquestes són dependències en temps d’execució

$SU apk add nodejs-current

Creeu l’usuari/grup umbrel

$SU addgroup -S umbrel
$SU adduser \
    -S \
    -D \
    -H \
    -h /dev/null \
    -s /sbin/nologin \
    -G umbrel \
    -g umbrel \
    umbrel

Afegiu també l’usuari satoshi al grup umbrel

$SU adduser satoshi umbrel && exec su -l satoshi

Servidor intermediari invers

A la secció Seguretat, ja hem configurat un servidor intermediari invers. Ara podem afegir la configuració del servidor Umbrel Nostr Relay.

  • Habiliteu el servidor intermediari invers per afegir xifratge SSL/TLS a la comunicació del servidor Umbrel Nostr Relay. Creeu el fitxer de configuració i enganxeu el contingut següent
$SU $EDITOR /etc/caddy/sites/umbrel-nostr-relay.caddy
/etc/caddy/sites/umbrel-nostr-relay.caddy
:8881 {
        import tls
        root * /var/www/umbrel-nostr-relay
        encode gzip
 
        @websockets {
                header Connection *Upgrade*
                header Upgrade    websocket
        }
 
        @nostr {
                header Accept application/nostr+json
        }
 
        @relayproxy {
                path /relay-proxy/*
        }
 
        reverse_proxy @websockets 127.0.0.1:8880
        reverse_proxy @nostr 127.0.0.1:8880
        reverse_proxy @relayproxy 127.0.0.1:81
 
        file_server
}
  • Torna a carregar el Caddy
$SU rc-service caddy reload

Tallafoc

  • Configura el tallafoc per permetre les sol·licituds entrants
$SU $EDITOR /etc/awall/optional/umbrel-nostr-relay.json
/etc/awall/optional/umbrel-nostr-relay.json
{
  "description": "Allow Umbrel Nostr Relay webGUI SSL",
 
  "filter": [
    {
      "in": "internet",
      "out": "_fw",
      "service": { "proto": "tcp", "port": 8881 },
      "action": "accept",
      "conn-limit": { "count": 10, "interval": 60 }
    }
  ]
}
  • Habilitar-ho
$SU awall enable umbrel-nostr-relay
$SU awall activate

Instal·lació

Clona el codi font

Obtenim l’última versió del codi font d’umbrel-nostr-relay, el verifiquem, el compilem en un binari executable i l’instal·lem.

  • Baixeu el codi font de la darrera versió d’umbrel-nostr-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=1.1.0
git clone --branch v$VERSION https://github.com/getumbrel/umbrel-nostr-relay

Backend

  • Instal·la les dependències del backend i construeix el projecte
cd /tmp/umbrel-nostr-relay/relay-proxy
npm ci --omit=dev --omit=optional

La instal·lació pot trigar un temps. Pot ser que hi hagi moltes sortides confuses, però si veieu alguna cosa semblant a la següent, la instal·lació ha estat correcta:

output
2 vulnerabilities (1 low, 1 moderate)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
⚠️

A data de 2024-09-03, hi ha com a mínim 2 vulnerabilitats que no es poden abordar sense fer canvis substancials que podrien afectar altres parts del programari

npm audit fix
  • Feu-ne una instal·lació permanent global
mkdir ./bin
printf "%s\n" \
    "#!/bin/sh" \
    "node \$@ /var/lib/umbrel-nostr-relay/server" \
    > ./bin/cli.sh
chmod +x ./bin/cli.sh
  • Reemplaça la constant de port i STORE amb una variable d’entorn
sed 's/const port = 80;/const port = process.env.RELAY_PROXY_PORT || 80;/' server.js > _
mv -f _ server.js
sed 's/export const STORE = ".\/data\/store.json";/export const STORE = process.env.RELAY_DATA_STORE || ".\/data\/store.json";/' constants.js > _
mv -f _ constants.js
$SU mv -f /tmp/umbrel-nostr-relay/relay-proxy /var/lib/umbrel-nostr-relay
$SU ln -s /var/lib/umbrel-nostr-relay /usr/lib/node_modules/umbrel-nostr-relay
$SU ln -s ../lib/node_modules/umbrel-nostr-relay/bin/cli.sh /usr/bin/umbrel-nostr-relay

Frontend

  • Instal·la les dependències del frontend i construeix el projecte
cd /tmp/umbrel-nostr-relay/ui
npm ci

La instal·lació pot trigar un temps. Pot ser que hi hagi moltes sortides confuses, però si veieu alguna cosa semblant a la següent, la instal·lació ha estat correcta:

output
21 vulnerabilities (8 moderate, 11 high, 2 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.
⚠️

A data de 2024-09-03, hi ha com a mínim 21 vulnerabilitats que no es poden abordar sense fer canvis substancials que podrien afectar altres parts del programari

npm audit fix
  • Feu-ne una instal·lació permanent global
sed 's/Umbrel/Microbolt/' public/index.html > _
mv -f _ public/index.html
sed \
    -e 's/{ relayPort }//' \
    -e '/<p className="text-slate-800 dark:text-slate-400 text-xs mt-4 mb-6">/,/<\/p>/d' \
    src/components/ConnectClient.js > _
mv -f _ src/components/ConnectClient.js
npm run build
$SU rm -rf /var/www/umbrel-nostr-relay
$SU mv -f ./build /var/www/umbrel-nostr-relay

Neteja

cd
rm -rf /tmp/umbrel-nostr-relay
$SU apk del .build-deps

Configuració

  • Afegeix aquests valors al fitxer umbrel.env
$SU mkdir /etc/umbrel-nostr-relay
$SU $EDITOR /etc/umbrel-nostr-relay/umbrel.env
/etc/umbrel-nostr-relay/umbrel.env
RELAY_HOST=127.0.0.1
RELAY_PORT=8880
RELAY_PROXY_PORT=81
RELAY_DATA_STORE=/etc/umbrel-nostr-relay/store.json
Accés remot per Tor

Per utilitzar el vostre relé Nostr quan esteu en remot, podeu crear fàcilment un servei ocult Tor al Microbolt i accedir al Umbrel Nostr Relay amb el navegador Tor des de qualsevol dispositiu.

  • Afegiu les tres línies següents a la secció “location-hidden services” al fitxer torrc.
$SU $EDITOR /etc/tor/torrc
/etc/tor/torrc
# Hidden Service Umbrel Nostr Relay
HiddenServiceDir /var/lib/tor/umbrel-nostr-relay/
HiddenServiceVersion 3
HiddenServicePoWDefensesEnabled 1
HiddenServicePort 443 127.0.0.1:8881
  • Torneu a carregar la configuració de Tor i obteniu la vostra adreça de connexió.
$SU rc-service tor reload
$SU cat /var/lib/tor/umbrel-nostr-relay/hostname
output
abcdefg..............xyz.onion
  • Ara hauríeu de poder connectar-vos al vostre Umbrel Nostr Relay de forma remota mitjançant Tor mitjançant el vostre nom d’amfitrió

Inici automàtic a l’arrencada

Ara ens assegurarem que el nostre relé Nostr s’iniciï com a servei a l’ordinador perquè estigui sempre en execució.

  • Creeu la unitat init.d de Umbrel Nostr Relay i copieu/enganxeu la configuració següent. Guardar i sortir.
$SU $EDITOR /etc/init.d/umbrel-nostr-relay
/etc/init.d/umbrel-nostr-relay
#!/sbin/openrc-run
 
: ${UMBREL_NOSTR_RELAY_ENVFILE:=/etc/umbrel-nostr-relay/umbrel.env}
: ${UMBREL_NOSTR_RELAY_DATADIR:=/var/lib/umbrel-nostr-relay}
: ${UMBREL_NOSTR_RELAY_LOGDIR:=/var/log/umbrel-nostr-relay}
: ${UMBREL_NOSTR_RELAY_USER:=umbrel}
: ${UMBREL_NOSTR_RELAY_GROUP:=umbrel}
: ${UMBREL_NOSTR_RELAY_BIN:=/usr/bin/umbrel-nostr-relay}
: ${UMBREL_NOSTR_RELAY_OPTS=${UMBREL_NOSTR_RELAY_OPTS}}
: ${UMBREL_NOSTR_RELAY_SIGTERM_TIMEOUT:=600}
 
UMBREL_NOSTR_RELAY_PIDDIR="/run/umbrel-nostr-relay"
 
directory="${UMBREL_NOSTR_RELAY_DATADIR}"
required_files="${UMBREL_NOSTR_RELAY_ENVFILE}"
pidfile="${UMBREL_NOSTR_RELAY_PIDDIR}/${SVCNAME}.pid"
retry="${UMBREL_NOSTR_RELAY_SIGTERM_TIMEOUT}"
capabilities="^cap_net_bind_service"
 
name="Umbrel Nostr Relay"
description="A Nostr relay webGUI made by Umbrel"
 
command="${UMBREL_NOSTR_RELAY_BIN}"
command_args="--env-file=${UMBREL_NOSTR_RELAY_ENVFILE}
              ${UMBREL_NOSTR_RELAY_OPTS}"
command_user="${UMBREL_NOSTR_RELAY_USER}:${UMBREL_NOSTR_RELAY_GROUP}"
command_background="true"
 
start_stop_daemon_args="--stdout ${UMBREL_NOSTR_RELAY_LOGDIR}/debug.log
                        --stderr ${UMBREL_NOSTR_RELAY_LOGDIR}/debug.log"
 
depend() {
    need nostr-rs-relay
}
 
start_pre() {
    checkpath --directory --mode 0755 --owner "${command_user}" "${UMBREL_NOSTR_RELAY_ENVFILE%/*}"
    checkpath --file      --mode 0660 --owner "${command_user}" "${UMBREL_NOSTR_RELAY_ENVFILE}"
    checkpath --directory --mode 0750 --owner "${command_user}" "${UMBREL_NOSTR_RELAY_DATADIR}"
    checkpath --directory --mode 0755 --owner "${command_user}" "${UMBREL_NOSTR_RELAY_LOGDIR}"
    checkpath --directory --mode 0755 --owner "${command_user}" "${UMBREL_NOSTR_RELAY_PIDDIR}"
}
 
stop() {
    ebegin "Stopping ${SVCNAME}"
    pkill -TERM -P "$(cat ${pidfile})" > /dev/null 2>&1
    start-stop-daemon \
        --stop \
        --pidfile="${pidfile}" \
        --retry="${UMBREL_NOSTR_RELAY_SIGTERM_TIMEOUT}" \
        --exec="${UMBREL_NOSTR_RELAY_BIN}"
    eend $?
}
  • Habilita el permís d’execució
$SU chmod +x /etc/init.d/umbrel-nostr-relay

Habilita logrotate

  • Introduïu la configuració següent completa. Guardar i sortir
/etc/logrotate.d/umbrel-nostr-relay
/var/log/umbrel-nostr-relay/*.log {
    weekly
    missingok
    rotate 104
    compress
    delaycompress
    notifempty
    create 0640 nostr nostr
    sharedscripts
    postrotate
        kill -HUP `cat /run/umbrel-nostr-relay/umbrel-nostr-relay.pid`
    endscript
}
  • Prova
$SU logrotate /etc/logrotate.d/umbrel-nostr-relay --debug

Activa i inicia Nostr relay

$SU rc-update add umbrel-nostr-relay
$SU rc-service umbrel-nostr-relay start
  • Comproveu el registre per veure la sortida de Umbrel Nostr Relay. Sortiu amb Ctrl-C
tail -f /var/log/umbrel-nostr-relay/debug.log
  • Assegura’t que el servei funciona i escolta al port per defecte 8881
$SU netstat -lntup | grep LISTEN | grep umbrel
output
tcp        0      0 0.0.0.0:8881            0.0.0.0:*               LISTEN      7140/umbrel-nostr-relay

Per al futur: actualització de Umbrel Nostr Relay

Torneu a seguir la pàgina Umbrel Nostr Relay 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ó de Umbrel Nostr Relay si cal (vegeu les notes de la versió)
$SU $EDITOR /etc/umbrel-nostr-relay/umbrel.env
  • Reinicieu el servei per aplicar els canvis
$SU rc-service umbrel-nostr-relay restart