Vom Ersatzteil zur echten Power: Warum wir auf Raspberry Pi Self-Hosting lieben
Der kleine Server aus der Schublade
Ein Webserver auf einem Gerät, das billiger ist als ein guter Espresso? Klingt verrückt, funktioniert aber. Cloud-Dienste wie Vercel sind prima für den Alltag. Doch manchmal passt Self-Hosting auf einem Raspberry Pi perfekt – vor allem, wenn Serverless-Lösungen mit deinen Tools streiten.
Stell dir vor: Dein Projekt mit Astro, SvelteKit oder React braucht Bibliotheken, die nicht statisch gebündelt werden können. Oder du willst volle Kontrolle über den Laufzeitverhalten. Da wird dein Pi zur günstigen Alternative gegen teure Clouds.
Schritt 1: Router öffnen – Der Weg ins Netz
Zuerst muss dein Pi mit der Welt reden. Richte Port-Forwarding in deinem Router ein. Das leitet Traffic von deiner öffentlichen IP direkt zum Pi.
Nimm Caddy als Reverse Proxy – super einfach und modern. Eine Konfig so:
yoursite.com {
root * /home/username/projects/yoursite
file_server
reverse_proxy localhost:4321
}
Port anpassen: Astro nutzt 4321, SvelteKit 5173, Node.js oft 3000. Caddy neu laden – und los geht's.
Schritt 2: Domain auf den Pi lenken
Bei Registraren wie NameOcean geht das easy. Erstelle einen A-Record:
A Record: yoursite.com → your.public.ip.address
Dein Router übernimmt den Rest. Traffic landet automatisch beim Pi.
Schritt 3: Bauen und ewig laufen lassen
Baue dein Projekt:
npm run build
Im dist-Ordner liegt alles Fertige, inklusive Einstiegspunkt wie entry.mjs.
PM2 hält den Node.js-Prozess am Leben:
npm install -g pm2
cd dist/
pm2 start entry.mjs
Kein Terminal mehr nötig – der Server läuft rund um die Uhr.
Schritt 4: Updates per GitHub Actions automatisieren
Manuelles SSH-Zocken? Vergiss es. GitHub Actions macht Deployments zum Kinderspiel.
Erstelle .github/workflows/deploy.yml:
name: Deploy to Raspberry Pi
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.PI_HOST }}
username: ${{ secrets.PI_USER }}
password: ${{ secrets.PI_PASSWORD }}
script: |
~/bin/deploy.sh
Pi-IP und Zugangsdaten als Repo-Secrets speichern. Dazu ein Deploy-Skript:
#!/usr/bin/env bash
set -euo pipefail
BASE_DIR="$HOME/projects"
PORTS=(4321 4322)
PORT_INDEX=0
echo "Code ziehen..."
for dir in "$BASE_DIR"/*/ ; do
if [[ -d "$dir/.git" ]]; then
(cd "$dir" && git pull)
fi
done
echo "Projekte bauen..."
for dir in "$BASE_DIR"/*/ ; do
if [[ -f "$dir/package.json" ]]; then
CURRENT_PORT=${PORTS[$PORT_INDEX]}
(
cd "$dir"
npm run build -- --port "$CURRENT_PORT"
)
PORT_INDEX=$(( (PORT_INDEX + 1) % ${#PORTS[@]} ))
fi
done
echo "Services neu starten..."
pm2 restart all
Jeder git push baut neu, startet um – vollautomatisch.
Die Rechnung ohne Wirt
Pi-Selfhosting ist nichts für alle. Keine Redundanz, kein globaler CDN. Bandbreite begrenzt, Internet-Ausfall killt die Seite. Aber: Du sparst Kohle, hast totale Kontrolle und baust deinen Stack selbst.
Dazu lernst du DNS, Reverse Proxies, PM2 und CI/CD richtig kennen – Cloud-Dashboards lehren das nicht.
Dein alter Pi? Kein Staubfänger, sondern echter Production-Server. Proof: Enterprise-Lösungen sind nicht immer Pflicht.