# Ngrok ile Local TYPO3'ü Canlıya Alma

## Ngrok Nedir?

**Ngrok**, local ortamınızdaki (localhost/DDEV) çalışan bir uygulamayı internet üzerinden erişilebilir hale getiren bir tünel aracıdır. TYPO3'ü müşteriye veya ekip üyelerine göstermek için kullanışlıdır.

## Özellikler

- 🌐 **Geçici Public URL** - Rastgele subdomain ile HTTPS erişimi
- 🔒 **HTTPS Desteği** - Otomatik SSL sertifikası
- 📊 **Web Interface** - İstekleri ve trafiği izleme
- 🔄 **Host Header Rewrite** - DDEV ile uyumlu çalışma

## Kurulum

### macOS (Homebrew ile)

```bash
brew install ngrok
```

### Diğer Platformlar

1. [ngrok.com/download](https://ngrok.com/download) adresinden indirin
2. ZIP dosyasını çıkarın
3. PATH'e ekleyin:

```bash
# Linux/Mac
sudo mv ngrok /usr/local/bin/

# Windows
# ngrok.exe'yi C:\Windows\System32 veya PATH'e ekleyin
```

### Auth Token Ayarlama (Opsiyonel)

Ücretsiz hesap oluşturup auth token ekleyerek daha uzun süreli session alabilirsiniz:

```bash
ngrok config add-authtoken YOUR_AUTH_TOKEN
```

## typo3-ngrok Komutunu Kurma

Projeye özel hazırlanmış `typo3-ngrok` komutunu kurun:

```bash
# Komut dosyasını indir
mkdir -p ~/.local/bin
curl -o ~/.local/bin/typo3-ngrok [REPO_URL]/typo3-ngrok

# Çalıştırılabilir yap
chmod +x ~/.local/bin/typo3-ngrok

# PATH'e ekle (zsh kullanıyorsanız ~/.zshrc, bash için ~/.bashrc)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
```

### Alias Olarak Ekleme (Tavsiye Edilen)

Daha kısa kullanmak için alias ekleyin:

```bash
# ~/.zshrc veya ~/.bashrc dosyasına ekle
echo 'alias t3live="typo3-ngrok"' >> ~/.zshrc
source ~/.zshrc
```

Artık sadece şunu yazabilirsiniz:

```bash
t3live
```

## Kullanım

### 1. DDEV'i Başlatın

```bash
ddev start
```

### 2. Ngrok Tunnel Başlatın

```bash
# Hazır komutu kullanarak
typo3-ngrok

# veya alias ile
t3live
```

### 3. Çıktı

```
🚀 TYPO3 ngrok tunnel başlatılıyor...
⏳ Tunnel hazırlanıyor...

✅ Tunnel aktif!

🌐 Public URL: https://abc123-xxx.ngrok-free.app
🔧 Backend: https://abc123-xxx.ngrok-free.app/typo3

📊 Ngrok Dashboard: http://localhost:4040

🛑 Durdurmak için: pkill ngrok
```

## Ngrok Dashboard

Tarayıcınızda `http://localhost:4040` adresine giderek:

- Gelen istekleri görüntüleme
- HTTP header'ları inceleme
- Response sürelerini izleme
- Request/Response body'sini görme

## Manuel Ngrok Kullanımı

Komut hazırlanmamışsa manuel olarak:

```bash
# DDEV site için ngrok başlat
ngrok http https://typo3v13.ddev.site --host-header=rewrite

# veya

ngrok http 443 --host-header=typo3v13.ddev.site
```

### Temel Ngrok Komutları

```bash
# HTTP üzerinden
ngrok http 80

# HTTPS üzerinden
ngrok http https://localhost

# Belirli port
ngrok http 8080

# Özel subdomain (paid plan gerekir)
ngrok http --subdomain=myproject 80

# Kimlik doğrulama ile
ngrok http --basic-auth="user:pass" 80
```

## Sorun Giderme

### 1. "Session Status: reconnecting" Hatası

**Sorun:** Ngrok sürekli bağlanmaya çalışıyor ama başarısız oluyor.

**Çözüm:**
```bash
# Ngrok'u tamamen durdur
pkill -9 ngrok

# Yeniden başlat
typo3-ngrok
```

### 2. "Failed to complete tunnel connection" Hatası

**Sorun:** Tunnel oluşuyor ama site açılmıyor.

**Çözüm:**
- DDEV çalışıyor mu kontrol edin: `ddev status`
- DDEV URL'sini doğrulayın: `typo3v13.ddev.site`
- Host header rewrite eklediğinizden emin olun

### 3. "Trusted Hosts Pattern" Hatası

**Sorun:** TYPO3 "trusted hosts pattern" hatası veriyor.

**Çözüm:** `config/system/additional.php` dosyasına ekleyin:

```php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['trustedHostsPattern'] = '.*';
```

### 4. "Missing referrer" Hatası (Backend Login)

**Sorun:** Backend'e giriş yaparken referrer hatası alıyorsunuz.

**Çözüm:** Cookie ayarlarını kontrol edin:

```php
// additional.php
$GLOBALS['TYPO3_CONF_VARS']['BE']['cookieSameSite'] = 'lax';
$GLOBALS['TYPO3_CONF_VARS']['BE']['cookieSecure'] = false;
```

### 5. Ngrok URL Değişiyor

**Sorun:** Her başlatmada farklı URL alıyorsunuz.

**Çözüm:** Ücretsiz plan'da bu normaldir. Sabit URL için:
- Ngrok paid plan satın alın
- Veya `--subdomain` flag'i kullanın (paid plan gerekir)

### 6. Resimler/CSS Yüklenmiyor

**Sorun:** Sayfa açılıyor ama resimler ve stiller eksik.

**Çözüm:** TYPO3 base URL ayarlarını kontrol edin:

```php
// additional.php - absolute URL'leri düzeltmek için
$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxyIP'] = '*';
$GLOBALS['TYPO3_CONF_VARS']['SYS']['reverseProxySSL'] = '*';
```

## Güvenlik Notları

⚠️ **Önemli:** Ngrok URL'leri geçicidir ve public'tir!

- **Üretim (production) için kullanmayın**
- Hassas verileri ngrok üzerinden paylaşmayın
- URL'yi sadece güvendiğiniz kişilerle paylaşın
- İşiniz bittiğinde ngrok'u durdurun (`pkill ngrok`)

## Ngrok'u Durdurma

```bash
# Tüm ngrok processlerini durdur
pkill ngrok

# veya

killall ngrok
```

## Alternatif Araçlar

- **Cloudflare Tunnel**: Daha kalıcı çözüm
- **LocalTunnel**: Ücretsiz ve açık kaynak
- **Expose**: PHP tabanlı, Laravel Valet ile gelir

## İpuçları

### 1. URL'yi Panoya Kopyalama (macOS)

```bash
# Script içinde URL'yi otomatik kopyala
typo3-ngrok | grep "Public URL" | pbcopy
```

### 2. Sürekli Çalışan Tunnel

```bash
# Terminal'de arka planda çalıştır
nohup typo3-ngrok > /dev/null 2>&1 &

# Durdurmak için
pkill ngrok
```

### 3. Multiple Tunnels

Birden fazla proje için aynı anda:

```bash
# Terminal 1
typo3-ngrok

# Terminal 2
grok http https://baska-proje.ddev.site --host-header=rewrite
```

## İlgili Dokümanlar

- [DDEV ve Local Ortam Ayarları](./02-ddev-ve-local-ortam-ayarlari.md)
- [Debug ve Hata Ayıklama Modu](./22-debug-ve-hata-ayiklama-modu.md)
- [Hata Çözüm Kütüphanesi](./23-hata-cozum-kutuphanesi.md)

## Kaynaklar

- [Ngrok Resmi Dokümantasyon](https://ngrok.com/docs)
- [Ngrok GitHub](https://github.com/inconshreveable/ngrok)
- [DDEV Ngrok Entegrasyonu](https://ddev.readthedocs.io/en/latest/users/topics/sharing/)

---

**Son Güncelleme:** 2025-02-17
**TYPO3 Versiyon:** 13.x
**Ngrok Versiyon:** 3.x
