XED /CCC cBOX@ /Container Control · Bash-Bootstrap und Werkzeuge für nested LXC-Stacks

firstboot.sh v0.7.0 ccc v0.0.1 MIT GitHub PyPI

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)

Setzt Zeitzone, Locales, Default-Editor und Basis-Pakete per Whiptail-TUI im Debian-Installer-Stil. Idempotent — beliebig oft wiederholbar.

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

PhaseInhalt
0Pre-Flight (root-Check, Distro-Check, apt-Bootstrap, TTY-Detect)
1Eingaben sammeln (Whiptail bei TTY, ENV-Vars sonst)
2Zeitzone setzen (/etc/timezone + /etc/localtime)
3Locales generieren + Default-Locale (update-locale/etc/default/locale)
4Basis-Pakete installieren (--no-install-recommends)
5EDITOR=nano in /etc/environment (idempotent via grep-vor-write)
5bOptional: apt dist-upgrade + autoremove + autoclean (Yesno)
7XED /CCC Python-Tool installieren (Yesno) — apt python3-Stack + git clone + venv + symlink /usr/local/bin/ccc
8Abschluss-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

# 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

RolleBeschreibungStatus
pmDESKDebian/Ubuntu Gnome-Desktop (xrdp + Gnome-Stack)Stub (Plan)
lxcHOSTFirewall + Public-IP + Outer-Container für nested LXCgeplant
osNGINXReverse-Proxy + WordOpsgeplant
commBOXCommunication-Stack (Mail, DNS, Webmail)geplant

Roadmap (Skripte + Werkzeuge)

KomponenteZweckStatus
firstboot.shBasis-Setup + ccc-Self-Install (Phase 7)v0.7.0 live
ccc (Python)CLI als Pendant zu pct (Typer + Rich)v0.0.1 Skelett live
lxc-host-setup.shOuter-Container vorbereiten (Bridge, iptables, nested LXC)geplant
ccc-tui (Python, Textual)TUI als Pendant zum Proxmox-Webinterfacegeplant
ccc REST-APIFastAPI-Schnittstelle für AI-Agent-IntegrationPhase 3

Designprinzipien