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 enthält Pakete für Debian bookworm (12) und trixie (13), jeweils für
amd64 und arm64 (geprüft am 06.10.2026 anhand des Paketindex der Paketquelle; für
timescaledb-2-postgresql-17 unter trixie z.B. Version 2.30.2).
Als Distributions-Name muss die Debian-Bezeichnung eingetragen werden. Auf Derivaten wie Devuan
(excalibur entspricht Debian trixie) kennt die Paketquelle den von lsb_release gelieferten
Namen nicht - dort also trixie verwenden, nicht den Namen der eigenen Distribution.
Einrichtung der Paketquelle (hier für Debian trixie bzw. Devuan excalibur; für Debian bookworm
trixie durch bookworm ersetzen):
sudo apt-get install gnupg postgresql-common apt-transport-https lsb-release wget
echo "deb https://packagecloud.io/timescale/timescaledb/debian/ trixie 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
Scheitert apt beim einfachen Befehl oben in seltenen Fällen mit nicht auflösbaren
Abhängigkeiten, weil der Resolver Pakete unterschiedlicher Debian-Versionen mischen will, 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 mit der früher hier beschriebenen bookworm-Paketquelle auf Devuan
excalibur beobachtet und dort mit -t excalibur-security statt -t trixie behoben; auf
einem frisch aufgesetzten Debian trixie (Container, arm64) trat er nicht auf. Ob er auftritt,
hängt offenbar vom vorhandenen Systemzustand ab (weitere aktive Paketquellen, bereits
vorgenommene Teil-Upgrades). Zuerst den einfachen Befehl versuchen, bei einer Fehlermeldung zu
nicht auflösbaren Abhängigkeiten auf den -t-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.