Kembali ke Series Homelab dari Nol
Homelab

Cloudflare Tunnel: Akses Homelab dari Mana Aja Tanpa Port Forwarding

Panduan lengkap setup Cloudflare Tunnel untuk mengakses homelab dari mana saja. Aman, gratis, dan tidak butuh port forwarding.

A
Alif Afriza Penulis
· · 5 menit baca
Cloudflare Tunnel: Akses Homelab dari Mana Aja Tanpa Port Forwarding

Cloudflare Tunnel adalah cara paling aman untuk mengakses homelab kamu dari mana saja. Tidak perlu port forwarding, tidak perlu VPN, dan yang terpenting, IP asli server kamu tidak terekspos ke internet.

Mengapa Cloudflare Tunnel?

Masalah Port Forwarding Tradisional

Port forwarding adalah cara lama untuk mengakses server dari internet:

[Internet] → [Port Forward di Router] → [Server]

Masalah:

  • IP server terekspos ke internet
  • Rentan serangan brute force
  • Butuh dynamic DNS jika IP berubah
  • Port yang terbuka = celah keamanan

Solusi Cloudflare Tunnel

[Internet] → [Cloudflare Edge] → [Tunnel] → [Server]

Keunggulan:

  • IP server tidak terekspos
  • Tidak perlu port forwarding
  • HTTPS otomatis
  • DDoS protection dari Cloudflare
  • Akses dari mana saja
  • Gratis untuk usage normal

Persiapan

1. Akun Cloudflare

Pastikan kamu sudah punya akun Cloudflare dan domain yang terdaftar.

2. Install Cloudflare di Server

# Debian/Ubuntu
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update && sudo apt install cloudflared -y

# Atau download langsung
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

3. Login ke Cloudflare

# Login (akan buka browser)
cloudflared tunnel login

Browser akan terbuka, pilih domain yang ingin digunakan. File certificate akan tersimpan di ~/.cloudflared/cert.pem.

Membuat Tunnel

Step 1: Buat Tunnel

# Buat tunnel baru
cloudflared tunnel create myhomelab

# Catat Tunnel ID yang muncul
# Contoh: a1b2c3d4-e5f6-7890-abcd-ef1234567890

Step 2: Konfigurasi Tunnel

Buat file konfigurasi:

# Buat direktori
mkdir -p ~/.cloudflared

# Buat config file
nano ~/.cloudflared/config.yml
# ~/.cloudflared/config.yml
tunnel: your-tunnel-id
credentials-file: /root/.cloudflared/your-tunnel-id.json

ingress:
  # Website utama
  - hostname: afrizalab.my.id
    service: http://localhost:80
  
  # Blog ByteNesia
  - hostname: bytenesia.afrizalab.my.id
    service: http://localhost:80
  
  # Nextcloud
  - hostname: nextcloud.afrizalab.my.id
    service: http://localhost:8080
  
  # Pi-hole Admin
  - hostname: pihole.afrizalab.my.id
    service: http://localhost:8053
  
  # SSH Access
  - hostname: ssh.afrizalab.my.id
    service: ssh://localhost:22
  
  # Catch-all rule (wajib di paling akhir)
  - service: http_status:404

Step 3: Daftarkan Route DNS

# Daftarkan route DNS untuk tunnel
cloudflared tunnel route dns myhomelab afrizalab.my.id
cloudflared tunnel route dns myhomelab bytenesia.afrizalab.my.id
cloudflared tunnel route dns myhomelab nextcloud.afrizalab.my.id
cloudflared tunnel route dns myhomelab pihole.afrizalab.my.id
cloudflared tunnel route dns myhomelab ssh.afrizalab.my.id

Step 4: Jalankan Tunnel

# Jalankan tunnel (foreground)
cloudflared tunnel run myhomelab

# Atau jalankan sebagai service
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

Setup sebagai Systemd Service

Step 1: Install Service

# Install sebagai system service
sudo cloudflared service install

# Enable service agar jalan saat boot
sudo systemctl enable cloudflared

# Start service
sudo systemctl start cloudflared

# Cek status
sudo systemctl status cloudflared

Step 2: Konfigurasi Service

# Edit service configuration
sudo nano /etc/systemd/system/cloudflared.service
[Unit]
Description=Cloudflare Tunnel
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/cloudflared tunnel run myhomelab
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
# Reload systemd
sudo systemctl daemon-reload

# Restart service
sudo systemctl restart cloudflared

Cloudflare Access (Zero Trust)

Keamanan Tambahan

Cloudflare Access memberikan lapisan keamanan tambahan:

  1. Login ke Cloudflare Zero Trust Dashboard
  2. Pilih Access → Applications
  3. Klik “Add an application”
  4. Pilih “Self-hosted”
  5. Isi konfigurasi:
    • Application name: Homelab
    • Session duration: 24 hours
    • Application domain: your-domain.com

Setup Policy

  1. Pilih Access → Policies
  2. Klik “Add policy”
  3. Konfigurasi:
    • Policy name: Allow Me
    • Action: Allow
    • Include: Emails ending in @gmail.com (email kamu)

Hasil

Sekarang saat mengakses homelab dari internet, kamu akan diminta login dulu. Hanya email yang sudah didaftarkan yang bisa mengakses.

Monitoring Tunnel

Cek Status Tunnel

# Cek status
cloudflared tunnel info myhomelab

# Cek logs
sudo journalctl -u cloudflared -f

# Atau cek logs langsung
sudo tail -f /var/log/cloudflared/cloudflared.log

Metrics

Cloudflare dashboard menampilkan:

  • Total requests
  • Bandwidth usage
  • Error rates
  • Latency

Troubleshooting

1. Tunnel Tidak Bisa Connect

# Cek credentials
ls -la ~/.cloudflared/*.json

# Test connection
cloudflared tunnel run --url http://localhost:80 myhomelab

# Cek DNS
dig +short your-domain.com

2. Service Tidak Start

# Cek logs
sudo journalctl -u cloudflared -n 50

# Cek apakah port sudah terpakai
sudo netstat -tlnp | grep :80

# Restart service
sudo systemctl restart cloudflared

3. 502 Bad Gateway

# Pastikan service lokal jalan
curl http://localhost:80

# Cek apakah port benar
sudo netstat -tlnp

# Test tunnel langsung
cloudflared tunnel --url http://localhost:80 run myhomelab

Studi Kasus: Homelab yang Aksesible dari Mana Saja

Kebutuhan:

  • Akses website blog dari internet
  • Akses Nextcloud dari HP
  • Akses Pi-hole admin dari luar rumah
  • SSH access untuk maintenance

Konfigurasi:

  • Tunnel: myhomelab
  • Domain: afrizalab.my.id
  • Routes:
    • afrizalab.my.id → localhost:80 (Nginx)
    • nextcloud.afrizalab.my.id → localhost:8080
    • pihole.afrizalab.my.id → localhost:8053
    • ssh.afrizalab.my.id → localhost:22

Hasil:

  • Website bisa diakses dari mana saja
  • Nextcloud bisa diakses dari HP tanpa VPN
  • Pi-hole admin bisa diakses dari luar
  • SSH bisa diakses dari mana saja (dengan Cloudflare Access)

Best Practices

1. Gunakan Cloudflare Access

Selalu aktifkan Cloudflare Access untuk layanan sensitif. Ini mencegah akses unauthorized.

2. Backup Tunnel Credentials

# Backup credentials
cp -r ~/.cloudflared/ ~/backup/cloudflared/

# Simpan di tempat aman (cloud storage, dll)

3. Monitor Usage

Pantau usage di Cloudflare dashboard untuk mendeteksi aktivitas mencurigakan.

4. Gunakan WARP untuk Akses Pribadi

Cloudflare WARP bisa digunakan untuk akses pribadi tanpa Exposure ke internet:

# Install WARP
curl -fsSL https://pkg.cloudflareclient.com/install.sh | sudo bash

# Connect
warp-cli connect

Kesimpulan

Cloudflare Tunnel adalah solusi terbaik untuk mengakses homelab dari mana saja. Tidak perlu port forwarding, tidak perlu VPN, dan yang terpenting, IP server kamu tetap aman. Dengan Cloudflare Access, kamu bisa menambahkan lapisan keamanan ekstra untuk melindungi homelab dari akses unauthorized.

Open for Contributors

Ide kamu layak dibaca ribuan orang.

ByteNesia dibangun untuk semua orang. Kalau kamu punya pengalaman, tutorial, atau opini tentang teknologi, tulis dan bagikan lewat sini. Nama kamu akan tercantum sebagai kontributor.

Tulis apa saja: review tools, tutorial homelab, tips security, atau cerita pengalaman tech kamu.

Diskusi & Komentar