205 lines
7.5 KiB
Markdown
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)
|
|
```
|