All checks were successful
Backend Deploy 🚀 / build-and-deploy (push) Successful in 1m50s
81 lines
3.2 KiB
Markdown
81 lines
3.2 KiB
Markdown
🚀 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ı açı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. 🚀 |