🎉 Improved backend functionality & added documentation for installation corrections in raspberry pi scripts 🎨📚

This commit is contained in:
Till Tomczak 2025-05-31 03:01:14 +02:00
parent 63362abeed
commit f44639e497
4 changed files with 177 additions and 9 deletions

View File

@ -41,6 +41,9 @@ from utils.queue_manager import start_queue_manager, stop_queue_manager, get_que
from config.settings import SECRET_KEY, UPLOAD_FOLDER, ALLOWED_EXTENSIONS, ENVIRONMENT, SESSION_LIFETIME, SCHEDULER_ENABLED, SCHEDULER_INTERVAL, TAPO_USERNAME, TAPO_PASSWORD
from utils.file_manager import file_manager, save_job_file, save_guest_file, save_avatar_file, save_asset_file, save_log_file, save_backup_file, save_temp_file, delete_file as delete_file_safe
# Datenbank-Engine für Kompatibilität mit init_simple_db.py
from models import engine as db_engine
# Blueprints importieren
from blueprints.guest import guest_blueprint
from blueprints.calendar import calendar_blueprint
@ -96,6 +99,9 @@ app.config["PERMANENT_SESSION_LIFETIME"] = SESSION_LIFETIME
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["WTF_CSRF_ENABLED"] = True
# Globale db-Variable für Kompatibilität mit init_simple_db.py
db = db_engine
# CSRF-Schutz initialisieren
csrf = CSRFProtect(app)

View File

@ -0,0 +1 @@

View File

@ -38,6 +38,17 @@ if [ "$EUID" -ne 0 ]; then
error "Dieses Skript muss als Root ausgeführt werden. Verwende: sudo $0"
fi
# Stelle sicher, dass wichtige Tools verfügbar sind
log "Prüfe System-Tools..."
export PATH="/usr/sbin:/sbin:/usr/bin:/bin:$PATH"
# Prüfe kritische Befehle
for cmd in useradd usermod systemctl apt-get; do
if ! command -v "$cmd" &> /dev/null; then
error "Erforderlicher Befehl '$cmd' nicht gefunden. PATH: $PATH"
fi
done
log "=== MYP Druckerverwaltung - Raspberry Pi Installation ==="
log "Debian 12 (Bookworm) Kiosk-Modus nach offizieller Anleitung"
echo
@ -88,7 +99,6 @@ apt-get install -y \
sqlite3 \
nginx \
supervisor \
chromium-browser \
xorg \
openbox \
lightdm \
@ -103,13 +113,31 @@ apt-get install -y \
zlib1g-dev \
nodejs \
npm \
--no-install-recommends || true
passwd \
adduser \
--no-install-recommends
# Installiere Chromium (versuche verschiedene Paketnamen)
log "Installiere Chromium Browser..."
if apt-get install -y chromium 2>/dev/null; then
log "✅ Chromium erfolgreich installiert"
elif apt-get install -y chromium-browser 2>/dev/null; then
log "✅ Chromium-Browser erfolgreich installiert"
else
warning "⚠️ Chromium konnte nicht automatisch installiert werden"
warning " Manuell installieren mit: apt-get install chromium"
fi
# Erstelle Anwendungsbenutzer
log "Erstelle Anwendungsbenutzer '$APP_USER'..."
if ! id "$APP_USER" &>/dev/null; then
useradd -m -s /bin/bash "$APP_USER"
usermod -aG sudo "$APP_USER"
if ! useradd -m -s /bin/bash "$APP_USER" 2>/dev/null; then
warning "Fehler bei useradd - versuche adduser..."
if ! adduser --disabled-password --gecos "" "$APP_USER" 2>/dev/null; then
error "Konnte Benutzer '$APP_USER' nicht erstellen. System-Tools prüfen."
fi
fi
usermod -aG sudo "$APP_USER" 2>/dev/null || warning "Konnte '$APP_USER' nicht zur sudo-Gruppe hinzufügen"
log "Benutzer '$APP_USER' erstellt"
else
log "Benutzer '$APP_USER' existiert bereits"
@ -118,8 +146,13 @@ fi
# Erstelle Kiosk-Benutzer (nach offizieller Anleitung)
log "Erstelle Kiosk-Benutzer '$KIOSK_USER'..."
if ! id "$KIOSK_USER" &>/dev/null; then
useradd -m -s /bin/bash "$KIOSK_USER"
usermod -aG audio,video "$KIOSK_USER"
if ! useradd -m -s /bin/bash "$KIOSK_USER" 2>/dev/null; then
warning "Fehler bei useradd - versuche adduser..."
if ! adduser --disabled-password --gecos "" "$KIOSK_USER" 2>/dev/null; then
error "Konnte Benutzer '$KIOSK_USER' nicht erstellen. System-Tools prüfen."
fi
fi
usermod -aG audio,video "$KIOSK_USER" 2>/dev/null || warning "Konnte '$KIOSK_USER' nicht zu Gruppen hinzufügen"
log "Benutzer '$KIOSK_USER' erstellt"
else
log "Benutzer '$KIOSK_USER' existiert bereits"
@ -239,6 +272,22 @@ EOF
chown "$APP_USER:$APP_USER" "$APP_DIR/.env"
# Erkenne verfügbares Chromium-Binary
log "Erkenne Chromium-Installation..."
CHROMIUM_BIN=""
for chromium_path in "/usr/bin/chromium" "/usr/bin/chromium-browser" "/snap/bin/chromium"; do
if [ -x "$chromium_path" ]; then
CHROMIUM_BIN="$chromium_path"
log "Chromium gefunden: $CHROMIUM_BIN"
break
fi
done
if [ -z "$CHROMIUM_BIN" ]; then
warning "Chromium nicht gefunden - Kiosk-Modus möglicherweise nicht funktional"
CHROMIUM_BIN="/usr/bin/chromium" # Fallback
fi
# Erstelle Kiosk-Skript (nach offizieller Anleitung)
log "Erstelle Kiosk-Skript..."
cat > "$KIOSK_HOME/kiosk.sh" << EOF
@ -269,7 +318,7 @@ while ! curl -s http://localhost > /dev/null; do
done
# Starte Chromium im Kiosk-Modus (nach offizieller Anleitung)
/usr/bin/chromium-browser \\
$CHROMIUM_BIN \\
--noerrdialogs \\
--disable-infobars \\
--kiosk \\
@ -450,6 +499,29 @@ case "$1" in
echo "=== Kiosk-Logs ==="
journalctl -u myp-kiosk -f
;;
diagnose)
echo "=== MYP System-Diagnose ==="
echo "• Datum: $(date)"
echo "• System: $(uname -a)"
echo "• Distribution: $(lsb_release -d 2>/dev/null || cat /etc/os-release | head -1)"
echo "• Speicher: $(free -h | head -2)"
echo "• Festplatte: $(df -h / | tail -1)"
echo
echo "=== Services ==="
systemctl is-active myp-druckerverwaltung nginx myp-kiosk || true
echo
echo "=== Ports ==="
netstat -tulpn | grep ":80\|:5000" || true
echo
echo "=== Chromium ==="
which chromium chromium-browser 2>/dev/null || echo "Chromium nicht gefunden"
echo
echo "=== Benutzer ==="
id myp kiosk 2>/dev/null || echo "Benutzer nicht vollständig konfiguriert"
echo
echo "=== Letzte Logs ==="
journalctl -u myp-druckerverwaltung --no-pager -n 10 --since "1 hour ago" || true
;;
update)
echo "Aktualisiere MYP Druckerverwaltung..."
cd $APP_DIR
@ -475,7 +547,7 @@ case "$1" in
systemctl restart myp-kiosk
;;
*)
echo "Verwendung: $0 {start|stop|restart|status|logs|kiosk-logs|update|kiosk-restart}"
echo "Verwendung: $0 {start|stop|restart|status|logs|kiosk-logs|diagnose|update|kiosk-restart}"
exit 1
;;
esac
@ -523,6 +595,77 @@ EOF
chmod +x $LOCAL_BIN/myp-backup
# Erstelle Reparatur-Skript
log "Erstelle Reparatur-Skript..."
cat > "$LOCAL_BIN/myp-repair" << 'EOF'
#!/bin/bash
echo "🔧 MYP Druckerverwaltung Reparatur-Tool"
echo "====================================="
echo
# Prüfe Root-Berechtigung
if [ "$EUID" -ne 0 ]; then
echo "❌ Dieses Skript muss als Root ausgeführt werden: sudo $0"
exit 1
fi
# Setze PATH
export PATH="/usr/sbin:/sbin:/usr/bin:/bin:$PATH"
echo "1. Prüfe und repariere Services..."
systemctl daemon-reload
systemctl reset-failed myp-druckerverwaltung myp-kiosk nginx 2>/dev/null || true
echo "2. Prüfe Benutzer..."
if ! id myp &>/dev/null; then
echo " - Erstelle myp-Benutzer..."
useradd -m -s /bin/bash myp 2>/dev/null || adduser --disabled-password --gecos "" myp
fi
if ! id kiosk &>/dev/null; then
echo " - Erstelle kiosk-Benutzer..."
useradd -m -s /bin/bash kiosk 2>/dev/null || adduser --disabled-password --gecos "" kiosk
usermod -aG audio,video kiosk 2>/dev/null || true
fi
echo "3. Prüfe Verzeichnisse..."
mkdir -p /opt/myp-druckerverwaltung /opt/myp-backups /home/kiosk/.config/openbox
chown myp:myp /opt/myp-druckerverwaltung
chown kiosk:kiosk /home/kiosk/.config -R
echo "4. Prüfe Chromium..."
CHROMIUM_BIN=""
for chromium_path in "/usr/bin/chromium" "/usr/bin/chromium-browser" "/snap/bin/chromium"; do
if [ -x "$chromium_path" ]; then
CHROMIUM_BIN="$chromium_path"
echo " - Chromium gefunden: $CHROMIUM_BIN"
break
fi
done
if [ -z "$CHROMIUM_BIN" ]; then
echo " - Installiere Chromium..."
apt-get update -y
apt-get install -y chromium || apt-get install -y chromium-browser || echo " - Chromium-Installation fehlgeschlagen"
fi
echo "5. Repariere Berechtigungen..."
chmod +x /usr/local/bin/myp-* 2>/dev/null || true
chmod +x /home/kiosk/kiosk.sh 2>/dev/null || true
echo "6. Starte Services neu..."
systemctl restart myp-druckerverwaltung nginx
systemctl enable myp-druckerverwaltung nginx myp-kiosk
echo
echo "✅ Reparatur abgeschlossen!"
echo " Status prüfen mit: myp-maintenance status"
echo " Diagnose ausführen mit: myp-maintenance diagnose"
EOF
chmod +x $LOCAL_BIN/myp-repair
# Erstelle Cron-Job für automatische Backups
echo "0 2 * * * root $LOCAL_BIN/myp-backup" > $CRON_DIR/myp-backup
@ -581,6 +724,8 @@ info " • Kiosk-Logs: myp-maintenance kiosk-logs"
info " • Nur Kiosk neustarten: myp-maintenance kiosk-restart"
info " • Update: myp-maintenance update"
info " • Backup erstellen: myp-backup"
info " • System-Diagnose: myp-maintenance diagnose"
info " • Automatische Reparatur: myp-repair"
echo
info "🔍 Zusätzliche Konfiguration:"
info " • Kiosk-Skript: $KIOSK_HOME/kiosk.sh"

View File

@ -51,6 +51,22 @@ if [ "$EUID" -ne 0 ]; then
error "Dieses Skript muss als Root ausgeführt werden: sudo $0"
fi
# Stelle sicher, dass wichtige Tools verfügbar sind
export PATH="/usr/sbin:/sbin:/usr/bin:/bin:$PATH"
# Erkenne verfügbares Chromium-Binary
CHROMIUM_BIN=""
for chromium_path in "/usr/bin/chromium" "/usr/bin/chromium-browser" "/snap/bin/chromium"; do
if [ -x "$chromium_path" ]; then
CHROMIUM_BIN="$chromium_path"
break
fi
done
if [ -z "$CHROMIUM_BIN" ]; then
CHROMIUM_BIN="chromium" # Fallback auf PATH
fi
# Raspberry Pi erkennen
if ! grep -q "Raspberry Pi" /proc/device-tree/model 2>/dev/null; then
warning "Nicht auf Raspberry Pi - Installation trotzdem fortsetzen? (j/N)"
@ -158,7 +174,7 @@ Version=1.0
Type=Application
Name=MYP Browser-Ansicht
Comment=Druckerverwaltung im Browser öffnen
Exec=chromium-browser $kiosk_url
Exec=$CHROMIUM_BIN $kiosk_url
Icon=web-browser
Terminal=false
Categories=Network;