BW3-Core/docu/docs/service.md
KoenigMjr a3f429cbf4 [enh/venv]: feat(install): introduce venv-based runtime setup with proper permissions
Replace the implicit dependency on system-wide Python packages with a
dedicated virtual environment and explicit runtime dependency management.

Changes:
- Create a project-local Python venv during installation
- Install runtime dependencies explicitly via requirements-runtime.txt
- Fix ModuleNotFoundError issues in isolated environments (e.g. requests)
- Detect the actual user when running via sudo (SUDO_USER)
- Assign correct ownership to the BOSWatch directory for venv usage
- Apply setgid (2775) to the log directory so files created with sudo
  remain manageable by the user
- Set explicit permissions for Python scripts and config files

This ensures a reproducible, system-independent installation and prevents
permission issues during runtime and log creation.
2026-03-05 13:33:09 +01:00

167 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BOSWatch Dienstinstallation (Service Setup)
## 🇩🇪 BOSWatch als Dienst verwenden
Es wird vorausgesetzt, dass BOSWatch unter `/opt/boswatch3` installiert ist.
Falls du einen anderen Installationspfad nutzt, müssen alle Pfadangaben in dieser Anleitung, im Skript sowie in den generierten Service-Dateien entsprechend angepasst werden.
Für jeden Dienst muss eine eigene `*.yaml`-Datei im Ordner `config/` vorhanden sein.
Beim Ausführen des Skripts wirst du interaktiv gefragt, welche dieser YAML-Dateien installiert oder übersprungen werden sollen.
### Dienst installieren
Als Erstes wechseln wir ins BOSWatch Verzeichnis:
```bash
cd /opt/boswatch3
```
Das Installationsskript `install_service.py` wird anschließend mit Root-Rechten ausgeführt:
```bash
sudo /opt/boswatch3/venv/bin/python3 install_service.py
```
Es folgt ein interaktiver Ablauf, bei dem du gefragt wirst, welche YAML-Dateien installiert oder entfernt werden sollen.
### Zusätzliche Optionen (fortgeschrittene Anwender)
Das Skript bietet zusätzliche CLI-Optionen für mehr Kontrolle:
```bash
usage: install_service.py [-h] [--verbose] [--quiet]
Installiert oder entfernt systemd-Services für BOSWatch basierend auf YAML-Konfigurationsdateien.
optional arguments:
-h, --help zeigt diese Hilfe an
--dry-run für Entwickler: führt keine echten Änderungen aus (Simulation)
--verbose zeigt ausführliche Debug-Ausgaben
--quiet unterdrückt alle Ausgaben außer Warnungen und Fehlern
-l, --lang [de|en] Sprache für alle Ausgaben (Standard: de)
```
### Neustart nach Serviceinstallation
Nach Durchlaufen des Skripts boote dein System erneut durch, um den korrekten Startvorgang zu überprüfen:
```bash
sudo reboot
```
### Kontrolle, ob alles funktioniert hat
Um zu kontrollieren, ob alles ordnungsgemäß hochgefahren ist, kannst du die zwei Services mit folgenden Befehlen abfragen und die letzten Log-Einträge ansehen:
1. Client-Service
```bash
sudo systemctl status bw3_[clientname].service
```
Ersetze [clientname] mit dem Namen, den deine client.yaml hat (Standardmäßig: client)
Um das Log zu schließen, "q" drücken.
2. Server-Service
```bash
sudo systemctl status bw3_[servername].service
```
Ersetze [servername] mit dem Namen, den deine server.yaml hat (Standardmäßig: server)
Um das Log zu schließen, "q" drücken.
**Beide Outputs sollten so ähnlich beginnen:**
```text
bw3_client.service - BOSWatch Client
Loaded: loaded (/etc/systemd/system/bw3_client.service; enabled; preset: enabled)
Active: active (running) since Mon 1971-01-01 01:01:01 CEST; 15min 53s ago
```
Falls du in deinen letzten Logzeilen keine Error vorfinden kannst, die auf einen Stopp des Clients bzw. Server hinweisen, läuft das Programm wie gewünscht, sobald du deinen Rechner startest.
### Logdatei
Alle Aktionen des Installationsskripts werden in der Datei log/install/service_install.log protokolliert.
### Hinweis
Nach der Installation oder Entfernung wird systemctl daemon-reexec automatisch aufgerufen, damit systemd die neuen oder entfernten Units korrekt verarbeitet.
---
## 🇬🇧 Use BOSWatch as a Service
We assume that BOSWatch is installed to `/opt/boswatch3`.
If you are using a different path, please adjust all paths in this guide, in the script and in the generated service files accordingly.
Each service requires its own `*.yaml` file inside the `config/` folder.
The script will interactively ask which YAML files to install or skip.
### Install the Service
First, change directory to BOSWatch folder:
```bash
cd /opt/boswatch3
```
After that, run the install script `install_service.py` with root permissions:
```bash
sudo /opt/boswatch3/venv/bin/python3 install_service.py -l en
```
You will be guided through an interactive selection to install or remove desired services.
### Additional Options
The script supports additional CLI arguments for advanced usage:
```bash
usage: install_service.py [-h] [--dry-run] [--verbose] [--quiet]
Installs or removes BOSWatch systemd services based on YAML config files.
optional arguments:
-h, --help show this help message and exit
--dry-run simulate actions without making real changes
--verbose show detailed debug output
--quiet suppress all output except warnings and errors
-l, --lang [de|en] Language for all output (default: de)
```
### Reboot After Setup
After running the script, reboot your system to verify that the services start correctly:
```bash
sudo reboot
```
### Verifying Successful Setup
To check if everything started properly, you can query the two services and inspect the most recent log entries:
1. Client Service
```bash
sudo systemctl status bw3_[clientname].service
```
Replace [clientname] with the name of your client.yaml file (default: client).
To close the log, press "q".
2. Server Service
```bash
sudo systemctl status bw3_[servername].service
```
Replace [servername] with the name of your server.yaml file (default: server).
To close the log, press "q".
**Both outputs should start similarly to this:**
```text
bw3_client.service - BOSWatch Client
Loaded: loaded (/etc/systemd/system/bw3_client.service; enabled; preset: enabled)
Active: active (running) since Mon 1971-01-01 01:01:01 CEST; 15min 53s ago
```
If the latest log entries do not show any errors indicating a client or server crash, then the services are running correctly and will automatically start on boot.
### Log File
All actions of the installation script are logged to `log/install/service_install.log`.
### Note
After installation or removal, `systemctl daemon-reexec` is automatically triggered to reload unit files properly.