cBUZZ Container Control — Bash-Bootstrap und Python-Werkzeug für nested LXC-Stacks (Proxmox VE 9 + Debian/Ubuntu)
Project description
XED /CCC — cBUZZ Container Control
Bash-Bootstrap und Werkzeuge für nested LXC-Stacks auf Proxmox VE 9 mit Debian 13 / Ubuntu 24.04+.
Status: Stufe 1 —
firstboot.shv0.5.0 (DE/EN-TUI, idempotent, Live-validiert) Lizenz: MIT Distribution: https://ccc.xed.dev
Schnellstart
In jeder frischen Debian/Ubuntu-LXC-Box als root:
# Pre-Step (minimal-LXC-Templates haben kein curl vorinstalliert):
apt update && apt install -y curl ca-certificates
# firstboot.sh ausführen:
bash <(curl -s https://ccc.xed.dev/firstboot.sh)
Oder als One-Liner:
apt-get update -qq && apt-get install -y -qq --no-install-recommends curl ca-certificates && bash <(curl -s https://ccc.xed.dev/firstboot.sh)
Das setzt Zeitzone, Locales, Default-Editor und Basis-Pakete — alles via Whiptail-TUI im Debian-Installer-Stil. Idempotent: kann beliebig oft wiederholt werden.
UX-Pattern (seit v0.5.0)
- Sechs-Phasen-State-Machine mit
<Zurück>-Button: Sprache → Zeitzone → Locales → Default-Locale → Pakete → Übersicht. Im ersten Dialog ist Cancel = Abort-Confirmation, sonst Cancel = zurück zur vorherigen Phase. - DE/EN-Sprachwahl als allererster Dialog. Alle weiteren Whiptail-Texte sind übersetzt;
info/ok/err-Logs bleiben deutsch. - Idempotente Pre-Selection beim Re-Run:
- Locales: drei-wertige Erkennung via
/etc/locale.gen(ACTIVE/DISABLED/ABSENT). User-Wille wird respektiert — abgewählte Locales kommen nicht als Default-ON wieder. - Pakete: Marker-Datei
/var/lib/xed-ccc/firstboot.appliedtrennt allerersten Run (Skript-Defaults greifen) vom Re-Run (nur dpkg-Ist-Zustand zählt).
- Locales: drei-wertige Erkennung via
- Deselect = Uninstall/Disable: bei Pakete mit Yesno-Confirmation (Daten-Verlust-Schutz), bei Locales ohne (reversibel).
- Optionaler
apt dist-upgrade + autoremove + autoclean-Schritt am Ende, nur wenn Updates verfügbar sind. Yesno-Prompt im interaktiven Modus, ENVDIST_UPGRADE=yesfür Auto-Run.
Non-Interactive (CI / Auto-Provisioning)
TZ=UTC \
LOCALES="de_AT.UTF-8 en_US.UTF-8" \
DEFAULT_LOCALE=de_AT.UTF-8 \
PKGS="htop curl wget sudo psmisc net-tools iproute2 iputils-ping gnupg nano" \
bash <(curl -s https://ccc.xed.dev/firstboot.sh)
TTY-Hinweis
bash <(curl -s URL) (Process Substitution) bewahrt das TTY und erlaubt
interaktive Whiptail-Dialoge. curl URL | bash (klassische Pipe) verbraucht
stdin und erzwingt Non-Interactive-Mode mit ENV-Defaults.
Was firstboot.sh tut
| Phase | Inhalt |
|---|---|
| 0 | Pre-Flight (root-Check, Distro-Check, apt-Bootstrap, TTY-Detect) |
| 1 | Eingaben sammeln (Whiptail bei TTY, ENV-Vars sonst) |
| 2 | Zeitzone setzen (/etc/timezone + /etc/localtime) |
| 3 | Locales generieren + Default-Locale (update-locale → /etc/default/locale) |
| 4 | Basis-Pakete installieren (--no-install-recommends) |
| 5 | EDITOR=nano in /etc/environment (idempotent via grep-vor-write) |
| 6 | Abschluss-Banner |
Bewusst nicht enthalten: Bridge-/iptables-/nested-LXC-Setup. Das kommt
mit lxc-host-setup.sh (Skript 2/3, geplant) als separates Skript für
cBUZZ-Outer-Container.
Roadmap
| Skript | Zweck | Status |
|---|---|---|
firstboot.sh |
Basis-Setup für jede frische Debian/Ubuntu-Box | Stufe 1, live |
lxc-host-setup.sh |
Outer-Container vorbereiten (Bridge, iptables, nested LXC) | geplant |
ccc-create.sh |
Inner-Container provisionieren (Bash v1) | geplant |
ccc (Python) |
CLI als Pendant zu pct (Typer + Pydantic) |
geplant |
ccc-tui (Python) |
Textual-TUI als Pendant zum Proxmox-Webinterface | geplant |
Architektur und Designentscheidungen: siehe WHITEPAPER.md im
Entwicklungs-Workspace (privat).
Designprinzipien
- Vertrautheit > Eleganz —
ccc≈pctsemantisch,ccc-tui≈ Proxmox-Webinterface - Drei-Skripte-Modell statt Universal-Skript mit Modus-Switch
- Idempotenz (mailinabox-Stil) —
curl ... | bashjederzeit wiederholbar - Kaizen — kleine Schritte, ausprobieren statt endlos planen
- Bash für einmalige Setups, Python für wachsende Werkzeuge
Lizenz
MIT — siehe LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xed_ccc-0.0.1.tar.gz.
File metadata
- Download URL: xed_ccc-0.0.1.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bbb52b44fffc0b972bfcaf30767bb0a05e077b754cce42d2e98e6bab1d3b976
|
|
| MD5 |
464af05d219cc47d0e46a2539fcc71ef
|
|
| BLAKE2b-256 |
855631a82160bd8bd0c6a8231edaefcf565e2ca47a69b4cd90e86dd1caa61aed
|
File details
Details for the file xed_ccc-0.0.1-py3-none-any.whl.
File metadata
- Download URL: xed_ccc-0.0.1-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e6a99a821c6e81ece0e607efae1db1eb8f56f77ebe1e8a5a4a9729e4767dec5
|
|
| MD5 |
475d7e4b01071cd91a1ee12b46d86450
|
|
| BLAKE2b-256 |
d9077ff6d42ddc8be54f0871c5c3d1beca338cbba72026ee8badb2a717beccf8
|