# Palworld Web Controller & Discord Bot Launcher 🎮🌐

Aplikasi **Web Dashboard Controller** modern & **Bot Discord** terpadu untuk manajemen server Palworld Dedicated Server. Dilengkapi dengan **Autentikasi Login Steam (Steam OpenID)**, **Monitoring Realtime via Socket.IO**, dan pengontrolan penuh via Browser Web PC Client.

---

## 🌟 Fitur Utama Dashboard Web

1. **🔑 Login Autentikasi Steam (Steam OpenID 2.0):**
   - Hanya pengguna akun Steam yang terdaftar dalam whitelist `ALLOWED_STEAM_IDS` yang dapat masuk ke controller.
   - Pengguna luar/unauthorized yang mencoba login akan otomatis ditolak.
2. **📊 Monitoring Status Realtime (Live Update tanpa Refresh):**
   - Live Badge Status Server (Online / Offline).
   - Dynamic Uptime Counter.
   - Daftar Player Live (Nama, Steam ID / User ID, Level, Ping).
3. **🔔 Event Feed Live Player Join & Leave:**
   - Pop-up Toast Notifikasi & Feed aktivitas saat ada player yang masuk/keluar server.
4. **🕹️ Action Control Panel Server:**
   - 🔄 **Restart / Shutdown Server** dengan hitung mundur detik dan pesan pengumuman.
   - 📢 **Broadcast Announcement** ke layar in-game player.
   - 💾 **Save World Data** secara instant.
   - 👢 **Kick & Ban Player** langsung dari tabel player.
   - 🟢 **Unban Player** via Steam ID.
5. **🤖 Discord Bot Co-Existence:**
   - Bot Discord berjalan berdampingan di dalam server yang sama, memperbarui status embed Discord secara otomatis.

---

## ⚙️ Persiapan Server Palworld REST API

Pastikan `PalWorldSettings.ini` di server Palworld Anda sudah dikonfigurasi dengan:
```ini
RESTAPIEnabled=True
RESTAPIPort=8212
AdminPassword="PasswordAdminAnda"
```
*Lalu restart server Palworld.*

---

## 📥 Cara Install & Menjalankan

### 1. Install Dependencies
Buka terminal di folder project `palworld-web-controller`:
```bash
npm install
```

### 2. Konfigurasi File `.env`
Duplikat file `.env.example` menjadi `.env`:
```bash
cp .env.example .env
```

Isi variabel `.env` sesuai setup Anda:
```env
PORT=3000
SESSION_SECRET=string_acak_rahasia_bebas

# Whitelist Steam ID 64-bit yang DI-IZINKAN Login (Pisahkan dengan koma)
# Contoh Steam ID 64-bit: 76561198084350159
ALLOWED_STEAM_IDS=76561198084350159

# URL Base Web Controller Anda
# Jika diakses dari PC Client / Domain lain, sesuaikan domain/IP nya:
STEAM_REALM_URL=http://localhost:3000

# REST API Palworld
PALWORLD_API_URL=http://127.0.0.1:8212
PALWORLD_ADMIN_PASSWORD=PasswordAdminAnda

# (Opsional) Token Discord Bot jika ingin menjalankan bot Discord bersamaan
DISCORD_TOKEN=YOUR_DISCORD_BOT_TOKEN
CLIENT_ID=YOUR_CLIENT_ID
ADMIN_ROLE_ID=YOUR_ADMIN_ROLE_ID
STATUS_CHANNEL_ID=YOUR_STATUS_CHANNEL_ID
LOG_CHANNEL_ID=YOUR_LOG_CHANNEL_ID

UPDATE_INTERVAL_SECONDS=10
```

> 💡 **Cara Mengetahui Steam ID 64-Bit Anda:**
> Buka profil Steam Anda di browser / app -> Klik kanan profil -> Copy Page URL. Steam ID 64-bit adalah deretan angka 17 digit (contoh: `76561198084350159`) atau cek di [steamid.finder.com](https://steamid.io).

---

### 3. Menjalankan Web Controller
```bash
npm start
```
Aplikasi akan aktif di `http://localhost:3000` (atau port yang Anda tentukan).

---

## 🌐 Cara Mengakses dari Client PC Lain & Laragon Apache / Domain

### A. Akses dari PC Lain dalam Jaringan LAN
Buka browser di PC Client lain dan akses menggunakan IP komputer tempat server berjalan:
```text
http://192.168.1.5:3000
```
*(Pastikan port 3000 sudah diizinkan di Windows Firewall).*

### B. Menghubungkan dengan Domain & Laragon Apache Proxy
Jika Anda memiliki Laragon (Apache) dan ingin menggunakan Domain khusus (contoh: `http://palworld.domainanda.com`):

1. Di Laragon, buka file VirtualHost Apache (`httpd-vhosts.conf`):
   ```apache
   <VirtualHost *:80>
       ServerName palworld.domainanda.com
       
       ProxyPreserveHost On
       ProxyPass / http://127.0.0.1:3000/
       ProxyPassReverse / http://127.0.0.1:3000/
   </VirtualHost>
   ```
2. Aktifkan module proxy di Apache (`proxy_module` & `proxy_http_module`).
3. Update variabel `STEAM_REALM_URL` di file `.env` menjadi domain Anda:
   ```env
   STEAM_REALM_URL=http://palworld.domainanda.com
   ```
4. Restart Apache Laragon & Restart Web Controller (`npm start`). Sekarang siapapun bisa mengakses controller melalui domain tersebut dan login via Steam!

---

## 🚀 Running 24/7 dengan PM2
```bash
npm install -g pm2
pm2 start server.js --name "palworld-controller"
```
