Files
reterminal-dm4/emmc-provisioning/docs/DEPLOY-NEW-PROXMOX.md
nearxos 123fd8748e Update provisioning documentation and scripts for improved Proxmox deployment</message>
<message>Add a new step-by-step guide for deploying the CM4 eMMC provisioning service on a new Proxmox instance, enhancing clarity for users. Update existing documentation to reflect changes in network configuration options, including the introduction of LAN subnet settings for DHCP and TFTP. Modify cloud-init scripts to ensure proper management of DNS settings and improve the handling of network interfaces. Additionally, enhance the toggle script for network boot to dynamically read the LAN gateway from configuration files, streamlining the setup process and improving user experience.
2026-03-03 08:24:18 +02:00

5.9 KiB
Raw Blame History

Deploy CM4 eMMC Provisioning to a New Proxmox Instance

Step-by-step guide to deploy the provisioning service (host + LXC) on a new Proxmox server. For redeploy/update and troubleshooting, see PROXMOX-LXC-DEPLOYMENT.md.


Prerequisites (before running the deploy script)

Requirement Details
Proxmox host A Proxmox VE node (new or existing) where you want the service.
SSH as root You must be able to run ssh root@YOUR_PROXMOX_HOST with key-based auth (no password prompt).
Proxmox storage At least one active storage (e.g. local or local-lvm). Check on the host: pvesm status.
Host internet (recommended) Needed so the deploy script can download the Debian 12 LXC template (if missing), and install usbboot and PiShrink on the host. Without internet, deploy still runs but you must install usbboot and PiShrink manually later.

Optional (set before deploy):

  • DEPLOY_ROOTFS_STORAGE=local-lvm — Skip interactive storage choice when creating the LXC.
  • DEPLOY_LXC_ROOT_PASSWORD=yourpassword — Set LXC root password and enable SSH.
  • DEPLOY_LXC_SSH_KEY=/path/to/pub — Copy this key into the LXC (default: ~/.ssh/id_ed25519.pub or id_rsa.pub).
  • CM4_BACKUPS_HOST_PATH=/mnt/storage/cm4-backups — Store backups on this host path (create the directory on the host if needed).
  • Network (WAN/LAN):
    DEPLOY_LXC_WAN_BRIDGE=vmbr0 (default), DEPLOY_LXC_WAN_IP=dhcp (default),
    DEPLOY_LXC_LAN_BRIDGE=vmbr1, DEPLOY_LXC_LAN_SUBNET=10.20.50.1/24 — To add eth1 as provisioning LAN with a custom subnet.

Step 1: Run the deploy script

From your workstation (where the repo is cloned), run:

cd /path/to/reTerminal\ DM4

./emmc-provisioning/scripts/deploy-to-proxmox.sh root@YOUR_PROXMOX_HOST

Replace YOUR_PROXMOX_HOST with the Proxmox hostname or IP (e.g. 10.20.30.40).

Example with options:

DEPLOY_ROOTFS_STORAGE=local-lvm \
DEPLOY_LXC_ROOT_PASSWORD='YourSecurePassword' \
DEPLOY_LXC_LAN_BRIDGE=vmbr1 \
DEPLOY_LXC_LAN_SUBNET=10.20.50.1/24 \
./emmc-provisioning/scripts/deploy-to-proxmox.sh root@10.20.30.40
  • On first run, the script will ask you to choose LXC rootfs storage (unless DEPLOY_ROOTFS_STORAGE is set). It then creates the LXC, installs host scripts, udev, systemd units, and the dashboard in the LXC.
  • The script prints the LXC IP at the end. Note it for the next steps (or get it with:
    ssh root@YOUR_PROXMOX_HOST "pct exec \$(pct list -no-header -output vmid,name | awk '\''\$2==\"cm4-provisioning\"{print \$1}'\'') -- hostname -I").

Step 2: Install usbboot on the host (if host had no internet during deploy)

USB flash/backup needs rpiboot on the Proxmox host. If the deploy log said usbboot install failed or was skipped:

From your workstation:

scp emmc-provisioning/scripts/install-usbboot-on-host.sh root@YOUR_PROXMOX_HOST:/tmp/
ssh root@YOUR_PROXMOX_HOST "bash /tmp/install-usbboot-on-host.sh"

Or on the Proxmox host (if /tmp/emmc-provisioning-deploy is still there):

ssh root@YOUR_PROXMOX_HOST
bash /tmp/emmc-provisioning-deploy/scripts/install-usbboot-on-host.sh

Step 3: Add a golden image (required for Deploy)

To write an image to a device (Deploy), the host must have a golden image at /var/lib/cm4-provisioning/golden.img. Backup (read from device) works without it.

Option A — From the dashboard

  1. Open http://<LXC-IP>:5000 (use the LXC IP from the deploy output).
  2. Build a cloud-init image or upload/set an existing backup as golden (see dashboard Admin).

Option B — Copy an image from your machine

scp /path/to/your-golden.img root@YOUR_PROXMOX_HOST:/var/lib/cm4-provisioning/golden.img

Step 4: (Optional) SSH into the LXC

If you set DEPLOY_LXC_ROOT_PASSWORD or had a default SSH key, you can already run:

ssh root@<LXC-IP>

Otherwise, enable root SSH and add your key:

./emmc-provisioning/scripts/setup-lxc-ssh.sh root@YOUR_PROXMOX_HOST
# Or with password: ROOT_PASSWORD='YourPassword' ./emmc-provisioning/scripts/setup-lxc-ssh.sh root@YOUR_PROXMOX_HOST ~/.ssh/id_ed25519.pub

Step 5: (Optional) Network boot (DHCP + TFTP on eth1)

Only if you deployed with DEPLOY_LXC_LAN_BRIDGE (and optionally DEPLOY_LXC_LAN_SUBNET) and want to offer network boot to devices on that LAN:

./emmc-provisioning/scripts/setup-network-boot-on-lxc.sh root@<LXC-IP>

See NETWORK-BOOT-LXC.md for details.


Step 6: (Optional) Install PiShrink on the host

If the deploy log said PiShrink install failed (e.g. no internet), and you want Shrink/Compress in the dashboard to work:

ssh root@YOUR_PROXMOX_HOST "bash /tmp/emmc-provisioning-deploy/scripts/install-pishrink-on-host.sh"

Or from your machine (stream the script): use the same pattern as in PROXMOX-LXC-DEPLOYMENT.md for install-pishrink-on-host.sh.


Summary checklist

Step Action Required?
1 Run deploy-to-proxmox.sh root@YOUR_PROXMOX_HOST Yes
2 Install usbboot on host (if deploy couldnt) For USB flash/backup
3 Add golden.img for Deploy For Deploy only
4 SSH to LXC (or use setup-lxc-ssh.sh) Optional
5 Run setup-network-boot-on-lxc.sh (if using eth1 LAN) Optional
6 Install PiShrink on host (if deploy couldnt) For Shrink/Compress

After deployment:

  • Dashboard: http://<LXC-IP>:5000
  • Golden image path (host and LXC): /var/lib/cm4-provisioning/golden.img
  • Disable auto-flash: ssh root@YOUR_PROXMOX_HOST "rm /etc/cm4-provisioning/enabled"
  • Enable again: ssh root@YOUR_PROXMOX_HOST "touch /etc/cm4-provisioning/enabled"

Full reference: PROXMOX-LXC-DEPLOYMENT.md.