Infrastructure-as-code repository for building MistServer reference images. It combines mkosi for cloud-ready disk images and Debian live-build for ISO/USB media, plus shared configuration, validation scripts, and marketplace onboarding docs.
Supported distributions: Debian 12 (bookworm), Ubuntu 22.04 LTS (jammy), Ubuntu 24.04 LTS (noble)
Target cloud providers: AWS, DigitalOcean, GCP, Hetzner, Linode, Vultr
| Image Type | User | Authentication |
|---|---|---|
| Cloud (AWS, DO, etc.) | mist |
SSH key (injected by cloud provider) |
| Live ISO | mist |
Auto-login on console, no password |
| Installed from ISO | mist |
Set password during install |
- Set a password:
sudo passwd mist - Or configure SSH key access:
ssh-copy-id mist@<ip> - Access MistServer web UI at
http://<ip>:4242
mkosi/ mkosi manifests, overlays, and profiles for raw/qcow2/vhd outputs
live-build/ Debian/Ubuntu live-build configs for installer/ISO artifacts
common/ Shared first-boot scripts, configs, and assets for all images
docs/ Guides for provisioning, building, testing, releasing, and marketplace
scripts/ Build, convert, validate, and import scripts
artifacts/ Local build outputs (gitignored)
# 1. Prepare host (see docs/1-provisioning.md for full setup)
# 2. Sync shared assets
./scripts/build.sh --all
# 3. Build an image (mkosi)
./scripts/build.sh --execute --distro debian-bookworm --mkosi-only
# 4. Convert for cloud provider
./scripts/convert-image.sh artifacts/mistserver-*.raw --provider do
# 5. Import to provider
./scripts/import-digitalocean.sh --url https://bucket.nyc3.digitaloceanspaces.com/image.qcow2.gz
# 6. Validate deployed instance
./scripts/mist-validate.sh <instance-ip>Test images locally with QEMU before deploying to cloud:
# Boot test only (verifies image boots and SSH works)
./scripts/test-boot-qemu.sh artifacts/mistserver-debian-bookworm-*.raw
# Full validation (runs 10-point test suite)
./scripts/test-boot-qemu.sh artifacts/mistserver-debian-bookworm-*.raw --validateIf your SSH key has a passphrase, start ssh-agent first:
eval $(ssh-agent) && ssh-add
./scripts/test-boot-qemu.sh artifacts/mistserver-debian-bookworm-*.raw --validate| Script | Purpose |
|---|---|
build.sh |
Sync assets and execute mkosi/live-build |
convert-image.sh |
Convert raw images to provider-specific formats |
generate-manifest.sh |
Create SHA256 checksums and build metadata |
mist-validate.sh |
SSH-based smoke tests for deployed instances |
test-boot-qemu.sh |
Local QEMU boot testing (uses cloud-init for SSH key injection) |
import-aws.sh |
Import AMI to AWS |
import-digitalocean.sh |
Import custom image to DigitalOcean |
import-gcp.sh |
Import Compute image to GCP |
import-hetzner.sh |
Create Hetzner snapshot |
import-linode.sh |
Upload image to Linode |
import-vultr.sh |
Create Vultr snapshot |
| Doc | Description |
|---|---|
| 1-provisioning.md | Build host setup (Arch + Debian nspawn) |
| 2-building.md | Build cloud images and live ISOs |
| 3-testing.md | Local QEMU validation |
| 4-deploying.md | Convert images, configure credentials, import to providers |
| 5-releasing.md | Marketplace submission and git releases |
| marketplace/ | Provider-specific marketplace guides |
See individual component licenses. MistServer has its own license terms.