Files
snatchgame/deploy/DEPLOY-GCLOUD.md
josedario87 fa94330ace
Some checks failed
build-and-deploy / build (push) Failing after 6s
build-and-deploy / deploy (push) Has been skipped
Organizar archivos de deployment en carpeta deploy/
2025-08-15 17:50:33 -06:00

4.7 KiB

Despliegue en Google Cloud

Esta guía explica cómo desplegar SnatchGame en Google Cloud Platform usando una VM de Compute Engine.

Requisitos Previos

  1. Cuenta de Google Cloud con billing habilitado
  2. gcloud CLI instalado y configurado
  3. Proyecto de Google Cloud creado
  4. Dominio configurado en Cloudflare

Paso 1: Configurar Google Cloud

Instalar gcloud CLI

# En tu máquina local
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init

Configurar proyecto

# Listar proyectos disponibles
gcloud projects list

# Configurar proyecto activo
gcloud config set project TU_PROJECT_ID

# Habilitar APIs necesarias
gcloud services enable compute.googleapis.com

Paso 2: Crear la VM

Editar configuración

Edita deploy/gcloud/create-vm.sh y cambia:

PROJECT_ID="tu-proyecto-gcloud"  # Por tu project ID real

Ejecutar creación

cd deploy/gcloud
chmod +x *.sh
./create-vm.sh

Esto creará:

  • VM snatchgame-vm con Ubuntu 20.04
  • Tipo e2-micro (1 vCPU, 1GB RAM)
  • Disco de 20GB
  • Nginx configurado automáticamente
  • Docker instalado
  • Tu aplicación desplegada

Paso 3: Configurar DNS en Cloudflare

Una vez creada la VM, obtendrás una IP externa. Configura en Cloudflare:

Type: A
Name: snatchgame
Content: IP_EXTERNA_DE_LA_VM
Proxy status: Proxied (naranja)
TTL: Auto

Paso 4: Configurar SSL en Cloudflare

En el dashboard de Cloudflare:

  1. SSL/TLS → Overview

    • Encryption mode: Flexible o Full
  2. SSL/TLS → Edge Certificates

    • Always Use HTTPS: On
    • HTTP Strict Transport Security: On

Paso 5: Verificar Deployment

Verificar VM

# Conectarse a la VM
gcloud compute ssh snatchgame-vm --zone=us-central1-a

# Verificar servicios
sudo systemctl status nginx
sudo systemctl status docker
docker ps

# Ver logs
docker logs snatchgame

Verificar URLs

  • http://snatchgame.nucleoriofrio.com - Frontend
  • http://snatchgame.nucleoriofrio.com/colyseus - Monitor

Paso 6: Configurar Deployment Automático (Opcional)

Crear Service Account

# Crear service account
gcloud iam service-accounts create gitea-deployer \
    --display-name="Gitea Deployer"

# Asignar permisos
gcloud projects add-iam-policy-binding TU_PROJECT_ID \
    --member="serviceAccount:gitea-deployer@TU_PROJECT_ID.iam.gserviceaccount.com" \
    --role="roles/compute.instanceAdmin"

# Crear key
gcloud iam service-accounts keys create key.json \
    --iam-account=gitea-deployer@TU_PROJECT_ID.iam.gserviceaccount.com

Configurar secrets en Gitea

En tu repositorio de Gitea, agrega estos secrets:

  • GCLOUD_SERVICE_KEY: Contenido del archivo key.json
  • GCLOUD_PROJECT_ID: Tu project ID

Activar workflow

El archivo .gitea/workflows/deploy-gcloud.yml se ejecutará automáticamente cuando pushees a la rama production.

Actualización Manual

Para actualizar manualmente:

cd deploy/gcloud
./update-deployment.sh

Monitoreo y Logs

Ver logs de la aplicación

gcloud compute ssh snatchgame-vm --zone=us-central1-a
docker logs -f snatchgame

Ver logs de nginx

gcloud compute ssh snatchgame-vm --zone=us-central1-a
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

Monitoreo de recursos

# Conectarse a la VM
gcloud compute ssh snatchgame-vm --zone=us-central1-a

# Ver uso de recursos
htop
docker stats

Costos Estimados

  • VM e2-micro: ~$7/mes
  • Disco 20GB: ~$0.80/mes
  • Tráfico de red: ~$0.12/GB
  • Total estimado: ~$8-10/mes

Troubleshooting

VM no responde

# Reiniciar VM
gcloud compute instances reset snatchgame-vm --zone=us-central1-a

# Verificar startup script
gcloud compute ssh snatchgame-vm --zone=us-central1-a
sudo tail -f /var/log/syslog

Aplicación no funciona

# Conectarse a VM
gcloud compute ssh snatchgame-vm --zone=us-central1-a

# Verificar contenedor
docker ps
docker logs snatchgame

# Redesplegar
sudo /opt/deploy-snatchgame.sh

DNS no resuelve

  • Verificar configuración en Cloudflare
  • Esperar propagación DNS (puede tomar hasta 24h)
  • Usar herramientas como dig o nslookup

Scaling y Optimización

Aumentar recursos de VM

# Parar VM
gcloud compute instances stop snatchgame-vm --zone=us-central1-a

# Cambiar tipo de máquina
gcloud compute instances set-machine-type snatchgame-vm \
    --machine-type=e2-small --zone=us-central1-a

# Iniciar VM
gcloud compute instances start snatchgame-vm --zone=us-central1-a

Backup automático

# Crear snapshot del disco
gcloud compute disks snapshot snatchgame-vm \
    --zone=us-central1-a \
    --snapshot-names=snatchgame-backup-$(date +%Y%m%d)