1
Architecture
vr6syncro edited this page 2026-07-07 06:32:42 +02:00
Architektur
Komponenten
Der Helper ist ein duenner Wrapper um den offiziellen TafForge-Installer. Er besteht aus host-seitigen und LXC-internen Skripten.
Host-seitig (laeuft auf dem Proxmox-VE-Host)
ct/teddytafforge.sh— Entry-Point. Quelltmisc/build.func, fragt Scope + Einstellungen perwhiptailab, legt den unprivilegierten LXC an (pct create), bootet Debian 13 und delegiert perpct execan den LXC-internen Installer.ct/update.sh— Convenience-Updater: waehlt perwhiptaileinen TafForge-LXC (Hostname*tafforge*/*teddy*oder Meta-Datei/etc/tafforge/proxmox.meta) und ruft darin den autoritativen Updater auf.misc/build.func— geteilte Host-Helfer (Farben, ERR-Trap_on_err,catch_errors,pve_check,default_settings,build_container,description, DEBUG/xtrace).
LXC-intern (laeuft im frisch erzeugten Container)
install/teddytafforge-install.sh— Delegator: klont App-Code (Backend/Frontend/Plugin) vom GitHub-Mirrorgithub.com/vr6syncro/TeddyTafForge, legt den vendoredinstall/-Stack daneben und ruftinstall/lxc/install.sh(Upstream-Installer verbatim) auf. Schreibt danach/etc/tafforge/proxmox.meta.install/all-in-one-install.sh— Orchestrator: installiert erst TeddyCloud, dann TafForge; setztTEDDYCLOUD_URL,TEDDYCLOUD_DATA_DIR=/opt/teddycloud/data,TAFFORGE_TOPOLOGY=all-in-one,PLUGIN_ROOT_REQUIRED=1.install/teddycloud-install.sh— nativer TeddyCloud-Build aus Quellcode (make zip, kein Docker), Layout unter/opt/teddycloud/, systemd-Unitteddycloud.service. Default-Reftc_v0.6.8.misc/install.func— geteilte LXC-interne Helfer (network_check,setting_up_container,update_os,msg_*).
Vendored Stack
vendor/tafforge-install/—lib/undlxc/aus dem Upstream-TafForge-Repo (Installer, systemd-Unittafforge.service,tafforge.env.sample,update-app.sh,update-ytdlp.sh, Topologie-/Python-Erkennung). Wird bei Upstream-Aenderungen per Refresh synchron gehalten; CI prueft Drift.
Datenfluss
flowchart TD
subgraph HOST["Proxmox VE Host (root)"]
CT["ct/teddytafforge.sh<br/>whiptail-Dialoge"]
BF["misc/build.func"]
UPD["ct/update.sh"]
end
subgraph LXC["Unprivilegierter LXC (Debian 13)"]
DEL["install/teddytafforge-install.sh"]
AIO["install/all-in-one-install.sh"]
TCI["install/teddycloud-install.sh"]
VEN["install/lxc/install.sh<br/>(vendored Upstream)"]
IF["misc/install.func"]
TAF["tafforge.service :3000"]
TC["teddycloud.service :80/443/8443"]
META["/etc/tafforge/proxmox.meta"]
end
subgraph EXT["Externe Quellen"]
GH["github.com/vr6syncro/TeddyTafForge<br/>(App-Code)"]
TCSRC["github.com/toniebox-reverse-engineering<br/>teddycloud (Quellcode)"]
FJ["Forgejo raw:<br/>misc/*.func, vendor/*"]
end
CT -->|source| BF
CT -->|pct create + pct exec| DEL
CT -.->|Scope all-in-one| AIO
AIO -->|Schritt 1/2| TCI
AIO -->|Schritt 2/2| DEL
TCI -->|git clone + make zip| TCSRC
TCI --> TC
DEL -->|git clone App| GH
DEL -->|vendored install/| VEN
DEL --> IF
VEN --> TAF
DEL --> META
UPD -->|pct exec update-app.sh| TAF
BF -.->|raw fetch| FJ
classDef host fill:#dbeafe,stroke:#1e40af,color:#1e3a8a;
classDef lxc fill:#dcfce7,stroke:#166534,color:#14532d;
classDef ext fill:#fef3c7,stroke:#92400e,color:#78350f;
class CT,BF,UPD host;
class DEL,AIO,TCI,VEN,IF,TAF,TC,META lxc;
class GH,TCSRC,FJ ext;
Topologien
| Scope | Inhalt | TeddyCloud-Quelle |
|---|---|---|
sidecar |
Nur TafForge | Bestehende TC anderswo; optional Bind-Mount mp0 der TC-Datenverzeichnisses |
all-in-one |
TafForge + TeddyCloud im selben LXC | Nativer Build unter /opt/teddycloud/, Plugin-Ziel data/www/plugins/ |
Im Sidecar-Modus wird das TeddyCloud-Datenverzeichnis als mp0 mit backup=0 gemountet, damit ein vzdump des TafForge-LXC die TC-Daten nicht mitzieht.
Quelle: ct/*.sh, install/*.sh, misc/*.func, vendor/README.md.