Från överbliven hårdvara till produktionsserver: Därför är vi besatta av Raspberry Pi-self-hosting

Från överbliven hårdvara till produktionsserver: Därför är vi besatta av Raspberry Pi-self-hosting

Maj 07, 2026 self-hosting raspberry-pi node.js devops dns github-actions astro web-infrastructure

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.

Read in other languages:

RU BG EL CS UZ TR FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN