140 lines
3.6 KiB
Bash
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 |