From cb198120ba797aa99ab34d92c4e2bf6f94e55718 Mon Sep 17 00:00:00 2001 From: Joachim Hummel Date: Mon, 19 Oct 2026 18:36:41 +0200 Subject: [PATCH] Add systemd unit, requirements.txt and venv setup docs --- .gitignore | 1 + README.md | 26 +++++++++++++++++++++++--- raspi-cam.service | 16 ++++++++++++++++ requirements.txt | 2 ++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 raspi-cam.service create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index d50a09f..3e711ef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .env __pycache__/ +venv/ diff --git a/README.md b/README.md index 5ad57bb..80b5172 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,19 @@ MJPEG-Stream-Server für die Raspberry-Pi-Kamera. Startet `rpicam-vid` einmalig - Raspberry Pi mit angeschlossener Kamera - `rpicam-vid` (rpicam-apps) -- Python 3 mit `flask` und optional `python-dotenv` +- Python 3 mit venv (`sudo apt install python3-venv`) + +## Installation ```bash -pip install flask python-dotenv +python3 -m venv venv +venv/bin/pip install -r requirements.txt ``` ## Start ```bash -python3 app.py +venv/bin/python app.py ``` Danach erreichbar unter: @@ -26,6 +29,23 @@ Danach erreichbar unter: | `http://:8080/stream` | MJPEG-Stream | | `http://:8080/stream.mjpg` | MJPEG-Stream (vehicle-counter kompatibel) | +## Autostart mit systemd + +Die Unit nutzt den Interpreter aus dem venv (`venv/bin/python`), das Projekt muss also vorher wie oben installiert sein. In `raspi-cam.service` ggf. `User` und die Pfade anpassen. Der User muss Mitglied der Gruppe `video` sein. + +```bash +sudo cp raspi-cam.service /etc/systemd/system/ +sudo systemctl daemon-reload +sudo systemctl enable --now raspi-cam +``` + +Status und Logs: + +```bash +systemctl status raspi-cam +journalctl -u raspi-cam -f +``` + ## Konfiguration Die Konfiguration erfolgt über Umgebungsvariablen oder eine `.env`-Datei im Projektverzeichnis. diff --git a/raspi-cam.service b/raspi-cam.service new file mode 100644 index 0000000..976ddfa --- /dev/null +++ b/raspi-cam.service @@ -0,0 +1,16 @@ +[Unit] +Description=Raspberry Pi Camera MJPEG Stream Server +After=network.target + +[Service] +Type=simple +User=joachim +Group=video +WorkingDirectory=/home/joachim/git/raspi-cam +ExecStart=/home/joachim/git/raspi-cam/venv/bin/python /home/joachim/git/raspi-cam/app.py +Restart=always +RestartSec=3 +Environment=PYTHONUNBUFFERED=1 + +[Install] +WantedBy=multi-user.target diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..f34604e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +flask +python-dotenv