Private
Public Access
67 lines
2.8 KiB
Markdown
67 lines
2.8 KiB
Markdown
# Projektdateien auf einen Raspberry Pi kopieren
|
|
|
|
Das Skript `tools/upload_to_pi.sh` kopiert den gewählten lokalen Ordner per
|
|
SSH und `rsync` auf **einen** Pi. Ohne `--source` ist das Projektverzeichnis
|
|
die Quelle. Es löscht keine Dateien auf dem Pi. Die Pi-Adresse, der Benutzer
|
|
und der Zielpfad sind noch nicht am Gerät geprüft und werden beim Aufruf
|
|
angegeben.
|
|
|
|
## Voraussetzungen
|
|
|
|
- Auf dem Laptop: `ssh` und `rsync`.
|
|
- Auf dem Pi: aktivierter SSH-Zugang und `rsync`.
|
|
- Der Benutzer muss im Zielpfad schreiben dürfen.
|
|
- Für den optionalen Autostart: Pi-Software laut `SOFTWARE.md` vorbereiten,
|
|
insbesondere `.venv` im Zielordner; `sudo` muss auf dem Pi nutzbar sein.
|
|
- Vor dem ersten Upload den Pi per `ssh BENUTZER@HOST` erreichen und den
|
|
angezeigten Hostschlüssel anhand des eigenen Geräts prüfen. Bei einem
|
|
geänderten Hostschlüssel die Ursache klären, nicht die Prüfung abschalten.
|
|
|
|
## Ablauf
|
|
|
|
`BENUTZER`, `HOST` und `ZIEL` durch die geprüften Werte ersetzen. `ZIEL`
|
|
muss ein absoluter Pfad ohne Leerzeichen sein.
|
|
|
|
```bash
|
|
BENUTZER='BENUTZER'
|
|
HOST='HOST'
|
|
ZIEL='/home/BENUTZER/halloween'
|
|
|
|
bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL"
|
|
bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" --apply
|
|
```
|
|
|
|
Der erste Aufruf zeigt nur die geplanten Befehle. Der zweite legt den
|
|
Zielordner an und überträgt die Dateien. Ein anderer Quellordner kann mit
|
|
`--source /absoluter/pfad` angegeben werden. Anschließend auf dem Pi prüfen:
|
|
|
|
```bash
|
|
ssh "$BENUTZER@$HOST" "ls -la '$ZIEL'"
|
|
```
|
|
|
|
Soll die WebUI auf dem Pi nach jedem Neustart automatisch laufen, beim
|
|
Upload `--install-service` ergänzen:
|
|
|
|
```bash
|
|
bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" --install-service
|
|
bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" --install-service --apply
|
|
```
|
|
|
|
Der erste Befehl ist wieder nur eine lokale Vorschau. Der zweite überträgt
|
|
die Dateien, installiert/aktualisiert die systemd-Unit mit `sudo` auf dem Pi
|
|
und startet den Dienst. Bei späteren Updates startet der Dienst so mit dem
|
|
neuen Code neu. Er bindet weiterhin nur an `127.0.0.1` des Pi; vom Laptop
|
|
aus ist der SSH-Tunnel aus `SOFTWARE.md` nötig. Es öffnet sich kein
|
|
Browserfenster von selbst.
|
|
|
|
Das Skript lässt `.git`, `.venv`, `data`, `preview`, `references`,
|
|
`__pycache__`, `.env` und übliche Schlüsseldateien aus. So bleiben
|
|
Laufzeiteinstellungen auf dem Pi und die großen Konzeptdateien lokal.
|
|
Es synchronisiert vorhandene Dateien, löscht aber
|
|
keine alten Dateien auf dem Pi. Zugangsdaten und andere Geheimnisse gehören
|
|
nicht in den Quellordner. Für zwei Pis den Upload mit den jeweils geprüften
|
|
Zielwerten separat ausführen.
|
|
|
|
Es wurde bisher keine Verbindung zu einem Pi, keine Übertragung und keine
|
|
Installation der systemd-Unit am Gerät geprüft.
|