Files
balikci/docs/DOMAIN_SETUP.md
salvacybersec f86cda2978 Domain support
2025-11-10 20:01:41 +03:00

397 lines
8.0 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.

# 🌐 Domain Yapılandırma Rehberi
Oltalama Panel için domain yapılandırma seçenekleri ve kurulum rehberi.
## 📋 İki Seçenek
### Seçenek 1: Tek Domain (Önerilen) ⭐
**Yapı:**
```
yourdomain.com/ → Frontend
yourdomain.com/api/ → Backend API
yourdomain.com/t/ → Tracking Links
```
**Avantajları:**
- ✅ CORS sorunu yok
- ✅ Tek SSL sertifikası
- ✅ Kolay kurulum
- ✅ Basit yönetim
**Dezavantajları:**
- ⚠️ Reverse proxy gerekli (Nginx Proxy Manager)
### Seçenek 2: İki Ayrı Domain
**Yapı:**
```
panel.yourdomain.com → Frontend
api.yourdomain.com → Backend API & Tracking
```
**Avantajları:**
- ✅ Servisler birbirinden izole
- ✅ Bağımsız ölçeklendirme
- ✅ Farklı sunucularda çalışabilir
**Dezavantajları:**
- ⚠️ CORS yapılandırması gerekli
- ⚠️ İki SSL sertifikası
- ⚠️ Daha karmaşık kurulum
## 🚀 Seçenek 1: Tek Domain Kurulumu
### 1. DNS Ayarları
```
yourdomain.com A 123.456.789.10
www.yourdomain.com CNAME yourdomain.com
```
### 2. Nginx Proxy Manager Kurulumu
**Proxy Host Ekle:**
```
Domain: yourdomain.com, www.yourdomain.com
Scheme: http
Forward Hostname: localhost
Forward Port: 4173
SSL: ✓ Force SSL, HTTP/2, HSTS
```
**Advanced Config:**
```nginx
location /api {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /t/ {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
```
### 3. Oltalama Panel Ayarları
Panele giriş yapın → **Ayarlar****Genel Ayarlar**
```
☐ İki Ayrı Domain Kullan (kapalı bırakın)
Domain (Base URL): https://yourdomain.com
```
### 4. Test
```bash
# Frontend
curl https://yourdomain.com
# Backend API
curl https://yourdomain.com/api/health
# Tracking
curl -I https://yourdomain.com/t/test-token
```
## 🔀 Seçenek 2: İki Domain Kurulumu
### 1. DNS Ayarları
```
api.yourdomain.com A 123.456.789.10
panel.yourdomain.com A 123.456.789.10
```
### 2. Nginx Proxy Manager - Backend
**Proxy Host Ekle (Backend):**
```
Domain: api.yourdomain.com
Scheme: http
Forward Hostname: localhost
Forward Port: 3000
SSL: ✓ Force SSL, HTTP/2, HSTS
```
### 3. Nginx Proxy Manager - Frontend
**Proxy Host Ekle (Frontend):**
```
Domain: panel.yourdomain.com
Scheme: http
Forward Hostname: localhost
Forward Port: 4173
SSL: ✓ Force SSL, HTTP/2, HSTS
```
### 4. Oltalama Panel Ayarları
Panele giriş yapın → **Ayarlar****Genel Ayarlar**
```
☑ İki Ayrı Domain Kullan (aktif et)
Backend Domain: https://api.yourdomain.com
Frontend Domain: https://panel.yourdomain.com
```
**Kaydet** butonuna tıklayın. CORS otomatik olarak yapılandırılacaktır.
### 5. Frontend Ortam Değişkenleri
`/opt/oltalama/frontend/.env`:
```env
VITE_API_URL=https://api.yourdomain.com
```
Frontend'i yeniden build edin:
```bash
cd /opt/oltalama/frontend
npm run build
pm2 restart oltalama-frontend
```
### 6. Test
```bash
# Frontend
curl https://panel.yourdomain.com
# Backend API
curl https://api.yourdomain.com/api/health
# Tracking
curl -I https://api.yourdomain.com/t/test-token
# CORS test
curl -I -X OPTIONS https://api.yourdomain.com/api/health \
-H "Origin: https://panel.yourdomain.com" \
-H "Access-Control-Request-Method: GET"
```
## 🔧 Port Ayarları
### Varsayılan Portlar
- **Backend**: `3000`
- **Frontend**: `4173`
- **Nginx Proxy Manager**: `80` (HTTP), `443` (HTTPS)
### Farklı Portlar Kullanma
Eğer backend veya frontend'i farklı portlarda çalıştırmak isterseniz:
#### Backend Port Değiştirme
**1. Backend .env:**
```env
PORT=8080
```
**2. PM2 Ecosystem Config:**
```javascript
{
name: 'oltalama-backend',
env: {
PORT: 8080,
},
}
```
**3. Nginx Proxy Manager:**
```
Forward Port: 8080
```
**4. Restart:**
```bash
pm2 restart oltalama-backend
```
#### Frontend Port Değiştirme
**1. Frontend package.json:**
```json
{
"scripts": {
"preview": "vite preview --port 5000"
}
}
```
**2. PM2 Ecosystem Config:**
```javascript
{
name: 'oltalama-frontend',
env: {
PORT: 5000,
},
}
```
**3. Nginx Proxy Manager:**
```
Forward Port: 5000
```
**4. Restart:**
```bash
pm2 restart oltalama-frontend
```
## 🔒 SSL/TLS Sertifikaları
### Let's Encrypt (Otomatik)
Nginx Proxy Manager üzerinden otomatik:
1. Proxy Host ayarlarına girin
2. **SSL** sekmesine gidin
3. **Request a new SSL Certificate** seçin
4. **Force SSL**, **HTTP/2**, **HSTS** aktif edin
5. Email girin ve **I Agree** işaretleyin
6. **Save**
Sertifika otomatik olarak yenilenecektir.
### Manuel SSL (Opsiyonel)
```bash
# Certbot kurulumu
sudo apt install certbot
# Sertifika oluşturma
sudo certbot certonly --standalone -d yourdomain.com
# Sertifikalar
/etc/letsencrypt/live/yourdomain.com/fullchain.pem
/etc/letsencrypt/live/yourdomain.com/privkey.pem
```
## 🐛 Sorun Giderme
### Problem: "Failed to load resource: net::ERR_BLOCKED_BY_CLIENT"
**Sebep:** AdBlock/uBlock Origin tracking URL'lerini engelliyor
**Çözüm:**
- Test için AdBlock'u devre dışı bırakın
- Veya tracking URL pattern'ini değiştirin
### Problem: CORS hatası
**Semptomlar:**
```
Access to XMLHttpRequest at 'https://api.yourdomain.com/api/...'
from origin 'https://panel.yourdomain.com' has been blocked by CORS policy
```
**Çözüm:**
1. Panelden CORS ayarlarını kontrol edin
2. **İki Ayrı Domain Kullan** aktif mi?
3. Frontend ve Backend URL'leri doğru mu?
4. Backend'i restart edin: `pm2 restart oltalama-backend`
### Problem: 502 Bad Gateway
**Çözüm:**
```bash
# Backend çalışıyor mu?
pm2 status
# Port dinleniyor mu?
sudo netstat -tulpn | grep 3000
# Firewall açık mı?
sudo ufw status
```
### Problem: Tracking linkleri çalışmıyor
**Çözüm:**
1. Panelde Base URL doğru ayarlanmış mı?
2. `/t/` route Nginx'de tanımlı mı?
3. Backend loglarını kontrol edin:
```bash
pm2 logs oltalama-backend --lines 50
```
## 📊 Karşılaştırma Tablosu
| Özellik | Tek Domain | İki Domain |
|---------|------------|------------|
| **Kurulum Süresi** | 15 dakika | 30 dakika |
| **CORS** | Gerekli değil | Gerekli |
| **SSL Sertifikası** | 1 tane | 2 tane |
| **Reverse Proxy** | Gerekli | Opsiyonel |
| **DNS Kaydı** | 1 domain | 2 subdomain |
| **Güvenlik** | Yüksek | Yüksek |
| **Ölçeklenebilirlik** | Orta | Yüksek |
| **Bakım** | Kolay | Orta |
| **Maliyet** | Düşük | Düşük |
| **Önerilen** | ✅ **Evet** | Özel durumlar |
## 🎯 Hangi Seçeneği Seçmeliyim?
### Tek Domain Seçin Eğer:
- ✅ Basit kurulum istiyorsanız
- ✅ CORS ile uğraşmak istemiyorsanız
- ✅ Tek sunucuda çalışacaksanız
- ✅ Yeni başlıyorsanız
### İki Domain Seçin Eğer:
- ✅ Frontend ve backend'i farklı sunucularda çalıştıracaksanız
- ✅ Servislerinizi izole etmek istiyorsanız
- ✅ Farklı takımlar frontend/backend'i yönetecekse
- ✅ Bağımsız ölçeklendirme gerekiyorsa
## 📝 Özet: Hızlı Kurulum
### Tek Domain (5 Adım)
```bash
# 1. Sunucu başlatın
pm2 start ecosystem.config.js
# 2. Nginx Proxy Manager'a domain ekleyin
# 3. SSL sertifikası alın (Let's Encrypt)
# 4. Panelde domain ayarlayın
# 5. Test edin
```
### İki Domain (8 Adım)
```bash
# 1. Sunucu başlatın
pm2 start ecosystem.config.js
# 2. Nginx Proxy Manager'a backend domain ekleyin
# 3. Nginx Proxy Manager'a frontend domain ekleyin
# 4. SSL sertifikaları alın (Let's Encrypt)
# 5. Frontend .env dosyasını güncelleyin
# 6. Frontend'i yeniden build edin
# 7. Panelde CORS ve domain ayarlarını yapın
# 8. Test edin
```
---
**Son Güncelleme:** 2025-11-10
**Versiyon:** 1.0.0
**İpucu:** İlk kurulumda **Tek Domain** kullanmanızı öneririz. İhtiyaç duyduğunuzda daha sonra **İki Domain**'e geçebilirsiniz.