Fra gammelt skrot til produksjonsserver: Hvorfor vi er hekta på Raspberry Pi-selfhosting
Den lille serveren i skuffen din
Tenk å drive en ekte nettside fra en maskin billigere enn en god kaffemaskin. Cloud-tjenester som Vercel fikser det meste, men det finnes gode grunner til å hoste selv på en Raspberry Pi. Ikke bare fordi det er kult.
Situasjonen er klar: Du bruker Node.js-rammeverk som Astro, SvelteKit eller React. Noen avhengigheter krangler med serverløse plattformer. Kanskje en gammel i18n-bibliotek som funker perfekt, men ikke kan pakkes statisk. Eller du vil styre kjøretiden nøyaktig. Da blir Pi-en din et smart valg mot dyr cloud.
Trinn 1: Koble Pi-en til nettet
Først må routeren din sende trafikk til Pi-en. Sett opp port forwarding – det er veien fra din offentlige IP til den lille boksen.
Bruk Caddy som reverse proxy. Den er enkel og moderne. Lag en konfig sånn:
yoursite.com {
root * /home/bruker/prosjekter/yoursite
file_server
reverse_proxy localhost:4321
}
Porten varierer: Astro liker 4321, SvelteKit 5173, Node.js ofte 3000. Last inn konfiggen på nytt, så er du i gang.
Trinn 2: Pek domenet mot Pi-en
Hos registrar som NameOcean er det lett. Lag en A-record i DNS:
A Record: yoursite.com → din.offentlige.ip
Routeren tar seg av resten. All trafikk til domenet havner hos Pi-en.
Trinn 3: Bygg og kjør stabilt
Kjør build-kommandoen din:
npm run build
Da får du en dist-mappe med appen og inngangspunkt som entry.mjs eller lignende.
PM2 holder det i gang for godt:
npm install -g pm2
cd dist/
pm2 start entry.mjs
Nå lever siden uten at du må holde terminalen åpen.
Trinn 4: Automatiser oppdateringer med GitHub Actions
Selvhosting blir ubrukelig hvis du må logge inn via SSH hele tiden. GitHub Actions fikser det.
Lag .github/workflows/deploy.yml i repoet:
name: Deploy til Pi
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Kjør 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
Legg IP og login i repoets secrets. Så lager du et deploy-script:
#!/usr/bin/env bash
set -euo pipefail
BASE_DIR="$HOME/prosjekter"
PORTS=(4321 4322)
PORT_INDEX=0
echo "Henter ny kode..."
for dir in "$BASE_DIR"/*/ ; do
if [[ -d "$dir/.git" ]]; then
(cd "$dir" && git pull)
fi
done
echo "Bygger prosjekter..."
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 "Starter tjenestene på nytt..."
pm2 restart all
Nå bygger hver git push ny kode, bygger og restarter – helt auto.
Bunnlinjen
Pi-hosting passer ikke alle. Du dropper redundans, CDN og ubegrenset båndbredde fra cloud. Netto faller, siden faller. Men hvis du vil ha kontroll, lave kostnader og eie alt selv, funker det utmerket.
Du lærer masse: DNS, reverse proxies, process managers og CI/CD på ekte. Bedre enn å klikke i cloud-dashboarder.
Den gamle Pi-en i skuffen er ikke bare leke. Den er seriøs infrastruktur. Bevis på at produksjon ikke alltid trenger store enterprise-løsninger.