HiveStation - Developer Workstation for Proxmox Virtual Environment
HiveStation is a community project that automates the full installation of a developer workstation built on Proxmox VE 9, on top of Debian 13 (Trixie): the hypervisor, a choice of disk layouts, bootable snapshots, an optional desktop, themes and a GNOME monitoring widget - installed in a reproducible sequence of scripts (S0 to S8) you can read and audit - comments in English throughout. Since V22 every question they ask can also be answered from a file, so the install runs without a keyboard.
It is inspired by the Proxmox VE wiki article Developer Workstations with Proxmox VE and X11: the idea of running a full desktop on the very machine where Proxmox VE runs your VMs and containers.
HiveStation is an independent community project. It is not affiliated with, nor endorsed by, Proxmox Server Solutions GmbH. Proxmox is a registered trademark of Proxmox Server Solutions GmbH.
Current version: V22.33.26 - orchestrators
S0.sh ... S8.sh with stable filenames (each script's revision is in its # Version : header), shared libraries (lib/), runtime files shipped as real files (payload/), and messages in five languages: French, English, German, Spanish, Portuguese. The full step-by-step guide (HIVESTATION-V22-GUIDE-EN.md) is in the archive.What it provides
- A Proxmox VE 9 hypervisor on Debian 13 (installed via debootstrap).
- Five disk modes, chosen at S1 launch (see table below) - Btrfs single/RAID1, LVM+EXT4, and ZFS as a first-class filesystem (single and mirror).
- Install from an answer file (V22): every prompt reads its value from a plain
key=value file - parsed, never executed - or falls back to asking. In assist mode a missing key becomes a question; in strict mode it stops everything before the first action and names the key. Point at it with --preseed <path|URL> or $HS_PRESEED, or let a directory be searched by machine identifier (serials, then first NIC MAC, then default.conf) so one image installs a fleet with per-machine settings. Ready-made files in preseed-examples/<lang>/ - seven profiles, five languages.- One questionnaire, one reboot (V22):
S0 collects the whole chain's decisions up front, validating each answer as you type it. S1 then lays the suite down in the target and plays S3.1 -> S3.2 -> S4 -> S5 -> S7 -> S8 inside it in a single pass - one log per step, a bounded timeout, a hard stop on failure, --reprendre to resume at the first unfinished step. The old route, one script per reboot, still works.- A live image of its own (V22):
tools/hivestation-live-build.sh builds a live image on the Proxmox kernel, carrying the suite and a graphical installer (Calamares). The PVE kernel's zfs module is signed, so zpool works in the live session even under Secure Boot - a derived Debian live cannot. No prebuilt ISO is shipped: you build it from the archive you can read.- Bootable snapshots: Snapper + grub-btrfs in Btrfs modes (roll back from the GRUB menu), Timeshift in LVM mode, and in ZFS modes Boot Environments with sanoid timelines - every snapshot bootable from the ZFSBootMenu menu, plus an APT hook that snapshots the Boot Environment before each operation.
- ZFS boot chain: themed GRUB on the ESP chains into ZFSBootMenu, which kexecs the Boot Environment; GRUB never probes the pool.
- Recovery from the boot menu: the "HiveStation Recovery" family - snapshots submenu and "Proven Kernel" entry in Btrfs modes, the full ZFSBootMenu menu in ZFS modes.
- VM/LXC networking:
vmbr0 bridge with dnsmasq DHCP and dynamic NAT toward the WAN interface, or the Proxmox SDN (zone, vnet, subnet with a DHCP range) if you prefer PVE to own the bridge.- Optional desktop: GNOME, KDE, XFCE, LMDE7 Cinnamon, or COSMIC (EXPERIMENTAL - its installer is outside this project), with Flatpak + Flathub.
- Optional firmware & GPU: AMDGPU, Intel Wi-Fi, Realtek, NVIDIA (open modules recommended for Turing+, or proprietary legacy), optional XanMod kernel.
- Optional themes & tools: GRUB theme, adaptive Plymouth theme, asusctl/supergfxctl, GNOME Cinnamon-like layout, an optional Cockpit + ZFS manager GUI on ZFS installs, and a GNOME monitoring widget (CPU/mem/temps, SMART, storage health, disk I/O, WAN uplink, Proxmox status, notifications) whose privileged reads go through a single least-privilege root broker. Drop a
logo.png next to S8 to brand every theme.- Upgrade path:
hivestation-upgrade.sh brings an existing V15-V22 install up to date without reinstalling (inventory-driven, pre-upgrade restore point, --dry-run, --rollback, and --preseed so a fleet upgrade needs no console). Changing the disk mode or adding encryption is still a fresh install - there is no conversion.- Archive self-test:
hivestation-check.sh validates the archive before you deploy it.Disk modes (chosen at S1 launch)
| Mode | Disks | Filesystem | System snapshots | High availability |
|---|---|---|---|---|
| single | 1 | Btrfs (single/dup) | Snapper + grub-btrfs | - |
| RAID1 | 2 identical | Btrfs RAID1 | Snapper + grub-btrfs | dual-ESP sync, SWAP failover, guided disk replacement |
| LVM+EXT4 | 1 | ext4 on LVM (thin pool for VM/CT) | Timeshift (RSYNC) | - |
| ZFS single | 1 | ZFS pool (Boot Environments) | sanoid + bootable BE snapshots | - |
| ZFS mirror | 2 identical | ZFS mirrored pool | sanoid + bootable BE snapshots | dual-ESP sync, native degraded boot, guided disk replacement |
Install workflow
| Script | Phase | Runs from | Reboot after? |
|---|---|---|---|
S0 | Questionnaire (optional): collects the whole chain's answers, writes the answer file | Debian Live | No |
S1 | Debian base (Btrfs, LVM or ZFS) + boot chain + network + HA scripts + SSH | Debian Live | Yes |
S3.1 | Proxmox kernel + PVE subvolumes (Btrfs) / dataset checks (ZFS) | Installed Debian | Yes |
S3.2 | Proxmox VE (+ storage/snapshots choice, optional PCIe passthrough) | Installed Debian (PVE kernel) | Yes |
S4 | Graphical desktop + Flatpak (optional) | Installed Proxmox | If a desktop was installed |
S5 | Snapshots: Snapper+grub-btrfs (Btrfs), Timeshift (LVM) or sanoid + ZFS health (ZFS) | Installed Proxmox | Recommended |
S6 | Firmware + NVIDIA (optional) | Installed Proxmox | If firmware was installed |
S7 | vmbr0 + DHCP + NAT (or Proxmox SDN) + boot tuning | Installed Proxmox | Yes |
S8 | Themes, tools, monitoring widget, ZFS GUI (menu, optional) | Installed Proxmox | Recommended |
That column describes the step-by-step route. Driven by an answer file, S1 plays S3.1 to S8 inside the target in one pass and the node is installed with a single reboot.
S6 is not in the default chain: firmware and NVIDIA stay a deliberate choice.Requirements
- 64-bit CPU (x86_64); VT-x/AMD-V recommended for nested virtualization.
- RAM: 4 GB minimum, 16 GB or more recommended. ZFS modes: budget the ARC cache on top of the VM needs (S1 asks for the cap, default 2 GiB).
- Disk: 128 GB minimum in every mode - 1 disk (single, LVM+EXT4, ZFS single) or 2 identical SSD/NVMe (RAID1, ZFS mirror). LVM cuts fixed slices and its swap grows with the RAM, so treat that floor as hard there.
- UEFI firmware. Secure Boot is supported on every disk mode, on or off at install time (see below). One reservation: on a stock Debian Live the ZFS modes build their module with DKMS in the live session and a locked-down kernel refuses it - turn Secure Boot off during the install, or use the HiveStation live image, whose module is signed.
- One ethernet or Wi-Fi interface. Internet access is required before running S1 (debootstrap downloads Debian; on a stock Debian Live, ZFS modes compile the module in the live session, 5-10 minutes on the first run).
Optional disk encryption, TPM2 and Secure Boot
- LUKS2/argon2id, opt-in in the three Btrfs/LVM modes: cleartext Btrfs
/boot + LUKS2 under the filesystem, passphrase typed once at the themed Plymouth prompt (keyboard layout honoured), bootable snapshots preserved. An encrypted RAID1 boots even with a missing disk (proven in VM; the physical disk-pull has not been replayed on real hardware). Validated on real hardware in all three modes (RAID1 end to end, Secure Boot and hardware TPM 2.0 included; LVM proved by an encrypted German install). Secure Boot and TPM 2.0 were attested on the Btrfs runs, not on the LVM one.- Native ZFS encryption, opt-in in both ZFS modes: aes-256-gcm on root/home/var, kernels inside the encrypted pool, one passphrase at the themed ZFSBootMenu prompt (which names the keyboard layout it loaded), LUKS2 swap outside the pool. Use ASCII-only passphrases here. Hibernation stays EXPERIMENTAL (firmware-dependent).
- TPM2 auto-unlock (opt-in):
hivestation-tpm2.sh bind enrols the LUKS2 containers via clevis so the disks unlock without the passphrase, which always remains as fallback. Validated on a hardware TPM 2.0 as well as on a vTPM. It binds LUKS2 containers only - a native ZFS root key cannot be TPM-bound, so an encrypted ZFS install still asks at the ZFSBootMenu prompt. The ESP and /boot stay in cleartext: with Secure Boot off, auto-unlock does not stop someone with brief physical access from planting a modified initramfs (evil-maid) - only the passphrase does.- Secure Boot on every mode: the signed Proxmox chain (
+pmx shim and GRUB, -pve kernel with its in-tree signed zfs module) is installed from the base system on, and a blocking gate proves it before the first reboot. On NVIDIA machines the locked-down kernel rejects the DKMS modules - disabling Secure Boot in the BIOS is the fallback.Languages
The language is the first question, or the
lang_code key, and it carries through the questionnaire, the script messages, the journal (journalctl -t hivestation speaks the installed language), the graphical installer, the widget, and the boot screens - Plymouth and the GRUB theme being static files, their strings are substituted from a per-language catalogue when the theme is laid down. The project's own name and the titles that identify it stay in English on every machine. With no catalogue - and on a residue of library error paths whose text is built with its value inside - the display keeps the bilingual FR/EN it has always had. ZFSBootMenu itself stays in English: third-party binary.Warning - destructive procedure
S1 completely wipes the selected disk(s) - one in single/LVM/ZFS-single mode, two in RAID1 / ZFS mirror. All existing data is lost. Double-check the disk selection when prompted. In answer-file mode S1 refuses to touch a disk unless the file carries an explicit
wipe_disks=oui.Why Btrfs or ZFS
Btrfs is in-kernel and its subvolume snapshots land straight in the GRUB menu through grub-btrfs, so a bad update is a one-reboot rollback; RAID1 mirrors two disks with checksummed self-heal, no out-of-tree module. ZFS brings Boot Environments (the whole root is a bootable, rollbackable unit), native encryption and the zfspool storage - Proxmox's production storage - with VM and CT snapshots out of the box. LVM+EXT4 is there for those who prefer the classic Proxmox layout.
Download and usage
HiveStation is under the GNU AGPL v3, the same licence as Proxmox VE (
LICENSE in the archive; LICENCE-FONTS.txt covers the Ubuntu Mono files embedded in the GRUB theme). The bundled Cockpit ZFS Manager stays LGPL and the Calamares catalogues stay GPLv3 - see §7.1 of the guide.HiveStation lives on GitLab - https://gitlab.com/aureladmin/hivestation - and each version is a release there. Download
HIVESTATION-V22.33.26.tar.gz from https://gitlab.com/aureladmin/hivestation/-/releases/V22.33.26, with its SHA-256 in SHA256SUMS-V22.33.26.txt beside it. The filename carries its version; there is no unversioned "complete" archive.1. Extract it, read
HIVESTATION-V22-GUIDE-EN.md (full step-by-step guide, EN).2. Boot the target on a Debian 13 (Trixie) Live ISO and copy the scripts over - or build the HiveStation live image with
tools/hivestation-live-build.sh and install from its graphical front end.3. Run
S0 from the Live to answer everything once and let it launch S1; or run S1 yourself and walk S3.1 -> S8 from the installed system.4. Already on V15-V21? Run
hivestation-upgrade.sh instead of reinstalling.Feedback, bug reports and questions are welcome in this thread.
Last edited: