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 Stack Konfiguration 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

    Öffnen Sie Ihren Webbrowser Navigieren Sie zur Portainer-Adresse (z.B. https://portainer.firma.local:9443) 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.

      Klicken Sie in der linken Seitenleiste auf Registries Klicken Sie auf Add registry Wählen Sie Custom registry 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_) 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

          Klicken Sie in der linken Seitenleiste auf Stacks Klicken Sie auf Add stack Vergeben Sie einen Namen, z.B. mesoworkerservice 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

            Prüfen Sie, ob alle Platzhalter ersetzt wurden Klicken Sie auf Deploy the stack 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

              Öffnen Sie im Browser: http://IHR-SERVER:8012 (Port aus der Stack-Definition) Melden Sie sich an:
                Benutzername: Admin Passwort: (leer lassen, beim ersten Login wird ein Passwort vergeben) 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:

                          Öffnen Sie einen Webbrowser Navigieren Sie zu http://localhost:5000 (oder IP-Adresse des Servers) 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:

                                Starten Sie MesoWorker.Win.exe im Installationsverzeichnis 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:

                                  Passwort ändern

                                    Ändern Sie das Admin-Passwort über die Benutzerverwaltung Empfehlung: Starkes Passwort mit mindestens 12 Zeichen

                                    Lizenz prüfen

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

                                      Datenbankverbindungen testen

                                        Stellen Sie sicher, dass beide Datenbanken erreichbar sind WinLine-Daten sollten sichtbar sein

                                        SMTP-Konten einrichten (siehe SMTP-Konten einrichten)

                                          Mindestens ein SMTP-Konto für E-Mail-Versand konfigurieren Kennzeichnen Sie ein Konto als Standard-Konto

                                          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.