LXC/VM template build scripts + docs (Devuan Excalibur LXC, cloud-init VM)
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-25 18:21:12 +00:00
docs fix: ultrareview findings — publisher version/latest, probe race, doc nits 2026-06-17 21:36:49 +00:00
reports report: first-stage cloud-image build done (Devuan+Debian boot-verified) 2026-06-17 00:09:52 +00:00
research feat(firstboot): etckeeper deploy-fix + shared first-boot identity finaliser (v1.5.8 / qemu 0.1.1) 2026-06-21 15:47:10 +00:00
src fix(vm-devuan): SHUTDOWN-1 reboot/shutdown wrappers; publish notes with links + curl — qemu 0.2.9. Refs #46 2026-10-20 09:15:17 +00:00
.gitignore fix(ubuntu-lxc): APT::Sandbox::User root at build (the real fix — _apt sandbox can't open /dev/null in nested-unpriv-LXC; gpgv was never missing). Refs #46 2026-07-08 16:42:27 +00:00
CLAUDE.md fix: ifupdown2 dhcp-wait=no boot hang, hook under ifupdown2 — LXC 1.6.6 / qemu 0.2.8. Refs #46 2026-10-20 00:59:31 +00:00
README.md docs: consumers pin their own template version; list new shared payloads 2026-09-18 13:28:43 +00:00

Create-Templates

LXC/VM template-building material for the ECS mail-server stack: scripts and docs that produce reusable Proxmox VE templates (Devuan 6 "Excalibur" LXC, and a planned Devuan cloud-init VM image).

This repo was extracted from ECS-Infrastructure/stalwart-deploy on 2026-06-16 to separate template building (build once, on a PVE node) from container provisioning (which stays in stalwart-deploy, under src/provision/create-*.sh).

Contents

src/
  build-devuan-template.sh   # builds Devuan/Debian LXC rootfs tarballs on a PVE host
  build-all-templates.sh     # concurrency wrapper around build-devuan-template.sh
  test-devuan-template.sh    # in-container smoke test for a freshly-provisioned template
research/
  devuan-lxc/creating-devuan-excalibur-lxc-template.md   # the design/how-to doc
docs/
  proposal-devuan-cloud-init-vm.md   # proposal: Devuan cloud-init VM-image builder

Usage

build-devuan-template.sh runs on a PVE host as root and writes tarballs to /var/lib/vz/template/cache/:

bash src/build-devuan-template.sh            # build all targets
bash src/build-devuan-template.sh devuan-ecs01
bash src/build-all-templates.sh              # safe-concurrency build of all targets

build-all-templates.sh invokes build-devuan-template.sh from the same src/ directory; the build scripts are self-contained (they do not source any shared library).

test-devuan-template.sh is pushed into a freshly-provisioned container and run there:

pct push <CTID> src/test-devuan-template.sh /root/test.sh
pct exec <CTID> -- sh /root/test.sh

Relationship to stalwart-deploy

  • This repo (Create-Templates): builds the templates the cluster provisions from.
  • stalwart-deploy: provisions containers from those templates (src/provision/create-*.sh), plus architecture/research docs and Ansible-adjacent material.

Versions are the consumer's choice

This repo is consumer-agnostic. Which template version stalwart-deploy (_TPL_VERSION / DEVUAN_TEMPLATE in its src/provision/config.env) or any other repo deploys is that repo's business — nothing here needs syncing when TEMPLATE_VERSION is bumped. The only contract is the published artifact name, which is dateless (…_amd64.tar.zst).