google-agents-cli-scaffold
Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
hetzner-temp-host
Automate deployment of services from GitHub repositories to temporary Hetzner Cloud hosts with ZeroTier integration. Use this skill when users need to quickly spin up a service from a GitHub repo on a disposable VM, connected to an existing ZeroTier network. Supports Docker Compose deployments wi...
Full skill instructions
Rapidly deploy services from GitHub repositories to temporary Hetzner Cloud VMs with automatic ZeroTier network integration. This skill automates the entire workflow: provision a VM, join it to your existing ZeroTier network, clone a GitHub repo, deploy with Docker Compose, and verify the service is healthy. Perfect for testing, demos, or temporary service deployments.
Use this skill when users request:
To deploy a service from GitHub to a temporary host:
assets/terraform-hetzner-temp-host/ to working directory~/.ssh/id_ed25519)scripts/deploy_host.sh or manually with TerraformThe Terraform templates support flexible host configurations:
Server Types (CCX Line):
ccx13: 2 vCPU, 8GB RAM, 80GB NVMe (~$8.90/month, ~$0.012/hour) - Defaultccx23: 4 vCPU, 16GB RAM, 160GB NVMe (~$17.80/month, ~$0.025/hour)ccx33: 8 vCPU, 32GB RAM, 240GB NVMe (~$35.60/month, ~$0.049/hour)Datacenters:
hillsboro: Hillsboro, OR, USA (hil-dc1) - Defaultsingapore: Singapore (sin-dc1)germany: Falkenstein, Germany (fsn1-dc14)Example Configuration:
host_name = "temp-api-server"
server_type = "ccx13"
datacenter = "hillsboro"
github_repo_url = "https://github.com/user/my-service"
zerotier_network = "1c33c1ced02a5a44"
Docker Compose Workflow:
/opt/appdocker compose up -d executed in repo directoryRequirements:
docker-compose.yml or compose.yaml fileSupported Deployment Patterns:
Join Existing Network:
Configuration Methods:
Method A: Environment Variable (Recommended for security)
export ZEROTIER_NETWORK_ID='1c33c1ced02a5a44'
export ZEROTIER_API_TOKEN='your-zerotier-api-token'
export HCLOUD_TOKEN='your-hetzner-api-token'
Method B: Terraform Variables
zerotier_network = "1c33c1ced02a5a44"
zerotier_api_token = "your-zerotier-api-token"
Method C: Mixed (Network ID in config, token in env)
export ZEROTIER_API_TOKEN='your-zerotier-api-token'
export HCLOUD_TOKEN='your-hetzner-api-token'
zerotier_network = "1c33c1ced02a5a44"
Authorization:
zerotier-cli listnetworksAutomatic Service Verification:
Health Check Options:
# Basic check (Docker containers running)
health_check_enabled = true
# HTTP endpoint check
health_check_url = "http://localhost:8080/health"
health_check_url = "http://localhost:3000/api/status"
# Disable health checks
health_check_enabled = false
Example Health Check Output:
Outputs:
health_status = {
"docker_running" = true
"containers_up" = 3
"endpoint_healthy" = true
"zerotier_connected" = true
}
Method A: Using the Helper Script (Recommended)
The scripts/deploy_host.sh script automates the entire deployment:
# Copy script to working directory
cp scripts/deploy_host.sh .
chmod +x deploy_host.sh
# Set required tokens
export HCLOUD_TOKEN='your-hetzner-api-token'
export ZEROTIER_API_TOKEN='your-zerotier-api-token'
export ZEROTIER_NETWORK_ID='your-network-id'
# Deploy with repository URL
./deploy_host.sh https://github.com/user/my-service
# Deploy with custom configuration
./deploy_host.sh https://github.com/user/my-api my-api-host ccx23 singapore
The script will:
terraform.tfvars with configurationMethod B: Manual Deployment
For more control:
Copy Terraform templates:
cp -r assets/terraform-hetzner-temp-host/* ./
Create terraform.tfvars:
hcloud_token = "your-hetzner-api-token"
zerotier_api_token = "your-zerotier-api-token"
zerotier_network = "1c33c1ced02a5a44"
host_name = "my-temp-host"
github_repo_url = "https://github.com/user/my-service"
server_type = "ccx13"
datacenter = "hillsboro"
ssh_private_key_path = "~/.ssh/id_ed25519"
health_check_enabled = true
health_check_url = "http://localhost:8080/health"
Deploy:
terraform init
terraform plan
terraform apply
View outputs:
terraform output
terraform output zerotier_ip
terraform output service_url
SSH Access:
# Via public IP
ssh root@<public-ip>
# Via ZeroTier IP (after authorization)
ssh root@<zerotier-ip>
# Get SSH command from Terraform
terraform output -raw ssh_command
Service Access:
# Get service URL
terraform output service_url
# Access via public IP
curl http://<public-ip>:<port>
# Access via ZeroTier (from any device on the network)
curl http://<zerotier-ip>:<port>
Docker Management:
# View running containers
ssh root@<host> 'docker ps'
# View logs
ssh root@<host> 'docker compose -f /opt/app/docker-compose.yml logs'
# Restart services
ssh root@<host> 'docker compose -f /opt/app/docker-compose.yml restart'
Check service status:
terraform output health_status
ssh root@<host> 'docker ps'
ssh root@<host> 'zerotier-cli listnetworks'
Redeploy service:
ssh root@<host> 'cd /opt/app && git pull && docker compose down && docker compose up -d'
Destroy host:
terraform destroy
Cost Management:
User request: "Deploy my web app from GitHub to a temporary server on my ZeroTier network"
export HCLOUD_TOKEN='...'
export ZEROTIER_API_TOKEN='...'
export ZEROTIER_NETWORK_ID='...'
./deploy_host.sh https://github.com/user/webapp my-webapp
terraform destroyUser request: "I need to test my microservices stack with Redis and Postgres before deploying to production"
docker-compose.yml with all services./deploy_host.sh https://github.com/user/microservices test-stack ccx23
terraform destroyUser request: "Create a temporary demo environment for a client presentation tomorrow"
./deploy_host.sh https://github.com/company/demo-app client-demo
terraform output public_iphttp://<public-ip>:<port>terraform destroyUser request: "I want to deploy a feature branch to test it in a real environment"
github_repo_url in terraform.tfvars:
github_repo_url = "https://github.com/user/repo#feature-branch"
terraform applySSH key pair not found:
~/.ssh/id_ed25519 and ~/.ssh/id_ed25519.pub existssh-keygen -t ed25519export SSH_KEY_PATH="/path/to/key"GitHub clone fails:
https://username:[email protected]/user/repoDocker Compose not found in repo:
docker-compose.yml or compose.yamlgit clone <repo> && cd <repo> && docker compose configContainers fail to start:
ssh root@<host> 'docker compose -f /opt/app/docker-compose.yml logs'ZeroTier node not joining:
ssh root@<host> 'zerotier-cli listnetworks'ZeroTier not authorized:
zerotier-cli listnetworksHealth checks failing:
docker pscurl http://localhost:<port>health_check_enabled = falseProvisioner timeout:
chmod 600 ~/.ssh/id_ed25519deploy_host.sh: Complete deployment automation with validation and interactive promptshealth_check.sh: Service health verification script (used by Terraform provisioners)terraform-hetzner-temp-host/: Terraform templates for temporary host deployment
main.tf: Core infrastructure (server, firewall, ZeroTier, provisioning)variables.tf: Input variables with validation and defaultsoutputs.tf: Connection info, service details, health statusversions.tf: Terraform and provider requirementsterraform.tfvars.example: Example configurationdocker compose up before deploying to cloudBased on Hetzner Cloud hourly billing:
| Scenario | Server | Duration | Cost |
|---|---|---|---|
| Quick test | ccx13 | 2 hours | ~$0.02 |
| Day of testing | ccx13 | 24 hours | ~$0.29 |
| Week demo | ccx13 | 7 days | ~$2.00 |
| Load testing | ccx23 | 4 hours | ~$0.10 |
| Client presentation | ccx13 | 3 days | ~$0.87 |
Remember: Costs accumulate while the host exists. Always terraform destroy when finished!
Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
Set up tracing, logging, and monitoring for deployed ADK agents across Cloud Trace, BigQuery, and third-party platforms.
Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.
Plan and configure production-ready Azure Kubernetes Service clusters with Day-0 and Day-1 best practices.
Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.
Web search, scraping, extraction, crawling, and monitoring via ScrapeGraph AI CLI.
Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.
Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.
Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".
Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.
Design and build isolated, reusable Convex backend components with clear boundaries and app-facing wrappers.
Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".
Opus.ai: Revolutionize Your Web Experience
Build a no-code AI app in minutes.
An IDE for code migration from legacy to modern frameworks through coding agents.
Automate CGI animation in live-action scenes
Branded artistic QR-code concepts
Launch a website in seconds with AI.
Streamline Your Coding Experience with AI Code Helper
Convert any screenshot or design to clean code.