Pada artikel ini, kita akan belajar bagaimana menggunakan Docker dan Docker Compose untuk menjalankan layanan Nginx yang dipublikasikan menggunakan Cloudflare Tunnel tanpa memerlukan IP publik. Metode ini sangat berguna untuk mengakses website Anda secara aman di internet tanpa harus membuka port di router atau menggunakan IP statis.
Apa itu Docker dan Docker Compose?
Docker adalah platform yang memungkinkan kita menjalankan aplikasi dalam wadah (container) yang terisolasi. Docker Compose adalah alat yang memungkinkan kita mengatur dan menjalankan multi-container Docker dengan mudah menggunakan file konfigurasi YAML.
Apa itu Cloudflare Tunnel?
Cloudflare Tunnel (dulu dikenal sebagai Argo Tunnel) memungkinkan Anda membuka akses ke server lokal Anda melalui jaringan Cloudflare tanpa perlu membuka port ke publik atau memiliki IP publik. Tunnel mengenkripsi lalu lintas dan memudahkan akses website secara aman.
Langkah-Langkah Setup Docker, Nginx, dan Cloudflare Tunnel
1. Persiapan Docker dan Docker Compose
Pastikan Docker dan Docker Compose sudah terinstall di sistem Anda. Anda bisa cek dengan perintah:
docker --version
docker-compose --versionJika belum terinstall, silakan instal Docker dari situs resmi Docker sesuai sistem operasi Anda.
2. Membuat Dockerfile Nginx
Buat direktori proyek dan di dalamnya buat file bernama Dockerfile dengan isi berikut:
FROM nginx:latest
COPY ./html /usr/share/nginx/htmlBuat folder bernama html yang berisi file index.html sebagai halaman website Anda.
3. Membuat docker-compose.yml
Buat file docker-compose.yml di direktori proyek dengan isi berikut:
version: '3'
services:
web:
build: .
ports:
- "8080:80"
restart: alwaysLayanan ini akan menjalankan Nginx dan memetakan port 8080 pada host ke port 80 di container.
4. Mengatur Cloudflare Tunnel
- Daftar dan masuk ke akun Cloudflare Anda. - Tambahkan domain Anda ke Cloudflare dan pastikan DNS sudah diatur. - Install Cloudflare Tunnel (cloudflared) pada mesin lokal Anda dengan mengikuti dokumentasi resmi.
Kemudian jalankan perintah untuk membuat tunnel dan menghubungkan ke layanan Nginx:
cloudflared tunnel create mytunnel
Setelah membuat tunnel, konfigurasikan tunnel dengan file config.yml misalnya:
tunnel: mytunnel
credentials-file: /root/.cloudflared/mytunnel.json
ingress:
- hostname: yourwebsite.example.com
service: http://localhost:8080
- service: http_status:404Ganti yourwebsite.example.com dengan domain yang sudah Anda daftarkan di Cloudflare.
Mulai tunnel dengan perintah:
cloudflared tunnel run mytunnel5. Menjalankan aplikasi
Jalankan aplikasi web Nginx Anda dengan Docker Compose:
docker-compose up -dSekarang, website Anda dapat diakses melalui domain yang Anda atur di Cloudflare tanpa IP publik maupun konfigurasi port forwarding.
Kesimpulan
Dengan menggunakan Docker, Nginx, dan Cloudflare Tunnel, Anda dapat mempublikasikan website secara mudah, aman, dan tanpa perlu IP publik. Konfigurasi ini sangat cocok untuk pengembangan lokal yang ingin diakses secara remote tanpa repot konfigurasi jaringan rumit.