Sebelum menyentuh FrankenPHP, kalian perlu menguasai PHP dasar (Composer, CLI), konsep web server & reverse proxy, serta HTTP request/response. Di episode ini kalian juga menyiapkan PHP 8.5 ZTS, Composer, Docker, menginstall FrankenPHP 1.12.x, dan memverifikasi seluruh environment siap dipakai sepanjang series.

Selamat datang di series Belajar FrankenPHP! Series ini akan membawa kalian menguasai FrankenPHP — aplikasi server PHP modern berbasis Caddy yang menggabungkan HTTP/2/HTTP/3, automatic HTTPS, dan Worker Mode — untuk menjalankan aplikasi PHP (Laravel, Symfony, WordPress) dengan performa tinggi tanpa kehilangan kemudahan PHP. Total ada 25 episode yang tersusun dalam enam fase, dari fondasi konsep sampai production readiness.
Sebelum menjalankan frankenphp run, ada skill dasar dan perangkat yang wajib kalian siapkan. Mengapa prasyarat ini penting? Karena FrankenPHP bukan sekadar web server — ia adalah pengganti tumpukan Nginx + PHP-FPM dalam satu binary. Kalian akan berhadapan langsung dengan konsep web server, protokol HTTP, dan PHP yang berjalan dalam mode thread-safe (ZTS). Tanpa memahami lapisan-lapisan ini, kalian akan kesulitan mendiagnosis mengapa worker crash, kenapa session hilang, atau mengapa konfigurasi TLS tidak bekerja.
Episode 0 ini adalah peta jalan kalian: kita akan memastikan skill dasar terpenuhi, menyiapkan PHP 8.5 + Composer + Docker, menginstall FrankenPHP 1.12.x, lalu memverifikasi environment untuk pertama kali. Setelah episode ini selesai, seluruh series bisa diikuti dengan nyaman.
FrankenPHP menjalankan PHP yang sama dengan yang kalian kenal — namun sebagai thread di dalam satu proses, bukan sebagai proses terpisah seperti PHP-FPM. Kalian wajib nyaman menulis PHP, memahami composer.json, dan memakai composer install untuk manajemen dependensi:
php -v
composer --versionFrankenPHP menggantikan web server dan PHP-FPM sekaligus. Kalian perlu memahami peran web server (melayani static files, routing), PHP-FPM (mengeksekusi skrip PHP), dan reverse proxy (meneruskan request ke backend). Episode 9 akan mendalami reverse proxy, tetapi pahamilah dulu arah alurnya:
FrankenPHP adalah server HTTP penuh. Kalian wajib paham metode HTTP (GET, POST, PUT, DELETE), status codes (200, 404, 500), header (Cache-Control, Content-Type), dan keep-alive — koneksi TCP yang dipakai ulang untuk banyak request. Konsep keep-alive inilah yang menjadi fondasi Worker Mode: aplikasi "dipanaskan" sekali lalu melayani ribuan request dalam satu proses.
FrankenPHP menjalankan PHP yang dikompilasi dengan ZTS (Zend Thread Safety). Standalone binary resmi sudah berisi PHP 8.5, jadi untuk sebagian besar kasus kalian tidak perlu menginstall PHP terpisah — cukup binary FrankenPHP. Namun untuk mengembangkan aplikasi, kalian tetap butuh PHP + Composer lokal:
sudo apt install php-cli php-zip php-curl # Debian/Ubuntu
brew install php composer # macOS
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composerMulai episode 6 kita akan menjalankan Laravel/Symfony via image resmi dunglas/frankenphp. Install Docker terlebih dahulu:
docker --version
docker compose versionCara tercepat adalah install script resmi. Untuk Linux dan macOS:
curl https://frankenphp.dev/install.sh | shUntuk Windows (didukung penuh sejak 1.12.0), jalankan di PowerShell:
irm https://frankenphp.dev/install.ps1 | iexAlternatif lain: Homebrew (brew install dunglas/frankenphp/frankenphp), paket .deb/.rpm/.apk dari maintainer resmi, atau image Docker dunglas/frankenphp. Kita bahas detail semua metode di episode 3.
Note
Standalone binary resmi sudah membundel PHP 8.5 sehingga tanpa PHP terpisah pun kalian bisa langsung menjalankan aplikasi dengan frankenphp php-server. PHP + Composer lokal hanya dibutuhkan saat menulis kode atau menjalankan composer install.
Sebelum lanjut ke episode 1, jalankan verifikasi menyeluruh:
frankenphp version
frankenphp php-cli -vfrankenphp version harus mencetak versi 1.12.x (idealnya 1.12.7, rilis 6 Agustus 2026) beserta versi Caddy (2.11.x) dan PHP yang dibundel. frankenphp php-cli -v menampilkan versi PHP 8.5 — ini membuktikan interpreter PHP berjalan di dalam binary.
Sekarang uji server pertama. Buat direktori lab dan satu file PHP:
mkdir -p frankenphp-lab/public
echo '<?php echo "Hello FrankenPHP";' > frankenphp-lab/public/index.php
cd frankenphp-lab
frankenphp php-serverBuka http://localhost di browser (atau https://localhost — FrankenPHP membuat sertifikat lokal otomatis). Kalian akan melihat Hello FrankenPHP. Tekan Ctrl+C untuk menghentikan server.
Warning
Gunakan https://localhost, bukan https://127.0.0.1. FrankenPHP menerbitkan sertifikat internal untuk hostname localhost secara default; 127.0.0.1 membutuhkan konfigurasi tambahan (kita bahas di episode 10).
Agar contoh di series ini langsung bisa dijalankan, susun proyek dengan struktur sederhana:
frankenphp-lab/
public/
index.php
Caddyfile # dibuat mulai episode 3
Dockerfile # dibuat mulai episode 6Rangkuman yang sudah kalian siapkan di episode 0:
frankenphp-lab/public/index.php dan uji frankenphp php-server berhasil.frankenphp version dan frankenphp php-cli -v berjalan tanpa error.Jika ada yang belum terpenuhi, berhenti dulu dan lengkapi sebelum melanjutkan. Perjalanan 24 episode ke depan akan jauh lebih lancar dengan pijakan yang kuat ini.
Inti yang harus dibawa pulang:
frankenphp version dan uji hello world pertama.Di episode 1 selanjutnya kita akan membahas sejarah, latar belakang, dan mengapa kalian membutuhkan FrankenPHP — dari masalah PHP-FPM yang mem-bootstrap aplikasi ulang setiap request, munculnya app server modern seperti RoadRunner dan Swoole, hingga alasan FrankenPHP menjadi pilihan utama pada 2026 dengan dukungan Windows penuh dan PHP 8.5. Pastikan environment kalian sudah siap, karena perjalanan Belajar FrankenPHP baru saja dimulai!