# NexusJetSmsWp — Kurulum Rehberi

Sıra: **VPS al → Cloudflare + alan adı → install.sh → test modunda dene → canlıya geç.**

## 1. Sunucu (Namecheap VPS)
- Ubuntu **24.04**, en az 2 vCPU / 4 GB RAM, 40 GB disk.
- Sunucuya SSH ile root olarak gir, bu klasörün tamamını sunucuya yükle (ör. `/root/nexusjet-core`).

## 2. Alan adı ve Cloudflare
1. Alan adını al (Namecheap), Cloudflare'de ücretsiz hesap aç, alan adını ekle, Namecheap'te nameserver'ları Cloudflare'inkilerle değiştir.
2. Cloudflare DNS: `panel` adıyla **A kaydı → VPS IP'si**, turuncu bulut (Proxy) **açık**.
3. SSL/TLS: **Full (strict)** seç. "Origin Server" sekmesinden Origin sertifikası üret; sunucuda
   `/etc/ssl/nexusjet/origin.pem` ve `origin.key` olarak kaydet, sonra `/etc/nginx/sites-available/nexusjet` içine bir `listen 443 ssl;` bloğu ekle (`ssl_certificate` / `ssl_certificate_key`). Alternatif: Cloudflare "Flexible" yalnızca test içindir, canlıda kullanma.
4. "Always Use HTTPS" ve "Bot Fight Mode"u aç.

## 3. Kurulum
```bash
cd /root/nexusjet-core
bash deploy/install.sh panel.alanadiniz.com
```
Betik sonunda **admin şifresi ekrana yazılır** — kaydet. (`.env` içinde de durur; ilk girişten sonra `ADMIN_PASSWORD` satırını silmen önerilir.)

İlk girişte: şifre değiştirme → 2FA (Google Authenticator/Authy) kurulumu zorunlu.

## 4. Admin IP kısıtı (önerilir)
Sabit IP'n varsa `/var/www/nexusjet/.env` içinde `ADMIN_ALLOWED_IPS=1.2.3.4` yap, sonra:
```bash
cd /var/www/nexusjet && sudo -u www-data php artisan config:cache
```
IP'n değişirse panele giremezsin; sunucudan `.env`'i düzeltirsin.

## 5. Veritabanında silme/değiştirme kilidi (denetim kaydı için)
```sql
REVOKE UPDATE, DELETE ON nexusjet.audit_logs FROM 'nexusjet'@'localhost';
REVOKE UPDATE, DELETE ON nexusjet.credit_ledger FROM 'nexusjet'@'localhost';
FLUSH PRIVILEGES;
```
Not: `nexusjet:purge` (KVKK saklama süresi temizliği) bu tablolara dokunmaz; dokunduğu tablolarda yetki gerekir.
Kontrol: `php artisan audit:verify` — zincir bozulmuşsa hata verir (her gün 03:30'da otomatik çalışır).

## 6. WhatsApp Business Cloud API (Meta)
1. developers.facebook.com → uygulama oluştur → WhatsApp ürününü ekle, işletme doğrulamasını tamamla.
2. `.env`: `WA_PHONE_NUMBER_ID`, `WA_ACCESS_TOKEN` (kalıcı sistem kullanıcısı token'ı), `WA_APP_SECRET`.
3. Webhook URL: `https://panel.alanadiniz.com/api/webhooks/whatsapp`, Verify token: `.env` içindeki `WA_VERIFY_TOKEN`. `messages` alanına abone ol.
4. Şablonları Meta'da onaylat; panelde Şablonlar sayfasından şablon adıyla eşle. Mesajlar yalnızca onaylı şablonla gider.

## 7. SMS sağlayıcı
Lisanslı bir sağlayıcıyla anlaş (BTK izni/İYS yükümlülükleri sağlayıcıyla birlikte netleşir). `app/Services/SmsClient.php` **genel bir JSON istemcisidir**; sağlayıcının API dokümanına göre istek/yanıt alanlarını uyarlamak gerekir. Teslim raporu webhook'u: `https://panel.alanadiniz.com/api/webhooks/sms?token=<SMS_WEBHOOK_TOKEN>`.

## 8. Canlıya geçiş
Sistem **test modunda** (`NJ_DRY_RUN=true`) gelir: onay, kredi, kuyruk, raporlar çalışır ama sağlayıcıya hiçbir şey gönderilmez.
1. Test modunda bir müşteri oluştur, talep gönder, onayla, sonucu kontrol et.
2. WA/SMS bilgileri hazırsa `.env` → `NJ_DRY_RUN=false`, ardından:
```bash
cd /var/www/nexusjet && sudo -u www-data php artisan config:cache && supervisorctl restart all
```
3. İlk canlı gönderimi kendi numaranıza küçük bir talepte dene.

## 9. Günlük işler
| İş | Komut |
|---|---|
| Kuyruk durumu | `supervisorctl status` |
| Günlükler | `tail -f /var/log/nexusjet-queue.log`, `/var/www/nexusjet/storage/logs` |
| Takılan talebi sürdür | `php artisan nexusjet:resume <talep_id>` |
| Acil durdurma | Admin ana sayfada "Tüm gönderimleri duraklat" ya da talepte "ACİL DURDUR" |
| Yedek | `/var/backups/nexusjet` (günlük 02:30). Sunucu dışına da kopyala. |
| Güncelleme sonrası | `php artisan config:cache && route:cache && supervisorctl restart all` |

## 10. Hesap verme / yasal not
- Kayıt yok; hesapları yalnızca admin ve bayi açar. Sektör beyanı yüz yüze doğrulanır.
- Kumar/bahis vb. yasaklı kategoriler "Yasaklı Kelimeler" listesiyle engellenir/işaretlenir; son karar her zaman onay ekranındadır.
- Alıcı izni müşteri beyanıdır; DUR/STOP yanıtları otomatik kara listeye girer. KVKK, İYS ve BTK yükümlülükleri için hukuki danışmanlık alın.
