Skip to main content

Installation als Webserver für Linux - Quick Start

Führen Sie die folgenden Schritte in einem Terminal aus, um direkt mit CODESYS 4 im Webserver zu arbeiten.

Tipp

Für eine ausführlichere Anleitung siehe: Installation als Webserver für Linux

CODESYS 4 als lokalen Server starten

Administrationsrechte notwendig

Um die nachfolgenden sudo-Kommandos ausführen zu können, benötigen Sie Administrationsrechte auf Ihrem System, siehe sudo (Debian Wiki).

  1. Laden Sie das CODESYS 4 Debian-Paket aus dem CODESYS Store.

  2. Installieren Sie das CODESYS 4 Debian-Paket.

    sudo apt install ./codesys-4_[your version]_[your architecture].deb
  3. Legen Sie die Gruppe codesys-4 und den User c4-server an, die für den Start des Servers und die Anmeldung an der Applikation notwendig sind.

    Im nachfolgenden Beispiel wird zusätzlich ein Testnutzer hugo angelegt und zur Gruppe codesys-4 hinzugefügt. Dieser User kann sich somit in der Applikation anmelden. Das ist optional - Sie können zum Testen stattdessen auch einen bestehenden Nutzer in die Gruppe codesys-4 aufnehmen.

    1. Legen Sie die Gruppe codesys-4 an, wenn sie noch nicht existiert. Diese Gruppe sollte bei der Installation des Debian-Pakets automatisch angelegt worden sein.

      sudo addgroup codesys-4
    2. Legen Sie einen neuen System-User an, als welcher der Server ausgeführt wird.

      sudo useradd --system --create-home c4-server
    3. Optional: Legen Sie einen neuen Test-User hugo an. Merken Sie sich das Passwort.

      sudo adduser hugo
    4. Optional: Fügen Sie den User hugo zur Gruppe codesys-4 hinzu.

      sudo adduser hugo codesys-4
      
  4. Erstellen Sie eine Datei codesys-4.service unter /etc/systemd/system/. Ersetzen Sie dabei nano mit Ihrem bevorzugten Editor.

    sudo nano /etc/systemd/system/codesys-4.service

    Editieren Sie die Datei folgendermaßen:

    [Unit]
    Description=CODESYS 4 Server
     
    [Service]
    Type=exec
    WorkingDirectory=/opt/codesys-4/
    ExecStart=/opt/codesys-4/c4-server --port 8080
    Restart=always
    # Restart service after 10 seconds if the dotnet service crashes:
    RestartSec=10
    KillSignal=SIGINT
    SyslogIdentifier=codesys-4-server
    User=c4-server
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
     
    [Install]
    WantedBy=multi-user.target
  5. Starten Sie die soeben angelegte Systemd-Unit:

    sudo systemctl start codesys-4

    Der CODESYS 4 Server ist nun bereits lokal unter Port 8080 erreichbar. Unter http://localhost:8080 können Sie sich nun mit dem zuvor angelegten User Hugo und dessen Passwort an der Applikation anmelden.

  6. Setzen Sie die Unit zusätzlich auf enabled, um den Server beim Systemstart automatisch zu starten:

    sudo systemctl enable codesys-4

Reverse Proxy einrichten

Um CODESYS 4 auch von anderen Geräten in Ihrem Netzwerk aus erreichbar zu machen, ist es erforderlich, einen HTTPS-Reverse-Proxy vorzuschalten. Dies ist aufgrund technischer Anforderungen notwendig. Für weitere Informationen siehe Vorschalten eines TLS-Reverse-Proxys.

Sie können zum Einrichten des Reverse Proxies beispielsweise das nginx-Paket unter Debian verwenden. Die für die Einrichtung notwendigen Schritte werden im Folgenden erläutert.

  1. Installieren Sie das nginx-Paket, wenn noch nicht geschehen:

    sudo apt update && sudo apt install -y nginx
  2. Um HTTPS-Kommunikation zu ermöglichen, müssen Sie temporär ein selbstsigniertes Zertifikat und einen Schlüssel erstellen.

    Sicherheitsrisiko

    Das Erstellen selbstsignierter Zertifikate und deren Einstufung als vertrauenswürdig stellt ein erhebliches Sicherheitsrisiko dar. Stellen Sie sicher, dass Dritte niemals Zugriff auf Ihr Zertifikat oder Ihren privaten Schlüssel erhalten. Andernfalls machen Sie sich für einen "Man-in-the-Middle"-Angriff angreifbar.

    Weiterhin sind die Zertifikate, die in den nachfolgenden Schritten erstellt werden, ausschließlich für Testzwecke und nicht für den Produktionsbetrieb gedacht und geeignet. Für ein ordnungsgemäßes Deployment von CODESYS 4 sollten Sie produktionsreife TLS-Zertifikate entsprechend Ihrer Firmenrichtlinien erstellen lassen. Kontaktieren Sie dazu Ihre IT-Abteilung oder Ihren IT-Dienstleister.

    Im Zweifelsfall sollten Sie, wenn Sie sich in diesem Bereich nicht auskennen, die weitere Inbetriebnahme an dieser Stelle abbrechen und sich an Ihre IT-Abteilung oder Ihren IT-Dienstleister wenden.

  3. Erstellen Sie zu Testzwecken einen privaten Schlüssel und ein Zertifikat für den Reverse-Proxy:

    1. Erstellen Sie die notwendigen Ordner.

      sudo mkdir -p /etc/ssl/certs /etc/ssl/private
    2. Erstellen Sie den privaten Schlüssel und das selbstsignierte Zertifikat.

      sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
        -keyout /etc/ssl/private/codesys-4.key \
        -out /etc/ssl/certs/codesys-4-certificate.crt
    3. Machen Sie den Schlüssel nur für den Besitzer (root) lesbar.

      sudo chmod 600 /etc/ssl/private/codesys-4.key
    4. Machen Sie das Zertifikat world-readable, nur für Besitzer (root) schreibbar.

      sudo chmod 644 /etc/ssl/certs/codesys-4-certificate.crt
  4. Legen Sie die Konfiguration für den Reverse-Proxy an. Ersetzen Sie dabei nano mit Ihrem bevorzugten Editor.

    sudo nano /etc/nginx/sites-available/codesys-4
  5. Erstellen Sie nachfolgende Konfiguration:

    Beispiel 2. /etc/nginx/sites-available/codesys-4
    # See https://docs.microsoft.com/en-us/troubleshoot/developer/webapps/aspnetcore/practice-troubleshoot-linux/2-2-install-nginx-configure-it-reverse-proxy
    # for more information.
    
    server {
     listen	443 ssl;
     listen	[::]:443 ssl;
     ssl_certificate /etc/ssl/certs/codesys-4-certificate.crt;
     ssl_certificate_key /etc/ssl/private/codesys-4.key;
    
     #server_name _;
     server_tokens off; # see https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens
    
     location / {
     rewrite ^/$ /index.html last;
     proxy_pass http://127.0.0.1:8080;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection keep-alive;
     proxy_set_header Connection "Upgrade";
     proxy_set_header Host $host;
     proxy_cache_bypass $http_upgrade;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Forwarded-Proto $scheme;
    
     #hsts header
     add_header Strict-Transport-Security "max-age=31536000" always;
     }
    }
    
    # Redirect unencrypted http access to encrypted https access.
    server {
     listen 80 default_server;
     listen [::]:80 default_server ipv6only=on;
    
     server_name _;
    
     return 301 https://$host$request_uri;
    }


  6. Aktivieren Sie die Konfiguration via symlink:

    1. Deaktivieren Sie die Standard-Konfiguration von nginx.

      sudo rm /etc/nginx/sites-enabled/default
    2. Aktivieren Sie die von Ihnen angelegte Konfiguration.

      sudo ln -s /etc/nginx/sites-available/codesys-4 /etc/nginx/sites-enabled/codesys-4
  7. Starten Sie nun nginx neu, um die geänderte Konfiguration zu übernehmen:

    sudo systemctl restart nginx

    CODESYS 4 sollte nun auf Port 443 unter https://localhost oder von anderen Geräten in Ihrem Netzwerk unter https://[your_device_name/your_ip_address] erreichbar sein.

  8. Setzen Sie die nginx Unit zusätzlich auf enabled, um auch den Reverse-Proxy beim Systemstart automatisch zu starten:

    sudo systemctl enable nginx
  9. Wenn Ihnen Ihre IP-Adresse nicht bekannt ist, führen Sie das Kommando ip aus. Voraussetzung dafür ist, dass Ihr Firmennetz und Ihre Firewall den Zugriff erlauben.

    ip addr

    Die Ausgabe des Kommandos könnte beispielsweise so aussehen:

    #1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    #    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    #    inet 127.0.0.1/8 scope host lo
    #       valid_lft forever preferred_lft forever
    #    inet6 ::1/128 scope host noprefixroute
    #       valid_lft forever preferred_lft forever
    #2: end0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    #    link/ether 01:23:45:67:89:ab brd ff:ff:ff:ff:ff:ff
    #    inet 192.168.0.123/24 brd 192.168.0.255 scope global dynamic noprefixroute end0
    #       valid_lft 350450sec preferred_lft 350450sec
    #    inet6 fe80::0123:1234:2345:3456/64 scope link noprefixroute
    #       valid_lft forever preferred_lft forever

    Sie finden die IP-Adressen Ihres Servers unterhalb des Geräts end0 (oft auch eth0 oder Ähnliches, siehe NetworkInterfaceNames (Debian Wiki)).

    • IPv4-Adresse nach dem Wort inet: Im Beispiel 192.168.0.123

    • IPv6-Adresse nach dem Wort inet6: Im Beispiel fe80::0123:1234:2345:3456

Sollten Sie, wie oben beschrieben, ein selbstsigniertes Zertifikat verwenden, erhalten Sie in Ihrem Browser eine Warnung:

_c4_img_install_webserver_linux_warning.png

Stellen Sie sicher, dass Sie sich mit Ihrem Gerät verbinden, indem Sie das im Browser angezeigte Zertifikat mit dem Zertifikat auf dem Gerät vergleichen.

Führen Sie hierfür in Ihrem Terminal dieses Kommando aus:

openssl x509 -in /etc/ssl/certs/codesys-4-certificate.crt -noout -fingerprint -sha256

Die Ausgabe enthält den Fingerabdruck des Zertifikates. Vergleichen Sie diesen mit dem SHA-256-Fingerabdruck des Zertifikates im Browser. (siehe Schritte für Firefox oder in Google Chrome über die Schaltfläche Nicht sicher in der Adressleiste → Zertifikatdetails). Wenn beide Fingerabdrücke gleich sind und Sie sich des Risikos bewusst sind, können Sie die Warnung durch einen Klick auf Risiko akzeptieren und fortfahren (Firefox) oder Weiter zu localhost (unsicher) (Google Chrome) temporär ignorieren.