Resumen de despliegue

Cómo se distribuye nostrfy y cómo desplegarlo — Fly.io, AWS, Google Cloud, Azure, DigitalOcean o cualquier VPS, con notas sobre TLS, systemd y contenedores.

Un binario, varias plataformas

nostrfy ofrece binarios precompilados para x86_64 y aarch64 (artefactos de release de GitHub, verificados por checksum con install.sh), una imagen de contenedor que descarga esos binarios (sin necesidad de compilar) y guías de despliegue para las principales plataformas.

Plataformas

PlataformaTipoGuía
Fly.ioPlataforma gestionada (contenedores, volúmenes, TLS)fly.md
Digital OceanDroplet (VM) o App Platformdeploy/digitalocean.md
AWSEC2 (VM), Lightsail o ECSdeploy/aws.md
Google CloudCompute Engine (VM) o Cloud Rundeploy/gcp.md
AzureVM o Container Appsdeploy/azure.md
Cualquier VPSServidor Ubuntu/Debian estándardeploy/vps.md

El patrón común para VM

Todas las guías de VM (Digital Ocean, AWS EC2, GCP, Azure, cualquier VPS) siguen el mismo patrón:

sh
# 1. Instala el último binario de la release (no necesitas sudo para instalarlo)
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh

# 2. Descarga la plantilla de configuración y edítala (no necesitas clonar el repositorio)
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.toml                   # configura name, public_url y private_key

# 3. Descarga la unidad systemd e inicia el servicio
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

# 4. Abre el puerto (normalmente 8080) en el cortafuegos del proveedor y verifica
curl http://localhost:8080/health

Antes de salir a producción

Cada despliegue usa las mismas opciones de nostrfy.toml. Antes de salir a producción, configura al menos:

toml
[relay]
name = "My Relay"
public_url = "wss://relay.example.com"   # obligatorio para NIP-42 AUTH / NIP-62 / NIP-98
private_key = ""                          # ejecuta 'nostrfy genkey' y pega la clave

¿VM o contenedor?

  • VM (systemd): lo más simple, barato y con control total. Recomendado para la mayoría de despliegues de relés.
  • Contenedor: usa el Dockerfile del repositorio (descarga el binario de release en el momento de la construcción) en Fly.io, Digital Ocean App Platform, AWS ECS, GCP Cloud Run o Azure Container Apps. Se requiere almacenamiento persistente para los datos LMDB (/data).

Anfitrión multimedia Blossom

Si blossom.host está configurado, apunta ese nombre de host al mismo puerto en el proxy TLS (consulta los bloques nginx/Caddy en la guía de VPS).

TLS lo termina tu proxy o el proveedor
El relé sirve WebSocket sin cifrar en el puerto 8080 y respeta X-Forwarded-Proto.