Docker-basierter LINBO Network Boot Server
LINBO Plugin ist eine containerisierte Version von LINBO (Linux Network Boot). Es wird als Sync-Client an einen bestehenden linuxmuster.net-Server angebunden.
Installationsanleitung: docs/INSTALL.md -- Schritt-fuer-Schritt von einem frischen Server bis zum ersten PXE-Boot.
Admin-Handbuch: Siehe docs/ADMIN-GUIDE.md fuer Container-Architektur, Netzwerk-Diagramm und Firewall-Regeln.
Architektur-Diagramme: Siehe docs/ARCHITECTURE.md fuer Mermaid-Diagramme (IST/SOLL).
Unterschiede zu Vanilla-LINBO: Siehe docs/UNTERSCHIEDE-ZU-LINBO.md -- was LINBO ist, was Docker anders macht, und warum.
- PXE Network Boot — Clients booten über TFTP + HTTP (GRUB)
- HTTP Boot — Kernel/Initrd via HTTP für 5-10x schnellere Transfers als TFTP
- Image Management — qcow2-Images erstellen, synchronisieren und deployen
- Remote Control — SSH-Befehle an Clients (sync, start, reboot, shutdown, WoL)
- Treiber-Profile -- Windows-Treiber via DMI-Matching automatisch installieren (match.conf + Postsync)
- Firmware Auto-Detection — Firmware von Clients per SSH scannen und in linbofs64 injizieren
- Kernel Switching — Zwischen stable/longterm/legacy Kernel-Varianten wechseln
- Web Terminal — Interaktive SSH-Sessions zu LINBO-Clients (xterm.js + WebSocket)
- GRUB Theme — Logo, Icons und Farben anpassen
- React Frontend — Moderne Web-Oberfläche mit Dark Theme
- Sync-Modus — Read-Only Delta-Feed von linuxmuster-api
- REST API -- Express.js mit JWT-Authentifizierung
- WebSocket — Echtzeit-Updates für Host-Status, Operations, Sync-Fortschritt
- DHCP — Export für ISC DHCP / dnsmasq, optionaler Proxy-DHCP-Container
Vollstaendige Installationsanleitung: docs/INSTALL.md -- Schritt-fuer-Schritt von einem frischen Server bis zum ersten PXE-Boot.
Kurzfassung:
git clone https://github.com/amolani/linbo-docker.git
cd linbo-docker
./setup.sh # Interaktiver Setup-Assistent
docker compose up -d
make wait-ready # Wartet bis alle Container bereit sind
make doctor # 24 Diagnose-ChecksWeb-UI: http://<LINBO_SERVER_IP>:8080 -- Login: admin / Muster!
Sync-Modus einrichten: Siehe INSTALL.md -- Sync-Modus.
LMN-Server (optional)
┌──────────────────┐
│ linuxmuster-api │
│ :8001 │
│ (Delta-Feed) │
└────────┬─────────┘
│ Read-Only
▼
┌─────────────────────────────────────────────────────────┐
│ LINBO Plugin │
│ │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────────┐ │
│ │ TFTP │ │RSYNC │ │ SSH │ │ API │ │ Web │ │
│ │:69 │ │:873 │ │:2222 │ │:3000 │ │ :8080 │ │
│ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ └────┬─────┘ │
│ └─────────┴─────────┴─────────┴────────────┘ │
│ │ │
│ ┌──────────┴──────────┐ │
│ │ Redis :6379 │ │
│ │ (Cache, Status, │ │
│ │ Operations, │ │
│ │ Settings) │ │
│ └─────────────────────┘ │
└─────────────────────────────────────────────────────────┘
▲ ▲ ▲
│ │ │
┌────┴───┐ ┌────┴───┐ ┌───┴────┐
│ Client │ │ Client │ │ Client │
│ PXE │ │ PXE │ │ PXE │
└────────┘ └────────┘ └────────┘
Detaillierte Mermaid-Diagramme: docs/ARCHITECTURE.md
| Container | Port | Beschreibung |
|---|---|---|
init |
— | Boot-Dateien herunterladen (einmalig) |
tftp |
69/udp | PXE-Boot (GRUB-Configs) |
rsync |
873 | Images + Treiber verteilen |
ssh |
2222 | Remote Commands + Terminal |
api |
3000 | REST API + WebSocket |
web |
8080 | React SPA + HTTP Boot (Nginx) |
cache |
6379 | Redis |
dhcp |
67/udp | dnsmasq Proxy (optional, --profile dhcp) |
| Seite | Beschreibung |
|---|---|
| Dashboard | Host-Übersicht, Speicher, letzte Operations |
| Hosts | Host-Liste mit Filter (Read-Only im Sync-Modus) |
| Rooms | Raum-Übersicht |
| Configs | start.conf-Editor mit Vorschau |
| Images | Image-Inventar (qcow2) |
| Operations | Echtzeit-Tracking aller Befehle |
| Drivers | Treiber-Verwaltung (DMI-Matching, Treiber-Profile) |
| Firmware | Auto-Detection + Injection |
| Kernel | Varianten-Wechsel + Status |
| Terminal | SSH-Sessions mit xterm.js |
| GRUB Theme | Logo, Icons, Farben |
| Sync | Sync-Status, Cursor, API-Health |
| Settings | LMN API, Passwort, Modus-Toggle |
| Endpoint | Beschreibung |
|---|---|
GET /health |
Health Check |
POST /api/v1/auth/login |
Authentifizierung |
GET /api/v1/auth/me |
Aktueller Benutzer |
GET /api/v1/sync/status |
Sync-Status |
POST /api/v1/sync/trigger |
Sync ausloesen |
GET /api/v1/sync/hosts |
Host-Liste (aus LMN-Sync) |
GET /api/v1/sync/configs |
Config-Liste |
GET /api/v1/images |
Image-Liste |
POST /api/v1/operations/direct |
Remote-Befehl (sync, start, reboot...) |
POST /api/v1/operations/wake |
Wake-on-LAN |
POST /api/v1/operations/schedule |
Onboot-Befehle planen |
POST /api/v1/drivers/create-profile |
Treiber-Profil erstellen (DMI) |
GET /api/v1/drivers/profiles |
Treiber-Profile auflisten |
GET /api/v1/settings |
Runtime-Einstellungen |
POST /api/v1/system/update-linbofs |
linbofs64 neu bauen |
POST /api/v1/system/kernel/switch |
Kernel-Variante wechseln |
GET /api/v1/terminal/sessions |
Terminal-Sessions |
Bestehenden DHCP-Server fuer PXE konfigurieren:
# ISC DHCP
option architecture-type code 93 = unsigned integer 16;
if option architecture-type = 00:07 {
filename "boot/grub/x86_64-efi/core.efi";
} elsif option architecture-type = 00:09 {
filename "boot/grub/x86_64-efi/core.efi";
} else {
filename "boot/grub/i386-pc/core.0";
}
next-server <LINBO_SERVER_IP>;
Oder den eingebauten DHCP-Proxy-Container nutzen:
docker compose --profile dhcp up -dDetaillierte DHCP-Konfiguration (ISC DHCP, dnsmasq, Proxy-DHCP): docs/INSTALL.md
# Container bauen
docker compose build
# Mit Logs starten
docker compose up
# Tests ausführen (1135 Tests)
docker exec linbo-api npm test
# Container-Shell
docker exec -it linbo-api sh
make up # Alle Container starten
make wait-ready # Warten bis alle Container healthy
make doctor # 24 Diagnose-Checks (6 Kategorien)
make health # Quick Health-Check (API + Web)
make status # Git + Docker Status
make deploy # Deploy zum Testserver (rsync)
make deploy-full # + linbofs + GRUB neu bauen
make test # Tests ausfuehren| Problem | Lösung |
|---|---|
| PXE kein Netzwerk | Kernel-Module pruefen: make doctor -- PXE Port Reachability |
| Control Mode | linbo_gui64_7.tar.lz fehlt auf dem Server |
| Buttons nicht klickbar | udevd tot → linbofs64 neu bauen |
| SSH refused | Port 22 vs 2222 prüfen |
| Keys fehlen nach Clone | Werden automatisch generiert (SSH-Container) |
| TFTP liefert unfertiges linbofs64 | TFTP wartet auf .linbofs-patch-status Marker (Build-Indikator) |
| 500 im Sync-Modus | Route-Mounting in routes/index.js prüfen |
| EACCES | chown -R 1001:1001 auf Docker Volume |
| .env-Änderungen nicht aktiv | docker compose up -d statt restart |
Ausführliche Fehlerdiagnose: docs/TROUBLESHOOTING.md
| Feature | Production | LINBO Plugin |
|---|---|---|
| PXE Network Boot | ✅ | ✅ |
| HTTP Boot (GRUB) | ❌ (nur TFTP) | ✅ |
| Image Sync (rsync) | ✅ | ✅ |
| Remote Commands | ✅ | ✅ |
| Config Deployment | ✅ | ✅ |
| GRUB Config Generation | ✅ | ✅ |
| DHCP Integration | ✅ | ✅ |
| Windows-Treiber (Treiber-Profile) | ❌ | ✅ |
| Firmware Auto-Detection | ❌ | ✅ |
| Kernel Switching | ❌ | ✅ |
| Web Terminal (xterm.js) | ❌ | ✅ |
| React Frontend | ❌ | ✅ |
| Multicast (udpcast) | ✅ | Geplant |
| Torrent (ctorrent) | ✅ | Geplant |
| Sophomorix/LDAP | ✅ | N/A |
GPL-3.0 — siehe LICENSE.
Basiert auf linuxmuster-linbo7 vom linuxmuster.net-Team.