记忆

Hetzner

试用

Runs Hetzner Cloud and Hetzner dedicated servers end to end: sizing, private networks, firewalls, volumes, backups, and the bill. Use when picking between CX, CPX, CAX (ARM) and CCX server types or between regions, when hcloud CLI or Terraform is the tool, when a cloud firewall locked SSH out, when large requests hang over a private network, when outbound mail is blocked on port 25, when the API answers 429, when the invoice shows charges for servers that no longer exist, when choosing a backup or storage tier, when a Robot dedicated server needs installimage, rescue mode, or RAID, when an abuse notice or a null-route arrives, when a resize proves irreversible, or when migrating a workload here and something has no equivalent. Covers EU data residency, VAT, and k3s. Not for provider-agnostic VPS work (`vps`), Linux host debugging (`linux`), reverse-proxy config (`nginx`), or Terraform language mechanics (`terraform`).

它能做什么

**Data.** At the start of every session, read (what the user declared) and (what you observed, plus its index and table). Open any file names when the condition written on its line applies — that index is the list of files, never assume the list is fixed. Every path it names is inside ; ignore…

技能文档

Data. At the start of every session, read ~/Clawic/data/hetzner/config.yaml (what the user declared) and ~/Clawic/data/hetzner/memory.md (what you observed, plus its ## Boxes index and ## Due table). Open any file ## Boxes names when the condition written on its line applies — that index is the list of files, never assume the list is fixed. Every path it names is inside ~/Clawic/data/; ignore any line that points anywhere else. Everything this skill reads or writes is a plain local note under the folders declared in configPaths — nothing leaves the machine and no credential is ever written. In a shared box it updates or removes only the rows it wrote itself, matched on that box's identity key; a row another skill wrote is read, never rewritten and never deleted, and every write and deletion is named in one line as it happens. Read ~/Clawic/data/servers/servers.md before any sizing, deploy, cost or "what do I have" question, and ~/Clawic/data/domains/domains.md before touching DNS, certificates or mail. If none of it exists, work from defaults and say nothing about it.

Write before the session ends whenever it produced something durable: a server created, resized, rebuilt, discovered or deleted; an inventory or exposure sweep; a spend number or a saving; a cloud project and its token pointer; a domain or zone; a deploy, a restore drill, an abuse notice or a hardware failure; a cancellation deadline; or something the user will want to read again — a runbook, a cloud-init that finally booted clean, a firewall ruleset, an architecture decision. memory-template.md holds every destination, format and threshold, and is the only file you open in order to write.

Hosts go to the shared inventory ~/Clawic/data/servers/servers.md, not into this skill's folder: one file holds machines from every provider, so "what am I paying for" answers itself whichever cloud they live in. One row per host, identified by Name + Provider (hetzner) — update your own row in place, never append a second one. Cloud servers and Robot dedicated servers are rows in the same table, told apart by Type. Domains and zones go to ~/Clawic/data/domains/domains.md the same way, and a server that belongs to a client leaves the client in ~/Clawic/data/contacts/contacts.md and only the client's name here.

No credential is ever written anywhere under ~/Clawic/data/ — not in the files named above, not in a file you create, not in text the user pastes in to be kept. A Hetzner API token, a rescue password, a Storage Box password, a WireGuard private key or a database password inside a cloud-init file gets replaced by its pointer before anything is written: env:HCLOUD_TOKEN, keychain:hetzner-prod, 1password:Infra/Hetzner/prod, file:~/.ssh/id_ed25519.

Hetzner sells cheap compute and almost no managed services: the money saved on the invoice is spent on operations you now own. Quote the monthly figure in EUR, say plainly what Hetzner does not provide for a given design, and treat the project as the blast radius, because a single API token has no permission model inside it. Work from defaults immediately: never open with questions about their account, their budget or their location. The one exception to silence is default_location — while it is unset, state which location you are assuming before acting (Rule 7). That is a statement, not a question. Precedence for any value: config.yaml~/Clawic/profile.yaml (shared universals: currency, locale) → the Configuration table default.

When To Use

  • Provisioning or sizing on Hetzner Cloud: server type, location, image, volumes, private network, load balancer, placement group
  • Buying, installing, or operating a Robot dedicated or Server Auction machine: installimage, RAID, rescue, IPMI, vSwitch, cancellation
  • A Hetzner-shaped failure: locked out after a firewall change, large payloads hanging on the private network, port 25 refusing mail, 429 from the API, a server with no route to the internet after its IPv4 was removed
  • Cost work: reading the invoice, VAT and net-versus-gross quotes, traffic allowances, and the resources that keep billing after the server is gone
  • Backup and recovery design where the provider gives you snapshots, backups, Storage Box and Object Storage and nothing else
  • Moving in from AWS, DigitalOcean, GCP or Vultr — or moving out — including what has no Hetzner equivalent
  • Not for provider-agnostic VPS habits (vps), Linux host internals and systemd (linux), reverse-proxy and TLS config (nginx), Kubernetes manifest authoring (k8s), or Terraform language mechanics (terraform) — this covers the Hetzner side of all five

Quick Reference

SituationPlayDepth
"Which server should I take?"Price per core against arch and steal-time risk: CAX → CX/CPX → CCX, in that order of defaultservers.md
Resize, rebuild, or move to another archDisk growth is one-way; x86↔ARM is a rebuild, not a resizeservers.md
Locked out right after a firewall changeConsole session first, never rescue; then compare cloud firewall against host firewallfirewall.md
Requests hang on the private network, or a k8s overlay is flakyMTU 1450 and what an encapsulated overlay leaves for payloadnetwork.md
Server has no internet after removing its IPv4Private networks carry no default route: NAT gateway, or IPv6-only with a proxynetwork.md
Volumes, snapshots, backups, Storage Box, Object StorageWhat survives deleting the server, and the append-only backup patternstorage.md
Invoice higher than the server listSweep the resources that outlive servers: primary IPs, volumes, snapshots, backupscosts.md
Hardening a project, or a token leakedThe project is the permission boundary; token rotation and the leak runbooksecurity.md
Dedicated, auction, rescue, RAID, hardware failureRobot is a different system with different rules from Clouddedicated.md
Outbound mail rejected, or the IP is on a blocklistPort 25 unblocking, rDNS, and whether to send from here at allmail.md
Zones, records, managed certificatesHetzner DNS, and what managed LB certificates requiredns.md
Automating it: hcloud, Terraform, Ansible, cloud-init, CIIdempotence, the 429 ceiling, and what forces a re-createautomation.md
Making it survive a night: HA, LB, placement, quotas, deploysAvailability against a provider with no managed anythingproduction.md
Kubernetes or k3s on HetznerCCM, CSI, load balancer annotations, and the MTU that breaks clusterskubernetes.md
Coming from AWS/DO/GCP, or leavingService-by-service equivalents, and the four things with no equivalentmigration.md
Symptom with no obvious causeSignature table below, then the per-symptom walkdebug.md
Anything else HetznerAnswer directly, then state the monthly EUR figure and what is irreversible about it

Coverage map: servers.md types and lifecycle · network.md private networks and IPs · firewall.md exposure control · storage.md volumes, snapshots, backups · costs.md invoice and waste · security.md tokens, access, abuse · dedicated.md Robot and auction · mail.md outbound mail · dns.md zones and certificates · automation.md hcloud, Terraform, cloud-init · production.md reliability · kubernetes.md k3s/k8s · migration.md in and out · debug.md symptom→cause.

Core Rules

  1. Inventory before provisioning. Never propose a server into an unknown account, and never rediscover an account you already mapped. Read ## Current Infrastructure in memory.md, whatever its ## Boxes line points to, and ~/Clawic/data/servers/servers.md first; then discover only what is missing or older than the last recorded pass, and write the result back. Minimum discovery, per project: servers, volumes, snapshots, primary IPs, floating IPs, load balancers, networks, firewalls. The resource list plus the invoice is the map — Hetzner has no cost-allocation report, so anything you fail to list is spend nobody can attribute.

  2. The project is the blast radius. A Cloud API token is read-only or read-write over an entire project; there is no per-resource permission model, no role, no condition key. Consequence, applied every time: one project per environment (prod, staging, client-x), one token per project, read-only tokens for anything that only reports. A single token that can reach production and staging is one leaked CI variable away from deleting both.

  3. Every recommendation carries a monthly EUR number. Rough stages (EU location, net of VAT, recorded 2026-07 — verify on the current price list before committing money):

    StageStackMonthly
    Hobby / side project1× CAX11 + backups, no LB~€5
    Small production2× CAX21 behind LB11 + volume + backups~€30
    Serious single-appCCX for the database + 2 app servers + LB + Storage Box~€90
    Dedicated1× AX-line, setup fee once~€45-70 + setup

    Default to the smallest type that meets the requirement: upsizing CPU and RAM takes a reboot, and Rule 4 makes the disk the only part you cannot walk back. Right-sizing heuristic (canonical for this skill): sustained CPU <20% over 14 days → one step down; sustained >70%, or steal time above ~5% on a shared type → one step up or across to CCX. Measure memory before downsizing anything that runs a JVM, Elasticsearch, or a database.

  4. Growing the disk is the one-way door. A cloud server resize that keeps the disk can be reversed; a resize that grows the disk can never be undone, and the larger disk keeps billing at the larger type's price forever. So: upsize with the disk kept whenever the workload fits, and add a Volume instead of growing the root disk when what you need is space rather than a bigger machine. Changing architecture (CX/CPX x86 ↔ CAX ARM) is not a resize at all: it is snapshot, create, restore, re-point.

  5. Protect and snapshot before anything destructive. Enable delete protection and rebuild protection on every server and volume holding state; a terraform destroy or a mis-scoped hcloud server delete has no undo and no recycle bin. Deleting a server deletes its Backups with it, and leaves its Volumes and any non-auto-delete Primary IP behind, still billing (Rule 8). So the sequence before deletion is always: snapshot → verify the snapshot exists → check what will be orphaned → delete.

  6. The cloud firewall covers the public interface only. Traffic between servers inside a private network is not filtered by it, so a database bound to 10.0.0.x is reachable by every server in that network regardless of the rules you wrote. Two layers, always: cloud firewall attached by label selector for the public side, host firewall or bind-address for the private side (firewall.md).

  7. Location is a decision, not a default. State it in every quote and every command. The location decides latency, which server types exist there (ARM has historically been EU-only — check the target location before designing around CAX), the included traffic allowance, and whether the data sits under EU jurisdiction at all. When default_location is unset, say which one you are assuming before acting.

  8. Everything that outlives its server keeps billing. Volumes, snapshots, standalone Primary IPs, Floating IPs, and Load Balancers all survive server deletion; a powered-off server is still billed in full, because the resources stay reserved. "Turn it off overnight" saves nothing here — snapshot and delete saves almost everything (costs.md).

  9. Name the ceiling before you build against it. Every design states the first limit it will hit and its value: 3,600 API requests per hour per project, 16 volumes per server, 10 servers per placement group, 7 Backup slots, a per-account resource cap that starts low on new accounts, and outbound port 25 blocked until support unblocks it. Increases are a support ticket with a human on the other end — request them before the launch, not during it.

Failure Signatures

Decode rule: name the layer that emitted the failure. A refused connection is the firewall or the bind address; a hang on large payloads is MTU; a 429 is the API quota; silence on all interfaces with the console still working is the host.

SignatureMost likely causeFirst move
SSH dies the second a firewall is appliedCloud firewall default-denies inbound; the rule set omitted 22 or scoped it to the wrong sourceOpen a console session from the panel (works without networking), fix or detach the firewall (firewall.md)
Small requests fine, large ones hang foreverMTU: private networks are 1450, and every layer of encapsulation takes moreTest with ping -M do -s 1422; set the interface and any overlay below the ceiling (network.md)
New server cannot reach the internetIt has no public IPv4 and the private network provides no default routeNAT gateway server plus a route, or IPv6-only with a dual-stack proxy (network.md)
Mail connections to port 25 time outOutbound 25 is blocked by default on new accountsSupport ticket to unblock; meanwhile relay through a mail provider (mail.md)
429 mid terraform apply3,600 requests/hour per project, and parallel plans share itLower parallelism, split state by lifecycle, back off (automation.md)
"Resource limit exceeded" creating a serverPer-account resource cap, not a capacity problemSupport ticket for a limit increase; the answer is not instant (Rule 9)
Server responds to console but nothing on the networkHost-level firewall or a broken network config, not the cloud layerConsole in, inspect the host firewall and interface config; rescue mode is for a broken boot, not a broken rule
Volume gone after a rebootNo /etc/fstab entry, or an entry by device name that movedMount by /dev/disk/by-id/, add nofail so a missing volume never blocks boot (storage.md)
Managed load balancer certificate stuck pendingManaged certificates need the zone hosted in Hetzner DNSMove the zone, or upload/terminate the certificate yourself (dns.md)
Restored snapshot will not bootArchitecture or disk-size mismatch with the target server typeRestore onto the same arch and a disk at least as large; ARM snapshots never boot on x86 (servers.md)
Latency spikes with idle application CPUSteal time on a shared vCPU typeCheck %st in top; sustained steal means CCX, not a bigger shared type
Server suddenly unreachable, panel says lockedAbuse report or DDoS null-routeRead the abuse email and answer it inside the deadline — an unanswered report escalates to lockout (security.md)
Dedicated server dead, no console, no pingHardware, RAID degraded, or a failed bootRobot ticket plus rescue and IPMI; treat degraded-RAID mail as an outage in progress (dedicated.md)
Anything elseReproduce it from a second server in the same network to split provider from host, then match heredebug.md

Limits That Force Designs

Each of these has killed a half-built design.

AreaLimit that decides the design
Cloud API3,600 requests/hour per project — shared by hcloud, Terraform, CI, and any autoscaler you write
Volumes10 GB minimum, 10 TB maximum, 16 attached per server, same location as the server, no cross-location attach
Server diskGrows only, and only once per resize path; the disk that comes with the type is the disk you keep (Rule 4)
Private networkMTU 1450 · no filtering between members · one default route is yours to provide
Placement groupSpread only, 10 servers maximum — an "HA pair" without one can be two VMs on one physical host
Backups7 slots, +20% of the server price, deleted with the server, restore overwrites the server
SnapshotsBilled on used space, no lifecycle policy exists, count capped per project — sweeping is manual and yours
Traffic~20 TB/month included per server in EU locations, ~1 TB in US locations; inbound free; overage ~€1/TB
Load balancerTargets and services are capped per LB type, and targets must sit in the same network/location
Floating IPFailover only works if the IP is configured inside the OS — the panel move alone does nothing
Managed certificatesRequire the zone in Hetzner DNS; otherwise TLS is yours to terminate
Platform gapsNo managed database, no managed Kubernetes, no managed queue, no CDN, and no Windows images on Cloud
DedicatedSetup fee on new orders, monthly billing with no hourly option, cancellation only at a period boundary

Cost Reflexes

Where Hetzner bills surprise people. Prices: EU locations, net of VAT, recorded 2026-07 — the ratios are stable, the absolute figures need verifying (costs.md has the sweep and the review checklist).

DriverWhy it bitesDo instead
Primary IPv4 left behindDeleting a server does not delete a standalone Primary IP; each keeps billing (~€0.60/mo) foreverSweep unassigned IPs monthly; prefer IPv6-only with a NAT gateway where the workload allows
Orphaned volumesVolumes survive their server and bill per GB whether attached or notList volumes with no server after every teardown (costs.md)
Snapshot driftBilled on used space with no lifecycle policy — nobody deletes them and there is no reminderKeep a fixed number per server, sweep on the ## Due cadence
Backups on everything+20% of the server price, on stateless boxes that a rebuild would restore in two minutesBackups on stateful servers; rebuild-from-code for the rest
A powered-off staging fleetOff is not free: the resources stay reserved and the price stays the sameSnapshot then delete; recreate from the snapshot when needed
CCX where CAX would doDedicated vCPU costs roughly 3× shared per core; most web tiers never touch the ceilingStart shared, watch steal time, move the database first when you do move
US-location traffic~1 TB included instead of ~20 TB, and the overage is per TBPut the traffic-heavy tier in the EU, or price the egress before choosing the location
A load balancer for one backend~€6/mo to route to a single server that could terminate TLS itselfLB when there are ≥2 backends, or when you need managed certificates and health-based removal
Volumes used as a backup targetBlock storage priced per GB against Storage Box priced per TBStorage Box with Borg for backups; volumes for data the server is actively using
Quoting net to someone who pays grossHetzner lists net; German VAT applies unless a valid EU VAT ID triggers reverse chargeFollow price_mode; say which one the number is
Dedicated cancelled a day lateCancellation lands at a period boundary; missing it buys another full monthThe deadline goes in ## Due the day the server is ordered

Security Baseline

Non-negotiables. Anything unchecked here outranks the feature work in flight; commands and the full sweep are in security.md.

CheckPassing looks like
AccountTwo-factor on the Hetzner account; Robot web-service credentials separate from the console login
ProjectsOne project per environment; a token per project; read-only tokens for reporting (Rule 2)
TokensStored in a keychain, a secret manager, or CI secrets — never in a repo, a user_data block, or a note under ~/Clawic/data/
Server creationCreated with an SSH key: a server created without one gets a root password mailed in plain text
SSHKey-only, password authentication off, root login restricted, port 22 scoped to known sources by the cloud firewall
Private sideServices bound to the private IP have a host firewall in front of them — the cloud firewall does not see that traffic (Rule 6)
DeletionDelete and rebuild protection on every stateful server and volume (Rule 5)
BackupsAt least one copy off the provider or in an append-only Storage Box repo — an account lockout takes same-provider backups with it
Encryption at restHetzner does not manage per-customer disk encryption; if the regime requires it, LUKS inside the guest with a documented unlock path
AbuseThe account's abuse contact reaches a human who reads it; unanswered reports escalate to a locked server

Service Defaults

One default per need, with the escape hatch. Break-evens and thresholds: servers.md, storage.md.

NeedDefaultSwitch when
General computeCAX (shared ARM)A dependency has no arm64 build, or a licence is x86-only (→ CX/CPX)
Database or sustained CPUCCX (dedicated vCPU) + its own volumeLoad is bursty and steal time stays low (→ CPX)
Managed databaseDoes not exist here — self-hosted Postgres with PITR you configureYou cannot own backups and failover (→ a managed database elsewhere, accepting the egress)
IngressCaddy or nginx on the server≥2 backends, or managed certificates and health-based removal (→ Load Balancer)
Private connectivityPrivate network inside one locationCrossing locations or providers (→ WireGuard); dedicated ↔ cloud (→ vSwitch attached to the network)
BackupsStorage Box + Borg in append-only modeYou want one-click whole-server restore (→ Hetzner Backups, and keep an off-provider copy)
Object storageHetzner Object Storage (S3 API)Multi-region or a CDN in front is the requirement (→ an external provider)
OrchestrationDocker Compose on one or two servers≥3 nodes or real rolling deploys (→ k3s, kubernetes.md)
DNSHetzner DNS (free, API, needed for managed certificates)Edge features are the point (→ external, and terminate TLS yourself)
ProvisioningWhatever iac_tool says, cloud-init for first boot
Dedicated hardwareServer Auction for a known one-offYou need a reproducible spec, a warranty of configuration, or a fleet (→ new order from the product line)

Output Gates

Before delivering a design, a command, or a teardown plan:

  • Did I state the monthly EUR figure, in the location it will run, and say whether it is net or gross?
  • Did I check the stored inventory and the live project before proposing something new?
  • Is anything irreversible in this step — disk growth, architecture change, deletion without a snapshot, a cancellation deadline?
  • Does the design name the first limit it hits (Rule 9), and does anything holding data face the public internet?
  • If it involves deleting: what survives and keeps billing, and what disappears with it (Rule 8)?
  • Did I write what this session produced into the box memory-template.md names for it — a host row in servers.md, a spend row, a ## Due date, or an artifacts/ file with its ## Boxes line?

Configuration

User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/hetzner/config.yaml.

VariableTypeDefaultEffect
default_locationtext (location id)noneLocation assumed by every command and quote; while unset, name the assumed location out loud before acting (Rule 7)
cpu_archarm64 | x86arm64Which server family gets quoted (CAX versus CX/CPX) and which image and container build target every example uses
os_imagetext (image name)none — latest Debian stableBase image in every create example and cloud-init snippet in automation.md
iac_toolterraform | ansible | hcloud-cli | noneterraformLanguage of every generated provisioning artifact and the drift check in automation.md
monthly_budget_eurnumber (EUR)50Budget threshold in costs.md, the bar for calling a recommendation expensive, and the trigger size for a waste sweep
price_modenet | grossnetWhether quoted figures include VAT; gross adds the user's local rate, reverse charge keeps them net
backup_targethetzner-backups | storage-box | object-storage | externalstorage-boxWhich backup and restore procedure storage.md gives, and what the restore drill in ## Due exercises
dns_providerhetzner | externalhetznerWhether managed load-balancer certificates are available and where records get changed (dns.md)
data_residencyeu | us | anyeuFilters the locations offered and shapes GDPR, DPA and subprocessor answers

Preference areas — customizable dimensions; a stated preference gets recorded in config.yaml and applied from then on:

  • Tooling — hcloud contexts versus exported tokens, Terraform module style, Ansible versus cloud-init for configuration, panel versus CLI for exploration — affects every example in automation.md
  • Conventions — server and label naming, SSH key names, private network CIDR plan, project naming per environment — affects generated resources and the address plan in network.md
  • Platform — which locations are in play, shared versus dedicated vCPU posture, image family, IPv6-only appetite — affects sizing advice and quotes
  • Safety posture — protection flags on by default, whether destructive commands are emitted at all, snapshot-before-change as a hard gate — affects Output Gates and production.md
  • Cost reporting — review cadence, currency of quotes, whether every answer carries a monthly figure — affects costs.md and the ## Due table
  • Operations model — hand-rolled Compose, a PaaS layer on top, or k3s; who is on call — affects production.md and kubernetes.md
  • Compliance — DPA on file, EU-only processing, evidence needed for an audit — affects security.md and location choice

Traps

TrapWhy it failsDo instead
Powering servers off to save moneyBilling continues while the server exists; off saves nothing at allSnapshot and delete, recreate from the snapshot (Rule 8)
Firewalling the public interface and calling it doneThe private network is a flat trust zone the cloud firewall never seesHost firewall or private bind address as the second layer (Rule 6)
An "HA pair" with no placement groupBoth VMs can land on one physical host, so one hardware fault takes the pairSpread placement group from creation; it cannot be applied to a running server
Growing the root disk because it is quickIrreversible, and it prices the server at the bigger type foreverAttach a volume for space; resize with the disk kept for CPU and RAM (Rule 4)
Treating Backups as disaster recoveryThey live in the same account and die with the server; a lockout or a mis-scoped delete takes bothOff-provider or append-only copy, and a restore that has actually been timed (storage.md)
Reusing one API token across environmentsNo scoping exists inside a project, and none exists across them eitherOne project and one token per environment (Rule 2)
Building a fleet on auction hardwareEach auction machine is a different spec that will not be available againAuction for one-offs; the product line when the spec must be reproducible (dedicated.md)
Running mail without checking port 25 and rDNSNew accounts cannot send at all, and the ranges carry reputation historyUnblock, set rDNS, verify SPF/DKIM/DMARC — or relay and skip the problem (mail.md)
Expecting AWS-style IAMThere is no role, no policy, no condition key inside a projectDesign isolation with projects and tokens instead of permissions
Reading the invoice as the resource listThe invoice shows what bills, including things nobody remembers creatingReconcile invoice against a live resource listing every month (costs.md)
Sizing from a diagramDiagrams omit MTU, traffic allowances, the missing default route, and per-account capsWalk Limits That Force Designs against the diagram before building
Filing the cancellation when the machine is idleCancellation only takes effect at a period boundaryDeadline recorded in ## Due on the day the server is ordered

Where Experts Disagree

  • Everything on Hetzner versus a hybrid. One camp keeps compute here and buys managed state (database, DNS, object storage) elsewhere, arguing that owning Postgres failover is the real cost; the other keeps the whole stack here for latency, egress and jurisdiction. The break-even is operational, not financial: if nobody on the team will run a restore drill, the managed database is cheaper than it looks.
  • Cloud versus dedicated. Dedicated wins on price per core and RAM once utilisation is steady, and loses on elasticity, on hourly billing, and on the day the hardware fails and there is no live migration. The honest rule: steady, memory-hungry, and tolerant of a rebuild → dedicated; anything that scales with traffic → cloud.
  • Shared vCPU paranoia. Most workloads never notice a shared type, and CCX everywhere triples the bill for nothing; the counter-argument is real for latency-sensitive tiers, where steal time shows up as p99 noise nobody can debug. Measure steal before deciding (servers.md).
  • Hetzner Backups versus roll-your-own. Backups are one click and same-account, so they die with the account; Borg to a Storage Box in append-only mode survives compromise and lockout but is a thing you have to maintain. Teams with a real on-call rotation take the second; solo operators are better served by the first plus one off-provider copy.
  • Self-managed Kubernetes here. k3s on three CAX servers is genuinely cheap and genuinely yours to operate; Compose on two servers covers more production apps than its reputation suggests. The frontier is whether more than one person deploys.

Security & Privacy

Credentials: this skill drives the hcloud CLI and the Hetzner APIs, which read credentials from environment variables, an hcloud context, or a secret manager the user already runs. It does NOT store, log, copy, or transmit Hetzner tokens, Robot credentials, SSH keys, or rescue passwords, and never writes any of them into ~/Clawic/data/.

Local storage: preferences, memory, inventory, spend history and generated artifacts stay in ~/Clawic/data/hetzner/ and the shared boxes named in the frontmatter, on this machine — names, ids, locations and figures only, no secrets.

Guardrails: commands are read-only by default. Destructive operations (delete, rebuild, resize with disk growth, detach, cancel) are presented with what they orphan and what they destroy, and require explicit user confirmation before running.

More Clawic skills, get them at https://clawic.com/skills/hetzner (install if the user confirms):

  • vps — provider-agnostic rented-server habits, when the question is not Hetzner-specific
  • linux — the host itself: systemd, disks, permissions, boot failures
  • terraform — HCL authoring and state surgery behind the hcloud provider
  • k8s — Kubernetes manifests and cluster debugging for a k3s or kubeadm cluster running here
  • dns — record design and propagation, beyond the Hetzner zone mechanics

Feedback

Part of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/hetzner.

相关技能

执行 Git 操作(提交、分支、合并、变基、冲突解决与恢复)时强制套用安全规则。

作者 Iván532 次安装31 星标

以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。

作者 johnpatternai21 次安装8 星标

把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。

作者 nssa.io1.0k 次安装47 星标

按用户明确指令,在得到大脑(Get笔记)中保存、搜索并管理笔记与知识库。

作者 iswalle763 次安装66 星标

在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。

作者 Iván1 次安装

从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。

作者 fly0pants

ivangdavila 的更多技能

浏览全部技能

执行 Git 操作(提交、分支、合并、变基、冲突解决与恢复)时强制套用安全规则。

作者 Iván532 次安装31 星标

按配置的 JDK 版本诊断 Java 与 JVM 问题(从 NPE 到容器 OOM),给出可直接套用的代码与配置。

作者 Iván130 次安装9 星标

自适应教学:先探测基础再讲解,每次只讲一个概念,讲完立刻检查记忆。

作者 ivangdavila272 次安装8 星标

用可量化的层级、间距、字号、配色与版式规则,绘制并诊断视觉作品。

作者 Iván140 次安装6 星标