Projektarbeit-MYP/backend/install/install-kiosk.sh

140 lines
3.6 KiB
Bash

#!/bin/bash
# MYP Kiosk Installation - Einfach und direkt
# Installiert Backend + Kiosk-Modus ohne venv oder nginx
set -e
echo "=== MYP Kiosk Installation ==="
# Prüfe Root-Rechte
if [[ $EUID -ne 0 ]]; then
echo "FEHLER: Dieses Skript muss als root ausgeführt werden"
exit 1
fi
# Installiere benötigte Pakete
echo "Installiere Pakete..."
apt update
# Basis-Pakete
apt install -y python3.11 python3-pip curl
# Browser
apt install -y chromium-browser || apt install -y chromium || apt install -y firefox-esr
# Display Manager und Window Manager
apt install -y lightdm
apt install -y openbox || apt install -y xfce4 || apt install -y lxde
# X11 falls nicht vorhanden
apt install -y xorg xinit
# Erstelle Verzeichnisse
echo "Erstelle Verzeichnisse..."
mkdir -p /home/user/.config/openbox
# Prüfe Backend-Code im aktuellen Verzeichnis
echo "Prüfe Backend-Code..."
if [ ! -d "../app" ]; then
echo "FEHLER: Backend-App-Verzeichnis nicht gefunden: ../app"
exit 1
fi
if [ ! -f "../requirements.txt" ]; then
echo "FEHLER: requirements.txt nicht gefunden: ../requirements.txt"
exit 1
fi
# Setze Berechtigungen für Backend-Code (im aktuellen Verzeichnis)
echo "Setze Backend-Berechtigungen..."
chmod -R 755 ../app
[ -f "../app/app.py" ] && chmod +x ../app/app.py
# Installiere Python-Abhängigkeiten global
echo "Installiere Python-Abhängigkeiten..."
cd ..
pip3 install --break-system-packages -r requirements.txt
# Setze finale Berechtigungen
echo "Setze Benutzer-Berechtigungen..."
chown -R user:user /home/user
# Installiere Services
echo "Installiere Services..."
chmod 644 myp-backend.service
chmod 644 myp-kiosk.service
cp myp-backend.service /etc/systemd/system/
cp myp-kiosk.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable myp-backend.service
systemctl enable myp-kiosk.service
# Erstelle Benutzer 'user' falls nicht vorhanden
echo "Erstelle Benutzer 'user'..."
if ! id "user" &>/dev/null; then
useradd -m -s /bin/bash user
echo "user:user" | chpasswd
fi
# Setze Openbox als Standard-Session
echo "Setze Openbox als Standard..."
echo "openbox-session" > /home/user/.xsession
echo "openbox-session" > /home/user/.xinitrc
chmod +x /home/user/.xsession
chmod +x /home/user/.xinitrc
# Konfiguriere automatischen Login
echo "Konfiguriere automatischen Login..."
cat > /etc/lightdm/lightdm.conf.d/10-autologin.conf << EOF
[Seat:*]
autologin-user=user
autologin-user-timeout=0
user-session=openbox
greeter-session=lightdm-gtk-greeter
EOF
# Konfiguriere Openbox für Kiosk-Start
echo "Konfiguriere Openbox..."
mkdir -p /home/user/.config/openbox
cat > /home/user/.config/openbox/autostart << EOF
# Warte kurz bis System bereit ist
sleep 3
# Starte Kiosk-Service automatisch
systemctl --user start myp-kiosk.service &
EOF
# Openbox-Menü deaktivieren (Kiosk-Modus)
cat > /home/user/.config/openbox/rc.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<openbox_config xmlns="http://openbox.org/3.4/rc">
<keyboard>
<!-- Deaktiviere alle Tastenkombinationen -->
</keyboard>
<mouse>
<!-- Deaktiviere Rechtsklick-Menü -->
<context name="Desktop">
</context>
</mouse>
<applications>
<!-- Chromium immer im Vollbild -->
<application name="chromium*">
<fullscreen>yes</fullscreen>
<maximized>yes</maximized>
</application>
</applications>
</openbox_config>
EOF
chmod 755 /home/user/.config/openbox/autostart
chmod 644 /home/user/.config/openbox/rc.xml
chown -R user:user /home/user/.config
chown -R user:user /home/user/.xsession
chown -R user:user /home/user/.xinitrc
echo "=== Installation abgeschlossen ==="
echo "System wird in 5 Sekunden neu gestartet..."
sleep 5
reboot