Déployer sur Google Cloud

Déployez nostrfy sur Google Cloud Compute Engine ou Cloud Run — étape par étape, avec systemd, TLS et les réserves sur la mise à l’échelle à zéro.

Options : Compute Engine (VM, recommandé) ou Cloud Run (conteneurs).

Option 1 : Compute Engine (recommandé)

  1. Créer une VM : Ubuntu 24.04 LTS (ou Debian), e2-small (2 Go) suffit pour commencer. Choisissez une région proche de vos utilisateurs.
  2. Règle de pare-feu : autoriser le TCP entrant 8080 (et 443 pour TLS). Sous Réseau → Pare-feu, créez une règle avec les tags cibles attribués à la VM.
  3. Connectez-vous en SSH (le bouton SSH de la console fonctionne) et suivez le guide VPS générique :
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                 # définissez name, public_url, 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. Réservez une IP statique (IP externe → Réserver) pour que public_url reste valide après les redémarrages.
  2. Vérifiez :
sh
curl http://<external-ip>:8080/health
  1. Ajoutez TLS (wss://) avec certbot + nginx (comme dans le guide VPS) ou un équilibreur de charge GCP avec un certificat géré.

Option 2 : Cloud Run (conteneur)

Cloud Run construit à partir du Dockerfile du dépôt (qui télécharge le binaire précompilé de la release) :

  1. Créez un service depuis le dépôt GitHub (ou poussez l’image vers Artifact Registry).
  2. Port : définissez le port du conteneur sur 8080.
  3. Allouez de la mémoire : au moins 512 Mo (LMDB + runtime asynchrone).
  4. Stockage persistant : attachez un volume Cloud Run (filestore/gcsfuse) sur /data — LMDB a besoin d’un système de fichiers, donc un montage GCS FUSE sur /data convient pour la persistance.
  5. TLS : Cloud Run fournit https:// automatiquement — définissez relay.public_url = "wss://<service>.a.run.app" (ou votre domaine personnalisé).
Cloud Run passe à zéro par défaut
Pour un relais, définissez min instances = 1 pour qu’il ne refroidisse jamais. Le fichier deploy/nostrfy.container.toml intégré à l’image peut être remplacé en montant votre propre nostrfy.toml sur /etc/nostrfy/nostrfy.toml.