# 🔧 Troubleshooting Deployment - Redirect ke Localhost

## 🚨 Masalah

Setelah deploy ke server, mengakses `dev.cbtapps.com` malah redirect ke `localhost:8000`

---

## ✅ Solusi

### 1. Clear Cache di Server (PENTING!)

SSH ke server dan jalankan:

```bash
cd ~/dev.cbtapps.com  # atau path ke aplikasi Anda

# Clear semua cache
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

# Hapus config cache yang lama
rm -f bootstrap/cache/config.php
rm -f bootstrap/cache/routes-v7.php
rm -f bootstrap/cache/services.php

# Rebuild assets jika perlu
npm run build

# Config cache ulang dengan APP_URL yang benar
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

### 2. Pastikan .env.dev Sudah Benar

```bash
# Cek .env.dev di server
cat .env.dev | grep APP_URL

# Harusnya:
APP_URL=https://dev.cbtapps.com

# Dan juga:
ASSET_URL=https://dev.cbtapps.com
SESSION_DOMAIN=.dev.cbtapps.com
APP_DEBUG=false
```

### 3. Jika Masih Redirect, Clear Browser Cache

**Chrome/Edge:**
1. Buka DevTools (F12)
2. Klik kanan pada refresh button
3. Pilih "Empty Cache and Hard Reload"

**Atau:**
- Ctrl + Shift + Delete (Windows)
- Cmd + Shift + Delete (Mac)

### 4. Cek File yang Di-Deploy

Pastikan file-file ini sudah ter-copy dengan benar:

```bash
# Cek file .env
cat .env | grep APP_URL

# Cek file config yang ter-cache
ls -la bootstrap/cache/

# Harusnya kosong setelah clear cache
```

---

## 🔍 Penyebab Umum

### 1. **Config Cache Lama**
Laravel menyimpan config di `bootstrap/cache/config.php`. File ini berisi config dari saat `php artisan config:cache` dijalankan.

**Jika file ini dibuat di lokal dengan `APP_URL=localhost:8000`, lalu di-copy ke server, server akan menggunakan URL localhost!**

### 2. **Session Domain Salah**
```env
# SALAH - Domain beda
SESSION_DOMAIN=.Cbtapps.onrender.com

# BENAR - Sesuai dengan APP_URL
SESSION_DOMAIN=.dev.cbtapps.com
```

### 3. **Asset URL Tidak Set**
```env
# Tambahkan ini di .env.dev
ASSET_URL=https://dev.cbtapps.com
```

### 4. **APP_DEBUG=true di Production**
```env
# SALAH - Debug mode menyebabkan issues
APP_DEBUG=true

# BENAR
APP_DEBUG=false
```

---

## 📋 Checklist Deployment

Sebelum deploy, pastikan:

### Di Local (Sebelum Push):

- [ ] `.env.dev` sudah di-update dengan URL yang benar
- [ ] `APP_URL=https://dev.cbtapps.com`
- [ ] `ASSET_URL=https://dev.cbtapps.com`
- [ ] `SESSION_DOMAIN=.dev.cbtapps.com`
- [ ] `APP_DEBUG=false`
- [ ] Jalankan `php artisan config:clear` untuk menghapus cache lokal

### Di Server (Sesudah Deploy):

- [ ] `.env.dev` sudah ter-copy dengan benar
- [ ] Jalankan `php artisan cache:clear`
- [ ] Jalankan `php artisan config:clear`
- [ ] Hapus `bootstrap/cache/*.php`
- [ ] Jalankan `php artisan config:cache`
- [ ] Clear browser cache

---

## 🚀 Deployment Otomatis dengan .cpanel.yml

File `.cpanel.yml` sekarang sudah di-update untuk otomatis clear cache setiap pull:

```yaml
deployment:
  tasks:
    - /bin/bash deploy.sh
    - php artisan cache:clear
    - php artisan config:clear
    - php artisan route:clear
    - php artisan view:clear
    - rm -f bootstrap/cache/*.php
    - php artisan config:cache
    - php artisan route:cache
    - php artisan view:cache
```

Setiap kali Anda pull via cPanel Git, semua cache akan otomatis di-clear dan di-regenerate dengan config yang benar! ✅

---

## 🧪 Testing

Setelah perbaikan:

```bash
# 1. Test URL server
curl -I https://dev.cbtapps.com

# 2. Cek response headers
# Harus: HTTP/1.1 200 OK
# Jangan: HTTP/1.1 302 Found (redirect)

# 3. Test login
# Buka /login di browser
# Login dan cek apakah tetap di domain yang benar

# 4. Test assets
# Buka DevTools Network tab
# Cek apakah CSS/JS load dari domain yang benar
```

---

## 📊 Cara Kerja Laravel URL Generation

Laravel menggunakan urutan ini untuk menentukan URL:

1. **Asset URL** (`ASSET_URL` in .env)
2. **APP_URL** (used in routes)
3. **Config cache** (cached config values)

Jika salah satu salah, hasilnya bisa redirect atau error.

---

## 🎯 Quick Fix Command

Untuk fix cepat di server:

```bash
cd ~/dev.cbtapps.com

# One-liner fix
php artisan cache:clear && php artisan config:clear && php artisan route:clear && php artisan view:clear && rm -f bootstrap/cache/*.php && php artisan config:cache && php artisan route:cache && php artisan view:cache

# Cek APP_URL
php artisan tinker
>>> config('app.url')
>>> exit
```

---

## 📞 Masih Bermasalah?

Cek hal berikut:

1. **Cek nginx/Apache config**
   - Pastikan document root mengarah ke `public/`
   - Pastikan tidak ada redirect rule

2. **Cek SSL**
   - Pastikan HTTPS sudah terinstall dengan benar
   - Cek certificate valid

3. **Cek DNS**
   - A record sudah mengarah ke IP server yang benar
   - `nslookup dev.cbtapps.com`

4. **Cek file .env**
   - Pastikan tidak ada spasi atau hidden character
   - Pastikan line endings menggunakan LF (bukan CRLF)

---

## 📝 Summary

**Perbaikan yang Dilakukan:**

1. ✅ Update `.cpanel.yml` - Otomatis clear cache setiap deploy
2. ✅ Perbaiki `.env.dev`:
   - `APP_DEBUG=false`
   - `SESSION_DOMAIN=.dev.cbtapps.com`
   - `ASSET_URL=https://dev.cbtapps.com`
3. ✅ Tambahkan dokumentasi troubleshooting

**Langkah Selanjutnya:**

1. Commit dan push perubahan
2. Pull di server via cPanel Git
3. Deployment otomatis jalankan cache clearing
4. Test akses `dev.cbtapps.com`

---

**File yang Diupdate:**
- [`.cpanel.yml`](.cpanel.yml) - Added cache clearing tasks
- [`.env.dev`](.env.dev) - Fixed config values
- [TROUBLESHOOTING_DEPLOYMENT.md](TROUBLESHOOTING_DEPLOYMENT.md) - New documentation
