firstboot.sh v0.7.0
ccc v0.0.1
MIT
GitHub
PyPI
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.
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)
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.
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) |
| 7 | XED /CCC Python-Tool installieren (Yesno) — apt python3-Stack + git clone + venv + symlink /usr/local/bin/ccc |
| 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.
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.
# 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)
# 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
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
| 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 |
| Komponente | Zweck | Status |
|---|---|---|
firstboot.sh | Basis-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.sh | Outer-Container vorbereiten (Bridge, iptables, nested LXC) | geplant |
ccc-tui (Python, Textual) | TUI als Pendant zum Proxmox-Webinterface | geplant |
ccc REST-API | FastAPI-Schnittstelle für AI-Agent-Integration | Phase 3 |
ccc ≈ pct semantisch, ccc-tui ≈ Proxmox-Webinterfacecurl … | bash jederzeit wiederholbar