Upload Proxmox ISOs via API or dashboard UI, extract kernel+initrd
using pure-Go iso9660 library, store on disk, and serve over HTTP
for PXE booting. Dynamic kernel/initrd filenames per image replace
the previous hardcoded paths.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The //go:embed static directive nests files under static/, so after
StripPrefix removes /static/ from the URL, the FileServer couldn't find
the files. Use fs.Sub to root the FS at the static/ subdirectory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove /etc/provisioning/keys mount (ephemeral keys are in-memory now)
- Remove /etc/provisioning VOLUME from Dockerfile
- Add deploy/install.sh that creates config files before docker compose up,
preventing Docker from creating directories in place of missing bind mounts
- Update README with install script usage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Gitea's cache server is unreachable, causing setup-go to block on a
failed cache restore. Disable it since the Docker build layer caches
dependencies independently.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The pattern `provisioning` matched both the binary and the directory.
Use `/provisioning` to only match at the repo root.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Generate a fresh ed25519 key pair at rebuild time, inject the public key
into the Proxmox answer file, use the private key for cluster join over
SSH, then remove the key from both the remote host and the database.
This eliminates the need to manage static SSH keys in config/secrets.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Gitea Actions workflow: test → build → push to container registry
- docker-compose.yml for host deployment (host network for PXE)
- Update example config to use container paths (/data, /etc/provisioning)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>