Tutorial to setup Mikrotik router to use Cloudflare DNS over HTTPS (DoH) resolver. Learn more

Publikasi Website Tanpa IP Publik dengan Docker, Nginx dan Cloudflare Tunnel

/ Software

Publikasi Website Tanpa IP Publik dengan Docker, Nginx dan Cloudflare Tunnel

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 --version

Jika 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/html

Buat 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: always

Layanan 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:404

Ganti yourwebsite.example.com dengan domain yang sudah Anda daftarkan di Cloudflare.

Mulai tunnel dengan perintah:

cloudflared tunnel run mytunnel

5. Menjalankan aplikasi

Jalankan aplikasi web Nginx Anda dengan Docker Compose:

docker-compose up -d

Sekarang, 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.

Subscribe to our newsletter

Get the latest news from us. No spam, we promise.

Featured Articles

Here’s what we’ve been up to recently.