PostgreSQL/TimescaleDB Installation Neu
Diese Seite beschreibt die Installation und Grundeinrichtung eines PostgreSQL Servers, optional
erweitert um die TimescaleDB Extension, für die Nutzung mit dem
database Plugin.
Bemerkung
PostgreSQL kann auch ohne die TimescaleDB Erweiterung genutzt werden - dann verhält es sich funktional wie MySQL/MariaDB, nur mit einem anderen Server. Details zu den TimescaleDB Zusatzfunktionen (Kompression, native Aggregation, native Aufbewahrungsfristen) sind im Abschnitt „PostgreSQL+TimescaleDB Unterstützung“ in database beschrieben.
PostgreSQL installieren
PostgreSQL selbst ist auf aktuellen Debian- und Ubuntu-Versionen im Standard-Repository enthalten und wird wie folgt installiert:
sudo apt-get install postgresql postgresql-contrib
Mit dem folgenden Befehl kann kontrolliert werden, ob der Server läuft:
systemctl status postgresql
Anschließend wird eine Datenbank und ein eigener Benutzer für SmartHomeNG angelegt (Passwort bitte durch ein eigenes ersetzen):
sudo -u postgres psql -c "CREATE USER shng WITH PASSWORD 'shng_password';"
sudo -u postgres psql -c "CREATE DATABASE shng OWNER shng;"
Wer nur PostgreSQL ohne TimescaleDB nutzen möchte, kann den folgenden Abschnitt überspringen - das Plugin funktioniert auch mit einem reinen PostgreSQL-Server, nur ohne die oben verlinkten TimescaleDB-Zusatzfunktionen.
TimescaleDB Erweiterung installieren
Wichtig
Die TimescaleDB Paketquelle veröffentlicht (Stand: Erstellung dieser Anleitung) Pakete nur bis einschließlich Debian bookworm (12), noch nicht für trixie (13).
Bis eine offizielle trixie-Unterstützung existiert, kann die bookworm-Paketquelle genutzt werden - die Pakete sind gegen die jeweilige PostgreSQL-Hauptversion gebaut, nicht fest an eine Debian-Version gebunden. Dies ist ein inoffizieller Workaround, keine von TimescaleDB offiziell unterstützte Konfiguration. Vor der praktischen Nutzung sollte auf der offiziellen Installationsseite geprüft werden, ob sich daran etwas geändert hat.
Einrichtung der Paketquelle (mit explizit gesetztem bookworm statt der über lsb_release
ermittelten Debian-Kennung, siehe Hinweis oben):
sudo apt-get install gnupg postgresql-common apt-transport-https lsb-release wget
echo "deb https://packagecloud.io/timescale/timescaledb/debian/ bookworm main" | sudo tee /etc/apt/sources.list.d/timescaledb.list
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/timescaledb.gpg
sudo apt-get update
Im Regelfall genügt der einfache Befehl (Versionsnummer ggf. an die installierte PostgreSQL Version anpassen):
sudo apt-get install timescaledb-2-postgresql-17
Hinweis
Weil die TimescaleDB-Pakete gegen bookworm gebaut sind, das System aber ggf. bereits neuere
Debian-Versionen von postgresql-17/libpq5 installiert hat (oder installieren würde),
kann apt beim einfachen Befehl oben in seltenen Fällen mit nicht auflösbaren Abhängigkeiten
scheitern, weil der Resolver Pakete unterschiedlicher Debian-Versionen mischen will. In diesem
Fall hilft es, alle betroffenen Pakete in einem Kommando und mit -t explizit auf die eigene
Paketquelle (z.B. trixie) festgelegt zu installieren:
sudo apt-get install -t trixie postgresql-17 postgresql-client-17 libpq5 timescaledb-2-postgresql-17
Ein solcher Konflikt wurde auf Devuan excalibur (dem trixie-Gegenstück von Devuan) beobachtet
und dort mit -t excalibur-security statt -t trixie behoben. Auf einem frisch
aufgesetzten, echten Debian trixie (getestet in einem Container, arm64) trat der Konflikt
dagegen nicht auf - der einfache Befehl oben installierte dort ohne Probleme. Ob der
Konflikt auftritt, scheint also vom bereits vorhandenen Systemzustand abzuhängen (z.B. weitere
aktive Paketquellen, bereits vorgenommene Teil-Upgrades). Zuerst den einfachen Befehl
versuchen, bei einer Fehlermeldung zu nicht auflösbaren Abhängigkeiten auf den -t trixie
Befehl ausweichen; sollte das nicht ausreichen, probeweise -t trixie-security verwenden.
Anschließend passt timescaledb-tune die PostgreSQL-Konfiguration automatisch an die vorhandene
Hardware an (Arbeitsspeicher etc.) und der Server wird neu gestartet:
sudo timescaledb-tune --quiet --yes
sudo systemctl restart postgresql
Die Erweiterung muss abschließend pro Datenbank aktiviert werden:
sudo -u postgres psql -d shng -c "CREATE EXTENSION IF NOT EXISTS timescaledb;"
Python-Modul installieren
Das Plugin greift über das Python-Modul psycopg2-binary auf PostgreSQL zu. Dieses Modul ist
nicht Teil der Grundinstallation und muss im für SmartHomeNG verwendeten virtuellen Python
Environment (siehe Virtuelle Python Environments) nachinstalliert werden:
pip3 install psycopg2-binary
Die eigentliche Plugin-Konfiguration (driver: timescaledb, Verbindungsdaten) ist unter
Plugin ‚database‘ Konfiguration beschrieben, die TimescaleDB-spezifischen Parameter
(timescale_hypertable und weitere) im Abschnitt „PostgreSQL+TimescaleDB Unterstützung“ von
database.