Eski Bilgisayarlardan Üretim Sunucusuna: Raspberry Pi'de Self-Hosting Neden Çıldırtıyor Bizi?

Eski Bilgisayarlardan Üretim Sunucusuna: Raspberry Pi'de Self-Hosting Neden Çıldırtıyor Bizi?

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

Raspberry Pi'de Production Sitesi Çalıştırmak: Bulut Olmadan Web Hosting

Evinizin bir köşesinde duran, kahveden ucuz bir donanım üzerinde gerçek trafiği karşılayan bir site görmek, insana garip bir tatmin duygusu verir. Vercel gibi bulut platformları çoğu proje için yeterli olsa da, Raspberry Pi üzerinde self-hosting yapmak için çok makul sebepler var. Bunlar sadece nostalji değil, gerçek teknik zorunluluklar olabilir.

Peki ne zaman ihtiyaç duyarsınız? Astro, Svelte Kit ya da React gibi bir framework kullandığınız zaman ve bağımlılıklarından biri sunucusuz sistemlerle uyumlu olmayabilir. Eski bir i18n kütüphanesi mükemmel çalışıyor ama static olarak derlenemiyor. Çalışma zamanında hassas kontrol istiyorsunuz. İşte bu noktada Pi'ınız, pahalı bulut hizmetlerine karşı gerçek bir alternatif haline geliyor.

Adım 1: Ağ Bağlantısı - İnternete Açılan Kapınız

Pi'ınızın dünyayla konuşabilmesi için önce routerınızda port yönlendirmesi yapmanız gerek. Bu, herkese açık IP adresinizle raf üzerindeki küçük cihazınız arasındaki köprü.

Sonra Caddy'ye sahip olun. Modern bir reverse proxy bu, eski alternatiflere kıyasla çok daha basit. Yapılandırması şöyle görünüyor:

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

Port numarası framework'e bağlı: Astro 4321'i kullanır, Svelte Kit 5173'ü, Node.js uygulamaları genellikle 3000'i. Caddy yapılandırmasını yenileyin, yarı yoldasınız.

Adım 2: Domain'i Pi'a İşaret Ettirin

Domain satıcısı NameOcean ya da benzerinde çok basittir. Bir DNS A kaydı oluşturun:

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

Bitti. Routerınızın port yönlendirmesi geri kalanını halleder. Domaininize gelen trafik otomatik olarak Pi'a yönlendirilir.

Adım 3: Bir Defa Derle, Sonsuza Kadar Çalıştır

Projenizi standart komutla derleyin:

npm run build

Bu, derlenmiş uygulamanızı ve giriş noktasını içeren bir dist klasörü oluşturur (genellikle entry.cjs ya da entry.mjs).

Burada PM2 devreye girer. Bir process manager'dır ve Node.js uygulamanızı süresiz çalışır durumda tutar:

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

Siteniz şimdi yayındadır. Konsolun açık olmasına gerek yok, terminal penceresine bağımlı değilsiniz.

Adım 4: GitHub Actions ile Otomasyonu Ayarlayın

Self-hosting ancak kodu güncelleyebilirseniz anlamlıdır. Her seferinde Pi'a SSH yapmanız istemezsiniz. İşte GitHub Actions buradaki çözüm.

Deponuzda .github/workflows/deploy.yml oluşturun:

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

Pi'ınızın IP adresi ve kimlik bilgilerini repository secretlerine ekleyin. Ardından gerisini yapan bir dağıtım scripti yazın:

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

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

echo "Son kod çekiliyor..."
for dir in "$BASE_DIR"/*/ ; do
    if [[ -d "$dir/.git" ]]; then
        (cd "$dir" && git pull)
    fi
done

echo "Projeler derleniyor..."
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) % PORT_COUNT ))
    fi
done

echo "Servisler yeniden başlatılıyor..."
pm2 restart all

Artık her git push Pi'ınızın en son kodu çekmesini, derlemesini ve yeniden başlatmasını tetikler. Hepsi otomatik.

Gerçekçi Bir Değerlendirme

Pi üzerinde self-hosting herkes için değil. Bulut platformlarının sağladığı yedeklilik ve global CDN avantajını kaybedersiniz. Bant genişliği sınırlı. İnternet kesilirse siteniz de kesilir. Ama kontrol, maliyet tasarrufu ve tüm stackin sahibi olmanın tatminini rahat kullananlar için, bu çok gerçek ve işlevsel bir seçenek.

Üstelik öğrenme açısından muazzam. DNS, reverse proxy, process management ve CI/CD'yi, bulut panosundaki düğmeleri tıklamakla asla anlayamayacağınız derinlikte öğrenirsiniz.

Atıl duran Pi'ınız sadece eski bir oyuncak değil. Sağlam, çalışan bir altyapı parçasıdır. Proof of concept'tir ki, production iş yükleri için her zaman enterprise çözümlere ihtiyacınız olmaz.

Read in other languages:

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