Die folgende Anleitung orientiert sich im Wesentlichen an: https://wiki.volkszaehler.org/howto/installation_auf_webhoster_2
Hier gehe ich lediglich noch auf die Besonderheiten bei Strato ein und passe ein paar Schritte an.
Das Ganze gibt es auch als pdf zum Herunterladen.
Am besten setzt man ein brandneues VZ-Image von https://wiki.volkszaehler.org/howto/raspberry_pi_image auf einer separaten SD-Karte und testet dieses auf einem Raspberry Pi im lokalen Netzwerk.
ACHTUNG: diese Version funktioniert noch nicht reibungslos mit PHP 7.4. Daher ist es besser unter Ubuntu die middelware per install-script zu installieren: https://wiki.volkszaehler.org/software/middleware/installation
Wenn dieses Standardsetup soweit läuft, kann man die VZ-Datenbank, die middleware und das Frontend auch bei Strato hosten. Ggf. bereits vorhandene Daten brauchen noch nicht überspielt werden.
- ein Subdomain im eigenen Strato-Paket anlegen, z.B. "vz.domain.tld"
- eine Datenbank im Paket anlegen
- den Datenbanknamen "DBxxxxxxx"
- Benutzernamen "Uxxxxxxx" und
- das selbst gewählte PASSWORD notieren
im Terminal kann man den server nun mit
ssh subdomain@ssh.strato.de
sowie dem Paktemasterpasswort erreichen.
Falls mehrere unterschiedliche Volkszaehlerinstanzen auf dem gleichen webspace über unterschiedlice Subdomains laufen sollen, empfiehlt es sich, jeweils ein eigenes Verzeichnis zu erstellen:
mkdir vz
Nun überträgt man am besten mit FileZilla das gesamte Verzeichnis volkszaehler.org vom RPI auf den eigenen Computer und von dort auf den webspace bei Strato. Der Einfachheit halber habe ich as ".org" dabei auf dem Strato-Server weggelassen und
In der Domainverwaltung von Strato setzt man nun eine Weiterleitung der erstellten Subdomain auf das Verzeichnis
~/vz/volkszaehler/htdocs
Nun sollte beim Aufruf der subdomain.domain.tld
bereits das VZ-Frontend noch mit Fehlermeldungen erscheinen.
Als nächstes müssen noch folgende Dateien angepasst werden.
nano ~/vz/volkszaehler/htdocs/js/options.js
dort die Zeile mit "url" suchen und dort "middleware.php" verankern:
middleware: [
{
title: 'Local (default)',
// url: '',
url: 'middleware.php',
// url: 'api',
// live: 8082 // NOTE: live updates require
...
die mit "//" auskommentierten Zeilen können natürlich weggelassen werden. In
nano ~/vz/volkszaehler/etc/config.yaml
müssen die Standardangaben der MySQL-Datenbank host, Benutzername, Datenbankname und Passwort durch die vorgegebenen Werte von Strato (siehe oben) ersetzt werden:
host: rdbms.strato.de
user: Uxxxxxxx
password: xxxx
dbname: DBxxxxxxx
...
admin:
user: Uxxxxxxx
password: xxxxx
Falls man bereits eine funktionierende VZ-Instanz auf dem RPI laufen hat, kann man die Datenbank von diesem RPI zunächst z.B. mit dem Befehl
mysqldump -uvz -pdemo volkszaehler --single-transaction | cat > ~/vzsicherung.sql
sichern und die Datei vzsicherung.sql
mit FileZilla auf das Hauptverzeichnis bei Strato übertragen (also ~ und nicht ~/vz).
Nun kann man sich wieder per ssh bei Strato einloggen und das backup in die Strato-MySQL-Datenbank übertragen.
mysql -h rdbms -uUxxxxxxx -pPASSWORD DBxxxxxxx < vzsicherung.sql
Nun sollten die Datenbank und die enthaltenen Kanäle bereits über das Frontend im subdomain-Aufruf erreichbar sein.
Spätere backups usw. kann man übrigens nach dieser Anleitung anlegen und übertragen: https://www.strato.de/faq/hosting/so-einfach-koennen-sie-per-ssh-auf-ein-backup-ihrer-mysql-datenbank-zugreifen/
Nun muss nur noch der lokal betriebene vzlogger auf auf die neue Subdomain umgeleitet werden, damit die Daten auch in die Strato-Datenbank geschrieben werden. Dazu auf dem lokalen RPI mit
sudo nano /etc/vzlogger.conf
in der Zeile
"middleware": "http://localhost/middleware.php",
"localhost" gegen die eigene Subdomain austauschen
"middleware": "http://vz.domain.tld/middleware.php",
Nun noch den vzlogger neu starten mit:
sudo systemctl stop vzlogger
sudo systemctl start vzlogger
Falls man den vzclient (sudo nano /etc/vzclient.conf
) ggf. durch eigene Scripte direkt anspricht (wie bei mir mit einem Wetterdatensensor), sollte auch hier noch die der localhost auf die neue url geändert werden. Bitte aufpassen, dass keine end-of-line-Fehler in der Datei entstehen.
Soll auch das aggregate binary auf dem Webserver ausgeführt werden (z.B. via cronjob), müssen noch folgende 2 Zeilen in diese Datei auskommentiert werden:
nano ~/vz/volkszaehler/lib/Util/ConsoleApplication.php
// if (!self::isConsole())
// throw new \Exception('This tool can only be run locally.');
Nun lässt sich die Aggregation per ssh oder cronjob mit dem gewohnten Befehl starten:
php aggregate run (ggf. uuid) -m full -l day -l hour -l minute