Files
reterminal-dm4/emmc-provisioning/dashboard/README.md

2.9 KiB
Raw Blame History

CM4 Provisioning Dashboard

Flask web UI for CM4 eMMC provisioning: public home (deploy only) and admin (login required) for images, cloud-init, portal files, and users.

Public home (/)

  • No login. Anyone can:
    • See current status (idle / connecting / flashing / backup / done / error).
    • Deploy or Backup when a device is connected (USB boot or network).
    • See which image is set as golden (used for Deploy).
    • View recent log and “How to connect” steps.

Layout: compact two columns (status + deploy on the left; golden info, log, and connect on the right).

Admin (/admin)

Login required. First user: open /login, enter any username and a password (min 6 characters) to create the first admin account.

Admin can:

  • Backup images (in backups/): upload, rename, delete, shrink/compress, set as golden, download.
  • Cloud-init images (in cloudinit-images/): list, set as golden, rename, delete, download.
  • Build cloud-init image: download latest Raspberry Pi OS (arm64), inject cloud-init, edit user-data/meta-data/network-config, use templates. Output goes to cloud-init images; optionally set as golden after build.
  • Portal files (in portal-files/): upload files that are served at /files/<name> so cloud-init can wget or curl them on first boot (e.g. curl -fsSL "http://SERVER/files/bootstrap.sh" -o /tmp/bootstrap.sh).
  • Golden image: any backup or cloud-init image can be set as golden (no single “golden file”; choose from either list).
  • Admin users: add users, change password.
  • Activity logs: view recent admin actions.

Backup images and cloud-init images live in separate folders (backups/ and cloudinit-images/).

Run locally (development)

cd dashboard
pip install -r requirements.txt   # Flask, werkzeug
python3 app.py
# Open http://localhost:5000 (home), http://localhost:5000/admin (login first)

Run in LXC (Proxmox)

Deploy with scripts/deploy-to-proxmox.sh; it installs the dashboard and pushes home.html, login.html, admin.html. Optional: create /opt/cm4-provisioning/dashboard.env with CM4_DASHBOARD_SECRET_KEY=<random> so session logins persist across restarts (deploy script can create this automatically).

Environment (optional)

  • CM4_PROVISIONING_DIR base path (default: /var/lib/cm4-provisioning).
  • CM4_BACKUPS_DIR backups directory (default: …/backups).
  • CM4_CLOUDINIT_IMAGES_DIR cloud-init built images (default: …/cloudinit-images).
  • CM4_PORTAL_FILES_DIR files served at /files/ (default: …/portal-files).
  • CM4_GOLDEN_IMAGE path to golden image (symlink to chosen backup or cloud-init image).
  • CM4_DASHBOARD_SECRET_KEY secret for session cookies (set in production).
  • CM4_DASHBOARD_DB SQLite path for admin users and logs (default: …/dashboard.db).
  • CM4_STATUS_FILE, CM4_LOG_FILE, etc. as before for status and build.