Konfigurasi Web lokal XAMPP ke Cloudflare

DOKUMENTASI SETUP

Cloudflare Tunnel + Apache (XAMPP) + PHP Legacy di Windows

Domain: budisetiaji.my.id
Aplikasi: Web Absensi (PHP 7.2 – 7.4)
Metode publikasi: Cloudflare Tunnel
OS: Windows
Status: ✅ PRODUKSI / STABIL


1. Gambaran Arsitektur

Internet │ Cloudflare Edge (HTTPS) │ Cloudflare Tunnel │ cloudflared (Windows Service via NSSM) │ Apache (XAMPP Service, port 80) │ PHP 7.4 (Legacy App)

Karakteristik setup:

  • ❌ Tidak membuka port router

  • ❌ Tidak port forwarding

  • ✅ Aman di balik NAT / CGNAT

  • ✅ HTTPS otomatis dari Cloudflare

  • ✅ CMD tidak perlu dibuka


2. Struktur Folder Penting

2.1 Folder aplikasi

D:\XAMPP\htdocs\absensi

Isi utama:

absensi/ ├── action/ ├── sw-admin/ ├── sw-content/ ├── sw-library/ ├── sw-mod/ ├── .htaccess └── index.php

2.2 Folder Cloudflared

C:\cloudflared\ └── cloudflared.exe

2.3 Folder config global (WAJIB untuk service)

C:\ProgramData\Cloudflare\cloudflared\ ├── config.yml └── <tunnel-uuid>.json

3. Konfigurasi Apache (XAMPP)

3.1 DocumentRoot

Apache diarahkan langsung ke folder aplikasi:

File:

D:\XAMPP\apache\conf\httpd.conf

Konfigurasi:

DocumentRoot "D:/XAMPP/htdocs/absensi" <Directory "D:/XAMPP/htdocs/absensi"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>

📌 Tujuan:

  • Aplikasi berjalan di ROOT domain

  • Tidak ada /absensi di URL

  • .htaccess bekerja penuh


3.2 Apache sebagai Windows Service

  • Apache di-install sebagai service dari XAMPP

  • Status: Running

  • Startup: Automatic


4. Konfigurasi .htaccess (PHP 7.2 – 7.4)

Lokasi:

D:\XAMPP\htdocs\absensi\.htaccess

Isi final (stabil & aman):

<IfModule mod_rewrite.c> RewriteEngine On Options -Indexes # Allow SSL / Cloudflare validation RewriteRule ^\.well-known/ - [L] # Custom routes RewriteRule ^404$ 404.php [L] RewriteRule ^logout$ sw-mod/out/logout.php [L] RewriteRule ^sw-proses$ action/sw-proses.php [L] RewriteRule ^print$ action/sw-print.php [L] RewriteRule ^timthumb$ sw-library/timthumb.php [L] RewriteRule ^oauth/google$ action/sw-google.php [L] # Main routing RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ index.php?mod=$1 [L,QSA] </IfModule> <IfModule mod_php7.c> php_value short_open_tag On </IfModule>

📌 Catatan:

  • ❌ Tidak ada HTTPS redirect

  • ❌ Tidak ada mod_gzip

  • ✅ Aman untuk Cloudflare Tunnel

  • ✅ Cocok untuk PHP legacy


5. Konfigurasi Cloudflare Tunnel

5.1 File config.yml

Lokasi:

C:\ProgramData\Cloudflare\cloudflared\config.yml

Isi:

tunnel: absensi-budi credentials-file: C:\ProgramData\Cloudflare\cloudflared\<tunnel-uuid>.json ingress: - hostname: budisetiaji.my.id service: http://localhost:80 - service: http_status:404

5.2 Test manual (diagnostik)

Digunakan hanya untuk testing:

cloudflared.exe tunnel --config C:\ProgramData\Cloudflare\cloudflared\config.yml run absensi-budi

Jika manual jalan → config valid.


6. Menjalankan Tunnel sebagai Windows Service (NSSM)

6.1 Alasan pakai NSSM

  • Cloudflared tidak otomatis menjalankan tunnel run sebagai service

  • NSSM memastikan perintah dijalankan persis seperti manual

  • Stabil & umum dipakai sysadmin Windows


6.2 Install NSSM

Folder:

C:\nssm\win64\nssm.exe

6.3 Membuat service tunnel

C:\nssm\win64\nssm.exe install CloudflareTunnelAbsensi

Isian NSSM:

Application

  • Path:

    C:\cloudflared\cloudflared.exe
  • Arguments:

    tunnel --config C:\ProgramData\Cloudflare\cloudflared\config.yml run absensi-budi
  • Startup directory:

    C:\cloudflared

Details

  • Display name:

    Cloudflare Tunnel Absensi

Exit actions

  • On failure: Restart


6.4 Menjalankan service

sc start CloudflareTunnelAbsensi

Stop:

sc stop CloudflareTunnelAbsensi

Atau lewat:

services.msc

📌 Setelah ini:

  • CMD ditutup → website tetap hidup

  • Reboot Windows → tunnel otomatis aktif


7. Service yang Aktif

ServiceFungsi
Apache2.4Web server
CloudflareTunnelAbsensiTunnel publik

Service cloudflared bawaan dinonaktifkan (tidak dipakai).


8. Error yang Pernah Terjadi & Solusi

Error 1033

Penyebab: Tunnel agent tidak berjalan
Solusi: Jalankan tunnel via NSSM sebagai Windows Service


Service start abu-abu

Penyebab: Config ada di folder user
Solusi: Pindahkan ke C:\ProgramData\Cloudflare\cloudflared


9. Operasional Harian

Start / Stop Tunnel

sc start CloudflareTunnelAbsensi sc stop CloudflareTunnelAbsensi

Restart Tunnel

sc stop CloudflareTunnelAbsensi sc start CloudflareTunnelAbsensi

10. Checklist Akhir (Validasi)

  • Website bisa diakses via HTTPS

  • CMD ditutup → website tetap hidup

  • Reboot Windows → website tetap online

  • Tidak ada Error 1033

  • Tidak ada port forwarding


11. Catatan Penting

  • Setup ini aman untuk aplikasi legacy

  • Cocok untuk:

    • Server lokal

    • Lab

    • Produksi skala kecil–menengah

  • Cloudflare menangani:

    • HTTPS

    • DDoS protection

    • DNS


12. Status Akhir

🟢 SETUP SELESAI & STABIL
🟢 LAYAK PRODUKSI
🟢 TIDAK TERGANTUNG CMD

JUDUL POST

    Arsip Dokumentasi Publik