Direkt zum Hauptinhalt

Installation

Hinweis: Für eine schnelle Inbetriebnahme folgen Sie dem Schnellstart.

Automatische Datenbankerstellung: Die Anwendungsdatenbank (MesoWorkerDb) wird beim ersten Start automatisch erstellt. Eine manuelle Erstellung ist nicht erforderlich. Der SQL-Benutzer in den ConnectionStrings muss die Berechtigung CREATE DATABASE besitzen. Nach der Erstellung reichen normale Lese-/Schreibrechte. Der automatische Prozess prüft beim Start, ob die Datenbank existiert, legt sie bei Bedarf an, erstellt alle benötigten Tabellen und richtet Standard-Benutzer und -Rollen ein.

Der MesoWorkerService kann auf zwei Arten betrieben werden:

Option 1: Windows-Dienst

Der Service wird als Windows-Dienst auf einem Server installiert und läuft permanent im Hintergrund.

Hinweis: Die Setup-Dateien für die Windows-Installation werden Ihnen von Ihrem Mesonic-Händler bereitgestellt.

Voraussetzungen:

  • Windows Server 2016 oder neuer
  • .NET 10 Runtime installiert
  • Netzwerkzugriff zur WinLine-Datenbank
  • SQL-Benutzer mit CREATE DATABASE-Rechten (die Anwendungsdatenbank wird beim ersten Start automatisch erstellt)

Installationsschritte:

  1. Entpacken der Anwendung

    • Entpacken Sie das von Ihrem Händler bereitgestellte MesoWorkerService-Archiv in ein Verzeichnis (z.B. C:\MesoWorkerService)
  2. Konfigurationsdatei anpassen

    WICHTIG: Konfigurieren Sie die appsettings.json VOR der Dienst-Installation!

    Öffnen Sie die Datei appsettings.json im Installationsverzeichnis und passen Sie die Einstellungen an:

    • ConnectionStrings: Datenbankverbindungen (SQL-Benutzer benötigt CREATE DATABASE-Rechte)
    • License: Ihre Lizenzinformationen

    Siehe Windows-Dienst Konfiguration für Details.

  3. Installation als Windows-Dienst

    Der Service kann als Windows-Dienst installiert werden. Öffnen Sie eine PowerShell-Konsole mit Administratorrechten und navigieren Sie zum Installationsverzeichnis.

    Option A: Installation mit PowerShell (empfohlen)

    # Service erstellen und konfigurieren
    New-Service -Name "MESO-WorkerService" `
                -BinaryPathName "C:\MesoWorkerService\MesoWorkerService.exe" `
                -DisplayName "MESO Worker Service" `
                -Description "Automatisierungsdienst für Mesonic WinLine - E-Mail-Versand, Workflow-Erzeugung, Terminsynchronisation, OP-Versand und Überwachung" `
                -StartupType Automatic
    
    # Service starten
    Start-Service -Name "MESO-WorkerService"
    
    # Service-Status prüfen
    Get-Service -Name "MESO-WorkerService"
    

    Option B: Installation mit sc.exe

    REM Service erstellen
    sc.exe create "MESO-WorkerService" binPath= "C:\MesoWorkerService\MesoWorkerService.exe" DisplayName= "MESO Worker Service" start= auto
    
    REM Service-Beschreibung setzen
    sc.exe description "MESO-WorkerService" "Automatisierungsdienst für Mesonic WinLine - E-Mail-Versand, Workflow-Erzeugung, Terminsynchronisation, OP-Versand und Überwachung"
    
    REM Service starten
    sc.exe start "MESO-WorkerService"
    
    REM Service-Status prüfen
    sc.exe query "MESO-WorkerService"
    

    Service deinstallieren (falls erforderlich):

    # Service stoppen und entfernen (PowerShell)
    Stop-Service -Name "MESO-WorkerService"
    Remove-Service -Name "MESO-WorkerService"
    
    REM Service stoppen und entfernen (sc.exe)
    sc.exe stop "MESO-WorkerService"
    sc.exe delete "MESO-WorkerService"
    

    Wichtig:

    • Passen Sie den Pfad C:\MesoWorkerService\MesoWorkerService.exe an Ihr Installationsverzeichnis an
    • Bei sc.exe ist das Leerzeichen nach binPath=, DisplayName= und start= erforderlich
    • Für weitere Unterstützung kontaktieren Sie den Support: [email protected]
  4. Dienst starten

    Starten Sie den Windows-Dienst über die Dienste-Verwaltung oder mit PowerShell:

    Start-Service -Name "MESO-WorkerService"
    

Vorteile der Windows-Dienst-Installation:

  • Direkter Zugriff auf lokale WinLine-Installation
  • Optimale Performance bei lokaler Datenbank
  • Vollständige Kontrolle über das System
  • Einfache Integration in bestehende Windows-Infrastruktur

Nachteile der Windows-Dienst-Installation:

  • Erfordert Windows Server-Umgebung
  • Manuelle Installation und Wartung
  • .NET 10 Runtime muss installiert werden

Option 2: Container-Deployment

Der Service wird als Container betrieben und kann auf verschiedenen Plattformen ausgeführt werden.

Hinweis: Für die Container-basierte Installation benötigen Sie einen GitHub-Token mit Zugriffsrechten auf die Container-Registry.

Verfügbare Container Images:

  • Service: ghcr.io/css-edv-support/mesoworkerservice-service:latest
  • Blazor UI: ghcr.io/css-edv-support/mesoworkerservice-blazor:latest

Voraussetzungen:

  • Container-Runtime (Docker oder Podman)
  • Netzwerkzugriff zum SQL Server und zur WinLine-Datenbank
  • SQL-Benutzer mit CREATE DATABASE-Rechten (die Anwendungsdatenbank wird beim ersten Start automatisch erstellt)
  • GitHub-Token mit Zugriffsrechten auf die Container-Registry

Deployment-Optionen:

Installationsschritte (Docker Compose):

  1. Stack-Datei erstellen

    Erstellen Sie eine docker-compose.yml Datei (siehe Schritt-für-Schritt-Anleitung: Installation mit Portainer für ein vollständiges Beispiel).

  2. Umgebungsvariablen konfigurieren

    Passen Sie die Datenbankverbindungen, Lizenz und WinLine-Einstellungen an Ihre Umgebung an.

  3. Container starten

    docker-compose up -d
    

Für eine ausführliche Anleitung mit Portainer siehe Schritt-für-Schritt-Anleitung: Installation mit Portainer.

Vorteile des Container-Deployments:

  • Plattformunabhängig (Linux, Windows, macOS)
  • Einfache Skalierung und Deployment
  • Isolierte Umgebung mit definierten Abhängigkeiten
  • Keine lokale .NET-Installation erforderlich
  • Einfache Updates über Image-Tags
  • Geeignet für moderne DevOps-Umgebungen

Nachteile des Container-Deployments:

  • Erfordert Container-Runtime (Docker, Podman)
  • Zusätzliche Netzwerk-Konfiguration für Datenbankzugriff
  • Container-Orchestrierung kann komplex sein

Ressourcenempfehlungen:

Für detaillierte Empfehlungen zur Dimensionierung der Container-Ressourcen (CPU, RAM, Disk) auf Linux-Systemen siehe:

  • [Ressourcenempfehlung für Docker Container](siehe Kapitel Ressourcenempfehlung) - Umfassende Anleitung zur Ressourcenzuteilung für verschiedene Einsatzszenarien

Schritt-für-Schritt-Anleitung: Installation mit Portainer

Diese Anleitung beschreibt die Einrichtung des MesoWorkerService über die Portainer-Weboberfläche. Portainer ist eine grafische Verwaltungsoberfläche für Docker-Container.

Was Sie vorab benötigen

Bevor Sie beginnen, halten Sie folgende Informationen bereit:

Information Beispiel Woher?
SQL Server Adresse 192.168.1.100 oder sql-server.firma.local IT-Abteilung
SQL-Benutzername sa oder mesoworker IT-Abteilung
SQL-Passwort IT-Abteilung
WinLine Systemdatenbank CWLSYSTEM WinLine-Administration
Kundennummer (Lizenz) 12345 Ihr Mesonic-Partner
Lizenznummer XXXX-XXXX-XXXX Ihr Mesonic-Partner
WinLine Server URL http://winline-server:8080 IT-Abteilung
WinLine Pfad (Netzwerkfreigabe) \\winline-server\WinLine IT-Abteilung
GitHub-Token (Registry-Zugang) ghp_... CSS Support

Hinweis zum SQL-Benutzer: Der SQL-Benutzer muss beim ersten Start die Berechtigung haben, eine neue Datenbank anzulegen (CREATE DATABASE-Recht). Die Datenbank MesoWorkerDb wird dann automatisch erstellt. Falls Ihr SQL-Benutzer dieses Recht nicht hat, bitten Sie Ihre IT-Abteilung, eine leere Datenbank mit dem Namen MesoWorkerDb vorab anzulegen.

Schritt 1: In Portainer einloggen

  1. Öffnen Sie Ihren Webbrowser
  2. Navigieren Sie zur Portainer-Adresse (z.B. https://portainer.firma.local:9443)
  3. Melden Sie sich mit Ihrem Portainer-Benutzernamen und Passwort an

Schritt 2: Container-Registry einrichten

Damit Portainer die MesoWorkerService-Images herunterladen kann, muss die GitHub Container Registry einmalig hinterlegt werden.

  1. Klicken Sie in der linken Seitenleiste auf Registries
  2. Klicken Sie auf Add registry
  3. Wählen Sie Custom registry
  4. Füllen Sie die Felder aus:
    • Name: GitHub CSS
    • Registry URL: ghcr.io
    • Authentication: aktivieren
    • Username: Ihr GitHub-Benutzername
    • Password: Ihr GitHub-Token (beginnt mit ghp_)
  5. Klicken Sie auf Add registry

Diesen Schritt müssen Sie nur einmalig durchführen. Den GitHub-Token erhalten Sie vom CSS Support ([email protected]).

Schritt 3: Neuen Stack anlegen

  1. Klicken Sie in der linken Seitenleiste auf Stacks
  2. Klicken Sie auf Add stack
  3. Vergeben Sie einen Namen, z.B. mesoworkerservice
  4. Wählen Sie Web editor als Methode

Schritt 4: Stack-Definition einfügen

Kopieren Sie die folgende Stack-Definition in den Web-Editor. Ersetzen Sie anschließend die Platzhalter (alle Werte in GROSSBUCHSTABEN) mit Ihren tatsächlichen Daten:

version: '3.8'

services:
  mesoworkerservice-ui:
    image: ghcr.io/css-edv-support/mesoworkerservice-blazor:latest
    container_name: mesoworkerservice-ui
    restart: unless-stopped
    ports:
      - "8012:5000"
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=http://+:5000
      - TZ=Europe/Berlin
      - ConnectionStrings__ConnectionString=Data Source=IHR-SQL-SERVER;Initial Catalog=MesoWorkerDb;User ID=IHR-SQL-USER;Password=IHR-SQL-PASSWORT;TrustServerCertificate=true
      - ConnectionStrings__WinLineSystemDBConnectionString=Data Source=IHR-SQL-SERVER;Initial Catalog=CWLSYSTEM;User ID=IHR-SQL-USER;Password=IHR-SQL-PASSWORT;TrustServerCertificate=true

  mesoworkerservice:
    image: ghcr.io/css-edv-support/mesoworkerservice-service:latest
    container_name: mesoworkerservice
    restart: unless-stopped
    ports:
      - "8013:5000"
    volumes:
      - type: bind
        source: //IHR-WINLINE-SERVER/WinLine
        target: /app/winline
        read_only: true
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - DOTNET_RUNNING_IN_CONTAINER=true
      - ASPNETCORE_URLS=http://+:5000
      - TZ=Europe/Berlin
      - LANG=de_DE.UTF-8
      - LICENSE_CUSTOMER_NR=IHRE-KUNDENNUMMER
      - LICENSE_LICENSE_NR=IHRE-LIZENZNUMMER
      - ConnectionStrings__ConnectionString=Data Source=IHR-SQL-SERVER;Initial Catalog=MesoWorkerDb;User ID=IHR-SQL-USER;Password=IHR-SQL-PASSWORT;TrustServerCertificate=true
      - ConnectionStrings__WinLineSystemDBConnectionString=Data Source=IHR-SQL-SERVER;Initial Catalog=CWLSYSTEM;User ID=IHR-SQL-USER;Password=IHR-SQL-PASSWORT;TrustServerCertificate=true
      - WinLineSettings__WinLinePath=/app/winline/
      - WinLineSettings__MesospoolServiceUrl=http://IHR-WINLINE-SERVER:42024
      - WinLineSettings__TemplateForWorkflowImport=101
      - WinLineServer__Url=http://IHR-WINLINE-SERVER:8080
      - SessionSettings__MinimumSessions=1
      - SessionSettings__DefaultUser=IHR-WINLINE-USER
      - SessionSettings__DefaultPassword=IHR-WINLINE-PASSWORT
      - SessionSettings__ValidationInterval=01:00:00
      - Quartz__MailWorkerJob__scheduler=* * * * * ?
      - Quartz__MailWorkerJob__enabled=true
      - Quartz__MailWorkerJob__startnow=true
      - Quartz__NoRuleWarningJob__scheduler=0 0 8 * * ?
      - Quartz__NoRuleWarningJob__enabled=true
      - Quartz__NoRuleWarningJob__startnow=false
      - Quartz__OrderLineWorkerJob__scheduler=0 */5 * * * ?
      - Quartz__OrderLineWorkerJob__enabled=true
      - Quartz__OrderLineWorkerJob__startnow=true
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5000/health"]
      interval: 3600s
      timeout: 10s
      retries: 3
      start_period: 60s
    deploy:
      resources:
        limits:
          memory: 1G
          cpus: '1.0'
        reservations:
          memory: 512M
          cpus: '0.5'

Welche Platzhalter müssen ersetzt werden?

Platzhalter Ersetzen durch Beispiel
IHR-SQL-SERVER Adresse Ihres SQL Servers 192.168.1.100
IHR-SQL-USER SQL-Benutzername sa
IHR-SQL-PASSWORT SQL-Passwort
CWLSYSTEM Name der WinLine-Systemdatenbank (meist CWLSYSTEM) CWLSYSTEM
IHRE-KUNDENNUMMER Lizenz-Kundennummer 12345
IHRE-LIZENZNUMMER Lizenznummer XXXX-XXXX-XXXX
IHR-WINLINE-SERVER WinLine-Server Adresse 192.168.1.50
IHR-WINLINE-USER WinLine-Benutzername ADMIN
IHR-WINLINE-PASSWORT WinLine-Passwort

Tipp: Die Platzhalter kommen teilweise mehrfach vor (z.B. IHR-SQL-SERVER in beiden Services). Nutzen Sie die Suchen-und-Ersetzen-Funktion Ihres Browsers (Strg+H), um alle Vorkommen auf einmal zu ersetzen.

Schritt 5: Stack deployen

  1. Prüfen Sie, ob alle Platzhalter ersetzt wurden
  2. Klicken Sie auf Deploy the stack
  3. Warten Sie, bis beide Container gestartet sind (Status: running)

Beim ersten Start wird die Datenbank MesoWorkerDb automatisch auf Ihrem SQL Server angelegt. Das kann einige Sekunden dauern.

Schritt 6: Admin-Oberfläche öffnen

  1. Öffnen Sie im Browser: http://IHR-SERVER:8012 (Port aus der Stack-Definition)
  2. Melden Sie sich an:
    • Benutzername: Admin
    • Passwort: (leer lassen, beim ersten Login wird ein Passwort vergeben)
  3. Richten Sie über die Oberfläche die gewünschten Module ein (SMTP-Konten, Workflow-Einstellungen, Mail-Einstellungen etc.)

Fehlerbehebung

Problem Lösung
Container startet nicht Prüfen Sie die Logs in Portainer (Klick auf Container-Name, dann Logs)
Datenbank-Verbindungsfehler SQL Server erreichbar? Firewall-Port 1433 offen? Zugangsdaten korrekt?
Access denied beim Image-Download GitHub-Token in der Registry-Konfiguration prüfen
Admin-Oberfläche nicht erreichbar Port 8012 in der Firewall freigegeben? Container läuft?
Lizenzfehler beim Start Kundennummer und Lizenznummer prüfen, ggf. Mesonic-Partner kontaktieren

Nach der Installation

Benutzeranmeldung

Nach dem ersten Start können Sie sich an den Administrationsoberflächen anmelden.

Standard-Administrator:

  • Benutzername: Admin
  • Passwort: (leer - muss bei erster Anmeldung gesetzt werden)
  • Rolle: Administrators (volle Berechtigungen)

Automatisch erstellte Rollen:

  • Administrators: Vollzugriff auf alle Funktionen
  • Default: Standardrolle für normale Benutzer mit eingeschränkten Rechten

Wichtig: Setzen Sie bei der ersten Anmeldung ein sicheres Passwort für den Admin-Benutzer.

Administrationsoberflächen

Für die Verwaltung und Konfiguration stehen zwei Oberflächen zur Verfügung:

Option A: Blazor Web-Interface

  • URL: http://localhost:5000 (oder konfigurierter Port)
  • Zugriff: Über jeden modernen Webbrowser
  • Vorteile:
    • Plattformunabhängiger Zugriff
    • Ideal für Remote-Administration
    • Moderne Web-Oberfläche
    • Mehrere Administratoren können gleichzeitig arbeiten

Verwendung:

  1. Öffnen Sie einen Webbrowser
  2. Navigieren Sie zu http://localhost:5000 (oder IP-Adresse des Servers)
  3. Melden Sie sich mit Benutzername Admin und gesetztem Passwort an

Option B: Windows Desktop-Client (nur bei Windows-Dienst)

  • Start: MesoWorker.Win.exe
  • Hinweis: Die Setup-Dateien werden von Ihrem Mesonic-Händler bereitgestellt
  • Zugriff: Direkter Zugriff auf dem Server
  • Vorteile:
    • Erweiterte Desktop-Funktionalität
    • Optimiert für umfangreiche Konfigurationsarbeiten
    • Zusätzliche Administrationsfunktionen

Verwendung:

  1. Starten Sie MesoWorker.Win.exe im Installationsverzeichnis
  2. Melden Sie sich mit Benutzername Admin und gesetztem Passwort an

Erste Schritte nach der Anmeldung

Nach der erfolgreichen Anmeldung sollten Sie folgende Schritte durchführen:

  1. Passwort ändern

    • Ändern Sie das Admin-Passwort über die Benutzerverwaltung
    • Empfehlung: Starkes Passwort mit mindestens 12 Zeichen
  2. Lizenz prüfen

    • Überprüfen Sie, ob die Lizenz korrekt hinterlegt ist
    • Der Service zeigt einen Fehler, falls die Lizenz ungültig ist
  3. Datenbankverbindungen testen

    • Stellen Sie sicher, dass beide Datenbanken erreichbar sind
    • WinLine-Daten sollten sichtbar sein
  4. SMTP-Konten einrichten (siehe SMTP-Konten einrichten)

    • Mindestens ein SMTP-Konto für E-Mail-Versand konfigurieren
    • Kennzeichnen Sie ein Konto als Standard-Konto
  5. Mandanten aktivieren

    • Prüfen Sie, welche Mandanten in der Liste angezeigt werden
    • Aktivieren Sie die Mandanten, für die der Service arbeiten soll

Navigation und Menüstruktur

Die XAF-Administrationsoberfläche ist logisch nach den Hauptkomponenten des Systems strukturiert. Die Navigation ist in folgende Bereiche gegliedert:

Stammdaten

  • Company (Mandanten): Verwaltung der Mandanten
  • Workflow: Workflow-Vorlagen und Definitionen
  • SmtpAccount: SMTP-Konten für E-Mail-Versand

Mail-Dienst

  • MailSettings: Konfiguration der E-Mail-Einstellungen
  • WorkflowSettings: Workflow-spezifische E-Mail-Einstellungen
  • MailJournal: Protokoll aller versendeten E-Mails
  • QueuedMail: Warteschlange für ausstehende E-Mails
  • NoRuleWarningSettings: Einstellungen für Warnungen bei fehlenden Regeln
  • NoRuleWarningJournal: Protokoll der Regel-Warnungen

Bestelldatei-Workflows

  • OrderLineWorkflowSettings: Einstellungen für Workflow-Erzeugung aus Bestelldateizeilen
  • OrderLineWorkflowJournal: Protokoll der verarbeiteten Bestelldateizeilen

Termin-Synchronisation

  • AppointmentSettings: Einstellungen für Terminsynchronisation über MS Graph API
  • AppointmentJournal: Protokoll der synchronisierten Termine
  • GraphApiSettings: Microsoft Graph API Zugangsdaten

Offene Posten

  • OpenItemSettings: Einstellungen für den automatischen OP-Versand (Selektion, Vorlage, Empfänger, Anhänge)
  • OpenItemJournal: Protokoll aller versendeten OP-Übersichten

Erweiterte Einstellungen

  • RecipientRuleTemplate: Wiederverwendbare Empfänger-Regelvorlagen
  • RecipientRuleDefinition: Einzelne Empfängerregeln
  • FilteringCriterion: Filterkriterien für Workflows
  • PropertyValue: Eigenschaftswerte für Workflows

Diese Struktur ermöglicht eine intuitive Navigation und schnellen Zugriff auf die jeweiligen Funktionsbereiche.