Setup¶
Vollständiger Einrichtungsprozess des Raspberry Pi als headless Dev-Workstation — von der OS-Installation bis zum einsatzbereiten System.
1. Betriebssystem¶
Raspberry Pi OS Lite (64-bit / Trixie)
Installation via Raspberry Pi Imager¶
- Raspberry Pi Imager starten
- Choose Device → Raspberry Pi 4
- Choose OS → Raspberry Pi OS Lite (64-bit)
- Choose Storage → USB-SSD (nicht SD-Karte)
- Settings (vor Write):
- SSH aktivieren, Hostname setzen
- User + Passwort konfigurieren
- Locale:
de_DE.UTF-8, Timezone:Europe/Berlin
- Write → SSD an blauen USB-3.0-Port → Boot
Erste Schritte nach Boot¶
sudo apt update && sudo apt upgrade -y
sudo raspi-config
# → Advanced Options → Expand Filesystem
sudo reboot
2. Headless-Optimierungen¶
Da der Pi ausschließlich headless betrieben wird, werden ressourcenintensive Subsysteme deaktiviert.
GPU-Speicher reduzieren¶
Der GPU-Speicher wird auf das Minimum von 16 MB gesetzt — ohne Display-Output wird der GPU-Block nicht gebraucht. Das gibt ca. 60 MB RAM zurück.
Bluetooth deaktivieren¶
Bluetooth wird nicht verwendet und belegt CPU und RAM.
Swap (zram)¶
zram ist auf Raspberry Pi OS standardmäßig aktiv und stellt 2 GB komprimierten Swap im RAM bereit. Bei 4 GB physischem RAM reicht das aus — kein zusätzlicher Swap-Partition oder Swap-File nötig.
HDMI deaktivieren (optional, spart ~30 mA)¶
Alle custom Einträge für /boot/firmware/config.txt sind im Repo unter
boot/config-additions.txt als Referenz dokumentiert.
3. SSH-Härtung¶
Die SSH-Konfiguration blockiert alle Login-Methoden außer Key-Auth und
beschränkt den Zugang auf den User robin.
# Config aus dem Repo anwenden
sudo cp ssh/sshd_hardening.conf /etc/ssh/sshd_config.d/hardening.conf
sudo sshd -t # Syntax prüfen
sudo systemctl restart ssh
Wichtig: Erst sicherstellen, dass SSH-Key-Login funktioniert, bevor
PasswordAuthentication no aktiv wird.
Aktive Einstellungen:
- Root-Login deaktiviert (
PermitRootLogin no) - Nur Key-basierte Authentifizierung (
PasswordAuthentication no) - Nur User
robinerlaubt (AllowUsers robin) - Max. 3 Login-Versuche (
MaxAuthTries 3) - X11-Forwarding deaktiviert
4. Basis-Pakete¶
sudo apt install -y \
git curl wget htop jq tree \
ripgrep fd-find shellcheck shfmt \
tmux unzip build-essential \
libssl-dev libffi-dev python3-dev \
pkg-config cmake
fd-find heißt auf Debian fdfind. Ein Alias macht es transparent:
5. Security: Automatische Updates¶
Automatische Security-Updates für Debian Trixie über unattended-upgrades.
Konfiguration in /etc/apt/apt.conf.d/50unattended-upgrades:
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
};
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Mail "root";
6. Dotfiles: Bootstrap¶
Das Repo enthält ein idempotentes Bootstrap-Skript, das alle Konfigurationsdateien per Symlink an die richtigen Stellen legt.
git clone git@github.com:SWATPeaceKeeper/claude-pi.git ~/repos/claude-pi
cd ~/repos/claude-pi
# Dry run — zeigt was passieren würde, ändert nichts
./bootstrap.sh -n
# Symlinks erstellen (sichert bestehende Dateien als .bak)
./bootstrap.sh
Was das Skript tut:
- Erstellt
~/bin/und symlinktupdate-devtools - Symlinkt Claude Code Configs nach
~/.claude/ - Symlinkt
~/.gitconfigund~/.tmux.conf - Fügt eine Source-Zeile in
.bashrcfürbash/bashrc_custom.shein - Sichert bestehende Dateien vorher als
.bak
Nach dem Bootstrap:
7. Git-Konfiguration¶
Die Git-Config wird über das Repo verwaltet (git/gitconfig → ~/.gitconfig
via bootstrap.sh). Der GitHub-CLI-basierte Credential-Helper ermöglicht
passwortlosen Push ohne gespeicherte Tokens.
[user]
name = Robin Werner
email = kontakt@robinwerner.de
[init]
defaultBranch = main
[credential "https://github.com"]
helper = !/usr/bin/gh auth git-credential
Nach dem Bootstrap GitHub CLI authentifizieren:
8. Wöchentlicher Cronjob¶
Das update-devtools-Skript läuft wöchentlich per Cronjob. Die Referenz-Datei
liegt im Repo unter cron/update-devtools.cron.
# Cronjob installieren
crontab -l 2>/dev/null | cat - cron/update-devtools.cron | crontab -
# Prüfen
crontab -l
# Log ansehen
tail -f ~/log/update-devtools.log
Der Cronjob läuft Sonntag um 03:00 Uhr.
Wichtige Pfade¶
| Pfad | Inhalt |
|---|---|
/boot/firmware/config.txt |
Pi Hardware-Konfiguration |
/etc/ssh/sshd_config.d/hardening.conf |
SSH-Härtung |
~/.bashrc |
Bash-Konfiguration (sources bashrc_custom.sh) |
~/repos/claude-pi/ |
Dotfiles-Repo |
~/bin/ |
Eigene Skripte |
~/log/ |
Log-Dateien (update-devtools) |