1. Verzeichnisstruktur anlegen & Daten kopieren

Zuerst stellen wir sicher, dass das Zielverzeichnis existiert, und kopieren die Scripte an ihren Platz. Die Zsh-Aliase erwarten die Scripte direkt in ~/scripts/.

BASH
# Vom lokalen Hostsystem (CachyOS) ausführen, um die Daten auf den VPS zu schieben:
# (Pfade ggf. anpassen, falls über Tailscale kopiert wird)
scp -r ~/_BackUp/Configs/Debian/scripts/* root@server.EXAMPLE.TLD:~/scripts/
scp ~/_BackUp/Configs/Debian/backup_vps.sh root@server.EXAMPLE.TLD:/usr/local/bin/

# Auf dem VPS: Rechte für Shell-Scripte korrigieren
chmod +x ~/scripts/*.sh
chmod +x /usr/local/bin/backup_vps.sh

2. MQTT-Datenbank in MariaDB wiederherstellen

Da ISPConfig MariaDB installiert hat, stellen wir die Datenbank mqtt_db wieder her. Da das Backup als .zst (Zstandard) komprimiert ist, installieren wir kurz das Tool zum Entpacken.

BASH
# 1. Zstandard installieren
sudo apt install -y zstd

# 2. Datenbank manuell in MariaDB anlegen
sudo mariadb -u root -e "CREATE DATABASE IF NOT EXISTS mqtt_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# 3. Dump direkt über eine Pipeline entpacken und importieren
# Kopiere das Backup-File auf den Server und führe aus:
zstd -d -c mqtt_db.mysql.sql.zst | sudo mariadb -u root mqtt_db

[!TIP] Wenn du einen separaten Datenbank-User für das Python-Script nutzen möchtest, kannst du diesen in MariaDB anlegen oder die Zugangsdaten direkt über das ISPConfig-Panel unter Sites -> Database verwalten.

3. Python-Projekte mit uv initialisieren

Da wir konsequent auf uv setzen, müssen wir keine virtuellen Umgebungen händisch verwalten. uv liest die pyproject.toml und uv.lock Dateien in den Projektordnern automatisch aus.

Gehe in die jeweiligen Projektordner, um die Abhängigkeiten zu überprüfen oder bereitzustellen:

uv für den user installieren

BASH
echo 'eval "$(uv generate-shell-completion zsh)"' >> ~/.zshrc
BASH
# f2b_stats
cd ~/scripts/f2b_stats
uv sync

# mqtt-to-mariadb-logger
cd ~/scripts/mqtt-to-mariadb-logger
uv sync

# sensor_dashboard
cd ~/scripts/sensor_dashboard
uv sync

# ssl-test
cd ~/scripts/ssl-test
uv sync

# telegram-bot
cd ~/scripts/telegram_bot
uv sync

# vps-monitor
cd ~/scripts/vps-monitor
uv sync

4. Systemd-Services einrichten

Für alle Dienste nutzen wir uv run mit absoluten Pfaden, um eine stabile Ausführungsumgebung zu gewährleisten.

Service 1: MQTT-to-MariaDB Logger

Datei: sudo micro /etc/systemd/system/mqtt-logger.service

Ini, TOML

TXT
[Unit]
Description=MQTT to MariaDB Logger Daemon
After=network.target mosquitto.service mariadb.service

[Service]
Type=simple
User=USER
WorkingDirectory=/home/USER/scripts/mqtt-to-mariadb-logger
ExecStart=/home/USER/.local/bin/uv run /home/USER/scripts/mqtt-to-mariadb-logger/mqtt_to_mariadb.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Service 2: Sensor Dashboard

Datei: sudo micro /etc/systemd/system/sensor-dashboard.service

Ini, TOML

TXT
[Unit]  
Description=Flask Sensor Dashboard Service  
After=network.target  

[Service]  
Type=simple  
User=USER  
WorkingDirectory=/home/USER/scripts/sensor_dashboard  
ExecStart=/home/USER/.local/bin/uv run gunicorn --workers 3 --bind 127.0.0.1:8000 app:app  
Restart=always  
RestartSec=5  

[Install]  
WantedBy=multi-user.target

Service 3: VPS-Monitor

Datei: sudo micro /etc/systemd/system/vps-monitor.service

Ini, TOML

TXT
[Unit]
Description=VPS System Monitor Daemon
After=network.target

[Service]
Type=simple
User=USER
WorkingDirectory=/home/USER/scripts/vps-monitor
ExecStart=/home/USER/.local/bin/uv run /home/USER/scripts/vps-monitor/vps_monitor.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Dienste aktivieren und starten

Nach dem Speichern der Dateien musst du systemd aktualisieren und die Dienste starten:

Bash

TXT
# Systemd-Daemon neu laden
sudo systemctl daemon-reload

# Autostart aktivieren und Dienste jetzt starten
sudo systemctl enable --now mqtt-logger.service
sudo systemctl enable --now sensor-dashboard.service
sudo systemctl enable --now vps-monitor.service

# Status prüfen
systemctl status mqtt-logger.service sensor-dashboard.service vps-monitor.service

_Hinweis: Falls ein Dienst nicht startet (Exit-Code), prüfe das Log mit sudo journalctl -u <service_name>.service -n 20._

5. Cronjobs einrichten (Automatisches Backup & Daily Report)

Wir binden das Backup-Script und den täglichen Report in die Crontab von root ein.

BASH
sudo crontab -e

Füge folgende Zeilen am Ende der Datei ein (Pfade und Zeiten angepasst):

TXT
# Täglicher Report um 08:00 Uhr morgens ausführen
0 8 * * * /bin/bash /root/scripts/daily_report.sh > /dev/null 2>&1

# Vollständiges VPS-Backup täglich um 03:00 Uhr nachts ausführen
0 3 * * * /bin/bash /usr/local/bin/backup_vps.sh > /root/backup_cron_debug.log 2>&1

6. Funktionstest über Zsh-Aliase

Nachdem alles eingerichtet ist, kannst du die Funktion direkt über deine maßgeschneiderten Aliase in der Shell prüfen:

BASH
# Prüfe den Status des MQTT Loggers (alias nutzt journalctl)
mqtt_logger

# Prüfe die Systemgesundheit
health

# Fail2ban Statistiken ausgeben (läuft via uv run)
f2b

Damit ist auch deine Script-Landschaft komplett dokumentiert und bereit für den produktiven Einsatz. Du hast nun ein komplett reproduzierbares, hochsicheres Setup! Viel Erfolg beim Zünden des Installers!