Från överbliven hårdvara till produktionsserver: Därför är vi besatta av Raspberry Pi-self-hosting
Raspberry Pi som din hemliga server
Att driva en sajt från en Raspberry Pi som kostar mindre än en espresso känns overkligt bra. Cloudtjänster som Vercel sköter det mesta, men ibland vill du köra allt själv. Och det finns starka skäl – inte bara för nostalgin.
Tänk dig: din app i Node.js, kanske med Astro eller Svelte Kit, har beroenden som serverless-miljöer hatar. En gammal i18n-bibliotek som funkar perfekt men inte går att packa statiskt. Eller så vill du styra precis hur koden körs. Då blir Pi:n en billig ersättning för dyra moln.
Steg 1: Öppna vägen ut på nätet
Först måste routern veta vart trafiken ska. Sätt upp port forwarding så din publika IP pekar rätt på Pi:n.
Ladda ner Caddy, den smidigaste reverse proxyn. Skapa en config-fil så här:
yoursite.com {
root * /home/användare/projekt/yoursite
file_server
reverse_proxy localhost:4321
}
Porten varierar: Astro kör på 4321, Svelte Kit på 5173, vanliga Node-appar på 3000. Starta om Caddy – nu är halva jobbet klart.
Steg 2: Rikta domänen mot Pi:n
Hos registrarer som NameOcean är det busenkelt. Lägg till ett A-record i DNS:
A Record: yoursite.com → din.publika.ip
Routern tar hand om resten. All trafik till domänen hamnar på Pi:n.
Steg 3: Bygg och håll igång för evigt
Kör build-kommandot som vanligt:
npm run build
Ut kommer en dist-mapp med din färdiga app och startfil, typ entry.mjs.
Här kommer PM2 in – processhanteraren som håller allt vid liv:
npm install -g pm2
cd dist/
pm2 start entry.mjs
Nu rullar sajten obehindrat. Inget behov av öppen terminal.
Steg 4: Automatisera med GitHub Actions
Uppdateringar via SSH varje gång? Glöm det. GitHub Actions fixar det smidigt.
Lägg till .github/workflows/deploy.yml i repot:
name: Deploy till Pi
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: SSH-deploy
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.PI_HOST }}
username: ${{ secrets.PI_USER }}
password: ${{ secrets.PI_PASSWORD }}
script: |
~/bin/deploy.sh
Spara Pi:ns IP och inlogg i repo-secrets. Skapa sedan ett deploy-script:
#!/usr/bin/env bash
set -euo pipefail
BASE_DIR="$HOME/projekt"
PORTS=(4321 4322)
PORT_INDEX=0
echo "Hämtar ny kod..."
for dir in "$BASE_DIR"/*/ ; do
if [[ -d "$dir/.git" ]]; then
(cd "$dir" && git pull)
fi
done
echo "Bygger om..."
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 "Startar om..."
pm2 restart all
Varje git push bygger om, drar kod och restartar – helt automatiskt.
Vad väger tyngst?
Pi-hosting passar inte alla. Inget CDN, ingen redundans, begränsad bandbredd. Dör internet – dör sajten. Men vill du ha kontroll, spara pengar och äga stacken själv? Då funkar det utmärkt.
Dessutom lär du dig massor om DNS, reverse proxies, processer och CI/CD. Mycket mer än att klicka i molnet.
Din Raspberry Pi är ingen leksak. Det är riktig infrastruktur. Bevis på att produktion inte alltid kräver stora enterprise-lösningar.