# Webhost Deployment Setup - tracker.lppmunud.id

## Struktur Folder di Webhost

```
/home/lppmunu1/public_html/
├── api/
│   ├── config/
│   │   ├── Config.php        ← Will auto-detect production
│   │   └── Database.php      
│   ├── controllers/
│   ├── models/
│   └── index.php
├── dashboard/
│   ├── config/
│   │   ├── Config.php        ← Will auto-detect production
│   │   └── Database.php
│   ├── controllers/
│   ├── views/
│   ├── assets/
│   ├── index.php
│   ├── login.php
│   └── logout.php
├── database/
│   └── tracker_schema.sql
├── config/
│   ├── EnvironmentHelper.php
│   ├── .env.local
│   └── .env.webhost           ← Will be used when accessing tracker.lppmunud.id
└── uploads/
    ├── screenshots/
    ├── logs/
    └── temp/
```

## Deployment Checklist

### 1. Upload Files ke Webhost

```bash
# Upload semua files ke /home/lppmunu1/public_html/
# Pastikan struktur folder sesuai dengan .env.webhost
```

### 2. Sesuaikan Folder Structure

**PENTING**: Webhost berbeda dengan lokal!

| Component | Local | Webhost |
|---|---|---|
| **API** | `http://localhost/tracker/api` | `http://tracker.lppmunud.id/api` |
| **Dashboard** | `http://localhost/tracker/dashboard` | `http://tracker.lppmunud.id` |
| **Agent API URL** | `http://localhost/tracker/api` | `http://tracker.lppmunud.id/api` |

### 3. Database Setup Webhost

**Credentials tersimpan di `.env.webhost`:**

```env
DB_HOST=tracker.lppmunud.id
DB_NAME=lppmunu1_tracker
DB_USER=lppmunu1_tracker
DB_PASS=Cargo2026#
```

**Langkah-langkah:**

1. **Login ke Webhost:**
   - cpPanel: https://tracker.lppmunud.id:2083
   - Username: lppmunu1
   - Password: (contact admin)

2. **Database Management → MySQL Databases:**
   - Database: `lppmunu1_tracker` (sudah ada)
   - User: `lppmunu1_tracker` (sudah ada)
   - Password: `Cargo2026#`

3. **Import Schema:**
   - Download `/database/tracker_schema.sql`
   - Upload via phpMyAdmin
   - Run query untuk create tables

### 4. Verify Environment Detection

**Saat akses `tracker.lppmunud.id`:**

System akan otomatis:
1. ✅ Detect hostname = `tracker.lppmunud.id`
2. ✅ Load `.env.webhost`
3. ✅ Connect ke database webhost
4. ✅ Set CORS untuk webhost origins

**Test dengan curl:**

```bash
# Test API
curl -i http://tracker.lppmunud.id/api/

# Expected: 200 OK dengan JSON response
# HTTP/1.1 200 OK
# Content-Type: application/json
```

### 5. File Permissions

```bash
# Set proper permissions di webhost
chmod755 /home/lppmunu1/public_html/
chmod 755 /home/lppmunu1/public_html/uploads
chmod 755 /home/lppmunu1/public_html/logs
chmod 644 /home/lppmunu1/public_html/config/*.env*
```

### 6. SSL/HTTPS Setup

Pastikan webhost punya SSL installed.

Di `.env.webhost`, update:
```env
API_URL=https://tracker.lppmunud.id/api
DASHBOARD_URL=https://tracker.lppmunud.id
AGENT_API_URL=https://tracker.lppmunud.id/api
```

### 7. Agent Configuration di Webhost

**For Windows Service running di webhost machine:**

1. Copy `config.production.json` ke `config.json`
2. Service akan auto-detect production environment
3. API calls akan ke `http://tracker.lppmunud.id/api`

## Konfigurasi File yang Akan Auto-Load

### EnvironmentHelper.php Logic

```php
if (strpos($host, 'tracker.lppmunud.id') !== false) {
    // Load .env.webhost
    // Set DB_HOST = tracker.lppmunud.id
    // Set API_URL = http://tracker.lppmunud.id/api
} else {
    // Load .env.local
    // Set DB_HOST = localhost
    // Set API_URL = http://localhost/tracker/api
}
```

### Hasil Auto-Load di Webhost

```php
define('DB_HOST', 'tracker.lppmunud.id');
define('DB_NAME', 'lppmunu1_tracker');
define('DB_USER', 'lppmunu1_tracker');
define('DB_PASS', 'Cargo2026#');
define('API_URL', 'http://tracker.lppmunud.id/api');
define('DASHBOARD_URL', 'http://tracker.lppmunud.id');
```

## API Evidence Response Testing

### Test di Local
```bash
curl http://localhost/tracker/api/
# Response:
# {"status":"ok","message":"Tracker API v1.0","environment":"local"}
```

### Test di Webhost
```bash
curl http://tracker.lppmunud.id/api/
# Response:
# {"status":"ok","message":"Tracker API v1.0","environment":"production"}
```

## Troubleshooting Webhost Deployment

### Problem: 404 Not Found di API

**Issue**: API path tidak ditemukan

**Solution**:
1. Verify folder structure di webhost
2. Check `.htaccess` untuk mod_rewrite
3. Verify path parsing di `api/index.php`

```php
// Check di webhost
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
// Should be: /api/... (not /tracker/api/...)
```

### Problem: Database Connection Failed

**Issue**: Tidak bisa connect ke database webhost

**Solution**:
1. Verify credentials di `.env.webhost`
2. Check host firewall membolehkan koneksi
3. Test manual connection:

```php
$pdo = new PDO(
    'mysql:host=tracker.lppmunud.id;dbname=lppmunu1_tracker',
    'lppmunu1_tracker',
    'Cargo2026#'
);
```

### Problem: CORS Error di Browser

**Issue**: Browser block request dari webhost

**Solution**:
1. Check CORS origins di `api/config/Config.php`
2. Verify `https://tracker.lppmunud.id` included

```php
$allowed_origins = [
    'http://tracker.lppmunud.id',
    'https://tracker.lppmunud.id'
];
```

### Problem: Agent Service Connect Failed

**Issue**: Service di webhost tidak bisa connect ke API

**Solution**:
1. Verify `config.json` pointing to correct API URL
2. Test connection dengan curl:

```bash
curl -X POST http://tracker.lppmunud.id/api/agent
```

## Rollback ke Local

Jika perlu rollback kembali ke local:

1. **Pastikan `.env.local` setting benar:**
   ```env
   DB_HOST=localhost
   DB_NAME=tracker
   ```

2. **Agent config.json:**
   ```json
   {
     "api_url": "http://localhost/tracker/api"
   }
   ```

3. **Restart services:**
   ```bash
   net stop PCMonitorAgent
   net start PCMonitorAgent
   ```

## Summary

✅ **Struktur folder** sudah disesuaikan untuk dual environment
✅ **Environment detection** auto-detect based on hostname
✅ **Database credentials** sudah tersimpan di .env files
✅ **CORS configuration** sudah per-environment
✅ **Path parsing** sudah dynamic untuk local dan webhost
✅ **Config files** sudah EnvironmentHelper-aware

**Status**: Ready untuk deployment ke webhost! 🚀

---

**Next Steps:**

1. ✅ Verify lokal sudah jalan OK (sudah selesai)
2. ⏳ Upload ke webhost
3. ⏳ Setup database di webhost
4. ⏳ Verify akses dan test API endpoints
5. ⏳ Configure agent untuk production
