4.7 KiB
# 🚀 Raspberry Pi Proje Dağıtım Rehberi (SSL Güncellemeli)
Bu rehber, mevcut merkezi altyapıyı (Gitea, Runner, Central Database, Nginx) kullanarak yeni NestJS (Backend) ve Next.js (Frontend) projelerini nasıl ayağa kaldıracağını ve **SSL (HTTPS) sorunları yaşamadan** nasıl yayına alacağını adım adım açıklar.
---
## 🏗 1. Altyapı Hazırlığı (Infrastructure)
### A. Veritabanı Oluşturma
Her yeni proje için merkezi PostgreSQL konteynerinde yeni bir veritabanı açılmalıdır.
```bash
# PROJE_ADI kısmını küçük harf ve boşluksuz yaz (örn: e_ticaret_db)
docker exec -it backend_db createdb -U 'Rub1c0N-UseR.!' PROJE_ADI_db
B. DNS Ayarları
Domain panelinden (Cloudflare vb.) yeni subdomain'leri Raspberry Pi'nin dış IP'sine yönlendir:
api-proje.bilgich.com-> Raspberry Pi IPui-proje.bilgich.com-> Raspberry Pi IP
🔐 2. Gitea Secret Ayarları
⚠️ Önemli: Proje canlıya çıkarken SSL kullanacağımız için URL'leri şimdiden https olarak tanımlıyoruz.
Gitea reponuzda Settings > Actions > Secrets yolunu izleyerek aşağıdaki anahtarları tanımlayın.
Backend İçin:
| Key | Value Örneği | Açıklama |
|---|---|---|
DATABASE_URL |
postgresql://Rub1c0N-UseR.%21:SIFRE%3D@backend_db:5432/PROJE_ADI_db?schema=public |
Özel karakterler encode edilmeli (!=%21, =%3D) |
JWT_SECRET |
rastgele_uzun_string |
Güvenlik anahtarı |
Frontend İçin:
| Key | Value Örneği | Açıklama |
|---|---|---|
NEXT_PUBLIC_API_URL |
https://api-proje.bilgich.com/api |
https olmasına dikkat et |
NEXTAUTH_URL |
https://ui-proje.bilgich.com |
https olmasına dikkat et |
NEXTAUTH_SECRET |
openssl_rand_base64_32_cikti |
Auth güvenliği için |
🛠 3. Backend (NestJS) Proje Ayarları
- main.ts: Global prefix ve Swagger yollarını kontrol et.
- Dockerfile: Mevcut çalışan NestJS Dockerfile'ı kullan.
- deploy.yml Değişiklikleri:
--name backend-PROJE-container(Her proje için unique isim)-p 150X:3000(Sıradaki boş port: 1502, 1503...)--network gitea-server_gitea(Database'e erişim için şart)
🎨 4. Frontend (Next.js) Proje Ayarları
- next.config.js:
output: 'standalone'satırını ekle. - Dockerfile:
ARGveENVsatırlarınaNEXT_PUBLIC_değişkenlerini ekle. - deploy-ui.yml Değişiklikleri:
--build-argile tüm Gitea secret'larını build aşamasına geç.--name ui-PROJE-container(Unique isim)-p 180X:3000(Sıradaki boş port: 1801, 1802...)-e NEXTAUTH_URLveNEXTAUTH_SECRETruntime değişkenlerini ekle.
🚦 5. Nginx ve SSL Yönlendirmesi (KRİTİK ADIM)
Diğer projelerle çakışma olmaması için her yeni domain'e mutlaka SSL kurulmalıdır.
A. Konfigürasyon Dosyası Oluştur
Backend veya Frontend için dosya oluşturun:
sudo nano /etc/nginx/sites-available/proje-api
# Veya
sudo nano /etc/nginx/sites-available/proje-ui
B. İçeriği Yapıştır (Sadece HTTP)
İlk aşamada sadece 80 portunu dinleyen şu bloğu yapıştırın:
server {
listen 80;
server_name api-proje.bilgich.com; # Domain adını buraya yaz
location / {
proxy_pass http://127.0.0.1:150X; # Uygulamanın dış portu (1502, 1802 vb.)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# Gerçek IP Logları
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
C. Nginx'i Aktif Et
Dosyayı sites-enabled klasörüne linkleyin ve Nginx'i reload edin:
sudo ln -s /etc/nginx/sites-available/proje-api /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
D. SSL Sertifikası Kur (Certbot)
Bu komut Nginx ayarlarını otomatik güncelleyip 443 portunu açacaktır. Bu adımı yapmazsanız HTTPS girişleri başka projelere yönlenir!
sudo certbot --nginx -d api-proje.bilgich.com
Soru sorarsa "2" (Redirect) seçeneğini seçin.
💡 "Senior" İpuçları & Bakım
Port Yönetimi (Defteri Kebir)
Kullandığın portları çakışmaması için mutlaka not et:
- 1501: Digicraft BE
- 1502: YeniProje BE
- 1800: Digicraft UI
- 1801: YeniProje UI
Disk Temizliği
Raspberry Pi diski dolmaması için haftalık/aylık temizlik yap:
docker system prune -f
Log Takibi
Bir sorun olduğunda ilk buraya bak:
docker logs -f KONTEYNER_ADI