Desplegar en cualquier VPS
La guía genérica para un VPS sencillo con Ubuntu o Debian — la base de todas las demás guías por plataforma, con notas de systemd, TLS y cortafuegos.
Esta es la guía genérica para un VPS Linux sencillo (cualquier proveedor — Hetzner, Vultr, Linode, Contabo, tu propio servidor, ...). Las demás guías por plataforma (Digital Ocean, AWS, GCP, Azure) son atajos de esta con sus pasos de cortafuegos específicos del proveedor.
1. Instalar el binario
El script install.sh descarga el último binario publicado para tu arquitectura
(x86_64 / aarch64), verifica su checksum sha256 y lo instala en un directorio del PATH — no se necesita sudo para la propia instalación:
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
nostrfy --version2. Crear una configuración
Obtén la plantilla (sin clonar el repositorio) y edítala:
sudo mkdir -p /etc/nostrfy
sudo curl -fsSL -o /etc/nostrfy/nostrfy.toml \
https://raw.githubusercontent.com/iqbqioza/nostrfy/main/deploy/nostrfy.toml
sudo nano /etc/nostrfy/nostrfy.tomlComo mínimo, configura:
[relay]
name = "My Relay"
public_url = "wss://relay.example.com" # tu dirección pública
private_key = "..." # ejecuta 'nostrfy genkey' en local y pega la clave
[server]
host = "0.0.0.0" # ya configurado en la plantilla
port = 8080Genera la clave secreta con:
nostrfy --config /tmp/nostrfy-genkey.toml init && nostrfy --config /tmp/nostrfy-genkey.toml genkey(O monta tu propio archivo de configuración en lugar de la plantilla — cualquier nostrfy.toml sirve.)
3. Ejecutar como servicio systemd
Obtén la unidad reforzada (sin clonar el repositorio) e iníciala:
sudo curl -fsSL -o /etc/systemd/system/nostrfy.service \
https://raw.githubusercontent.com/iqbqioza/nostrfy/main/deploy/nostrfy.service
sudo systemctl daemon-reload
sudo systemctl enable --now nostrfy
sudo systemctl status nostrfyRegistros:
journalctl -u nostrfy -f4. Abrir el puerto y verificar
Permite TCP 8080 en tu cortafuegos (ufw, cortafuegos en la nube, cortafuegos del host):
sudo ufw allow 8080/tcpVerifica en local y desde fuera:
curl http://localhost:8080/health
curl http://<server-ip>:8080/health # desde tu portátil5. Poner un proxy de terminación TLS delante (para wss://)
El relé sirve WebSocket sin cifrar en el 8080. Para exponerlo como wss://, ejecuta un proxy inverso
en el puerto 443 que termine TLS. El relé respeta X-Forwarded-Proto, así que no se
necesita ninguna configuración especial.
nginx
/etc/nginx/sites-available/relay:
server {
listen 443 ssl;
server_name relay.example.com;
ssl_certificate /etc/letsencrypt/live/relay.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/relay.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Obtén un certificado gratuito con certbot (sudo certbot --nginx -d relay.example.com).
Caddy
(TLS automático, un archivo):
relay.example.com {
reverse_proxy 127.0.0.1:8080
}Anfitrión multimedia Blossom también
Cuando se configura blossom.host = "media.example.com", ese nombre de host también debe llegar al
mismo puerto — el relé separa los hosts internamente (como server.api_host). Añade un
segundo bloque server / sitio para él:
server {
listen 443 ssl;
server_name media.example.com;
ssl_certificate /etc/letsencrypt/live/media.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/media.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}media.example.com {
reverse_proxy 127.0.0.1:8080
}Asegúrate de que relay.public_url en la configuración coincida con wss://relay.example.com.
6. Copias de seguridad
Detén el relé, copia el directorio de datos, reinicia:
sudo systemctl stop nostrfy
sudo tar -czf nostrfy-data-backup.tar.gz /var/lib/nostrfy # tu database.path
sudo systemctl start nostrfyActualizaciones
# las instalaciones por tubería nunca piden confirmación: usa --force para sobrescribir un
# binario existente (o ejecuta el script desde un terminal y responde y/N)
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh -s -- --force
sudo systemctl restart nostrfy