Desplegar en Google Cloud

Despliega nostrfy en Google Cloud Compute Engine o Cloud Run — paso a paso, con systemd, TLS y las advertencias de escalado a cero.

Opciones: Compute Engine (VM, recomendado) o Cloud Run (contenedores).

Opción 1: Compute Engine (recomendado)

  1. Crea una VM: Ubuntu 24.04 LTS (o Debian), e2-small (2 GB) es suficiente para empezar. Elige una región cercana a tus usuarios.
  2. Regla de firewall: permite TCP entrante 8080 (y 443 para TLS). En Red → Firewall, crea una regla con las etiquetas de destino que asignaste a la VM.
  3. Conéctate por SSH (funciona el botón SSH de la consola) y sigue la guía genérica de VPS:
sh
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
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
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
  1. Reserva una IP estática (IP externa → Reservar) para que public_url siga siendo válida tras los reinicios.
  2. Verifica:
sh
curl http://<external-ip>:8080/health
  1. Añade TLS (wss://) con certbot + nginx (como en la guía de VPS) o un balanceador de carga de GCP con un certificado gestionado.

Opción 2: Cloud Run (contenedor)

Cloud Run compila desde el Dockerfile del repositorio (que descarga el binario precompilado de la release):

  1. Crea un servicio desde el repo de GitHub (o sube la imagen a Artifact Registry).
  2. Puerto: establece el puerto del contenedor en 8080.
  3. Asigna memoria: al menos 512 MB (LMDB + el runtime asíncrono).
  4. Almacenamiento persistente: adjunta un volumen de Cloud Run (filestore/gcsfuse) en /data — LMDB necesita un sistema de archivos, por lo que un montaje GCS FUSE en /data sirve para la persistencia.
  5. TLS: Cloud Run proporciona https:// automáticamente — establece relay.public_url = "wss://<service>.a.run.app" (o tu dominio personalizado).
Cloud Run escala a cero por defecto
Para un relé, establece min instances = 1 para que nunca se enfríe. El deploy/nostrfy.container.toml integrado en la imagen se puede reemplazar montando tu propio nostrfy.toml en /etc/nostrfy/nostrfy.toml.