# gcloud Skill Common GCP patterns for the apes platform. All commands invoke gcloud/kubectl/docker directly via Bash. **Project:** `apes-platform` **Region:** `europe-west1` **Zone:** `europe-west1-b` ## Current Infrastructure | Service | Host | VM | IP | |---------|------|----|----| | Gitea | git.unslope.com | gitea-vm | 34.78.255.104 | | Chat (planned) | apes.unslope.com | TBD | TBD | ## SSH into VMs ```bash # Gitea VM gcloud compute ssh gitea-vm --zone=europe-west1-b --project=apes-platform # Run a command remotely gcloud compute ssh gitea-vm --zone=europe-west1-b --project=apes-platform --command="sudo docker ps" ``` ## Docker Compose on VMs ```bash # Restart a service gcloud compute ssh --zone=europe-west1-b --project=apes-platform \ --command="sudo bash -c 'cd /opt/ && docker compose restart '" # View logs gcloud compute ssh --zone=europe-west1-b --project=apes-platform \ --command="sudo docker logs --tail 50" # Full redeploy gcloud compute ssh --zone=europe-west1-b --project=apes-platform \ --command="sudo bash -c 'cd /opt/ && docker compose pull && docker compose up -d'" ``` ## Static IPs & DNS ```bash # Reserve a new static IP gcloud compute addresses create --region=europe-west1 --project=apes-platform # Get IP value gcloud compute addresses describe --region=europe-west1 --project=apes-platform --format='value(address)' # DNS: add A record at Namecheap (Advanced DNS tab) pointing subdomain to IP ``` ## Firewall Rules ```bash # List rules gcloud compute firewall-rules list --project=apes-platform # Open a port gcloud compute firewall-rules create --allow=tcp: --target-tags=web-server --project=apes-platform ``` ## New VM Pattern ```bash gcloud compute instances create \ --project=apes-platform \ --zone=europe-west1-b \ --machine-type=e2-small \ --image-family=debian-12 \ --image-project=debian-cloud \ --boot-disk-size=20GB \ --tags=web-server \ --address= \ --metadata-from-file=startup-script= ``` ## IAM ```bash gcloud auth list gcloud projects get-iam-policy apes-platform --format=json ``` ## Troubleshooting | Error | Fix | |-------|-----| | VM SSH timeout | Check firewall: `gcloud compute firewall-rules list --project=apes-platform` | | Docker not running | SSH in, run `sudo systemctl start docker` | | Caddy cert failed | Check DNS propagation: `dig @dns1.registrar-servers.com A +short` | | Container not starting | Check logs: `sudo docker logs --tail 50` | | DNS not resolving | Flush local cache: `sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder` |