Files
boilerplate-be/mds/deploy.md
Fahri Can Seçer 3511fe6a87
All checks were successful
Backend Deploy 🚀 / build-and-deploy (push) Successful in 1m50s
main
2026-01-30 03:25:05 +03:00

81 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
🚀 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.
🏗 1. Altyapı Hazırlığı (Infrastructure)
A. Veritabanı Oluşturma
Her yeni proje için merkezi PostgreSQL konteynerinde yeni bir veritabanıılmalıdır.
code
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ı
Gitea reponuzda Settings > Actions > Secrets yolunu izleyerek aşağıdaki anahtarları tanımlayın.
Backend İçin:
Key Value Örneği
DATABASE_URL postgresql://Rub1c0N-UseR.%21:SIFRE%3D@backend_db:5432/PROJE_ADI_db?schema=public
JWT_SECRET en_az_32_karakterli_rastgele_string
Frontend İçin:
Key Value Örneği
NEXT_PUBLIC_API_URL http://api-proje.bilgich.com/api
NEXTAUTH_URL http://ui-proje.bilgich.com
NEXTAUTH_SECRET openssl_rand_base64_32_cikti
Not: DATABASE_URL içinde özel karakter varsa: ! -> %21, = -> %3D kullanmayı unutma.
🛠 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 (Unique isim)
-p 150X:3000 (Sıradaki boş port: 1502, 1503...)
--network gitea-server_gitea (Doğru network adı)
🎨 4. Frontend (Next.js) Proje Ayarları
next.config.js: output: 'standalone' satırını ekle.
Dockerfile: ARG ve ENV satırlarına NEXT_PUBLIC_ değişkenlerini ekle.
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 Yönlendirmesi
Her servis için yeni bir Nginx konfigürasyonu oluşturulmalıdır.
Dosya Oluştur:
code
Bash
sudo nano /etc/nginx/sites-available/proje-api # Backend için
sudo nano /etc/nginx/sites-available/proje-ui # Frontend için
Config İçeriği (Örnek):
code
Nginx
server {
listen 80;
server_name api-proje.bilgich.com;
location / {
proxy_pass http://127.0.0.1:150X; # Uygulamanın dış portu
include proxy_params; # Veya standart proxy headerları
}
}
Aktif Et ve Reload:
code
Bash
sudo ln -s /etc/nginx/sites-available/proje-api /etc/nginx/sites-enabled/
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...
1800: Test UI, 1801: Proje2 UI...
Disk Temizliği: Raspberry Pi diski dolmaması için haftalık temizlik yap:
code
Bash
docker system prune -f
Performans İzleme: RAM ve CPU durumunu kontrol et:
code
Bash
htop
docker stats
Log Takibi: Bir sorun olduğunda ilk buraya bak:
code
Bash
docker logs -f KONTEYNER_ADI
Bu sistem, Raspberry Pi'nin kaynaklarını en verimli şekilde kullanacak şekilde tasarlanmıştır. 🚀