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 einenZugangsdaten GitHub-Tokenfür miteine Zugriffsrechtender auf dieunterstützten Container-Registry.Registries (GHCR oder ACR).

Verfügbare Container Images:

    Die

    Images werden parallel in zwei Registries veröffentlicht. Sie können je nach Infrastruktur und Netzwerkanbindung die passende Quelle wählen – die Inhalte sind identisch.
    Variante Service Image Blazor UI Image Authentifizierung Service:GitHub Container Registry (GHCR) – Standard ghcr.io/css-edv-support/mesoworkerservice-service:latest Blazor UI: ghcr.io/css-edv-support/mesoworkerservice-blazor:latest GitHub-Benutzername + Personal Access Token (ghp_...) Azure Container Registry (ACR) – Alternative csscontainers.azurecr.io/mesoworkerservice-service:latest csscontainers.azurecr.io/mesoworkerservice-blazor:latest ACR-Benutzername + ACR-Passwort/Token

    Welche Quelle wählen? GHCR ist der Standardweg und für die meisten Installationen ausreichend. ACR (csscontainers.azurecr.io) ist die Alternative für Kunden mit Azure-Infrastruktur, restriktiven Firewall-Regeln gegenüber ghcr.io oder bestehenden ACR-Pull-Workflows. Die Zugangsdaten für beide Registries erhalten Sie auf Anfrage vom CSS Support ([email protected]).

    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-TokenZugangsdaten mitzu Zugriffsrechteneiner auf dieder Container-RegistryRegistries (GHCR oder ACR – siehe Tabelle oben)

    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
    Registry-Zugangsdaten
    GHCR: GitHub-Token (Registry-Zugang) ghp_...)
    oder ACR: Benutzername + Passwort 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 Container-Registry einmalig hinterlegt werden. Sie können wahlweise die GitHub Container Registry (GHCR) oder die Azure Container Registry (ACR) verwenden – die Images sind in beiden Registries identisch.

    Variante A: GitHub Container Registry (Standard)

    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

    Variante B: Azure Container Registry (Alternative)

      Klicken Sie in der linken Seitenleiste auf Registries Klicken Sie auf Add registry Wählen Sie Azure (oder alternativ Custom registry) Füllen Sie die Felder aus:
        Name: CSS Azure Registry URL: csscontainers.azurecr.io Authentication: aktivieren Username: Ihr ACR-Benutzername Password: Ihr ACR-Passwort/-Token Klicken Sie auf Add registry

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

        Wichtig: Wenn Sie ACR verwenden, müssen Sie in den Stack-Definitionen weiter unten die Image-Pfade von ghcr.io/css-edv-support/... auf csscontainers.azurecr.io/... umstellen (siehe Hinweis in Schritt 4).

        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:

        Hinweis zur Image-Quelle: Das folgende Beispiel verwendet GHCR. Wenn Sie stattdessen ACR nutzen möchten, ersetzen Sie die beiden image:-Zeilen wie folgt:

          ghcr.io/css-edv-support/mesoworkerservice-blazor:latest → csscontainers.azurecr.io/mesoworkerservice-blazor:latest ghcr.io/css-edv-support/mesoworkerservice-service:latest → csscontainers.azurecr.io/mesoworkerservice-service:latest

          Die in Schritt 2 hinterlegte Registry muss zur gewählten Image-Quelle passen.

          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 Registry-Zugangsdaten prüfen (GHCR: GitHub-Token in/ derACR: Registry-KonfigurationBenutzer prüfen+ Passwort) und sicherstellen, dass die im Stack referenzierte Image-Quelle zur hinterlegten Registry passt
          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.