Go to file
Maarten 9a87261823 Fix nag detection: PVE 9 effectively disabled the subscription popup
PVE 9.1 changed the JS condition to check for 'NoMoreNagging' status
(case-sensitive compare after toLowerCase), which never matches. The
subscription API returns status "notfound" which is truthy, so the
nag dialog condition is always false. Detect PVE major version and
skip nag check for PVE >= 9.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:53:32 +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 Fix nag detection: PVE 9 effectively disabled the subscription popup 2026-03-02 16:53:32 +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