mds/deploy.md Güncelle
All checks were successful
Backend Deploy 🚀 / build-and-deploy (push) Successful in 1m57s

This commit is contained in:
2026-02-05 15:09:56 +03:00
parent 3511fe6a87
commit 29f785ffdf

View File

@@ -1,81 +1,146 @@
🚀 Raspberry Pi Proje Dağıtım Rehberi (Checklist)
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ı adım adım açıklar. ```markdown
🏗 1. Altyapı Hazırlığı (Infrastructure) # 🚀 Raspberry Pi Proje Dağıtım Rehberi (SSL Güncellemeli)
A. Veritabanı Oluşturma
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ıılmalıdır. Her yeni proje için merkezi PostgreSQL konteynerinde yeni bir veritabanıılmalıdır.
code
Bash ```bash
# PROJE_ADI kısmını küçük harf ve boşluksuz yaz (örn: e_ticaret_db) # 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 docker exec -it backend_db createdb -U 'Rub1c0N-UseR.!' PROJE_ADI_db
B. DNS Ayarları ```
### B. DNS Ayarları
Domain panelinden (Cloudflare vb.) yeni subdomain'leri Raspberry Pi'nin dış IP'sine yönlendir: Domain panelinden (Cloudflare vb.) yeni subdomain'leri Raspberry Pi'nin dış IP'sine yönlendir:
api-proje.bilgich.com -> Raspberry Pi IP * `api-proje.bilgich.com` -> **Raspberry Pi IP**
ui-proje.bilgich.com -> Raspberry Pi IP * `ui-proje.bilgich.com` -> **Raspberry Pi IP**
🔐 2. Gitea Secret Ayarları
Gitea reponuzda Settings > Actions > Secrets yolunu izleyerek aşağıdaki anahtarları tanımlayın. ---
Backend İçin:
Key Value Örneği ## 🔐 2. Gitea Secret Ayarları
DATABASE_URL postgresql://Rub1c0N-UseR.%21:SIFRE%3D@backend_db:5432/PROJE_ADI_db?schema=public
JWT_SECRET en_az_32_karakterli_rastgele_string **⚠️ Önemli:** Proje canlıya çıkarken SSL kullanacağımız için URL'leri şimdiden **https** olarak tanımlıyoruz.
Frontend İçin:
Key Value Örneği Gitea reponuzda **Settings > Actions > Secrets** yolunu izleyerek aşağıdaki anahtarları tanımlayın.
NEXT_PUBLIC_API_URL http://api-proje.bilgich.com/api
NEXTAUTH_URL http://ui-proje.bilgich.com ### Backend İçin:
NEXTAUTH_SECRET openssl_rand_base64_32_cikti
Not: DATABASE_URL içinde özel karakter varsa: ! -> %21, = -> %3D kullanmayı unutma. | Key | Value Örneği | Açıklama |
🛠 3. Backend (NestJS) Proje Ayarları | :--- | :--- | :--- |
main.ts: Global prefix ve Swagger yollarını kontrol et. | `DATABASE_URL` | `postgresql://Rub1c0N-UseR.%21:SIFRE%3D@backend_db:5432/PROJE_ADI_db?schema=public` | Özel karakterler encode edilmeli (!=%21, =%3D) |
Dockerfile: Mevcut çalışan NestJS Dockerfile'ı kullan. | `JWT_SECRET` | `rastgele_uzun_string` | Güvenlik anahtarı |
deploy.yml Değişiklikleri:
--name backend-PROJE-container (Unique isim) ### Frontend İçin:
-p 150X:3000 (Sıradaki boş port: 1502, 1503...)
--network gitea-server_gitea (Doğru network adı) | Key | Value Örneği | Açıklama |
🎨 4. Frontend (Next.js) Proje Ayarları | :--- | :--- | :--- |
next.config.js: output: 'standalone' satırını ekle. | `NEXT_PUBLIC_API_URL` | `https://api-proje.bilgich.com/api` | **https** olmasına dikkat et |
Dockerfile: ARG ve ENV satırlarına NEXT_PUBLIC_ değişkenlerini ekle. | `NEXTAUTH_URL` | `https://ui-proje.bilgich.com` | **https** olmasına dikkat et |
deploy-ui.yml Değişiklikleri: | `NEXTAUTH_SECRET` | `openssl_rand_base64_32_cikti` | Auth güvenliği için |
--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. ## 🛠 3. Backend (NestJS) Proje Ayarları
🚦 5. Nginx Yönlendirmesi
Her servis için yeni bir Nginx konfigürasyonu oluşturulmalıdır. 1. **main.ts:** Global prefix ve Swagger yollarını kontrol et.
Dosya Oluştur: 2. **Dockerfile:** Mevcut çalışan NestJS Dockerfile'ı kullan.
code 3. **deploy.yml Değişiklikleri:**
Bash * `--name backend-PROJE-container` (Her proje için unique isim)
sudo nano /etc/nginx/sites-available/proje-api # Backend için * `-p 150X:3000` (Sıradaki boş port: 1502, 1503...)
sudo nano /etc/nginx/sites-available/proje-ui # Frontend için * `--network gitea-server_gitea` (Database'e erişim için şart)
Config İçeriği (Örnek):
code ---
Nginx
## 🎨 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 { server {
listen 80; listen 80;
server_name api-proje.bilgich.com; server_name api-proje.bilgich.com; # Domain adını buraya yaz
location / { location / {
proxy_pass http://127.0.0.1:150X; # Uygulamanın dış portu proxy_pass http://127.0.0.1:150X; # Uygulamanın dış portu (1502, 1802 vb.)
include proxy_params; # Veya standart proxy headerları 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;
} }
} }
Aktif Et ve Reload: ```
code
Bash ### 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 ln -s /etc/nginx/sites-available/proje-api /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx sudo nginx -t && sudo systemctl reload nginx
💡 "Senior" İpuçları & Bakım ```
Port Yönetimi: Kullandığın portları bir yere not et:
1501: Test BE, 1502: Proje2 BE... ### D. SSL Sertifikası Kur (Certbot)
1800: Test UI, 1801: Proje2 UI... 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!
Disk Temizliği: Raspberry Pi diski dolmaması için haftalık temizlik yap:
code ```bash
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 docker system prune -f
Performans İzleme: RAM ve CPU durumunu kontrol et: ```
code
Bash ### Log Takibi
htop Bir sorun olduğunda ilk buraya bak:
docker stats ```bash
Log Takibi: Bir sorun olduğunda ilk buraya bak:
code
Bash
docker logs -f KONTEYNER_ADI docker logs -f KONTEYNER_ADI
Bu sistem, Raspberry Pi'nin kaynaklarını en verimli şekilde kullanacak şekilde tasarlanmıştır. 🚀 ```
```