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).
Laden Sie das CODESYS 4 Debian-Paket aus dem CODESYS Store.
Installieren Sie das CODESYS 4 Debian-Paket.
sudo apt install ./codesys-4_[your version]_[your architecture].deb
Legen Sie die Gruppe
codesys-4und den Userc4-serveran, die für den Start des Servers und die Anmeldung an der Applikation notwendig sind.Im nachfolgenden Beispiel wird zusätzlich ein Testnutzer
hugoangelegt und zur Gruppecodesys-4hinzugefü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 Gruppecodesys-4aufnehmen.Legen Sie die Gruppe
codesys-4an, wenn sie noch nicht existiert. Diese Gruppe sollte bei der Installation des Debian-Pakets automatisch angelegt worden sein.sudo addgroup codesys-4
Legen Sie einen neuen System-User an, als welcher der Server ausgeführt wird.
sudo useradd --system --create-home c4-server
Optional: Legen Sie einen neuen Test-User
hugoan. Merken Sie sich das Passwort.sudo adduser hugo
Optional: Fügen Sie den User
hugozur Gruppecodesys-4hinzu.sudo adduser hugo codesys-4
Erstellen Sie eine Datei
codesys-4.serviceunter/etc/systemd/system/. Ersetzen Sie dabeinanomit 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
Starten Sie die soeben angelegte Systemd-Unit:
sudo systemctl start codesys-4
Der CODESYS 4 Server ist nun bereits lokal unter Port
8080erreichbar. Unter http://localhost:8080 können Sie sich nun mit dem zuvor angelegten UserHugound dessen Passwort an der Applikation anmelden.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.
Installieren Sie das nginx-Paket, wenn noch nicht geschehen:
sudo apt update && sudo apt install -y nginx
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.
Erstellen Sie zu Testzwecken einen privaten Schlüssel und ein Zertifikat für den Reverse-Proxy:
Erstellen Sie die notwendigen Ordner.
sudo mkdir -p /etc/ssl/certs /etc/ssl/private
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
Machen Sie den Schlüssel nur für den Besitzer (root) lesbar.
sudo chmod 600 /etc/ssl/private/codesys-4.key
Machen Sie das Zertifikat world-readable, nur für Besitzer (root) schreibbar.
sudo chmod 644 /etc/ssl/certs/codesys-4-certificate.crt
Legen Sie die Konfiguration für den Reverse-Proxy an. Ersetzen Sie dabei
nanomit Ihrem bevorzugten Editor.sudo nano /etc/nginx/sites-available/codesys-4
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; }Aktivieren Sie die Konfiguration via symlink:
Deaktivieren Sie die Standard-Konfiguration von nginx.
sudo rm /etc/nginx/sites-enabled/default
Aktivieren Sie die von Ihnen angelegte Konfiguration.
sudo ln -s /etc/nginx/sites-available/codesys-4 /etc/nginx/sites-enabled/codesys-4
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.Setzen Sie die nginx Unit zusätzlich auf
enabled, um auch den Reverse-Proxy beim Systemstart automatisch zu starten:sudo systemctl enable nginx
Wenn Ihnen Ihre IP-Adresse nicht bekannt ist, führen Sie das Kommando
ipaus. 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 aucheth0oder Ähnliches, siehe NetworkInterfaceNames (Debian Wiki)).IPv4-Adresse nach dem Wort
inet: Im Beispiel192.168.0.123IPv6-Adresse nach dem Wort
inet6: Im Beispielfe80::0123:1234:2345:3456
Sollten Sie, wie oben beschrieben, ein selbstsigniertes Zertifikat verwenden, erhalten Sie in Ihrem Browser eine Warnung:

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.