# OpenBox Browser Container (RDP & VNC) Alpine-basierter Docker-Container mit OpenBox Window Manager, Firefox Browser und Fernzugriff via RDP und VNC. ## Schnellstart 1. `.env`-Datei anpassen: ```env FIREFOX_HOMEPAGE=https://www.google.com RDP_PASSWORD=dein-sicheres-passwort ``` 2. Container starten: ```bash docker compose up -d --build ``` 3. Verbinden: | Protokoll | Port | Passwort | |-----------|------|----------| | RDP | 3389 | `RDP_PASSWORD` aus `.env` | | VNC | 5900 | `RDP_PASSWORD` aus `.env` | - **RDP**: Windows Remotedesktop, Remmina, etc. (Benutzername wird ignoriert) - **VNC**: TigerVNC Viewer, RealVNC, Remmina, etc. Beide Protokolle zeigen die gleiche Session. ## Environment-Variablen | Variable | Beschreibung | Standard | |----------|-------------|----------| | `FIREFOX_HOMEPAGE` | Firefox-Startseite | `https://www.google.com` | | `RDP_PASSWORD` | Passwort fuer RDP- und VNC-Zugang | `changeme` | ## Persistenz Firefox-Daten (Lesezeichen, Verlauf, Einstellungen, Cookies, etc.) werden im Ordner `firefox-data/` gespeichert und bleiben beim Neustart des Containers erhalten. ## OpenBox-Menu Rechtsklick auf den Desktop oeffnet das Kontextmenue: - **Firefox** - Startet Firefox mit der konfigurierten Startseite - **Neustarten** - Startet die OpenBox-Session neu - **Herunterfahren** - Beendet die OpenBox-Session ## Tastenkuerzel | Kuerzel | Aktion | |---------|--------| | `Alt+F4` | Fenster schliessen | | `Alt+Tab` | Fenster wechseln | | `Alt+Linksklick` (Ziehen) | Fenster verschieben | | `Alt+Rechtsklick` (Ziehen) | Fenster skalieren | | Doppelklick Titelleiste | Fenster maximieren/wiederherstellen | ## Neubauen ohne Cache ```bash docker compose down && docker compose build --no-cache && docker compose up -d ``` --- ## Projektstruktur ``` . ├── .env # Environment-Variablen (Passwort, Startseite) ├── Dockerfile # Container-Image Definition ├── docker-compose.yml # Service-Konfiguration ├── config/ │ ├── autostart.sh # OpenBox Autostart-Skript │ ├── menu.xml # OpenBox Rechtsklick-Menue │ ├── rc.xml # OpenBox Fenster-/Tastatur-/Maus-Konfiguration │ ├── supervisord.conf # Prozess-Management (Startreihenfolge) │ └── xrdp.ini # XRDP-Server Konfiguration ├── scripts/ │ ├── start.sh # Container-Einstiegspunkt │ └── set-password.sh # Setzt Benutzerpasswort aus ENV └── firefox-data/ # Persistente Firefox-Daten (Volume) ``` ## Konfigurationsdateien im Detail ### config/supervisord.conf Verwaltet alle Dienste im Container ueber Supervisor. Die Dienste starten in dieser Reihenfolge: | Prioritaet | Dienst | Beschreibung | |------------|--------|-------------| | 5 | **Xvfb** | Virtueller Framebuffer (Display `:10`, 1920x1080, 24bit). Stellt den X11-Server bereit, ohne physische Grafikkarte. | | 10 | **OpenBox** | Window Manager. Startet nach 2s auf Display `:10` als Benutzer `openbox`. Laedt `.bashrc` fuer Umgebungsvariablen. | | 20 | **x11vnc** | VNC-Server. Startet nach 3s, verbindet sich mit Display `:10`. Passwortgeschuetzt, Port 5900, Shared-Modus. | | 30 | **XRDP** | RDP-Server. Startet nach 4s, fungiert als RDP-zu-VNC Proxy auf Port 3389. | Alle Dienste haben `autorestart=true` und werden bei Absturz automatisch neu gestartet. Die `sleep`-Verzoegerungen stellen sicher, dass jeder Dienst erst startet, wenn seine Abhaengigkeiten bereit sind. ### config/xrdp.ini XRDP-Server Konfiguration. Arbeitet im **Proxy-Modus** - leitet RDP-Verbindungen an den lokalen x11vnc-Server weiter. Wichtige Einstellungen: | Einstellung | Wert | Beschreibung | |-------------|------|-------------| | `port` | 3389 | Standard-RDP Port | | `security_layer` | rdp | RDP-Verschluesselung | | `crypt_level` | high | Hohe Verschluesselungsstufe | | `max_bpp` | 32 | Maximale Farbtiefe | | `lib` | libvnc.so | VNC-Protokoll als Backend | | `ip` | 127.0.0.1 | Verbindet zu lokalem VNC | | `port` (Session) | 5900 | VNC-Port von x11vnc | Channels wie Clipboard (`cliprdr`), Sound (`rdpsnd`) und Laufwerks-Umleitung (`rdpdr`) sind aktiviert. ### config/autostart.sh Wird von OpenBox automatisch beim Sessionstart ausgefuehrt. Aufgaben: 1. **Energiesparmodus deaktivieren**: - `xset s off` - Bildschirmschoner aus - `xset s noblank` - Kein Bildschirm-Blanking - `xset -dpms` - Display Power Management aus (kein Standby/Suspend/Off) 2. **Firefox starten** mit der Startseite aus `FIREFOX_HOMEPAGE` ### config/menu.xml Definiert das OpenBox-Rechtsklick-Kontextmenue mit vier Eintraegen: - **Firefox** - Startet Firefox mit `--url "${FIREFOX_HOMEPAGE}"` - **Terminal** - Oeffnet xterm - **Neustarten** - `openbox --restart` (laedt OpenBox-Konfiguration neu) - **Herunterfahren** - `openbox --exit` (beendet die Session) ### config/rc.xml OpenBox Window Manager Konfiguration: - **Theme**: Clearlooks mit Noto Sans Schriftart (Groesse 10) - **Desktops**: 1 virtueller Desktop - **Titelleiste**: NLIMC-Layout (Minimize, Maximize, Close Buttons) - **Tastenkuerzel**: Alt+F4 (Schliessen), Alt+Tab (Wechseln) - **Maus**: Rechtsklick auf Desktop oeffnet Menue, Titelleiste ziehbar, Doppelklick maximiert ### scripts/start.sh Container-Einstiegspunkt. Fuehrt beim Start folgende Schritte aus: 1. Setzt das Benutzerpasswort aus `RDP_PASSWORD` 2. Erstellt VNC-Passwortdatei (gleiche wie RDP) 3. Schreibt `FIREFOX_HOMEPAGE` in `.bashrc` fuer die OpenBox-Session 4. Stellt korrekte Berechtigungen fuer Firefox-Daten sicher 5. Erstellt X11-Socket-Verzeichnis `/tmp/.X11-unix` 6. Generiert XRDP RSA-Schluessel (falls nicht vorhanden) 7. Startet Supervisor mit allen Diensten ### scripts/set-password.sh Setzt das Passwort des Benutzers `openbox` aus der Environment-Variable `RDP_PASSWORD` via `chpasswd`. ## Fehlerbehebung ### Web-RDP-Clients (Guacamole, Remotely, etc.) verbinden sich nicht Native RDP-Clients funktionieren, aber Web-basierte RDP-Clients zeigen nach dem Login einen Verbindungsfehler. In diesem Fall die Werte `security_layer` und `crypt_level` in `config/xrdp.ini` anpassen: ```ini security_layer=negotiate crypt_level=low ``` Falls das nicht hilft, zusaetzlich versuchen: ```ini security_layer=rdp crypt_level=none ``` Nach der Aenderung Container neu bauen: `docker compose build --no-cache && docker compose up -d` ### VNC-Zugang als Alternative Falls RDP-Verbindungen generell Probleme machen, kann alternativ der VNC-Port 5900 genutzt werden. Viele Web-Clients (z.B. noVNC) unterstuetzen VNC nativ und zuverlaessiger als RDP. ## Architektur ``` ┌──────────────────────────────────┐ │ Docker Container │ │ │ RDP :3389 ──────> │ XRDP ──> x11vnc ──> Xvfb :10 │ │ │ │ VNC :5900 ──────> │ x11vnc ─────────> Xvfb :10 │ │ │ │ │ OpenBox │ │ │ │ │ Firefox │ └──────────────────────────────────┘ │ ./firefox-data (Volume) ```