Od starého haraburdí k produkčnímu serveru: Proč jsme blázni do self-hostingu na Raspberry Pi

Od starého haraburdí k produkčnímu serveru: Proč jsme blázni do self-hostingu na Raspberry Pi

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

Nečekaný server schovaný v zásuvce

Běhat plnohodnotný web z hardware, co stojí méně než dobrá káva? To má své kouzlo. Cloudové služby jako Vercel zvládnou většinu projektů, ale občas chcete vše pod kontrolou. Raspberry Pi se stává reálnou volbou – ne kvůli nostalgii, ale protože to prostě funguje.

Představte si: máte Node.js framework jako Astro, Svelte Kit nebo React. Nějaká závislost nefunguje na serverless platformách. Třeba stará i18n knihovna, která bundlování odmítá. Nebo potřebujete upravit runtime podle sebe. Pi se najednou vyplatí víc než drahý cloud.

Krok 1: Nastavte směrování sítě – cesta na internet

Nejdřív otevřete port forwarding na routeru. To spojí vaši veřejnou IP s Pi na poličce.

Pak si nainstalujte Caddy. Tenhle moderní reverse proxy je mnohem jednodušší než staré řešení. Konfigurace vypadá takto:

yoursite.com {
    root * /home/username/projects/yoursite
    
    file_server
    reverse_proxy localhost:4321
}

Port si upravte podle frameworku: Astro jede na 4321, Svelte Kit na 5173, Node.js app často na 3000. Načtěte config a polovina práce je hotová.

Krok 2: Namířte doménu na Pi

Registrátor jako NameOcean to zvládne rychle. Vytvořte A záznam v DNS:

A Record: yoursite.com → your.public.ip.address

Dost. Router to zbytek zařídí. Trafik na doménu se automaticky pošle na Pi.

Krok 3: Postavte jednou, spusťte navěky

Sestavte projekt klasicky:

npm run build

Vznikne složka dist s hotovou app a entry pointem (např. entry.cjs nebo entry.mjs).

Teď přijde PM2 – manažer procesů, co udrží Node.js app v chodu donekonečna:

npm install -g pm2
cd dist/
pm2 start entry.mjs

Web běží. Žádné držení konzole, žádná závislost na terminálu.

Krok 4: Automatizujte nasazení přes GitHub Actions

Self-hosting bez SSH při každé změně? Žádný problém. GitHub Actions to udělá plynule.

V repo vytvořte .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

Do secrets repo přidejte IP a přihlašovací údaje Pi. Pak napište skript deploy.sh, co vše zvládne:

#!/usr/bin/env bash
set -euo pipefail

BASE_DIR="$HOME/projects"
PORTS=(4321 4322)
PORT_INDEX=0

echo "Táhnu nejnovější kód..."
for dir in "$BASE_DIR"/*/ ; do
    if [[ -d "$dir/.git" ]]; then
        (cd "$dir" && git pull)
    fi
done

echo "Sestavuju projekty..."
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 "Restartuju služby..."
pm2 restart all

Každý git push spustí stahování kódu, build a restart. Automaticky.

Skutečné plusy i mínusy

Pi není pro každého. Žádná redundance, žádný globální CDN. Pásmo je omezené, výpadek netu = výpadek webu. Ale pokud chcete kontrolu, nízké náklady a radost z vlastního stacku, jde to.

Navíc se naučíte DNS, reverse proxy, process management a CI/CD pořádně. Tlačítka v cloudu to nenahradí.

Ten zapomenutý Pi v zásuvce? Není to hračka. Je to pořádná infrastruktura. Důkaz, že enterprise řešení nepotřebujete vždycky.

Read in other languages:

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