105 lines
2.5 KiB
Bash
105 lines
2.5 KiB
Bash
#!/bin/bash
|
|
# ===================================================================
|
|
# Entrypoint-Script für Meldestelle Desktop-App (VNC)
|
|
# ===================================================================
|
|
|
|
set -e
|
|
|
|
# Logging-Funktion
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
|
}
|
|
|
|
log "Starting Meldestelle Desktop-App VNC Container..."
|
|
|
|
# Environment-Variablen setzen
|
|
export DISPLAY=${DISPLAY:-:99}
|
|
export VNC_PORT=${VNC_PORT:-5901}
|
|
export NOVNC_PORT=${NOVNC_PORT:-6080}
|
|
export API_BASE_URL=${API_BASE_URL:-http://api-gateway:8081}
|
|
|
|
log "Environment:"
|
|
log " DISPLAY: $DISPLAY"
|
|
log " VNC_PORT: $VNC_PORT"
|
|
log " NOVNC_PORT: $NOVNC_PORT"
|
|
log " API_BASE_URL: $API_BASE_URL"
|
|
|
|
# Erstelle .Xauthority wenn nicht vorhanden
|
|
touch /home/vncuser/.Xauthority
|
|
|
|
# 1. Starte X11 Virtual Display (Xvfb)
|
|
log "Starting Xvfb on display $DISPLAY..."
|
|
Xvfb $DISPLAY -screen 0 1280x1024x24 -ac +extension GLX +render -noreset &
|
|
XVFB_PID=$!
|
|
|
|
# Warte bis X11 bereit ist
|
|
sleep 3
|
|
|
|
# 2. Starte Desktop Environment (XFCE4)
|
|
log "Starting XFCE4 desktop environment..."
|
|
startxfce4 &
|
|
XFCE_PID=$!
|
|
|
|
# Warte bis Desktop bereit ist
|
|
sleep 5
|
|
|
|
# 3. Starte VNC Server
|
|
log "Starting VNC server on port $VNC_PORT..."
|
|
x11vnc -display $DISPLAY -forever -usepw -create -rfbport $VNC_PORT -nopw -shared -bg
|
|
VNC_PID=$!
|
|
|
|
# 4. Starte noVNC Web Interface
|
|
log "Starting noVNC web interface on port $NOVNC_PORT..."
|
|
websockify --web=/usr/share/novnc/ $NOVNC_PORT localhost:$VNC_PORT &
|
|
NOVNC_PID=$!
|
|
|
|
# 5. Warte bis Services bereit sind
|
|
sleep 10
|
|
|
|
# 6. Starte Desktop-App
|
|
log "Starting Meldestelle Desktop-App..."
|
|
cd /app/desktop-app
|
|
export API_BASE_URL=$API_BASE_URL
|
|
|
|
# Finde die ausführbare Datei
|
|
if [ -f "client/bin/client" ]; then
|
|
DESKTOP_APP="client/bin/client"
|
|
elif [ -f "bin/client" ]; then
|
|
DESKTOP_APP="bin/client"
|
|
elif [ -f "client" ]; then
|
|
DESKTOP_APP="client"
|
|
else
|
|
log "ERROR: Desktop-App executable not found!"
|
|
log "Contents of /app/desktop-app:"
|
|
ls -la /app/desktop-app/
|
|
exit 1
|
|
fi
|
|
|
|
log "Found desktop app: $DESKTOP_APP"
|
|
chmod +x "$DESKTOP_APP"
|
|
|
|
# Starte Desktop-App
|
|
./"$DESKTOP_APP" &
|
|
APP_PID=$!
|
|
|
|
log "All services started successfully!"
|
|
log "VNC: vnc://localhost:$VNC_PORT"
|
|
log "noVNC: http://localhost:$NOVNC_PORT/vnc.html"
|
|
|
|
# Cleanup-Funktion
|
|
cleanup() {
|
|
log "Shutting down services..."
|
|
kill $APP_PID 2>/dev/null || true
|
|
kill $NOVNC_PID 2>/dev/null || true
|
|
kill $VNC_PID 2>/dev/null || true
|
|
kill $XFCE_PID 2>/dev/null || true
|
|
kill $XVFB_PID 2>/dev/null || true
|
|
exit 0
|
|
}
|
|
|
|
# Signal-Handler
|
|
trap cleanup SIGTERM SIGINT
|
|
|
|
# Warten auf Prozesse
|
|
wait $APP_PID
|