4.7 KiB
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
- Cuenta de Google Cloud con billing habilitado
- gcloud CLI instalado y configurado
- Proyecto de Google Cloud creado
- 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-vmcon 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:
-
SSL/TLS → Overview
- Encryption mode:
FlexibleoFull
- Encryption mode:
-
SSL/TLS → Edge Certificates
- Always Use HTTPS:
On - HTTP Strict Transport Security:
On
- Always Use HTTPS:
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- Frontendhttp://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 archivokey.jsonGCLOUD_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
digonslookup
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)