docker-open-box-with-browse.../README.md

205 lines
7.5 KiB
Markdown

# 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)
```