Installation und Update: FMWeb per ZIP installieren und aktuell halten
Diese Anleitung zeigt, wie Sie FMWeb auf einem Windows-Server installieren und aktualisieren. FMWeb wird als signiertes ZIP-Archiv ausgeliefert – es gibt kein Setup-Programm: entpacken, appsettings.json anpassen, einmalig einen geplanten Task einrichten, fertig. Die Erstkonfiguration (Datenbank, Lizenz, erster Administrator) übernimmt danach der eingebaute Einrichtungsassistent im Browser.
Lieferumfang
| Datei | Zweck |
|---|---|
FmWeb 10-7-2.zip | Die Anwendung (self-contained, 64-bit Windows – kein .NET auf dem Server nötig) |
FmWeb 10-7-2.zip.sha256 | SHA-256-Prüfsumme |
FmWeb 10-7-2.cat | Signierter Katalog zum ZIP |
Alle .exe- und .dll-Dateien im Archiv sind Authenticode-signiert. Prüfen Sie vor der Verwendung:
(Get-FileHash ".\FmWeb 10-7-2.zip" -Algorithm SHA256).Hash # muss der .sha256-Datei entsprechen
# nach dem Entpacken:
Get-AuthenticodeSignature "C:\Program Files\Cloudkasten\FMWeb\FmWeb.Blazor.exe" # Status: Valid
Voraussetzungen
- 64-bit Windows Server (für kleine Installationen auch Windows 10/11).
- Microsoft SQL Server. Ist noch keiner vorhanden, kann der Einrichtungsassistent SQL Server Express installieren.
- Ein eigenes Windows-Konto für FMWeb (lokal oder Domäne). Verwenden Sie nicht LocalSystem, LocalService oder NetworkService.
- Rechte für dieses Konto: SQL-Login mit Rechten auf den FMWeb-Datenbanken (bei integrierter Sicherheit), Freigabe- und NTFS-Rechte auf der Dokumentenablage (UNC-Pfade verwenden – Netzlaufwerk-Buchstaben stehen Hintergrundprozessen nicht zur Verfügung), „Anmelden als Stapelverarbeitungsauftrag".
Erstinstallation
- Verzeichnis anlegen, z. B.
C:\Program Files\Cloudkasten\FMWeb, und das geprüfte ZIP dorthin entpacken. appsettings.jsonprüfen (Tabelle unten) – mindestens die Datenbank-Verbindungen und ggf. den Port.- Rechte setzen: Das FMWeb-Konto braucht Lesen/Ausführen auf dem Verzeichnis sowie Ändern auf den Unterordnern
ArtifactsundLogs. - Geplanten Task einrichten (einmalig, als Administrator):
$dir = "C:\Program Files\Cloudkasten\FMWeb"
$action = New-ScheduledTaskAction -Execute (Join-Path $dir "FmWeb.Blazor.exe") -WorkingDirectory $dir
$trigger = New-ScheduledTaskTrigger -AtStartup
$settings = New-ScheduledTaskSettingsSet -MultipleInstances IgnoreNew `
-RestartCount 999 -RestartInterval (New-TimeSpan -Minutes 1) `
-ExecutionTimeLimit ([TimeSpan]::Zero) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskPath "\Cloudkasten\" -TaskName "FMWeb" `
-Action $action -Trigger $trigger -Settings $settings `
-User "DOMAIN\fmweb-dienst" -Password (Read-Host "Kennwort des Task-Kontos") `
-RunLevel Highest
Start-ScheduledTask -TaskPath "\Cloudkasten\" -TaskName "FMWeb"
Der Task startet FMWeb beim Hochfahren, startet es bei Beendigung automatisch neu und verhindert eine zweite Instanz. Nach einer Kennwortänderung des Kontos: Task-Anmeldedaten aktualisieren.
- Funktion prüfen:
http://localhost:9998/healthmuss HTTP 200 liefern. - Firewall freigeben, wenn Anwender über das Netzwerk zugreifen: eingehend TCP 9998 (Artikel 143).
- Einrichtungsassistent durchlaufen: Beim ersten Aufruf von
http://<server>:9998führt FMWeb automatisch durch Datenbank-Einrichtung, Lizenz-Registrierung (K-SOFT-Kundennummer) und das Anlegen des ersten Administrators (Artikel 130). Nach Abschluss ist der Assistent dauerhaft deaktiviert.
Die Konfigurationsdatei appsettings.json
| Schlüssel | Bedeutung | Standard |
|---|---|---|
ConnectionStrings:FpSystemContext | Systemdatenbank | Server=.;Database=FPSystem;… |
ConnectionStrings:TenantContextTemplate | Mandanten-Datenbanken; {0} = dreistellige Mandantennummer | Server=.;Database=Flottenmanager{0};… |
Kestrel:Endpoints:Http:Url | Port der Anwendung | http://*:9998 |
ServerUrl | Absolute Adresse, unter der Anwender FMWeb erreichen – wird für Links in E-Mails und Kalendereinladungen verwendet | leer |
UpdateUrl | K-SOFT-Lizenz- und Update-Dienst | https://api-fmweb-prod.cloudkasten.net/ |
RemoveLogsAfterDays | Aufbewahrung des technischen Aufgabenprotokolls in Tagen | 30 |
OpenIdConnect | Optionales Single Sign-On (Artikel 115) | deaktiviert |
Diese Datei gehört Ihnen: Sichern Sie sie, und stellen Sie sie nach jedem Update wieder her (siehe unten). Für HTTPS konfigurieren Sie entweder einen Kestrel-HTTPS-Endpunkt mit Zertifikat oder – üblicher – einen Reverse Proxy (Artikel 143).
Update einspielen
Das Update laden Sie in FMWeb unter Systemadministration → Updates herunter (setzt einen gültigen Wartungsvertrag voraus, Artikel 113).
- Sichern:
appsettings.json, die Datenbanken (FPSystem+ alleFlottenmanager###), die OrdnerArtifactsundLogssowie%ProgramData%\Cloudkasten\FmWeb\DataProtection-Keys. - ZIP prüfen (Prüfsumme/Signatur wie oben).
- FMWeb stoppen:
Stop-ScheduledTask -TaskPath "\Cloudkasten\" -TaskName "FMWeb"
Get-Process FmWeb.Blazor -ErrorAction SilentlyContinue | Stop-Process -Force
- Entpacken und Konfiguration wiederherstellen:
$dir = "C:\Program Files\Cloudkasten\FMWeb"
Copy-Item "$dir\appsettings.json" "$dir\appsettings.json.kunde" -Force # eigene Konfiguration beiseitelegen
Expand-Archive ".\FmWeb 10-7-2.zip" -DestinationPath $dir -Force # neue Version darüber entpacken
Move-Item "$dir\appsettings.json.kunde" "$dir\appsettings.json" -Force # eigene Konfiguration zurück
Die Release Notes nennen neue Konfigurationsschlüssel – vergleichen Sie im Zweifel Ihre Datei mit der mitgelieferten.
- Starten:
Start-ScheduledTask -TaskPath "\Cloudkasten\" -TaskName "FMWeb". Der erste Start nach einem Update führt automatisch Datenbank-Migrationen für die System- und alle Mandanten-Datenbanken aus – planen Sie einige Minuten ein und unterbrechen Sie den Start nicht. - Prüfen:
/healthliefert 200; die Versionsnummer im Benutzermenü zeigt den neuen Stand.
Rollback
Bewahren Sie das ZIP der Vorversion auf. Für ein Rollback: Task stoppen, altes ZIP über das Verzeichnis entpacken, appsettings.json wiederherstellen und – falls die neue Version die Datenbanken bereits migriert hat – die Datenbank-Sicherungen aus Schritt 1 zurückspielen. Kontaktieren Sie vor dem Rückspielen migrierter Datenbanken bevorzugt den Support (Artikel 17).
Verzeichnisse und Datensicherung
| Pfad | Inhalt | Beim Update |
|---|---|---|
| Installationsverzeichnis | Programmdateien | wird überschrieben |
appsettings.json | Ihre Konfiguration | manuell wiederherstellen (Schritt 4) |
Logs\ | Anwendungsprotokolle | bleibt erhalten |
%ProgramData%\Cloudkasten\FmWeb\DataProtection-Keys | Schlüsselbund für Anmeldesitzungen; Verlust meldet alle Benutzer ab | bleibt erhalten – ins Backup aufnehmen |
| SQL-Datenbanken + Dokumentenablage | Ihre Fuhrparkdaten | unabhängig vom Update – regelmäßig sichern |
Deinstallation
Task entfernen (Unregister-ScheduledTask -TaskPath "\Cloudkasten\" -TaskName "FMWeb"), Installationsverzeichnis löschen. Datenbanken, Dokumentenablage und %ProgramData%\Cloudkasten\FmWeb bleiben bewusst unangetastet – löschen Sie sie nur nach eigener Sicherung und bewusster Entscheidung.
Häufige Fragen
Geht meine Konfiguration beim Update verloren? Nicht, wenn Sie Schritt 4 befolgen: Die eigene appsettings.json wird vor dem Entpacken beiseitegelegt und danach wiederhergestellt. Alles andere (Datenbanken, Dokumente, Logs) liegt außerhalb des Programmverzeichnisses bzw. wird nicht überschrieben.
Warum dauert der erste Start nach dem Update länger? FMWeb bringt seine Datenbank-Änderungen selbst mit und wendet sie beim Start auf alle Mandanten-Datenbanken an. Erst danach nimmt der Webserver Verbindungen an.
Können wir das Update automatisieren? Ja – die Schritte 3–5 sind vollständig skriptbar (PowerShell-Beispiele oben). Ein unbeaufsichtigtes Einspielen sollte die Sicherung aus Schritt 1 einschließen.