Panduan Deploy Jekyll: Menggunakan Docker dan Cloudflare Tunnel
Punya project Jekyll di lokal dan ingin mempublikasikannya ke internet tanpa pusing urusan port forwarding atau konfigurasi Nginx yang ribet?
Kombinasi Docker dan Cloudflare Tunnel adalah solusi “set and forget” yang sangat aman. Kamu tidak perlu membuka port di router, dan situsmu akan terlindungi oleh infrastruktur Cloudflare.
Persiapan
Sebelum mulai, pastikan kamu sudah menginstal:
- Docker & Docker Compose
- Akun Cloudflare dengan domain yang sudah aktif.
1. Struktur File
Pastikan struktur direktori project Jekyll kamu terlihat seperti ini:
1
2
3
4
5
6
my-jekyll-site/
├── _posts/
├── _config.yml
├── Gemfile
├── Dockerfile
└── docker-compose.yml
2. Membuat Dockerfile
Kita akan menggunakan Dockerfile yang efisien untuk melakukan build Jekyll dan menyajikannya.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Gunakan image ruby yang ringan
FROM ruby:3.2-slim
# Install dependencies sistem
RUN apt-get update && apt-get install -y \
build-essential \
git \
&& rm -rf /var/lib/apt/lists/*
# Set working directory
WORKDIR /srv/jekyll
# Copy Gemfile
COPY Gemfile* ./
RUN bundle install
# Copy seluruh project
COPY . .
# Jalankan Jekyll secara default
CMD ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0"]
3. Konfigurasi Docker Compose
Di sini kita akan menjalankan dua layanan: jekyll (aplikasi kita) dan tunnel (jembatan ke internet).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: '3.8'
services:
jekyll:
build: .
volumes:
- .:/srv/jekyll
ports:
- "4000:4000"
tunnel:
image: cloudflare/cloudflared:latest
restart: always
command: tunnel --no-autoupdate run --token ${CF_TUNNEL_TOKEN}
depends_on:
- jekyll
Catatan:
${CF_TUNNEL_TOKEN}akan kita ambil dari dashboard Cloudflare.
4. Setup Cloudflare Tunnel
- Buka Cloudflare Zero Trust Dashboard.
- Pergi ke Networks > Tunnels > Create a Tunnel.
- Beri nama tunnel kamu (misal:
jekyll-home-server) dan Save. - Di bagian Install connector, pilih Docker. Kamu akan melihat kode token yang panjang. Ambil bagian tokennya saja.
- Di bagian Route, masukkan:
- Public Hostname:
blog.domainkamu.com - Service Type:
HTTP - URL:
jekyll:4000(Gunakan nama service docker, bukan localhost).
- Public Hostname:
5. Menjalankan Project
Buat file .env di folder yang sama untuk menyimpan token agar aman:
1
CF_TUNNEL_TOKEN=masukkan_token_cloudflare_disini
Sekarang, jalankan perintah sakti:
1
docker-compose up -d
Kesimpulan
Situs Jekyll kamu sekarang sudah online! Docker menangani lingkungan Ruby yang seringkali merepotkan, sementara Cloudflare Tunnel menangani keamanan dan akses publik tanpa perlu mengekspos IP publik rumah/server kamu.
