This skill should be used when the user asks to "provision a VPS", "create a Hetzner server", "spin up a cloud server", "launch a Hetzner instance", "set up a cloud server for Claude Code", "deploy Claude Code to a server", "create a VPS for Claude", or mentions Hetzner Cloud provisioning. Automates VPS creation with Claude Code pre-installed.
Provision Hetzner Cloud VPS instances with Claude Code pre-installed.
Invoke the hetzner-preflight-check agent to verify prerequisites and gather options dynamically.
The agent verifies hcloud CLI, validates token, and returns available:
Use AskUserQuestion to collect:
| Option | Required | Default | |--------|----------|---------| | Server name | Yes | - | | SSH key | Yes | - | | Location | Yes | - | | Server type | No | Cheapest 4 vCPU, 8 GB option | | Terminal setup | No | No | | ccstatusline setup | No | No |
Recommendations:
Call provision.sh with explicit flags:
${CLAUDE_PLUGIN_ROOT}/skills/provision/scripts/provision.sh \
--name <server-name> \
--ssh-key <key-name> \
--location <location> \
--type <selected-type> \
--terminal-setup # Optional: copy zsh/oh-my-zsh/p10k
--statusline-setup # Optional: install bun + ccstatusline
After successful provisioning, provide the user with:
SSH access: ssh claude@<ip>
Next steps: claude
Interactive SSH (recommended for daily use):
# Connect to the server
ssh claude@<ip>
# Claude is available in PATH for interactive sessions
claude --version
claude
Non-interactive SSH verification:
# Use full path for non-interactive SSH commands
ssh claude@<ip> "~/.local/bin/claude --version"
Note: Non-interactive SSH commands (e.g., ssh user@host "command") don't source shell profiles, so the claude command won't be in PATH. Always use the full path ~/.local/bin/claude for non-interactive verification. Interactive sessions work normally.
| Flag | Description |
|------|-------------|
| --name | Server name (must be unique) |
| --ssh-key | SSH key name from Hetzner Cloud |
| --location | Datacenter (fsn1, nbg1, ash, hil, hel1, sin) |
| --type | Server type (from preflight recommendation) |
| --user | Non-root username (default: claude) |
| --terminal-setup | Copy local zsh/oh-my-zsh/p10k config |
| --statusline-setup | Install bun and copy statusLine settings |
| Script | Purpose |
|--------|---------|
| ${CLAUDE_PLUGIN_ROOT}/skills/provision/scripts/provision.sh | Create VPS with Claude Code |
| ${CLAUDE_PLUGIN_ROOT}/skills/provision/scripts/status.sh | Check VPS health |
| ${CLAUDE_PLUGIN_ROOT}/skills/provision/scripts/ssh-command.sh | Execute remote commands |
| ${CLAUDE_PLUGIN_ROOT}/skills/provision/scripts/inject-secret.sh | Inject other secrets (databases, APIs) |
First-time setup requirements (see references/prerequisites.md):
When --terminal-setup is provided, copies from local machine:
~/.zshrc, ~/.oh-my-zsh/, ~/.p10k.zsh~/.config/ccstatusline/When --statusline-setup is also provided:
~/.claude/settings.json with statusLine (uses full path to bunx)See references/troubleshooting.md for:
See references/security-best-practices.md for:
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer