
```markdown
# 🚀 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 IP**
*   `ui-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ı

1.  **main.ts:** Global prefix ve Swagger yollarını kontrol et.
2.  **Dockerfile:** Mevcut çalışan NestJS Dockerfile'ı kullan.
3.  **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ı

1.  **next.config.js:** `output: 'standalone'` satırını ekle.
2.  **Dockerfile:** `ARG` ve `ENV` satırlarına `NEXT_PUBLIC_` değişkenlerini ekle.
3.  **deploy-ui.yml Değişiklikleri:**
    *   `--build-arg` ile 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_URL` ve `NEXTAUTH_SECRET` runtime 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:

```bash
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:

```nginx
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:

```bash
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!

```bash
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:
```bash
docker system prune -f
```

### Log Takibi
Bir sorun olduğunda ilk buraya bak:
```bash
docker logs -f KONTEYNER_ADI
```
```