121 lines
3.5 KiB
Markdown
121 lines
3.5 KiB
Markdown
# Installation auf dem Raspberry Pi
|
||
|
||
Stand **18.10.2026**. Phase 1: Installation per `.deb`-Datei. Ein öffentliches apt-Repository kommt später.
|
||
|
||
## Voraussetzungen
|
||
|
||
- Raspberry Pi OS **Bookworm** (64-Bit / arm64), Pi 4 oder 5 empfohlen
|
||
- Netz zu den Druckern (Moonraker/Rinkhals)
|
||
- ca. 1 GB freier Speicher für Paket + PostgreSQL
|
||
|
||
## Paket bauen (auf dem Pi oder arm64-Host)
|
||
|
||
Im geklonten Repo:
|
||
|
||
```bash
|
||
sudo apt install -y python3-venv rsync dpkg-dev
|
||
bash packaging/build-deb.sh
|
||
```
|
||
|
||
Ergebnis: `packaging/dist/grotti_<version>_arm64.deb`
|
||
|
||
## Installieren
|
||
|
||
```bash
|
||
sudo apt install ./packaging/dist/grotti_*_arm64.deb
|
||
```
|
||
|
||
Das zieht **PostgreSQL** mit, legt Benutzer `grotti`, Datenbank `grotti` und den Dienst an.
|
||
|
||
- Oberfläche: `http://<pi-ip>:8770/`
|
||
- Config: `/etc/grotti/config.json` (wird bei Updates nicht überschrieben)
|
||
- Daten: `/var/lib/grotti/`
|
||
- Slice-Ordner: `/var/lib/grotti/slice` (unter Einstellungen änderbar)
|
||
|
||
Beim ersten Aufruf Admin-Konto anlegen (wie gewohnt).
|
||
|
||
## Logging
|
||
|
||
Logs gehen nach **journald**:
|
||
|
||
```bash
|
||
journalctl -u grotti -f
|
||
journalctl -u grotti --since "1h ago"
|
||
journalctl -u grotti -n 200
|
||
```
|
||
|
||
Log-Level in `/etc/grotti/config.json`:
|
||
|
||
```json
|
||
"log_level": "INFO"
|
||
```
|
||
|
||
Werte: `DEBUG`, `INFO`, `WARNING`, `ERROR`. Danach:
|
||
|
||
```bash
|
||
sudo systemctl restart grotti
|
||
```
|
||
|
||
## Dienst
|
||
|
||
```bash
|
||
sudo systemctl status grotti
|
||
sudo systemctl restart grotti
|
||
sudo systemctl stop grotti
|
||
```
|
||
|
||
## Update
|
||
|
||
Neue `.deb` bauen bzw. holen, dann erneut:
|
||
|
||
```bash
|
||
sudo apt install ./packaging/dist/grotti_*_arm64.deb
|
||
```
|
||
|
||
Config und `/var/lib/grotti` bleiben erhalten.
|
||
|
||
## Deinstallieren
|
||
|
||
```bash
|
||
sudo apt remove grotti # Dienst weg, Daten bleiben
|
||
sudo apt purge grotti # zusätzlich /etc/grotti
|
||
# optional Datenbank:
|
||
# sudo -u postgres dropdb grotti
|
||
# sudo -u postgres dropuser grotti
|
||
# sudo rm -rf /var/lib/grotti
|
||
```
|
||
|
||
## Umzug Windows → Pi
|
||
|
||
1. **Backup auf dem alten Rechner** (Einstellungen → Backup) oder `pg_dump` der PostgreSQL-Datenbank.
|
||
2. Auf dem Pi Grotti per `.deb` installieren (oben).
|
||
3. Backup einspielen (Einstellungen → Backup wiederherstellen) **oder** `pg_restore` in die DB `grotti`.
|
||
4. Slice-Ordner nach `/var/lib/grotti/slice` kopieren (rsync/scp).
|
||
5. Absolute Windows-Pfade in der DB umschreiben (Dry-Run zuerst):
|
||
|
||
```bash
|
||
sudo -u grotti /opt/grotti/venv/bin/python /opt/grotti/scripts/pfade_umziehen.py \
|
||
--database-url 'postgresql:///grotti?host=/var/run/postgresql' \
|
||
--from 'D:/dein/slice' --to /var/lib/grotti/slice
|
||
# prüfen, dann mit --apply
|
||
```
|
||
|
||
(Alternativ aus dem Repo-Clone mit derselben DB-URL.)
|
||
|
||
6. Unter Einstellungen: `watch_dir` = `/var/lib/grotti/slice`, ggf. `fqdn` auf die Pi-URL.
|
||
7. In Orca „Senden an Grotti“ auf `http://<pi-ip>:8770/` umstellen.
|
||
8. `sudo systemctl restart grotti` und unter **Dateien → Ordner neu lesen**.
|
||
|
||
## Last auf dem Pi
|
||
|
||
- Watcher und Toolpath-Cache liegen unter `/var/lib/grotti/`. Bei wenig Speicher Toolpath-Cache-Ordner (`data/toolpath`) gelegentlich leeren.
|
||
- Wenige SSE-Clients sind unkritisch; viele offene Browser-Tabs mit Kamera-Stream belasten CPU/Netz.
|
||
- Empfohlen: Pi 4/5 mit SSD oder schneller SD, nicht parallel schwere Builds auf demselben Gerät.
|
||
|
||
## Hinweise
|
||
|
||
- Standard lauscht auf `0.0.0.0:8770` (LAN). Für Internet: Reverse Proxy mit TLS.
|
||
- Drucker unter **Einstellungen** anlegen (kein vorgefülltes `drucker.json` nötig).
|
||
- Öffentliches `apt install grotti` ohne Datei: kommt mit dem Repo-Server (Phase 2).
|
||
- `.deb` auf dem Ziel-Pi bauen (`bash packaging/build-deb.sh`), damit arm64-Wheels (`psycopg`, `cryptography`) passen.
|