Einsatz zum Image-Rollout für Anfänger

Hallo Community,

ein Kollege und ich wollen einen Teil der Rechner unserer Schule von Win10 auf Debian 13 migrieren. Wir sind eine kleine Schule, es geht also um lediglich ca. 30 Rechner.

Unser ursprünglicher Plan war es einen Referenz-Rechner aufzusetzen und dann den Festplatteninhalt mittels Clonezilla auf die anderen 30 Rechner zu übertragen. Der aktuelle Status ist, dass wir den Referenzrechner aufgesetzt und nach unserem gusto konfiguriert haben und auch schon das Klonen mit Clonezilla ausprobiert haben.

Vor Kurzem waren wir jedoch auf einer Systembetreuuer-Tagung und haben den Tipp bekommen, uns mal Linuxmuster anzuschauen und es zu nutzen, um den Rollout via PXE durchzuführen. Soweit ich es überblicke, ist die Komponente Linbo dafür zuständig.

Ich habe nun ein wenig in die Dokumentation geschaut und muss feststellen, dass Linuxmuster ein super mächtiges Werkzeug ist, das neben dem Aufspielen von Images haufenweise andere hilfreicheFunktionen mitbringt. Im Moment geht es uns aber tatsächlich ausschließlich ums Aufspielen von Images via Netzwerk.

Mir stellt sich nun die Grunddsatzfrage: Wie aufwendig ist es für zwei Anfänger (Vorwissen: langjährige Linux-Nutzung als Desktop-System, Aufsetzen eines Webservers wie nginx+PHP, jedoch nichts Komplexes vergleichbar zu Linuxmuster…) sich reinzufuchsen, also Linuxmuster aufzusetzen, ein Image vom Referenzrechner einzubinden und zum Rollout via PXE zur Verfügung zu stellen? Lohnt es sich überhaupt, wo wir wahrscheinlich mit Clonezilla und ein paar externen Festplatten innerhalb von 1-2 Tagen fertig wären? Es geht wirklich nur im den initialen Rollout, im Folgenden wollten wir Ansible für Software-Updates und ggf. nachträgliche Konfigurationsänderungen nutzen.

Falls ja, hat vielleicht jemand Lesestoff für uns bzw. Tipps, wie wir am effektivsten einen Zugang finden und Linuxmuster aufsetzen, um Linbo zu benutzen?

Vielen Dank im Voraus für Einschätzungen und Tipps!

Einen guten Rutsch ins neue Jahr und schöne Ferien!

Viele Grüße
Michael

edit: Vielleicht eine wichtige Info, die ich ausgelassen habe: Wir benötigen auch keine Nutzerverwaltung, es gibt nur drei Benutzer (Administrator, Lehrer, Schüler), wobei der Schüler-Benutzer bei jedem Boot zurückgesetzt wird.

Hallo Michael,

herzlich willkommen bei uns :slight_smile:

Ja: linuxmuster ist sehr viel mehr als nur linbo.
UNd das Ausrollen von Clients in deinem Netz ist auch mehr als nur 30 mal clonezilla bmühen (das das übrigens selbst auch über das Netzwerk kann).
Du mußt nämlich danach noch bei allen Rechnern die Hostnamen ändern (oder macht ihr das per DHCP?).

In die lmn einfuchsen mußt du dich, aus meiner Sicht aber erstmal garnicht (auch wenn ich das natürlich für die Zukunft empfehle :slight_smile: ), denn du kannst von mir eine fertige virtualboxumgebung bekommen.
Die könntest du auf einem Laptop laufen lassen und als „interne“ Netzwerkkarte die „echte“ Netzwerkkarte (im Notfall den USB Dongel) deines Laptops nehmen.
Dann hast du ein fertiges linuxmuster im Netz (du mußt nur deinen eigenen DHCP in der Zeit ausstecken).
Die MAC Adressen der 30 Rechner benötigst du noch: dann nimmst du die Rechner vorher in der lmn auf, und dann klonst du sie einfach auf deine Rechner.

Das geht eine Stunde in der du nix machen mußt.

Du kannst die Clients auch so einstellen, dass sie immer „direkt booten“ also garnicht erst linbo zeigen.
Vor allem: dann ist linbo auf den Kisten drauf: du könntest einen also irgend wann (ohne dass dein LaptopLMN angeschlossen wird) einfach in linbo booten und nochmal syncen lassen: dann ist er „zurückgesetzt“.

Willst du mal damit rumspielen?
Einfach .ova runterladen, virtualbox mit AddOnns installieren auf einem Gerät mit min. 8GB RAM, ova doppelklicken und importieren (beibehalten aller MAC Adressen wählen!), OPNsense und Server einschalten, warten bis hochgefahren, dann einen Client starten.

Derzeit ist da noch debian 12 und Win10 schon mit drin: ich bin noch am integrieren von win11 und debian 13.

Wenn du das dann am Ende im NEtz so machen willst wie oben beschrieben, dann sag ich noch dazu, wie du linbo einstellen kannst, dass der Cleint immer, ohne linbo zu laden, direkt debian startet.

Schreib mir, dann schicke ich dir einen Download link (ca. 28GB)

LG
Holger

1 „Gefällt mir“

Hallo Holger,

danke für die schnelle und aufschlussreiche Antwort!

Klar, das und noch einiges mehr (Clonezilla scheitert aus irgendeinem Grund an der Formatierung der swap-Partition auf dem Ziellaufwerk, deshalb muss die neu formatiert und dann die richtige UUID an mehrere Stellen eingetragen werden). Aber während der nächste Klonvorgang läuft, kann man die Nacharbeiten gut bewältigen.

Also den Rechner/Laptop, der den Server spielt, mit statischer IP konfigurieren?

OPNsense wird sich aber nicht mit der Firewall, die schon im Netzwerk sitzt, beißen, oder? Unser Netzwerk ist leider recht komplex, es wird von einem externen Dienstleister betreut, ist in mehrere Unternetze unterteilt und man muss unter Umständen in der Firewall Regeln eintragen (lassen – wir haben da keinen Zugriff drauf), damit Geräte im Netz sich gegenseitig sehen.

Fast alle Rechner hängen an einem Switch, der sie ins Netz einbindet. Vielleicht könnte man den Switch vom Rest des Netzes trennen und an einen der Anschlüsse den Rechner mit der LMN-VM anschließen, damit beim Aufspielen der Images keine Komplikationen auftauchen? Die Rechner wären dann aber nicht mit dem Internet verbunden, falls das relevant ist. Bin leider nicht sehr bewandert in Netzwerktechnik, möglicherweise rede ich Mumpitz…

Wäre es denn möglich, die Debian 13 Installation, die wir vorbereitet haben, als Image zu sichern und in LMN zu verwenden, oder kann LMN nur bestimmte vordefinierte Images ausrollen? Wir haben da nämlich Einiges an Zeit investiert, um das System so einzurichten, wie wir es haben wollten…

Wenn das in unserer Umgebung so funktioniert, würden wir das sehr gerne ausprobieren, vielen Dank!

Hallo Michael,

die UUIDs anpassen kannst du dir sparen, wenn du label für die Partitionen vergibst und diese in der fstab verwendest.

Mit „ausstecken“ meinte ich den Bereich der 30 Clients „vom Rest“ trennen, während die lmn auf einem Laptop in dem Segment die Cleints bespielt. Also ja: einfach am Switch ausstecken. Die lmn muss der einzige DHCP dort im Netz sein.

Ja, du kannst dein vorgefertigtes Image auch durch linbo ausrollen lassen: linbo ist das ziemlich wurscht, was es da klont. Einzig das „Aussaugen“, also das Image einmal in die lmn rein bringen, wird etwas kompliziert, denn linbo will gerne selbst das Image daraus erstellen.
Um das ein wenig zu erläutern, muss ich ein wenig ausholen:
Grob funktioniert linbo so: auf dem Cleint gibt es eine Cachpartition: dort werden Images (zwischen)gespeichert: auch die, die hochgeladen werden.
Linbo erwartet auf dem Client diese Partition: an der Stelle und mit dem Label, wie es in der Vorlage (start.conf.GRUPPE) auf dem Server steht.
Wenn dein debian13 nun also auf /dev/sda1 ist und dein Cahce /dev/sda2, dann müßtest du eine /dev/sda3 machen und mit dem label „linbo“ versehen und mit ext4 Formatieren, damit das linbo, dass du dann vom server aus per PXE bootest, diese Partition vorfindet und das Image aus /dev/sda1 erstellen kann in der Cachepartition (auch „Linbopartition“ genannt /dev/sda3). Von dort aus wird das Image auf den Server geladen (genannt upload).
Wenn du dann einen zweiten Cleint einschaltest, und er ist schon aufgenommen am Server und in der gleichen Hardwareklasse (auch Gruppe genannt), dann bekommst er die start.conf.GRUPPE in der die Partitionen definiert sind und kann partitioniert werden und danach gesynct.
Rechnernamen stimmt dann schon.
/etc/fstab kann linbo auch patchen. Ich schreib da aber einfach label rein.

Link zum Download der Umgebung kommt (mit win10 und devian 12).
Eine Anleitung gibt es auch (start veraltet, aber sollte helfen).

LG
Holger

1 „Gefällt mir“

Guten Morgen Holger,
Könnte ich auch den Link bekommen?
Leider stehen wir vor dem gleichen Problem…

Viele Grüsse
Brummel

Hi Michael

Unabhängig ob linbo oder clonezilla: nimm statt einer swap-Partition ein swapfile dann ist das schonmal ein problem weniger.

gruß
sascha

p.s. ich lass sowas direkt beim booten anlegen, hab jetzt gerade das originalskript nicht zur hand, aber das ist etwa sowas

#/bin/bash

FILE="/swap.img"
if ! test -f "$FILE"; then
        MEMSIZE=$(grep MemTotal /proc/meminfo |sed 's/.*: *\([0-9]*\)* *kB/\1/')"k"
        fallocate -l $MEMSIZE "$FILE"
        chmod 600 "$FILE"
        mkswap "$FILE"
fi
swapon "$FILE"

Danke für den Tipp! Hab von der Option gehört, sie aber irgendwie nie ernsthaft in Erwägung gezogen. Jetzt hab ich recherchiert und es scheint wohl, dass man sich die Flexibilität des Swapfiles mit kleinen Abstrichen bei der Leistung erkauft: https://www.reddit.com/r/linux4noobs/comments/mlwgk6/swap_file_vs_swap_partition/ Ich denke, die Variante mit Labels statt UUIDs in der fstab tut es auch. :smiley:

Hallo nochmal in die Runde,

mein Kollege und ich versuchen gerade, die Appliance, die Holger uns geschickt hat, zu benutzen. Jedoch haben wir bisher leider noch nie eine virtuelle Maschine konfiguriert, sodass man per Netzwerk auf sie zugreifen kann. Server und Firewall fahren also in der jeweiligen VM hoch, aber wir kommen nicht aufs Webinterface des Servers. Wir haben recherchiert, dass man wohl eine Port-Weiterleitung im Netzwerkeditor von Virtualbox eintragen muss. Ich habe also ein NAT-Netzwerk erzeugt und möchte eine Regel für die Port-Weiterleitung eintragen. Frage: Hinter welchem Port sitzt der Server? Als Gast-IP wird 10.0.2.0 vorgeschlagen, ist das okay so? Also Host-IP wird nichts vorgeschlagen, können wir hier eine IP frei wählen? Müssen wir in der Firewall-VM irgendwas konfigurieren oder reicht es, wenn sie einfach im Hintergrund läuft?

Danke für alle Tipps!
Michael

Hallo Michael,

das Externe Netzwerk als NAT Netzwerk nach Grün rein bringen ist keien gute Idee. Ihr solltet ein Bridged Netzwerk dafür verwenden. Dafür briged ihr die „Grüne“ Netzwerkkarte der OPnSense und die einzige Netzwerkkarte des Servers auf euer „echtes“ Device, also die Drahtgebundene Netzwerkkarte.
Dann sollte ein Rechner, der über einen Switch an diese Karte angeschlossen ist, wenn die VMs Server und OPNsense laufen, eine IP aus dem Aufnahmepool der lmn bekommen. Das sollte zwischen 10.32.1.100 und 10.32.1.200 sein.

Aber ich würde die VM Umgebung erstmal so lassen wie sie ist, und am Cleint rumspielen und auch mal auf die WebUI zugreifen.
Auch das Kapitel in der Doku zur Rechneraufnahme solltet ihr mal anschauen.
LG
Holger

Okay, wir haben das ausprobiert mit folgenden Ergebnissen:

  • Die Client-VM bootet weiterhin vom in der VM laufenden Server und zeigt den farbigen Linbo-Screen
  • Ein physischer Client bootet nun ebenfalls über PXE Linbo, zeigt allerdings statt des farbigen Screens die Meldung „this linbo client is in remote control mode“, erwartet also offenbar „Befehle“ vom Server.
  • Ich konnte aufs Web-Interface des Servers zugreifen und die Ersteinrichtung erfolgreich abschließen. Danach kam ein orangener Tooltip/Popup rechts oben im Web-Interface mit der Meldung, dass ein Fehler aufgetreten sei und man in der Browserkonsole gucken soll. Konsolenausgabe siehe ganz unten.
  • Beim Versuch trotzdem das Dashboard aufzurufen kam ein Dialog „Serverfehler“: Request GET /api/core/user-config; Type: FileNotFoundError; Message: [Errno 2] No such file or directory: ‚/root/.config/ajenti.yml‘; Traceback: [ein Debug-Output, der mit der Fehlermeldung [Errno 2]… endet.
  • Nach erneutem Einloggen wird als Benutzername weiterhin „root“ und als Passwort das bei der Einrichtung festgelegte Passwort akzeptiert, auf der Hauptseite wird aber vorgeschlagen, den setup wizard nochmals durchlaufen zu lassen.
Diese Seite verwendet die nicht standardisierte Eigenschaft "zoom". Stattdessen sollte calc() in den entsprechenden Eigenschaftswerten oder "transform" zusammen mit "transform-origin: 0 0" verwendet werden. view
Welcome all.js:1201:13
Ajenti 2.2.11 <empty string> all.js:1202:13
Running on debian / ubuntu all.js:1203:13
Plugins 
Object { core: "Core", passwd: "User DB API", dashboard: "Dashboard", lmn_docker: "docker", lmn_w_datetime: "Date Time", filesystem: "Filesystem API", plugins: "Plugins", settings: "Settings", session_list: "Session list", ace: "Ace editor", … }
all.js:1207:13
Identity root all.vendor.js:15717:41
downloadable font: Glyph bbox was incorrect (glyph ids 1 2 3 4 5 8 9 10 11 12 13 14 16 17 19 22 24 28 32 34 35 38 39 40 43 44 45 46 47 48 49 55 56 58 59 61 63 64 68 76 77 78 82 83 84 85 92 103 108 109 110 113 115 122 123 128 131 134 135 152 155 162 163 164 168 170 171 173 175 176 177 184 187 192 197 202 203 210 213 216 217 218 220 221 223 226 227 234 235 237 238 243 245 247 249 250 254 265 267 268 270 271 272 273 276 277 279 280 283 284 288 291 292 295 297 298 299 302 303 306 309 313 314 317 322 328 329 330 335 336 338 341 343 346 347 350 352 356 357 358 359 364 367 370 371 373 379 381 382 384 388 391 393 394 395 396 398 399 403 405 408 409 410 417 419 420 421 422 437 438 441 446 447 449 453 454 458 460 461 462 465 470 475 477 478 479 482 485 490 491 492 493 496 498 501 502 504 506 507 508 509 511 512 517) (font-family: "Font Awesome 6 Brands" style:normal weight:400 stretch:100 src index:0) source: https://10.32.1.1/resources/core/resources/vendor/fontawesome/webfonts/fa-brands-400.woff2
downloadable font: Glyph bbox was incorrect (glyph ids 121) (font-family: "pt_sans" style:normal weight:700 stretch:100 src index:1) source: https://10.32.1.1/resources/core/resources/vendor/pt-sans/fonts/pt_sans/bold/PTS75F.woff
Socket has connected all.vendor.js:15717:41
Socket message from push 
Object { plugin: "tasks", message: {…} }
all.vendor.js:15717:41
Push message from tasks 
Object { type: "update", tasks: [] }
all.vendor.js:15717:41
Object { load: load(), save: save(), getUserConfig: getUserConfig(), setUserConfig: setUserConfig(config), getSmtpConfig: getSmtpConfig(), setSmtpConfig: setSmtpConfig(config), getTfaConfig: getTfaConfig(), deleteTfa: deleteTfa(data), getAuthenticationProviders: getAuthenticationProviders(config), getPermissions: getPermissions(config), … }
all.js:5146:13
false all.js:5192:21
false all.js:5193:21
Studienkolleg München all.js:5194:21
Object { ini: {…}, apply: async apply(), languages: (51) […] }
all.js:5195:21
false all.js:5192:21
false all.js:5193:21
stukolmn.lan all.js:5194:21
Object { ini: {…}, apply: async apply(), languages: (51) […] }
all.js:5195:21
false all.js:5192:21
false all.js:5193:21
stukolmn all.js:5194:21
Object { ini: {…}, apply: async apply(), languages: (51) […] }
all.js:5195:21
undefined all.js:5283:17
Unhandled exception occured all.js:725:17
Consider sending this error to https://github.com/ajenti/ajenti/issues/new all.js:726:17
Error: [$injector:unpr] Unknown provider: messageboxiProvider <- messageboxi <- InitDoneController
https://errors.angularjs.org/1.8.3/$injector/unpr?p0=messageboxiProvider%20%3C-%20messageboxi%20%3C-%20InitDoneController
    minErr https://10.32.1.1/resources/all.vendor.js:158
    injector https://10.32.1.1/resources/all.vendor.js:5011
    getService https://10.32.1.1/resources/all.vendor.js:5171
    protoInstanceInjector https://10.32.1.1/resources/all.vendor.js:5016
    getService https://10.32.1.1/resources/all.vendor.js:5171
    injectionArgs https://10.32.1.1/resources/all.vendor.js:5196
    instantiate https://10.32.1.1/resources/all.vendor.js:5240
    $controller https://10.32.1.1/resources/all.vendor.js:11849
    link https://10.32.1.1/resources/all.vendor.js:40446
    bind https://10.32.1.1/resources/all.vendor.js:1411
    invokeLinkFn https://10.32.1.1/resources/all.vendor.js:11396
    nodeLinkFn https://10.32.1.1/resources/all.vendor.js:10715
    compositeLinkFn https://10.32.1.1/resources/all.vendor.js:9962
    publicLinkFn https://10.32.1.1/resources/all.vendor.js:9827
    lazyCompilation https://10.32.1.1/resources/all.vendor.js:10241
    boundTranscludeFn https://10.32.1.1/resources/all.vendor.js:10005
    controllersBoundTransclude https://10.32.1.1/resources/all.vendor.js:10765
    C https://10.32.1.1/resources/all.vendor.js:40445
    $broadcast https://10.32.1.1/resources/all.vendor.js:19870
    s https://10.32.1.1/resources/all.vendor.js:40450
    processQueue https://10.32.1.1/resources/all.vendor.js:18095
    scheduleProcessQueue https://10.32.1.1/resources/all.vendor.js:18143
    $digest https://10.32.1.1/resources/all.vendor.js:19262
    $apply https://10.32.1.1/resources/all.vendor.js:19650
    ngEventHandler https://10.32.1.1/resources/all.vendor.js:29147
    dispatch https://10.32.1.1/resources/all.vendor.js:18
    handle https://10.32.1.1/resources/all.vendor.js:18
 <div ng:view="" autoscroll="true" class="content ng-scope" ng-swipe-right="toggleOverlayNavigation(true)" ng-swipe-left="toggleOverlayNavigation(false)"> all.vendor.js:15717:41
Source-Map-Fehler: Error: request failed with status 404
Ressourcen-Adresse: https://10.32.1.1/resources/all.vendor.js
Source-Map-Adresse: socket.io.min.js.map
XHRGET
https://10.32.1.1/api/core/user-config
[HTTP/1.1 500  532ms]

Possibly unhandled rejection: {"data":{"message":"[Errno 2] No such file or directory: '/root/.config/ajenti.yml'","exception":"FileNotFoundError","traceback":"Traceback (most recent call last):\n  File \"/opt/linuxmuster/lib/python3.12/site-packages/aj/api/endpoint.py\", line 77, in wrapper\n    result = fx(self, context, *args, **kwargs)\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/linuxmuster/lib/python3.12/site-packages/ajenti_plugin_core/views/config.py\", line 72, in handle_api_get_user_config\n    return UserConfigService.get(self.context).get_provider().data\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/linuxmuster/lib/python3.12/site-packages/aj/config.py\", line 328, in get_provider\n    for provider in UserConfigProvider.all(self.context):\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/linuxmuster/lib/python3.12/site-packages/jadi/jadi.py\", line 122, in _all\n    return list(context.get_components(cls, ignore_exceptions=ignore_exceptions))\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/linuxmuster/lib/python3.12/site-packages/jadi/jadi.py\", line 38, in get_components\n    instance = self.get_component(comp)\n               ^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/linuxmuster/lib/python3.12/site-packages/jadi/jadi.py\", line 32, in get_component\n    self.component_instances[fqdn] = cls(self)\n                                     ^^^^^^^^^\n  File \"/usr/lib/linuxmuster-webui/plugins/lmn_auth/api.py\", line 491, in __init__\n    self.load()\n  File \"/usr/lib/linuxmuster-webui/plugins/lmn_auth/api.py\", line 504, in load\n    self.data = yaml.load(open('/root/.config/ajenti.yml'), Loader=yaml.SafeLoader)\n                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nFileNotFoundError: [Errno 2] No such file or directory: '/root/.config/ajenti.yml'\n"},"status":500,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"/api/core/user-config","headers":{"Accept":"application/json, text/plain, */*"},"cached":false},"statusText":"","xhrStatus":"complete"} all.vendor.js:15717:41

Nachtrag: Mein Kollege und ich haben parallel zu LMN noch FOG ausprobiert und konnten damit heute ein Image hochladen und auf ein Testgerät ausrollen. Dachte, ich erwähne das besser, bevor sich jemand die Mühe macht, uns weiter zu unterstützen. Aber wenn das ein Bug ist, bei dem ich beim Troubleshooting helfen kann, dann immer gerne, hab die Maschine mit der VM noch da!

Hallo Michael,

ich bin ein wenig verwirrt: habt ihr nun meine virtuelle Umgebung verwendet?
Warum dann „abschließen der Ersteinrichtung“?
Meine Umgeung ist voll eingerichtet: da muss man nichts mehr machen.

Und wegen der physikalischen Clients: habt ihr sie vorher mit ihrer MAC aufgenommen?
Welche IP hat der Client den beim PXE boot bekommen? Man kann, wenn man schnell ist, am Client auf die Pause Taste drücken (auf der Tastatur) wenn er die IP per PXE bekommt: dann kann man sie in Ruhe lesen (mit Return geht es wieder weiter).
Oder man macht ein Video vom Bildschirm, dann kann man auch gemütlich schauen.

LG
Holger

Ja, genau!

Nach der Anmeldung mit den Zugangsdaten für den root-Nutzer im Web-Interface kam oben eine Meldung, dass vom Einloggen mit root abgeraten wird und die Ersteinrichtung durchgeführt werden soll. Das habe ich dann getan und z.B. den Namen der Schule und den Domain-Namen sowie ein neues Passwort eingetragen.

Nein, das müsste man ja wahrscheinlich im Web-Interface des Servers machen und so weit sind wir nicht gekommen…

Kann ich gerne die Tage nachliefern!

Hallo,

Anmelden mit root in der WebUI sollte nie gemacht werden: außer zur Ersteinrichtung.
Damit hast du die Umgebung beschädigt.
Meine Empfehlung: verwirf die Maschinen (einfach löschen mit Daten) und importier sie danach wieder.
Dann wieder das Netzwerk einrichten und weiter geht es.

In der WebUI ist der Nutzer
global-admin
der Administrative Nutzer.

LG
Holger

Alles klar, danke für die Aufklärung! Wenn ich vorschlagen darf: Ändert doch am besten die Info zu den Zugangsdaten in ReadMeFirst-lml7-vboxumgebung.pdf, dort ist noch root als Nutzer für das Web-Frontend eingetragen.

Hallo Michael,
… da hast du mir aber einen Schreck eingejagt :slight_smile:
Nee, das steht da schon richtig: root/Muster! steht in der Zeile der OPNSense und bezieht sich somit auf diese.
Beim Server steht nur Konsole und root/Muster!
Ich hab jetzt beim Server noch
WebUI global-admin/Muster!
dazu geschrieben.

Ich kann verstehen, dass das nicht so super eindeutig da stand: jetzt ist es hoffentlich besser.
Danke für den Hinweis :slight_smile:

LG
Holger

Hoppla, hab wohl die Zugangsdaten fürs Webfrontend der Firewall mit denen fürs Frontend des Servers verwechselt. :sweat_smile: