This commit is contained in:
2026-03-14 13:01:24 +01:00
commit 46fb96886a
25 changed files with 1546 additions and 0 deletions

71
daemon/README.md Normal file
View File

@@ -0,0 +1,71 @@
# OrderPy Bridge (Linux Daemon)
Systemd-Daemon-Variante der OrderPy Bridge: gleiche Funktionalität wie die Container-Variante, läuft nativ auf dem Host (ARM64 und AMD64).
## Voraussetzungen
- Linux mit systemd
- Python 3.11+
- Netzwerkzugriff zur OrderPy-Cloud und zu den Druckern (TCP)
## Installation
### Mit Install-Script (aus dem Repo)
```bash
cd /path/to/orderpy-bridge/daemon/packaging
sudo ./install.sh
```
Das Script legt User `orderpy-bridge`, Verzeichnisse (`/etc/orderpy-bridge`, `/var/lib/orderpy-bridge`, `/opt/orderpy-bridge`), eine Python-venv und die systemd-Unit an.
### Mit .deb-Paket
Aus dem Repo-Baustein bauen (im Verzeichnis `orderpy-bridge`):
```bash
dpkg-buildpackage -us -uc -b
```
Installation der erzeugten `.deb`-Datei:
```bash
sudo dpkg -i ../orderpy-bridge_1.0.0_all.deb
```
Architektur ist `all` (reines Python), gleiches Paket für ARM64 und AMD64.
## Konfiguration
Umgebungsvariablen werden über eine Env-Datei gesetzt:
- **Konfiguration:** `/etc/orderpy-bridge/orderpy-bridge.env`
- **Persistente Daten (Schlüssel):** `/var/lib/orderpy-bridge/`
Mindestens setzen:
- `ORDERPY_CLOUD_URL` z.B. `https://api.orderpy.com`
- `ORDERPY_KEY_PATH` z.B. `/var/lib/orderpy-bridge/bridge_key.pem`
- `ORDERPY_ALLOWED_ORIGINS` z.B. `https://admin.orderpy.com`
Vor dem ersten Start die Datei anpassen:
```bash
sudo nano /etc/orderpy-bridge/orderpy-bridge.env
```
## Start und Status
```bash
sudo systemctl enable --now orderpy-bridge
sudo systemctl status orderpy-bridge
sudo journalctl -u orderpy-bridge -f
```
Die Bridge hört auf Port **8080** (HTTP für `/setup/info` und `/health`).
## Rechte
- Läuft unter User/Group `orderpy-bridge` (kein Root zur Laufzeit).
- Lesezugriff nur auf `/etc/orderpy-bridge/`, Schreibzugriff nur auf `/var/lib/orderpy-bridge/`.
- systemd-Optionen: `ProtectSystem=strict`, `ReadWritePaths=/var/lib/orderpy-bridge`, `PrivateTmp=yes`, `NoNewPrivileges=yes`.