Erweitere das Setup-Skript um die Konfiguration der X11-Autorisierung für den Kiosk-User. Füge ein X11-Startup-Hilfsskript und ein Reparaturskript zur Behebung von X11-Problemen hinzu. Stelle sicher, dass die DISPLAY-Variable und die .Xauthority-Datei korrekt eingerichtet sind.

This commit is contained in:
Till Tomczak 2025-06-04 13:02:17 +02:00
parent 821883141e
commit 6f16cbd612

307
setup.sh
View File

@ -1420,6 +1420,79 @@ EOF
mkdir -p "$kiosk_home/.chromium-kiosk"
chown -R "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.chromium-kiosk"
# X11-Autorisierung für kiosk-User konfigurieren
progress "Konfiguriere X11-Autorisierung für kiosk-User..."
# Erstelle .Xauthority Datei
touch "$kiosk_home/.Xauthority"
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.Xauthority"
chmod 600 "$kiosk_home/.Xauthority"
# Füge DISPLAY-Variable zum .bashrc hinzu
if ! grep -q "export DISPLAY=" "$kiosk_home/.bashrc" 2>/dev/null; then
cat >> "$kiosk_home/.bashrc" << 'EOF'
# X11 Display Konfiguration
export DISPLAY=:0.0
export XAUTHORITY=/home/kiosk/.Xauthority
# X11 Session Management
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = "1" ]; then
export DISPLAY=:0.0
fi
EOF
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
fi
# Erstelle X11-Startup-Hilfsskript
cat > "$kiosk_home/start-x11.sh" << 'EOF'
#!/bin/bash
# X11-Startup-Hilfsskript für kiosk-User
# Behebt .Xauthority und DISPLAY-Probleme
export HOME=/home/kiosk
export USER=kiosk
export DISPLAY=:0.0
export XAUTHORITY=/home/kiosk/.Xauthority
# Erstelle .Xauthority falls nicht vorhanden
if [ ! -f "$XAUTHORITY" ]; then
touch "$XAUTHORITY"
chmod 600 "$XAUTHORITY"
fi
# Prüfe ob X11-Server läuft
if ! pgrep -x "X" > /dev/null && ! pgrep -x "Xorg" > /dev/null; then
echo "Starte X11-Server..."
startx /home/kiosk/.xinitrc -- :0 vt1 &
sleep 3
fi
# Warte bis X11-Server verfügbar ist
timeout=30
elapsed=0
while [ $elapsed -lt $timeout ]; do
if xset q >/dev/null 2>&1; then
echo "X11-Server ist bereit"
break
fi
sleep 1
elapsed=$((elapsed + 1))
done
if [ $elapsed -ge $timeout ]; then
echo "FEHLER: X11-Server nicht verfügbar nach ${timeout}s"
exit 1
fi
echo "X11-Session erfolgreich gestartet"
EOF
chmod +x "$kiosk_home/start-x11.sh"
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/start-x11.sh"
log "✅ Automatischer Kiosk-Start konfiguriert"
info "Der Kiosk-Modus startet automatisch beim Login des $KIOSK_USER"
}
@ -1820,6 +1893,28 @@ EOF
mkdir -p "$kiosk_home/.npm-global" 2>/dev/null || true
chown -R "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.npm-global" 2>/dev/null || true
# X11-Autorisierung sicherstellen
progress "Sicherstelle X11-Autorisierung für kiosk-User..."
if [ ! -f "$kiosk_home/.Xauthority" ]; then
touch "$kiosk_home/.Xauthority"
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.Xauthority"
chmod 600 "$kiosk_home/.Xauthority"
success "✅ .Xauthority Datei erstellt"
fi
# DISPLAY-Variable in bashrc sicherstellen
if ! grep -q "export DISPLAY=" "$kiosk_home/.bashrc" 2>/dev/null; then
cat >> "$kiosk_home/.bashrc" << 'EOF'
# X11 Display Konfiguration
export DISPLAY=:0.0
export XAUTHORITY=/home/kiosk/.Xauthority
EOF
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
success "✅ X11-Variablen zu .bashrc hinzugefügt"
fi
success "✅ Projekt-Berechtigungen für kiosk-User konfiguriert"
info " 📁 Kiosk-Arbeitsverzeichnis: $kiosk_project_dir"
info " 👤 Besitzer: $KIOSK_USER"
@ -1967,6 +2062,30 @@ if [ -d "$SCRIPT_DIR/static" ]; then
chmod -R 775 "$SCRIPT_DIR/static" 2>/dev/null || true
fi
# X11-Autorisierung für kiosk-User sicherstellen
log "Sicherstelle X11-Autorisierung..."
kiosk_home="/home/$KIOSK_USER"
if [ ! -f "$kiosk_home/.Xauthority" ]; then
touch "$kiosk_home/.Xauthority"
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.Xauthority"
chmod 600 "$kiosk_home/.Xauthority"
log "✅ .Xauthority Datei erstellt"
fi
# DISPLAY-Variable in bashrc sicherstellen
if [ -f "$kiosk_home/.bashrc" ] && ! grep -q "export DISPLAY=" "$kiosk_home/.bashrc" 2>/dev/null; then
cat >> "$kiosk_home/.bashrc" << 'EOF'
# X11 Display Konfiguration
export DISPLAY=:0.0
export XAUTHORITY=/home/kiosk/.Xauthority
EOF
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
log "✅ X11-Variablen zu .bashrc hinzugefügt"
fi
log "✅ Berechtigen-Reparatur abgeschlossen"
info ""
info "📋 Zusammenfassung:"
@ -1986,6 +2105,194 @@ EOF
success "✅ Berechtigen-Reparatur-Skript erstellt: $fix_script"
info " 💡 Verwendung nach Setup: sudo ./fix-permissions.sh"
# Erstelle zusätzliches X11-Fix-Skript
local x11_fix_script="$CURRENT_DIR/fix-x11.sh"
progress "Erstelle X11-Reparatur-Skript..."
cat > "$x11_fix_script" << 'EOF'
#!/bin/bash
# ===================================================================
# MYP X11-Reparatur-Skript
# Behebt X11/.Xauthority-Probleme für kiosk-User
# Kann als root oder kiosk-User ausgeführt werden
# ===================================================================
set -euo pipefail
KIOSK_USER="kiosk"
# Farben für Ausgabe
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log() {
echo -e "${GREEN}[$(date '+%H:%M:%S')] $1${NC}"
}
warning() {
echo -e "${YELLOW}[WARNUNG] $1${NC}"
}
error() {
echo -e "${RED}[FEHLER] $1${NC}"
exit 1
}
info() {
echo -e "${BLUE}[INFO] $1${NC}"
}
log "=== MYP X11-REPARATUR ==="
# Prüfe ob kiosk User existiert
if ! id "$KIOSK_USER" &>/dev/null; then
error "Kiosk-User '$KIOSK_USER' existiert nicht!"
fi
kiosk_home="/home/$KIOSK_USER"
# Stoppe laufende X11-Prozesse
log "Stoppe laufende X11-Prozesse..."
pkill -f "startx" 2>/dev/null || true
pkill -f "X " 2>/dev/null || true
pkill -f "Xorg" 2>/dev/null || true
pkill -f "chromium" 2>/dev/null || true
sleep 2
# Bereinige alte X11-Session-Dateien
log "Bereinige alte X11-Session-Dateien..."
rm -f /tmp/.X0-lock 2>/dev/null || true
rm -f /tmp/.X11-unix/X0 2>/dev/null || true
# X11-Autorisierung neu erstellen
log "Erstelle X11-Autorisierung neu..."
# Entferne alte .Xauthority
if [ -f "$kiosk_home/.Xauthority" ]; then
rm -f "$kiosk_home/.Xauthority"
fi
# Erstelle neue .Xauthority
touch "$kiosk_home/.Xauthority"
# Setze korrekte Berechtigungen (funktioniert sowohl als root als auch als kiosk)
if [ "$EUID" -eq 0 ]; then
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.Xauthority"
fi
chmod 600 "$kiosk_home/.Xauthority"
log "✅ .Xauthority neu erstellt"
# Prüfe und korrigiere .bashrc
log "Prüfe X11-Umgebungsvariablen..."
if [ -f "$kiosk_home/.bashrc" ]; then
if ! grep -q "export DISPLAY=" "$kiosk_home/.bashrc" 2>/dev/null; then
log "Füge X11-Variablen zu .bashrc hinzu..."
cat >> "$kiosk_home/.bashrc" << 'BASHEOF'
# X11 Display Konfiguration
export DISPLAY=:0.0
export XAUTHORITY=/home/kiosk/.Xauthority
BASHEOF
if [ "$EUID" -eq 0 ]; then
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
fi
log "✅ X11-Variablen hinzugefügt"
else
log "✅ X11-Variablen bereits konfiguriert"
fi
else
warning "⚠️ .bashrc nicht gefunden"
fi
# Erstelle X11-Test-Skript
log "Erstelle X11-Test-Skript..."
cat > "$kiosk_home/test-x11.sh" << 'TESTEOF'
#!/bin/bash
# X11-Test für kiosk-User
export DISPLAY=:0.0
export XAUTHORITY=/home/kiosk/.Xauthority
echo "=== X11-Test ==="
echo "DISPLAY: $DISPLAY"
echo "XAUTHORITY: $XAUTHORITY"
echo ""
if [ -f "$XAUTHORITY" ]; then
echo "✅ .Xauthority existiert"
ls -la "$XAUTHORITY"
else
echo "❌ .Xauthority fehlt"
exit 1
fi
echo ""
echo "Teste X11-Verbindung..."
if command -v xset >/dev/null 2>&1; then
if xset q >/dev/null 2>&1; then
echo "✅ X11-Server erreichbar"
xset q | head -3
else
echo "❌ X11-Server nicht erreichbar"
echo "Versuche X11-Server zu starten..."
startx /home/kiosk/.xinitrc -- :0 vt1 &
sleep 5
if xset q >/dev/null 2>&1; then
echo "✅ X11-Server nach Start erreichbar"
else
echo "❌ X11-Server konnte nicht gestartet werden"
exit 1
fi
fi
else
echo "⚠️ xset nicht verfügbar - kann X11 nicht testen"
fi
echo ""
echo "✅ X11-Test abgeschlossen"
TESTEOF
chmod +x "$kiosk_home/test-x11.sh"
if [ "$EUID" -eq 0 ]; then
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/test-x11.sh"
fi
log "✅ X11-Reparatur abgeschlossen"
info ""
info "📋 Was wurde behoben:"
info " - Alte .Xauthority entfernt und neu erstellt"
info " - X11-Umgebungsvariablen konfiguriert"
info " - X11-Test-Skript erstellt"
info ""
info "🔧 Nächste Schritte:"
info " - Als kiosk-User einloggen: su - kiosk"
info " - X11 testen: ./test-x11.sh"
info " - Kiosk-Modus starten: ./start-x11.sh"
info ""
info "💡 Bei weiteren Problemen:"
info " - Neustart: sudo reboot"
info " - Manual X11 start: startx"
info ""
EOF
chmod +x "$x11_fix_script" 2>/dev/null || warning "⚠️ Konnte fix-x11.sh nicht ausführbar machen"
success "✅ X11-Reparatur-Skript erstellt: $x11_fix_script"
info " 💡 Verwendung bei X11-Problemen: sudo ./fix-x11.sh"
}
install_npm_dependencies() {