Installation der Web API

Das Installationsskript enthält alle Schritte um die SharedMobility.ai Web API zu betreiben. In diesem Tutorial gehen wir davon aus, dass die Domain api.sharedmobility.ai lauten wird. Diese ist für die eigene Installation entsprechend anzupassen. Die einzelnen Schritte umfassen:

  1. Installation des Apache-Webservers
    Dieser dient als Reverse-Proxy für die Node.js-Applikation, da wir TLS/SSL-Zertifikate und die HTTP-Einstellungen so an einer zentralen Stelle einfacher konfigurieren können. Statt Apache kann selbstverständlich auch jeder andere HTTP-Webserver mit Reverse-Proxy-Fähigkeit verwendet werden. Wir konfigurieren hier HTTP/2 als Standardprotokoll für die API.
  2. Installation von Certbot und generieren eines Let’s Encrypt TLS-Zertifikats
    Alle Verbindungen zur API müssen über eine mit TLS gesicherte Verbindung aufgebaut werden. In der Apache vhost-Konfiguration werden alle Requests auf HTTPS umgeleitet.
  3. Node.js via Debian-Package installieren
    Hierfür verwenden wir die von NodeSource bereitgestellten Debian-Packages für Node 12. Die Standard-Installation verwendet auch einen separaten Linux-User „node“ um die Web API auszuführen, der ebenfalls im Script angelegt wird.
  4. SharedMobility.ai-Repository klonen
    Zuerst wird noch git nachinstalliert um anschließend das SharedMobility.ai-Repository von Github zu klonen. Mit npm werden danach alle JavaScript-Pakete installiert. Die Web API benötigt u.a. TensorFlow.js als Abhängigkeit.
  5. PM2 als Prozessmonitor
    Statt die Node-Applikation direkt auszuführen, verwenden wir PM2 als Prozessmonitor. Dieser wird die API automatisch neustarten, falls ein Fehler auftritt. Zu beachten ist, dass wir die Applikation nicht als root-User ausführen, sondern als User „node“ und so die Berechtigungen während der Laufzeit auf ein Minimum reduzieren.

Vollständiges Installations-Skript

Die einzelnen Dateien (vhost-Konfigurationen, app.json, …) befinden sich im vollständigen Gist auf Github. Das nachfolgene Skript geht davon aus, dass alle Konfigurationsdateien entsprechend vorhanden sind.

Weitere Konfigurationsdateien

app.json ist die PM2 Ecosystem Datei und definiert wie der Applikationsprozess gestarten werden soll. Der HTTP-Server wird über die Umgebungsvariable PORT auf den TCP-Port 54321 gestartet, auf den der Apache Reverse-Proxy wiederum weiterleitet.

In der Apache vhost-Konfiguration befindet sich der Reverse-Proxy, der die eingehenden Anfragen lokal an den Node-Webserver weiterleitet.