Manuelle Installation

Webserver (Apache2)

Webserver installieren

Als Webserver kommt Apache2 zum Einsatz. Da die Applikation in der Programmiersprache PHP geschrieben ist, muss zudem der korrekte Interpreter installiert werden. Damit Sivver korrekt funktioniert, sollte mindestens PHP7.0 verwendet werden. Zudem müssen alle Paketabhängigkeiten erfüllt sein.

apt-get install curl ssh openssl zip unzip ghostscript pdftk libgs-dev
apt-get install apache2 php php-curl php-mysql php-pdo php-bz2 php-gd php-geoip php-imagick php-imap php-mbstring php-snmp php-soap php-ssh2 php-xml php-zip php-apcu

Abhängig von der PHP Version wird zudem php-mcrypt benötigt. Dieses Verschlüsselungsmodul wird nur unterhalb der PHP Version 7.2 benötigt.

apt-get install php-mcrypt

Module aktivieren

Damit die Applikation problemlos läuft müssen mindestens die Module rewrite und ssl aktiviert werden. Dies erlaubt der Applikation die korrekte Pfadabbildung und die Verschlüsselung zwischen Webserver und Besucher.

a2enmod rewrite
a2enmod ssl
a2enmod remoteip

vHost konfigurieren

Um die Applikation korrekt nutzen zu können, wird ein Catch-All vHost, ähnlich der Vorgabe aus der Datei /etc/apache2/sites-available/000-default.conf, benötigt. Die Datei default-ssl.conf im selben Verzeichnis wird nicht benötigt. Um die Installation einfach zu halten, empfehlen wir die Datei 000-default.conf entsprechend den Vorgaben abzuändern.

<VirtualHost *:80>
    RemoteIPHeader CF-Connecting-IP

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

<VirtualHost _default_:443>
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        Options FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    RemoteIPHeader CF-Connecting-IP

    ErrorLog /var/log/apache2/production.error.log
    LogLevel warn
    CustomLog /var/log/apache2/production.access.log combined
    ServerSignature off

    SSLEngine On
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>

Die o.g. Konfiguration bedient sich dem Cloudflare Reverse Proxy. Wird dieser nicht verwendet, kann auf die Zeile RemoteIPHeader CF-Connecting-IP und das Apache2 Modul remoteip verzichtet werden. Die genannten Snakeoil Zertifikate generieren Debian Systeme in der Regel eigenständig. Hier sollten valide SSL-Zertifikate eines zertifizierten Herausgebers genutzt werden, damit Zertifikatsfehler vermieden werden. Bei Bedarf kann ein eigener Reverse-Proxy vorgeschaltet werden.

Composer

Sivver baut auf verschiene PHP Libraries auf. Diese werden ab v4.1.22 nicht mehr mit dem Installationspaket ausgeliefert. Sie müssen diese selbst installieren. Für die Installation der Abhängigkeiten muss auf dem Zielsystem Composer installiert sein.

Composer installieren

apt-get update
apt-get install composer

Composer Pakete installieren

Zur Installation der Composer-Packages der Anwendung wechseln Sie in den Ordner, in dem sich Sivver befindet. Dort wird folgender Befehl ausgeführt.

composer install

Die Konfigurationsdatei composer.json setzt die Anwesenheit aller nötigen PHP Module voraus. Stellen Sie also unbedingt sicher, dass die Installation der PHP Module zu diesem Zeitpunkt bereits erfolgt ist.

NodeJS

Sivver benötigt NodeJS und den Node-Package-Manager (npm), um mittels Webpack CSS und JS Assets zu bauen. Diese werden ab v4.1.22 nicht als Bundle ausgeliefert. So können Sie Änderungen einfacher vornehmen und müssen nicht eine riesige Datei ohne Formatierung durchsuchen.

NodeJS & NPM installieren

Zunächst muss NodeJS installiert werden. Da die Pakete nodejs und npm aus den Paketquellen des Systems nicht zwingend kompatibel sind, bedienen wir uns den Quellen von nodesource.com.

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
apt-get install -y nodejs

NPM Pakete installieren

Zur Installation der Composer-Packages der Anwendung wechseln Sie in den Ordner, in dem sich Sivver befindet. Dort werden folgende Befehle ausgeführt.

npm install
npm run watch-production

Sollten Sie den Build-Vorgang im Zuge einer Entwicklungsumgebung ausführen, können Sie npm run watch nutzen, um die webpack.js Bundles ohne Post-Compilation Scripts zu bauen.

SQL Server (mySQL)

SQL Server installieren

Die Software setzt einen PDO-kompatiblen Datenbankserver mit einem relationalen Datenmodell voraus. Wir empfehlen mysql-server oder mariadb-server. Die Installation des Paketes kann über den Paketmanager APT abgeschlossen werden.

apt-get update
apt-get install mysql-server

Nach der Installation folgt die initiale Konfiguration. Die Konfiguration wird durch das Installationsscript automatisch gestartet. Abhängig vom Server-Typ können die nötigen Grundkonfigurationen abweichen.

SQL Server konfigurieren

Der Datenbankserver sollte entsprechend vor externen Zugriffen geschützt werden. Die einfachste Variante, dies zu bewerkstelligen ist die eingebaute mysql_secure_installation. Das zugehörige Script führt alle nötigen Schritte durch, um den Root-Benutzer mit einem Passwort zu sichern und den externen Zugriff auf den Server zu verhindern.

mysql_secure_installation

Die nächsten Schritte erfordern Zugriff auf das Commandline-Interface (CLI) des Datenbankservers. In der Regel führt der Datenbankserver die Authentifizierung des root-Benutzers an Hand der Sitzung des Linux-Benutzers durch. Es muss also kein Passwort angegeben werden, sogleich der Server eines anfordern kann. Wurde bereits bei der Installation des Datenbankservers ein Passwort für den Root-Benutzer festgelegt, so kann das System an dieser Stelle nach diesem verlangen und eine Passwortauthentifizierung in Einzelfällen von Nöten sein.

mysql -u root -p

Zunächst wird ein Benutzer und eine Datenbank für den Hauptmandanten angelegt. Der neue Benutzer erhält Superuser-Rechte. Diese werden benötigt, damit die Applikation später weiterführende Datenbankübergreifende Wartungsvorgänge durchführen kann. Im Folgenden wird zunächst ein neuer Benutzer angelegt, der alle Standardrechte auf alle Datenbanken erhält. Im Anschluss werden ihm die Superuser-Rechte zugewiesen.

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='username';
mysql> CREATE DATABASE sivver;

Datenbank-Backup einspielen (manuelle Installation)

Die Dateien der Software enthalten den Ordner sql. In diesem befindet die Datei sivver.sql. Diese enthält die Befehle für die Erstellung und Füllung aller nötigen Tabellen. Wenn eine manuelle Installation durchgeführt wird, wird ein administrativer Benutzer sivver mit dem Passwort default angelegt. Funktioniert das Passwort nicht, muss es zunächst zurückgesetzt werden. Dies ist im Wesentlichen von den vorliegenden Verschlüsselungsmechanismen abhängig.

mysql -u username -p sivver < sivver.sql

Große Datei-Uploads ermöglichen

Sivver legt sämtliche Dateien des Datenarchivs in der Datenbank ab. Wenn Sie ermöglichen wollen, größere Dateien hochzuladen, passen Sie bitte folgenden Parameter im Absatz [mysqld] der Datei my.cnf an.

[mysqld]
key_buffer_size = 200M
max_allowed_packet = 200M

Die Datei befindet sich, je nach System, an einem der folgenden Orte:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf

Hinweis für neue Datenbankserver Versionen

Neue Versionen von Datenbankservern (z.B. MariaDB 10.1.7 und neuer) nutzen inkompatible SQL_MODE Parameter. Sind diese aktiv, schlagen einige Queries am Datenbankserver fehl, was zu ungewollten Verhaltensweisen der Applikation bei der Datenverarbeitung führen kann. Um die globale Konfiguration des SQL_MODE Parameters permanent abzuändern, nehmen Sie bitte folgende Parametrierung im Absatz [mysqld] der Datei my.cnf vor. Existiert der Absatz nicht, muss jener am Ende der Datei angefügt werden.

[mysqld]
sql-mode = ''

Die Datei befindet sich, je nach System, an einem der folgenden Orte:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf

Im Anschluss muss der Datenbankserver neugestartet werden:

service mysql restart

Die erfolgreiche Konfiguration kann geprüft, indem eine SELECT-Query ausgeführt wird. Das Ergebnis der Datenselektion sollte nun eine leere Ergebnistabelle zur Folge haben.

SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
+------------+-------------------+
| @@SQL_MODE | @@GLOBAL.SQL_MODE |
+------------+-------------------+
|            |                   |
+------------+-------------------+

Sivver

Erstellen der Config.php (manuelle Installation)

Damit die Hauptinstanz auf ihre Datenbasis zugreifen kann, müssen die Verbindungsdaten für den Datenbankserver in die Datei app/Core/Config.php eingetragen werden. Eine vollständige Vorlage der Datei Config.php mit allen benötigten Parametern bietet die Datei Config_Prepared.php. Diese wird auch bei der Installation über den Webinstaller genutzt.

define('DB_TYPE', 'mysql');
define('DB_HOST', 'localhost');
define('DB_NAME', 'sivver');
define('DB_USER', 'username');
define('DB_PASS', 'password');

Neben der Datenbankverbindung sollte ein Lizenzschlüssel eingetragen werden. Ohne Lizenzschlüssel ist die Software nicht lauffähig.

define('LICENSE_KEY', 'A3FKI-58LZY-KRYBQ-853WX');

Um eine ordnungsgemäße Verschlüsselung von kritischen Daten bewerkstelligen zu können, muss zudem ein entsprechender AES Schlüssel festgelegt werden.

define('AES_KEY', 'AKE73KI09TRYC01L');

Auf die zusätzlichen Parameter gehen wir im Zuge dieser Anleitung nicht ein.

Installationsroutine (geleitete Installation)

Die geleitete Installation wird automatisch ausgeführt, wenn die Datei Config.php nicht vorhanden ist. Der Installationsvorgang fragt alle nötigen Parameter ab und initialisiert im Anschluss den Hauptmandanten, sodass das System im Anschluss genutzt werden kann. Bitte konfigurieren Sie das Grundsystem vorab entsprechend den Systemvoraussetzungen.

Erweiterte Parametrierung

Die Software ist in der Regel nach der Installation sofort einsatzbereit. Es sollten allerdings einige Grundeinstellungen im Mitarbeiter-/Adminbereich vorgenommen werden. Das gilt auch für die manuelle Installation Ist die Applikation hier nicht vollständig parametriert, kann es in Einzelfällen zu Laufzeitfehlern kommen. Die einzelne Modulkonfiguration ist in den zugehörigen Wiki-Artikeln entsprechend dargelegt.