Από Σκονισμένο Raspberry Pi σε Παραγωγικό Server: Γιατί Εξαρτόμαστε με το Self-Hosting

Από Σκονισμένο Raspberry Pi σε Παραγωγικό Server: Γιατί Εξαρτόμαστε με το Self-Hosting

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

Ο Raspberry Pi Σου Στο Στυλ Production Server

Φαντάσου να τρέχεις έναν πλήρη ιστότοπο από hardware που κοστίζει όσο δυο freddo. Οι cloud υπηρεσίες όπως το Vercel λύνουν τα περισσότερα, αλλά ο self-hosting σε Raspberry Pi έχει σοβαρά πλεονεκτήματα. Όχι μόνο νοσταλγία.

Πάρε ένα project σε Node.js – Astro, Svelte Kit, React. Αν έχει dependencies που δεν ταιριάζουν με serverless, όπως παλιό i18n module ή ανάγκη για runtime tweaks, ο Pi γίνεται ιδανική λύση. Φθηνός και πλήρως δικός σου.

Βήμα 1: Άνοιξε Πόρτες Στο Router

Πρώτα, ρύθμισε port forwarding στο router. Σύνδεσε το public IP σου με τον Pi που βουίζει στο ράφι.

Εγκατέστησε Caddy, τον εύκολο reverse proxy. Φτιάξε config έτσι:

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

Ο port εξαρτάται: Astro στο 4321, Svelte Kit 5173, Node συνήθως 3000. Reload και προχώρα.

Βήμα 2: Σύνδεσε Domain Με A Record

Σε registrar όπως NameOcean, πρόσθεσε απλό DNS A record:

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

Ο router κάνει τα υπόλοιπα. Η κίνηση φτάνει κατευθείαν στον Pi.

Βήμα 3: Build Και PM2 Για Σταθερότητα

Τρέξε build:

npm run build

Βγαίνει folder dist με το entry point (entry.cjs ή mjs).

Εισάγει PM2 για μόνιμη εκτέλεση:

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

Τελείωσε. Δεν χρειάζεσαι ανοιχτό terminal.

Βήμα 4: GitHub Actions Για Αυτόματα Deploy

Ξέχνα SSH κάθε φορά. Με GitHub Actions γίνεται μαγικό.

Φτιάξε .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

Βάλε IP και credentials στα secrets. Δημιούργησε script deploy.sh:

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

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

echo "Ενημέρωση κώδικα..."
for dir in "$BASE_DIR"/*/ ; do
    if [[ -d "$dir/.git" ]]; then
        (cd "$dir" && git pull)
    fi
done

echo "Build projects..."
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 "Restart PM2..."
pm2 restart all

Κάθε push ενημερώνει, buildάρει και restart – μόνος του.

Τα Υπολογιστικά

Δεν είναι για όλους. Χάνεις redundancy, CDN, απεριόριστο bandwidth. Αν πέσει το ίντερνετ, πέφτει και ο site. Αλλά για control, εξοικονόμηση και ιδιοκτησία stack, δουλεύει άψογα.

Και μαθαίνεις βαθιά: DNS, proxies, PM2, CI/CD. Πέρα από κουμπιά cloud.

Ο παλιός σου Pi δεν είναι παιχνίδι. Είναι real infrastructure για production. Δεν χρειάζεσαι πάντα enterprise.

Read in other languages:

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