Sebelum memulakan lab ini, pastikan anda sudah:
- ✅ EC2 instance baru (Ubuntu 24.04)
- ✅ CloudPanel installed di server (port 8443 dibuka)
- ✅ Domain aktif di Cloudflare
- ✅ Cloudflare account dengan domain verified
- ✅ Boleh SSH/SSM ke EC2 instance
Nota: Lab ini memerlukan EC2 instance yang BERBEZA dari lab-lab sebelumnya untuk avoid conflicts dengan Nginx configurations.
Dalam lab ini, anda akan belajar:
- Memahami apa itu Cloudflare Tunnel dan kegunaannya
- Install CloudPanel di EC2 instance
- Install Cloudflare Tunnel (cloudflared) di server
- Authenticate dengan Cloudflare account
- Buat tunnel untuk expose CloudPanel admin panel
- Configure DNS untuk subdomain cp.domain.com
- Access CloudPanel securely melalui tunnel
- Understand security benefits dari Cloudflare Tunnel
Cloudflare Tunnel (dahulunya Argo Tunnel) membenarkan anda expose aplikasi web secara selamat tanpa perlu:
- ❌ Buka ports di firewall (contoh: port 8443)
- ❌ Public IP address accessible
- ❌ Configure complex security rules
Traditional Setup:
Internet → Public IP:8443 → Security Group (port 8443 open) → CloudPanel
Risiko:
⚠️ Port 8443 terdedah ke internet⚠️ Potential brute force attacks⚠️ Need manage firewall rules⚠️ Server IP exposed
Cloudflare Tunnel:
Internet → Cloudflare Edge → Encrypted Tunnel → CloudPanel (localhost:8443)
Kelebihan:
- ✅ Tiada inbound ports dibuka
- ✅ Zero-trust security
- ✅ DDoS protection at edge
- ✅ Server IP hidden
- ✅ Automatic SSL/TLS
- ✅ Access controls built-in
1. Server runs cloudflared daemon
↓
2. cloudflared buat outbound connection ke Cloudflare
↓
3. Cloudflare create secure tunnel
↓
4. User access: cp.domain.com
↓
5. Request route melalui Cloudflare Edge
↓
6. Cloudflare forward through tunnel
↓
7. cloudflared proxy ke localhost:8443 (CloudPanel)
↓
8. Response balik through tunnel
↓
9. User dapat content (selamat!)
Key point: Tiada inbound connections ke server. Semua melalui outbound tunnel yang server initiate!
# Melalui SSM (disyorkan)
aws ssm start-session --target i-xxxxxxxxxxxxx
# Atau melalui SSH
ssh -i your-key.pem ubuntu@your-ec2-ip# Update package list
sudo apt update
# Upgrade installed packages
sudo apt upgrade -yIkuti langkah pemasangan di : https://www.cloudpanel.io/docs/v2/getting-started/other/
Proses installation akan mengambil masa 5-10 minit.
Expected output:
Installing CloudPanel...
[Progress bars...]
Installation completed successfully!
CloudPanel Admin URL: https://YOUR_SERVER_IP:8443
- Pergi ke https://dash.cloudflare.com
- Login dengan account anda
- Pilih domain yang anda nak guna
- Di dashboard, click Zero Trust di sidebar kiri
- Atau pergi direct ke: https://one.dash.cloudflare.com
Nota: Jika first time guna Zero Trust, anda perlu setup team name (boleh guna nama sendiri atau company).
- Di Zero Trust dashboard, expand Networks di sidebar
- Click Tunnels
- Anda akan nampak page "Create a tunnel"
- Click butang Create a tunnel
- Select tunnel type: Cloudflared
- Click Next
- Tunnel name:
cloudpanel - Click Save tunnel
Tunnel akan dibuat dan anda akan dapat installation instructions.
Selepas create tunnel, Cloudflare akan show installation steps untuk different OS.
Pilih: Debian (untuk Ubuntu)
Cloudflare akan provide commands yang dah include dengan tunnel token. Contoh:
# Example commands (your commands will be different!)
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb
sudo cloudflared service install <YOUR-UNIQUE-TOKEN-HERE>PENTING: Guna commands yang Cloudflare provide untuk anda, BUKAN commands di atas! Setiap tunnel ada unique token.
Di server terminal, run commands satu persatu:
Command 1: Download cloudflared
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.debCommand 2: Install package
sudo dpkg -i cloudflared.debExpected output:
Selecting previously unselected package cloudflared.
Unpacking cloudflared...
Setting up cloudflared...
Command 3: Install tunnel service dengan token
sudo cloudflared service install <YOUR-TOKEN>Ganti <YOUR-TOKEN> dengan token yang Cloudflare provide!
Expected output:
Successfully installed cloudflared service
Balik ke Cloudflare Dashboard, anda akan nampak:
Connector Status: HEALTHY
● Connected
✅ Tunnel successfully connected!
Click Next untuk proceed.
Di Cloudflare Dashboard, section "Route tunnel":
- Subdomain:
cp - Domain: Pilih domain anda dari dropdown
- Path: (leave blank)
- Type:
HTTPS - URL:
localhost:8443
Full hostname akan jadi: cp.domain.com
Click Additional application settings untuk expand:
- Scroll ke TLS Settings
- Enable No TLS Verify (toggle ON)
PENTING: Ini perlu kerana CloudPanel guna self-signed certificate.
Click Save tunnel
Expected: Route configured successfully!
- Di Cloudflare Dashboard, pergi ke DNS tab
- Anda akan nampak CNAME record baru:
Type Name Content Proxy
CNAME cp <TUNNEL-ID>.cfargotunnel.com Proxied (orange cloud)
- Buka browser baru
- Pergi ke:
https://cp.domain.com
Ganti dengan subdomain anda!
Expected result:
- ✅ CloudPanel login page loaded
- ✅ Padlock icon 🔒 (HTTPS dengan Cloudflare certificate)
- ✅ Tiada security warnings
- ✅ Fast loading
Masukkan credentials:
- Username: admin
- Password: (dari
sudo clpctl admin:showtadi)
Click Login
Expected: CloudPanel dashboard loaded successfully!