---
title: 'uv für den user installieren'
url: 'https://blog.ro011110ot.de/de/vps/3-scripte-einrichten'
markdown: 'https://blog.ro011110ot.de/de/vps/3-scripte-einrichten.md'
lang: de
date: '2026-10-05'
description: '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/. # Vom lokalen Hostsystem (CachyOS) ausführen, um die Daten auf den VPS zu schieben: #…'
---

## 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

```
[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

```
[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

```
[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

```
# 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):

```Code-Snippet
# 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!

---

## Navigation

- Previous: [Zusätzliche Dienste: Tailscale, Syncthing & Mosquitto](https://blog.ro011110ot.de/de/vps/2-zusaetzliche-dienst-tailscale-syncthing-mosquitto.md)
- Next: [Debian 13 Minimal Server Setup (LEMP + Custom Services)](https://blog.ro011110ot.de/de/vps/debian-13-minimal-server-setup-lemp-custom-services.md)
