Debian

Wie du die PureLife Cloud unter Debian/Linux installierst.

Es wird in den folgenden Abschnitten davon ausgegangen, dass die Installation unter Debian/Linux (x64) erfolgt.

Die PureLife Cloud funktioniert auch unter anderen Plattformen und die Anleitungen sollten sich übertragen lassen, jedoch bieten wir hierfür keinen Support. Für weitere Informationen kannst du dich gern mit uns in Verbindung setzen.

Für die Installation wird davon ausgegangen, dass die folgenden Pakete installiert sind

sudo apt install curl gnupg2 ca-certificates lsb-release

Vorbereitung

Bevor du mit der Installation beginnst, solltest du sicherstellen, dass die folgenden Komponenten vorhanden sind:

  • Ein Bash (oder anderes) Terminal
  • Ein PostgreSQL >= 13 Datenbankserver und eine Datenbank
  • Den MQTT-Broker Mosquitto mit dem mosquitto-go-auth-Plugin, falls eine Authentifizierung genutzt werden soll. Falls keine Authentifizierung genutzt werden soll (nicht empfohlen), kann jeder andere MQTT-Broker verwendet werden.
  • (Empfohlen) Ein Domainnamen, der auf deinen Server zeigt (z. B. example.com)
  • (Empfohlen) Einen Webserver, z.B. nginx
  • (Empfohlen) SMTP-Zugangsdaten für einen E-Mail-Account, um Service-Mails zu verschicken

Außerdem solltest du einen Benutzer erstellen, welcher später den Server startet:

sudo adduser --home /home/pureuser --disabled-login pureuser

Installation

Wechsel zuerst zu dem Benutzer, welcher später für die Ausführung der PureLife Cloud Instanz zuständig ist.

sudo su - pureuser

Lade für deine Plattform die letzte verfügbare Version von der PureLife Cloud herunter, kopiere sie auf den Rechner und entpacke sie.

# Kopiere das Archiv (zum Beispiel mit wget, scp oder rsync)
tar -zxvf purelife-cloud*.tar.gz

Du solltest nun eine Binärdatei purelife-cloud sehen, welche du zuerst mit ./purelife-cloud -h überprüfen solltest. Danach kannst du eine Konfigurationsdatei erstellen.

./purelife-cloud config generate

Du solltest jetzt einen neuen Ordner config mit einer Datei config.toml sehen. Die Datei dient ab jetzt der Konfiguration von der PureLife Cloud Instanz.

Einrichtung

Zuerst sollte unter SQL.DataSource der DSN für die PostgreSQL-Datenbankverbindung hinterlegt werden. Als Vorlage kann hierbei der folgenden DNS dienen:

"postgres://<purelife-cloud-db-user>:<purelife-cloud-db-password>@<host-name-or-IP>:5432/<purelife-cloud-db>?sslmode=disable&application_name=purelife-cloud"

Ebenfalls sollte unter HTTP.SiteURL die URL gesetzt werden, unter welchem die Seite später erreichbar ist. Ein abschließender Backslash sollte dabei entfernt werden. Sollte der Zugriff auf die URL durch HTTPS gesichert werden (dringend empfohlen), muss unter HTTP.LegacyFirmwareURL ebenfalls eine URL für den unverschlüsselten Zugriff auf die PureLife Cloud angegeben werden.

Unter MQTT muss die URL, über welche Mosquitto erreichbar ist, angegeben werden. Falls du bei der Einrichtung von Mosquitto einen MQTT-Account für die PureLife-Cloud erstellt hast, solltest du diesen ebenfalls unter MQTT hinterlegen. Andernfalls wird die PureLife Cloud automatisch einen Account erstellen, welchen Mosquitto über das Auth-Plugin abfragt.

[MQTT]
Broker = ["mqtt://hostname.de:1883"]
Username = "PureLifeCloud"
Password = "password-here"

Die Verbindung zur Datenbank kann nun direkt getestet werden. Hierzu sollte ein erster Benutzer erstellt werden, welcher dann automatisch auch Administrator der Anwendung ist. (Über das Frontend können später weitere Benutzer hinzugefügt werden).

./purelife-cloud user create

Nachdem du jetzt eine Verbindung zur Datenbank hast, solltest du direkt die Konfiguration der Server-Mails vornehmen. Hierzu musst du deine SMTP Zugangsdaten unter System_SMTP und unter System.AdminMail eine Mail-Adresse hinterlegen.

Für den Abschluss der Einrichtung solltest du den Secret Key unter Service.SecretKey sichern! Dieser ist dafür zuständig, die Daten deiner Datenbank teilweise zu verschlüsseln. Sollte der Secret Key verloren gehen oder überschrieben werden, sind die Daten deiner Datenbank nutzlos.

System-Service

Falls du möchtest, dass die PureLife Cloud Instanz automatisch mit deinem Server startet, muss ein System-Service angelegt werden.

1. Erstelle eine Systemd-Datei für die PureLife Cloud Instanz

sudo touch /etc/systemd/system/purelife-cloud.service

2. Öffne die Datei mit einem Texteditor und füge den folgenden Inhalt ein

[Unit]
Description=PureLife Cloud
After=network.target
After=postgresql.service
BindsTo=postgresql.service

[Service]
Type=notify
ExecStart=/home/pureuser/purelife-cloud server
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/home/pureuser
User=pureuser
Group=pureuser

[Install]
WantedBy=multi-user.target

Falls PostgreSQL auf einem anderen Server installiert ist, muss After=postgresql.service und BindsTo=postgresql.service entfernt werden.

3. Nach dem Speichern muss der neue Service erkannt werden

sudo systemctl daemon-reload

4. Überprüfe, ob die Datei erkannt wurde

sudo systemctl status purelife-cloud.service

Du solltest nun ungefähr die folgende Ausgabe sehen

 purelife-cloud.service - PureLife Cloud
  Loaded: loaded (/etc/systemd/system/purelife-cloud.service; disabled; vendor preset: enabled)
  Active: inactive (dead)

5. Du hast den Service somit erstellt und kannst ihn starten

sudo systemctl start purelife-cloud.service

6. Überprüfe, ob die Instanz gestartet ist

sudo systemctl status purelife-cloud.service
curl http://localhost:8080

Als Ausgabe solltest du eine HTML-Datei sehen, welche die Instanz gesendet hat

7. Du kannst nun aktivieren, dass der Service automatisch mit deinem Rechner startet

sudo systemctl enable purelife-cloud.service

Probiere es aus

Nun, da die Cloud Instanz eingerichtet ist und läuft, kannst du die Konfiguration anpassen oder dich einloggen. Öffne hierzu die URL http://127.0.0.1:8080 lokal auf dem Server oder mittels IP-Adresse des Servers von einem anderen Rechner.

Weitere sinnvolle Anpassungen

System

Trage die Domain des Servers in die Hostsdatei ein

127.0.0.1       example.de

Datenbank

Aktiviere Extensions

sudo su - postgres
psql -d database
CREATE EXTENSION IF NOT EXISTS "hstore";
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

Teste die SMTP-Konfiguration

sudo su - pureuser
./purelife-cloud config test-mail --help
./purelife-cloud config test-mail --to user@example.de

Konfiguriere logrotate

Erstelle die Datei /etc/logrotate.d/purelife-cloud, mit folgendem Inhalt

/home/pureuser/logs/purelife-cloud.log {
      # Maximum number of log files to keep
      rotate 20
      # Rotate log files on the first day every day
      daily
      # Compress rotated logs with .gzip
      compress
      # If the log file is missing, continue
      missingok
      # If the log file is empty, continue
      notifempty
      # Truncate the original log file in place after creating a copy
      copytruncate
}

Test die Konfiguration mit logrotate -f -v /etc/logrotate.d/purelife-cloud