en un clic
configure-hetzner-floating-ip
Configure a Hetzner Cloud Floating IP persistently on Ubuntu servers using Netplan. Ensures the floating IP survives reboots and is externally accessible.
Menu
Configure a Hetzner Cloud Floating IP persistently on Ubuntu servers using Netplan. Ensures the floating IP survives reboots and is externally accessible.
| name | configure-hetzner-floating-ip |
| description | Configure a Hetzner Cloud Floating IP persistently on Ubuntu servers using Netplan. Ensures the floating IP survives reboots and is externally accessible. |
| allowed-tools | ["Bash","Read","WebFetch"] |
Configure a Hetzner Cloud Floating IP to be persistently assigned to an Ubuntu server. This skill creates the necessary Netplan configuration to ensure the floating IP remains active after system reboots.
eth0 (standard for Hetzner Cloud servers)Use this skill when you need to:
Before running commands, replace these placeholders:
<SERVER_IP>: The primary IP address of your server (for SSH access)<FLOATING_IP>: The Hetzner Cloud Floating IP to configure (e.g., 5.75.216.246)<USERNAME>: SSH username (e.g., root, ubuntu)eth0: Replace with different interface name if needed (verify with ip link show)# Check if netplan directory exists
ssh <USERNAME>@<SERVER_IP> 'ls -la /etc/netplan/'
# Check Ubuntu version (24.04+ uses netplan by default)
ssh <USERNAME>@<SERVER_IP> 'lsb_release -a'
Expected: You should see netplan configuration files (*.yaml) in /etc/netplan/
# Create netplan configuration for floating IP
ssh <USERNAME>@<SERVER_IP> 'sudo tee /etc/netplan/60-floating-ip.yaml > /dev/null << EOF
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- <FLOATING_IP>/32
EOF'
# Verify file was created correctly
ssh <USERNAME>@<SERVER_IP> 'sudo cat /etc/netplan/60-floating-ip.yaml'
# Netplan requires configuration files to have 600 permissions
ssh <USERNAME>@<SERVER_IP> 'sudo chmod 600 /etc/netplan/60-floating-ip.yaml'
# Verify permissions
ssh <USERNAME>@<SERVER_IP> 'ls -l /etc/netplan/60-floating-ip.yaml'
Expected: -rw------- 1 root root (600 permissions)
# Apply the new configuration
ssh <USERNAME>@<SERVER_IP> 'sudo netplan apply'
# Verify no errors during apply
echo "If no errors above, configuration was applied successfully"
# Check that floating IP appears on eth0 interface
ssh <USERNAME>@<SERVER_IP> 'ip addr show eth0'
# Verify floating IP is listed (look for <FLOATING_IP>/32)
ssh <USERNAME>@<SERVER_IP> 'ip addr show eth0 | grep <FLOATING_IP>'
Expected: You should see <FLOATING_IP>/32 in the output
# Test that the floating IP responds to ping from external source
ping -c 3 <FLOATING_IP>
# Verify server can reach external services via floating IP
ssh <USERNAME>@<SERVER_IP> 'curl -s --interface <FLOATING_IP> https://ifconfig.me'
Expected: Ping should succeed, and curl should return the floating IP address
After running all steps, you should have:
/etc/netplan/60-floating-ip.yaml createdip addr showProblem: sudo netplan apply returns errors
Solution:
/etc/netplan/60-floating-ip.yaml (indentation must be exact)sudo netplan --debug apply for detailed error messagesProblem: ip addr show eth0 doesn't show the floating IP
Solution:
sudo netplan getsudo systemctl restart systemd-networkdProblem: Cannot ping or connect to floating IP from outside Solution:
sudo ufw status or sudo iptables -Lip addr showip route showProblem: Floating IP disappears after server restart Solution:
/etc/netplan/60-floating-ip.yaml still exists after rebootsudo systemctl status systemd-networkdProblem: Cannot modify netplan configuration files Solution:
sudo -vls -l /etc/netplan/Generate a self-contained, human-friendly companion HTML report from a markdown AI-agent response (or any markdown document). The output is a single .html file with no external dependencies, an explicit light/dark mode toggle (with OS-preference default and persistence), and a layout chosen to fit the content type (explainer, comparison, decision doc, review feedback, status report, etc.).
Dispatch a code reviewer subagent to catch issues before they cascade. Use after completing features, fixing complex bugs, or before merging.
Track project tasks and epics in individual markdown files under docs/tasks/, with docs/PROJECT.md as the central index. Supports bootstrapping new projects and managing ongoing work.
Create a new Linear ticket using the linear CLI
Commit all changes, push to remote, and create a GitHub pull request with an auto-generated description if one doesn't already exist.
Initialize a fresh Hetzner Ubuntu server with a non-root user configured for Docker application deployment. Sets up secure SSH access, Docker permissions, and a dedicated data directory.