Skip to main content

cBOX@ /Container Control — Bash-Bootstrap und Python-Werkzeug für nested LXC-Stacks (Proxmox VE 9 + Debian/Ubuntu). cBOX.at/YOU by XED.dev Tools via Collective Context (CC).

Project description

XED /CCC — cBOX@ /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.sh v0.7.0 (DE/EN-TUI, idempotent, ccc-Self-Install) + ccc v0.0.1 (Python-Skelett) Lizenz: MIT Distribution: https://ccc.xed.dev (Bash) · https://pypi.org/project/xed-ccc/ (Python)


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.applied trennt allerersten Run (Skript-Defaults greifen) vom Re-Run (nur dpkg-Ist-Zustand zählt).
  • 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, ENV DIST_UPGRADE=yes fü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)
5b Optional: apt dist-upgrade + autoremove + autoclean (Yesno)
6 Editor-Eintrag
7 XED /CCC Python-Tool installieren (Yesno) — apt python3-Stack + git clone + venv + symlink
8 Abschluss-Banner + Marker-Datei

Bewusst nicht enthalten: Bridge-/iptables-/nested-LXC-Setup. Das kommt mit lxc-host-setup.sh (Skript 2/3, geplant) als separates Skript für cBOX-Outer-Container.


Phase 2 — ccc (Python-Tool, ab v0.0.1)

Nach firstboot.sh kommt das Python-Tool für Rollen-Konfiguration — Pendant zu pct aus Proxmox, aber innerhalb der LXC-Box laufend.

Installation (zwei Wege)

# Variante A — automatisch via firstboot.sh Phase 7 (empfohlen für frische Boxen):
#   firstboot.sh fragt nach ccc-Installation, klont Repo nach /opt/xed-ccc/,
#   baut venv und symlinkt /usr/local/bin/ccc in einem Schritt.

# Variante B — PyPI (für SysOps die Python kennen, bestehende Boxen):
pipx install xed-ccc      # isolierte Tool-Installation (empfohlen)
pip install xed-ccc       # System-Python (mit pep668-bypass)

Updates (nach Erst-Installation):

# Variante A — firstboot.sh Re-Run (Phase 7 macht fetch+reset im /opt/xed-ccc/):
bash <(curl -s https://ccc.xed.dev/firstboot.sh)

# Variante B — pipx-Pfad:
pipx upgrade xed-ccc

# Geplant — Self-Update als Python-Verb:
ccc update

Verben (analog pct)

ccc list                  # verfügbare Rollen mit Status
ccc create pmDESK         # Rolle in aktueller Box installieren
ccc create pmDESK --dry-run  # nur Plan zeigen
ccc menu                  # interaktive TUI (Stub, Textual kommt später)
ccc --version
ccc --help

Rollen-Roadmap

Rolle Beschreibung Status
pmDESK Debian/Ubuntu Gnome-Desktop (xrdp + Gnome-Stack) Stub (Plan)
lxcHOST Firewall + Public-IP + Outer-Container für nested LXC geplant
osNGINX Reverse-Proxy + WordOps geplant
commBOX Communication-Stack (Mail, DNS, Webmail) geplant

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 > Eleganzcccpct semantisch, ccc-tui ≈ Proxmox-Webinterface
  • Drei-Skripte-Modell statt Universal-Skript mit Modus-Switch
  • Idempotenz (mailinabox-Stil) — curl ... | bash jederzeit 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

xed_ccc-0.2.2.tar.gz (31.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xed_ccc-0.2.2-py3-none-any.whl (36.5 kB view details)

Uploaded Python 3

File details

Details for the file xed_ccc-0.2.2.tar.gz.

File metadata

  • Download URL: xed_ccc-0.2.2.tar.gz
  • Upload date:
  • Size: 31.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for xed_ccc-0.2.2.tar.gz
Algorithm Hash digest
SHA256 c9fba75c0a367f17643b5fabe6502df006d6f60c553418ae0bff16f88cbc1910
MD5 f848e50bc4a11c39efccebf8b95cccd0
BLAKE2b-256 91bfb3c9f06942f91bee5e2693fe7a9a915d7dcb5fca488fd11285bb7fcf9d26

See more details on using hashes here.

File details

Details for the file xed_ccc-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: xed_ccc-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 36.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for xed_ccc-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6c8c57e7a65a0885bc421b6739a31bead361e7dca5d8f3fd79081f3a99cf1075
MD5 03914c25b12a92e48417dead2a1f7502
BLAKE2b-256 ee79d85f6bbca096eef501ea23cdc73e761ce99141f42b70c219c42c4108c8d9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page