Go to file
Maarten 14d27fccc8 Rewrite Hetzner guide section 2: proper QEMU-based Proxmox installation
Replace incorrect installimage-based instructions with the full QEMU
method from the Hetzner community tutorial. Covers disk discovery, BIOS
mode check, ISO download, SSH port forwarding for VNC, QEMU command with
NVMe passthrough, graphical installer walkthrough (ZFS RAID1 mirror),
predict-check for real NIC name, and network config fix before first boot.

Alternative Debian+upgrade method mentioned in a single sentence at the end.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:01:00 +01:00
.claude Add Hetzner bare metal setup guide, proxmox-setup script, and multi-target config layout 2026-03-02 15:52:57 +01:00
ansible Add AWX showcase blueprints: webapp, staticsite, k3scluster 2026-02-26 15:16:49 +01:00
hetzner Rewrite Hetzner guide section 2: proper QEMU-based Proxmox installation 2026-03-02 16:01:00 +01:00
incusos Add Hetzner bare metal setup guide, proxmox-setup script, and multi-target config layout 2026-03-02 15:52:57 +01:00
notes Update observability guide and refresh all dashboard screenshots 2026-02-25 15:14:56 +01:00
screenshots Update observability guide and refresh all dashboard screenshots 2026-02-25 15:14:56 +01:00
.gitignore Add Hetzner bare metal setup guide, proxmox-setup script, and multi-target config layout 2026-03-02 15:52:57 +01:00
.mcp.json Add API interception guide, incus-mitm helper, and payload rules 2026-02-24 15:01:56 +01:00
CLAUDE.md Add Hetzner bare metal setup guide, proxmox-setup script, and multi-target config layout 2026-03-02 15:52:57 +01:00
README.md Add Hetzner bare metal setup guide, proxmox-setup script, and multi-target config layout 2026-03-02 15:52:57 +01:00

README.md

incu-contrib

Peripheral tools, snippets, and scripts for working with Incus, IncusOS, and the broader ecosystem.

Primarily aimed at home lab environments but useful in production as well.

Contents

incusos/

Scripts for building IncusOS installation media and seed configurations:

  • incusos-iso -- Build customized IncusOS ISO/IMG images using the official flasher-tool. Supports both architectures (x86_64, aarch64), multiple applications (Incus, Operations Center), automatic client certificate injection, and batch generation.

  • incusos-seed -- Generate IncusOS seed archives (tar or FAT image) for installation customization. Covers all seed file types: install, applications, Incus preseed, Operations Center, network, and update configuration.

  • incusos-proxmox -- Declarative IncusOS deployment on Proxmox VE. Define VMs in YAML, and the script handles seed generation, ISO upload, VM creation with correct settings (UEFI, TPM 2.0, VirtIO-SCSI), and automated installation.

  • targets/ -- Per-host Proxmox connection configs and lab definitions. Each subdirectory (beelink, hetzner) has a proxmox.yaml.example and lab YAML files sized for that host. See targets/README.md.

  • deploy-awx -- Deploy and manage AWX (Ansible automation) on the Incus cluster. Handles VM creation, K3s install, AWX Operator deployment, project/template configuration, and Aether integration.

See incusos/README.md for full documentation.

ansible/

Ansible playbooks for AWX/Aether lifecycle hooks. Playbooks use the Incus REST API (not SSH) for all instance operations — works regardless of network topology.

  • playbooks/post-deploy.yml -- Runs after Aether creates an instance. Configures hostname, installs base packages, sets timezone, logs deployment.
  • playbooks/decommission.yml -- Runs before Aether deletes an instance. Graceful service shutdown and decommission logging (best-effort).

hetzner/

Setup guide and automation for deploying IncusOS labs on a Hetzner dedicated server:

  • hetzner-setup.md -- Step-by-step guide: Proxmox install, private networking, WireGuard tunnel, firewall lockdown, and API token creation.
  • proxmox-setup -- Interactive helper script that automates the guide steps over SSH. Configures repos, bridge, storage, WireGuard, firewall, and API tokens.

See also incusos/targets/ for per-host connection configs and lab definitions.

notes/

Guides and reference material (roughly in learning order):

Quick Start

# Install the flasher-tool (requires Go 1.22+)
go install github.com/lxc/incus-os/incus-osd/cmd/flasher-tool@latest

# Build a default IncusOS ISO with your client cert injected
./incusos/incusos-iso

# Build for a specific architecture and application
./incusos/incusos-iso --arch aarch64 --app operations-center --defaults

# Generate all common ISO variants at once
./incusos/incusos-iso --batch

# Generate a standalone seed archive
./incusos/incusos-seed --app incus --defaults --output my-seed.tar

# Generate a SEED_DATA FAT image for external boot media
./incusos/incusos-seed --format fat --app incus --defaults --output seed.img

Requirements

  • Go 1.22+ -- for installing the flasher-tool
  • curl -- for downloading images from the CDN
  • tar, gzip -- for seed archive creation and image decompression
  • Incus client (recommended) -- for automatic client certificate detection. Works with any version; certificates are read directly from disk. See version compatibility notes for install instructions per platform (macOS, Debian/Ubuntu, Arch).
  • mtools (optional) -- for creating FAT seed images

License

MIT