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)
- 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. - Regla de firewall: permite TCP entrante
8080(y443para TLS). En Red → Firewall, crea una regla con las etiquetas de destino que asignaste a la VM. - 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- Reserva una IP estática (IP externa → Reservar) para que
public_urlsiga siendo válida tras los reinicios. - Verifica:
sh
curl http://<external-ip>:8080/health- 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):
- Crea un servicio desde el repo de GitHub (o sube la imagen a Artifact Registry).
- Puerto: establece el puerto del contenedor en
8080. - Asigna memoria: al menos 512 MB (LMDB + el runtime asíncrono).
- 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/datasirve para la persistencia. - TLS: Cloud Run proporciona
https://automáticamente — establecerelay.public_url = "wss://<service>.a.run.app"(o tu dominio personalizado).