fixes
Some checks failed
Bump build.func Revision / bump-revision (push) Has been cancelled

This commit is contained in:
CanbiZ 2025-10-29 13:17:35 +01:00
parent 935fc42a87
commit e97a1ec944
3 changed files with 42 additions and 17 deletions

View File

@ -122,8 +122,7 @@ Wants=postgresql.service redis-server.service rabbitmq-server.service photon.ser
[Service] [Service]
Type=simple Type=simple
WorkingDirectory=/opt/reitti/ WorkingDirectory=/opt/reitti/
ExecStart=/usr/bin/java -jar /opt/reitti/reitti.jar \ ExecStart=/usr/bin/java --enable-native-access=ALL-UNNAMED -jar -Xmx2g reitti.jar
--spring.config.location=file:/opt/reitti/application.properties
TimeoutStopSec=20 TimeoutStopSec=20
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure

View File

@ -1,7 +1,7 @@
# Build.func Refactoring Summary - CORRECTED # Build.func Refactoring Summary - CORRECTED
**Datum:** 29.10.2025 **Datum:** 29.10.2025
**Backup:** build.func.backup-refactoring-* **Backup:** build.func.backup-refactoring-\*
## Durchgeführte Änderungen (KORRIGIERT) ## Durchgeführte Änderungen (KORRIGIERT)
@ -9,7 +9,8 @@
**Problem:** Nvidia-Unterstützung war überkompliziert mit Treiber-Checks, nvidia-smi Calls, automatischen Installationen **Problem:** Nvidia-Unterstützung war überkompliziert mit Treiber-Checks, nvidia-smi Calls, automatischen Installationen
**Lösung (KORRIGIERT):** **Lösung (KORRIGIERT):**
- ✅ Entfernt: `check_nvidia_host_setup()` Funktion (unnötige nvidia-smi Checks) - ✅ Entfernt: `check_nvidia_host_setup()` Funktion (unnötige nvidia-smi Checks)
- ✅ Entfernt: VAAPI/NVIDIA verification checks nach Container-Start - ✅ Entfernt: VAAPI/NVIDIA verification checks nach Container-Start
- ✅ **BEHALTEN:** `lxc.mount.entry` für alle GPU-Typen (Intel/AMD/NVIDIA) ✅✅✅ - ✅ **BEHALTEN:** `lxc.mount.entry` für alle GPU-Typen (Intel/AMD/NVIDIA) ✅✅✅
@ -18,6 +19,7 @@
- ✅ User installiert Treiber selbst im Container - ✅ User installiert Treiber selbst im Container
**GPU Config jetzt:** **GPU Config jetzt:**
```lxc ```lxc
# Intel/AMD: # Intel/AMD:
lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file
@ -31,7 +33,8 @@ lxc.mount.entry: /dev/nvidia-uvm /dev/nvidia-uvm none bind,optional,create=file
lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged
``` ```
**Resultat:** **Resultat:**
- GPU Passthrough funktioniert rein über LXC mount entries - GPU Passthrough funktioniert rein über LXC mount entries
- Keine unnötigen Host-Checks oder nvidia-smi calls - Keine unnötigen Host-Checks oder nvidia-smi calls
- User installiert Treiber selbst im Container wenn nötig - User installiert Treiber selbst im Container wenn nötig
@ -39,7 +42,8 @@ lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged
### 2. SSH Keys Funktionen ✅ ### 2. SSH Keys Funktionen ✅
**Analyse:** **Analyse:**
- `install_ssh_keys_into_ct()` - bereits gut strukturiert ✅ - `install_ssh_keys_into_ct()` - bereits gut strukturiert ✅
- `find_host_ssh_keys()` - bereits gut strukturiert ✅ - `find_host_ssh_keys()` - bereits gut strukturiert ✅
@ -47,22 +51,26 @@ lxc.cgroup2.devices.allow: c 195:0 rwm # if privileged
### 3. Default Vars Logik überarbeitet ✅ ### 3. Default Vars Logik überarbeitet ✅
**Problem:** Einige var_* defaults machen keinen Sinn als globale Defaults: **Problem:** Einige var\_\* defaults machen keinen Sinn als globale Defaults:
- `var_ctid` - Container-IDs können nur 1x vergeben werden ❌ - `var_ctid` - Container-IDs können nur 1x vergeben werden ❌
- `var_ipv6_static` - Statische IPs können nur 1x vergeben werden ❌ - `var_ipv6_static` - Statische IPs können nur 1x vergeben werden ❌
**Kein Problem (KORRIGIERT):** **Kein Problem (KORRIGIERT):**
- `var_gateway` - Kann als Default gesetzt werden (User's Verantwortung) ✅ - `var_gateway` - Kann als Default gesetzt werden (User's Verantwortung) ✅
- `var_apt_cacher` - Kann als Default gesetzt werden + Runtime-Check ✅ - `var_apt_cacher` - Kann als Default gesetzt werden + Runtime-Check ✅
- `var_apt_cacher_ip` - Kann als Default gesetzt werden + Runtime-Check ✅ - `var_apt_cacher_ip` - Kann als Default gesetzt werden + Runtime-Check ✅
**Lösung:** **Lösung:**
- ✅ **ENTFERNT** aus VAR_WHITELIST: var_ctid, var_ipv6_static - ✅ **ENTFERNT** aus VAR_WHITELIST: var_ctid, var_ipv6_static
- ✅ **BEHALTEN** in VAR_WHITELIST: var_gateway, var_apt_cacher, var_apt_cacher_ip - ✅ **BEHALTEN** in VAR_WHITELIST: var_gateway, var_apt_cacher, var_apt_cacher_ip
- ✅ **NEU:** Runtime-Check für APT Cacher Erreichbarkeit (curl timeout 2s) - ✅ **NEU:** Runtime-Check für APT Cacher Erreichbarkeit (curl timeout 2s)
- ✅ Kommentare hinzugefügt zur Erklärung - ✅ Kommentare hinzugefügt zur Erklärung
**APT Cacher Runtime Check:** **APT Cacher Runtime Check:**
```bash ```bash
# Runtime check: Verify APT cacher is reachable if configured # Runtime check: Verify APT cacher is reachable if configured
if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then
@ -78,6 +86,7 @@ fi
``` ```
**Resultat:** **Resultat:**
- Nur sinnvolle Defaults: keine var_ctid, keine static IPs - Nur sinnvolle Defaults: keine var_ctid, keine static IPs
- APT Cacher funktioniert mit automatischem Fallback wenn nicht erreichbar - APT Cacher funktioniert mit automatischem Fallback wenn nicht erreichbar
- Gateway bleibt als Default (User's Verantwortung bei Konflikten) - Gateway bleibt als Default (User's Verantwortung bei Konflikten)
@ -85,12 +94,14 @@ fi
## Code-Statistik ## Code-Statistik
### Vorher: ### Vorher:
- Zeilen: 3,518 - Zeilen: 3,518
- check_nvidia_host_setup(): 22 Zeilen - check_nvidia_host_setup(): 22 Zeilen
- NVIDIA verification: 8 Zeilen - NVIDIA verification: 8 Zeilen
- Var whitelist entries: 28 Einträge - Var whitelist entries: 28 Einträge
### Nachher: ### Nachher:
- Zeilen: 3,458 - Zeilen: 3,458
- check_nvidia_host_setup(): **ENTFERNT** - check_nvidia_host_setup(): **ENTFERNT**
- NVIDIA verification: **ENTFERNT** - NVIDIA verification: **ENTFERNT**
@ -99,22 +110,26 @@ fi
- Var whitelist entries: 26 Einträge (var_ctid, var_ipv6_static entfernt) - Var whitelist entries: 26 Einträge (var_ctid, var_ipv6_static entfernt)
### Einsparung: ### Einsparung:
- ~60 Zeilen Code - ~60 Zeilen Code
- 2 problematische var_* Einträge entfernt - 2 problematische var\_\* Einträge entfernt
- Komplexität reduziert - Komplexität reduziert
- Robustheit erhöht (APT Cacher Check) - Robustheit erhöht (APT Cacher Check)
## Was wurde KORRIGIERT ## Was wurde KORRIGIERT
### Fehler 1: lxc.mount.entry entfernt ❌ ### Fehler 1: lxc.mount.entry entfernt ❌
**Problem:** Ich hatte die `lxc.mount.entry` Zeilen entfernt und nur `dev0:` Einträge behalten. **Problem:** Ich hatte die `lxc.mount.entry` Zeilen entfernt und nur `dev0:` Einträge behalten.
**Lösung:** `lxc.mount.entry` für alle GPU-Typen wieder hinzugefügt! ✅ **Lösung:** `lxc.mount.entry` für alle GPU-Typen wieder hinzugefügt! ✅
### Fehler 2: Zu viel aus Whitelist entfernt ❌ ### Fehler 2: Zu viel aus Whitelist entfernt ❌
**Problem:** gateway und apt_cacher sollten bleiben können. **Problem:** gateway und apt_cacher sollten bleiben können.
**Lösung:** Nur var_ctid und var_ipv6_static entfernt! ✅ **Lösung:** Nur var_ctid und var_ipv6_static entfernt! ✅
### Fehler 3: Kein APT Cacher Fallback ❌ ### Fehler 3: Kein APT Cacher Fallback ❌
**Problem:** APT Cacher könnte nicht erreichbar sein. **Problem:** APT Cacher könnte nicht erreichbar sein.
**Lösung:** Runtime-Check mit curl --connect-timeout 2 hinzugefügt! ✅ **Lösung:** Runtime-Check mit curl --connect-timeout 2 hinzugefügt! ✅
@ -123,20 +138,23 @@ fi
Vor Deployment testen: Vor Deployment testen:
### GPU Passthrough: ### GPU Passthrough:
- [ ] Intel iGPU: Check lxc.mount.entry für /dev/dri/*
- [ ] AMD GPU: Check lxc.mount.entry für /dev/dri/* - [ ] Intel iGPU: Check lxc.mount.entry für /dev/dri/\*
- [ ] NVIDIA GPU: Check lxc.mount.entry für /dev/nvidia* - [ ] AMD GPU: Check lxc.mount.entry für /dev/dri/\*
- [ ] NVIDIA GPU: Check lxc.mount.entry für /dev/nvidia\*
- [ ] Privileged: Check lxc.cgroup2.devices.allow - [ ] Privileged: Check lxc.cgroup2.devices.allow
- [ ] Unprivileged: Check nur lxc.mount.entry (keine cgroup) - [ ] Unprivileged: Check nur lxc.mount.entry (keine cgroup)
- [ ] Multi-GPU System (user selection) - [ ] Multi-GPU System (user selection)
- [ ] System ohne GPU (skip passthrough) - [ ] System ohne GPU (skip passthrough)
### APT Cacher: ### APT Cacher:
- [ ] APT Cacher erreichbar → verwendet - [ ] APT Cacher erreichbar → verwendet
- [ ] APT Cacher nicht erreichbar → deaktiviert mit Warning - [ ] APT Cacher nicht erreichbar → deaktiviert mit Warning
- [ ] APT Cacher nicht konfiguriert → skip - [ ] APT Cacher nicht konfiguriert → skip
### Default Vars: ### Default Vars:
- [ ] var_ctid NICHT in defaults - [ ] var_ctid NICHT in defaults
- [ ] var_ipv6_static NICHT in defaults - [ ] var_ipv6_static NICHT in defaults
- [ ] var_gateway in defaults ✅ - [ ] var_gateway in defaults ✅
@ -147,11 +165,13 @@ Vor Deployment testen:
**KEINE Breaking Changes mehr!** **KEINE Breaking Changes mehr!**
### GPU Passthrough: ### GPU Passthrough:
- ✅ lxc.mount.entry bleibt wie gehabt - ✅ lxc.mount.entry bleibt wie gehabt
- ✅ Nur nvidia-smi Checks entfernt - ✅ Nur nvidia-smi Checks entfernt
- ✅ User installiert Treiber selbst (war schon immer so) - ✅ User installiert Treiber selbst (war schon immer so)
### Default Vars: ### Default Vars:
- ✅ gateway bleibt verfügbar - ✅ gateway bleibt verfügbar
- ✅ apt_cacher bleibt verfügbar (+ neuer Check) - ✅ apt_cacher bleibt verfügbar (+ neuer Check)
- ❌ var_ctid entfernt (macht keinen Sinn) - ❌ var_ctid entfernt (macht keinen Sinn)
@ -160,12 +180,14 @@ Vor Deployment testen:
## Vorteile ## Vorteile
### GPU Passthrough: ### GPU Passthrough:
- ✅ Einfacher Code, weniger Fehlerquellen - ✅ Einfacher Code, weniger Fehlerquellen
- ✅ Keine Host-Dependencies (nvidia-smi) - ✅ Keine Host-Dependencies (nvidia-smi)
- ✅ lxc.mount.entry funktioniert wie erwartet ✅ - ✅ lxc.mount.entry funktioniert wie erwartet ✅
- ✅ User hat Kontrolle über Container-Treiber - ✅ User hat Kontrolle über Container-Treiber
### Default Vars: ### Default Vars:
- ✅ APT Cacher mit automatischem Fallback - ✅ APT Cacher mit automatischem Fallback
- ✅ Gateway als Default möglich (User's Verantwortung) - ✅ Gateway als Default möglich (User's Verantwortung)
- ✅ Verhindert CT-ID und static IP Konflikte - ✅ Verhindert CT-ID und static IP Konflikte
@ -176,6 +198,7 @@ Vor Deployment testen:
### GPU Device Binding (KORRIGIERT): ### GPU Device Binding (KORRIGIERT):
**Intel/AMD:** **Intel/AMD:**
```lxc ```lxc
lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file lxc.mount.entry: /dev/dri/renderD128 /dev/dri/renderD128 none bind,optional,create=file
lxc.mount.entry: /dev/dri/card0 /dev/dri/card0 none bind,optional,create=file lxc.mount.entry: /dev/dri/card0 /dev/dri/card0 none bind,optional,create=file
@ -185,6 +208,7 @@ lxc.cgroup2.devices.allow: c 226:0 rwm
``` ```
**NVIDIA:** **NVIDIA:**
```lxc ```lxc
lxc.mount.entry: /dev/nvidia0 /dev/nvidia0 none bind,optional,create=file lxc.mount.entry: /dev/nvidia0 /dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl /dev/nvidiactl none bind,optional,create=file lxc.mount.entry: /dev/nvidiactl /dev/nvidiactl none bind,optional,create=file
@ -198,10 +222,12 @@ lxc.cgroup2.devices.allow: c 195:255 rwm
### Whitelist Diff (KORRIGIERT): ### Whitelist Diff (KORRIGIERT):
**Entfernt:** **Entfernt:**
- var_ctid (macht keinen Sinn - CT IDs sind unique) - var_ctid (macht keinen Sinn - CT IDs sind unique)
- var_ipv6_static (macht keinen Sinn - static IPs sind unique) - var_ipv6_static (macht keinen Sinn - static IPs sind unique)
**Behalten:** **Behalten:**
- var_gateway (User's Verantwortung) - var_gateway (User's Verantwortung)
- var_apt_cacher (mit Runtime-Check) - var_apt_cacher (mit Runtime-Check)
- var_apt_cacher_ip (mit Runtime-Check) - var_apt_cacher_ip (mit Runtime-Check)

View File

@ -307,7 +307,7 @@ base_settings() {
GATE=${var_gateway:-""} GATE=${var_gateway:-""}
APT_CACHER=${var_apt_cacher:-""} APT_CACHER=${var_apt_cacher:-""}
APT_CACHER_IP=${var_apt_cacher_ip:-""} APT_CACHER_IP=${var_apt_cacher_ip:-""}
# Runtime check: Verify APT cacher is reachable if configured # Runtime check: Verify APT cacher is reachable if configured
if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then
if ! curl -s --connect-timeout 2 "http://${APT_CACHER_IP}:3142" >/dev/null 2>&1; then if ! curl -s --connect-timeout 2 "http://${APT_CACHER_IP}:3142" >/dev/null 2>&1; then
@ -319,7 +319,7 @@ base_settings() {
msg_ok "APT Cacher verified at ${APT_CACHER_IP}:3142" msg_ok "APT Cacher verified at ${APT_CACHER_IP}:3142"
fi fi
fi fi
MTU=${var_mtu:-""} MTU=${var_mtu:-""}
SD=${var_storage:-""} SD=${var_storage:-""}
NS=${var_ns:-""} NS=${var_ns:-""}
@ -2197,7 +2197,7 @@ build_container() {
# Check for NVIDIA GPU - look for NVIDIA vendor ID [10de] # Check for NVIDIA GPU - look for NVIDIA vendor ID [10de]
if echo "$pci_vga_info" | grep -q "\[10de:"; then if echo "$pci_vga_info" | grep -q "\[10de:"; then
msg_info "Detected NVIDIA GPU" msg_info "Detected NVIDIA GPU"
# Simple passthrough - just bind /dev/nvidia* devices if they exist # Simple passthrough - just bind /dev/nvidia* devices if they exist
for d in /dev/nvidia* /dev/nvidiactl /dev/nvidia-modeset /dev/nvidia-uvm /dev/nvidia-uvm-tools; do for d in /dev/nvidia* /dev/nvidiactl /dev/nvidia-modeset /dev/nvidia-uvm /dev/nvidia-uvm-tools; do
[[ -e "$d" ]] && NVIDIA_DEVICES+=("$d") [[ -e "$d" ]] && NVIDIA_DEVICES+=("$d")
@ -2311,7 +2311,7 @@ EOF
# Add lxc.mount.entry for each device # Add lxc.mount.entry for each device
for dev in "${devices[@]}"; do for dev in "${devices[@]}"; do
echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG" echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG"
if [[ "$CT_TYPE" == "0" ]]; then if [[ "$CT_TYPE" == "0" ]]; then
# Privileged container - also add cgroup allows # Privileged container - also add cgroup allows
local major minor local major minor
@ -2337,7 +2337,7 @@ EOF
# Add lxc.mount.entry for each NVIDIA device # Add lxc.mount.entry for each NVIDIA device
for dev in "${NVIDIA_DEVICES[@]}"; do for dev in "${NVIDIA_DEVICES[@]}"; do
echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG" echo "lxc.mount.entry: $dev $dev none bind,optional,create=file" >>"$LXC_CONFIG"
if [[ "$CT_TYPE" == "0" ]]; then if [[ "$CT_TYPE" == "0" ]]; then
# Privileged container - also add cgroup allows # Privileged container - also add cgroup allows
local major minor local major minor