Get the FREE Ultimate OpenClaw Setup Guide →

server-management

npx machina-cli add skill The-Focus-AI/marina-skill/server-management --openclaw
Files (1)
SKILL.md
2.7 KB

Server Management Skill

You help manage Hetzner Cloud servers.

Setup

  1. Run bash ${CLAUDE_PLUGIN_ROOT}/scripts/check-deps.sh to verify hcloud and other tools are available.
  2. If .claude/marina-skill.local.md exists in the current project, read it for overrides like server_type, image, and caddy_email.

Scripts

All server operations use ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh:

List servers

bash ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh list

Get server IP

bash ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh ip <name>

Create a server

bash ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh add <name>

Default type cax11 (ARM), image debian-13. Override with env vars:

SERVER_TYPE=cx23 IMAGE=debian-13 bash ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh add <name>

After creating, the server needs to be bootstrapped and have DNS configured. Suggest running /marina-server or using the server-bootstrap and dns-management skills.

Delete a server

bash ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh rm <name>

DESTRUCTIVE. Always require explicit user confirmation. Show the server name and IP before deleting.

Domain Discovery

To see what domains the user manages, use the dns skill's zone listing:

bash ${CLAUDE_PLUGIN_ROOT}/scripts/dns.sh list-zones

To see DNS records pointing to a server's IP, list records for the zone and filter by IP:

bash ${CLAUDE_PLUGIN_ROOT}/scripts/dns.sh list <domain> | grep <server_ip>

Workflow: Create + Bootstrap + DNS

A full server setup is:

  1. server.sh add <name> — create the Hetzner server
  2. Wait ~5 seconds for it to come online
  3. server.sh ip <name> — get the IP
  4. dns.sh add <name>.<domain> <ip> — add DNS record
  5. bootstrap.sh full <ip> — bootstrap Docker, Caddy, deploy user

Workflow: Nuke a Server

  1. dns.sh list <domain> | grep <server_ip> — find all DNS records for this server
  2. dns.sh rm <fqdn> for each record — remove DNS entries
  3. server.sh rm <name> — delete the server
  4. Always confirm with user before each destructive step.

Behavior

  • Always list current servers first so the user can see what exists
  • When creating servers, suggest a sensible name based on context
  • When nuking, show associated DNS names first and require explicit confirmation
  • If hcloud is not configured, help the user with hcloud context create

Source

git clone https://github.com/The-Focus-AI/marina-skill/blob/main/skills/server-management/SKILL.mdView on GitHub

Overview

Manages Hetzner Cloud servers using the provided server.sh suite. You can list existing servers, create new ones with sensible defaults or overrides, fetch IP addresses, and delete servers with explicit confirmation. After creation, you should bootstrap and configure DNS as part of the full workflow.

How This Skill Works

Operations are executed through ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh with commands like list, ip, add, and rm. Setup verifies dependencies (hcloud and friends) and can read overrides from .claude/marina-skill.local.md to customize server_type and image. Destructive actions require explicit user confirmation and display the target server details before proceeding.

When to Use It

  • When you need a current list of all Hetzner servers.
  • When you want to create a new server with optional type and image overrides.
  • When you need the IP address for a specific server.
  • When you must delete a server with explicit confirmation.
  • When performing a full create, bootstrap, and DNS workflow.

Quick Start

  1. Step 1: list existing servers with bash ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh list
  2. Step 2: create a new server, e.g. SERVER_TYPE=cx23 IMAGE=debian-13 bash ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh add <name>
  3. Step 3: get the IP with bash ${CLAUDE_PLUGIN_ROOT}/scripts/server.sh ip <name> (then wire DNS and bootstrap as needed)

Best Practices

  • Always list current servers first before taking action.
  • Use the overrides file (.claude/marina-skill.local.md) to customize server_type and image.
  • Require explicit confirmation before any destructive delete.
  • Wait a few seconds after creation before querying IPs.
  • After creating, bootstrap the server and configure DNS as described by the workflow.

Example Use Cases

  • A user asks to list servers and receives the current roster.
  • A server named 'web-prod' is created using default or overridden type/image.
  • The IP of server 'web-prod' is retrieved with server.sh ip <name>.
  • The user nukes a server only after confirming and inspecting its DNS entries.
  • A full create–bootstrap–DNS sequence is executed: create, wait, get IP, add DNS, bootstrap.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers