Sebuah platform Capture The Flag (CTF) yang dibangun dengan Laravel, Filament, dan Livewire. Didesain untuk komunitas, universitas, atau siapa saja yang ingin menyelenggarakan kompetisi keamanan siber.
- 👨💻 Multi-User: Mendukung banyak pengguna yang bisa mendaftar dan berpartisipasi.
- 🛡️ Admin Dashboard: Panel admin yang powerful dibangun dengan Filament, memudahkan manajemen soal, user, kategori, dan submission.
- 🧩 Manajemen Soal: CRUD (Create, Read, Update, Delete) lengkap untuk soal CTF dengan kategori, poin, dan tingkat kesulitan.
- 💯 Sistem Poin: Poin otomatis diberikan kepada user yang berhasil menyelesaikan soal.
- 📊 Leaderboard: Halaman peringkat untuk melihat siapa yang unggul berdasarkan poin atau jumlah soal yang diselesaikan.
- 🎨 Tampilan Modern: Antarmuka yang bersih dan responsif menggunakan Livewire dan Tailwind CSS.
Berikut adalah panduan untuk menginstal proyek ini di lingkungan produksi.
Metode ini memberikan Anda kontrol penuh dan performa terbaik. Pastikan VPS Anda sudah terinstal PHP 8.2+, Composer 2, Git, dan Database Server (MySQL/MariaDB).
-
Clone Repositori Buka terminal di VPS Anda, masuk ke direktori web Anda (misal:
/var/www), lalu clone repositori ini.git clone [https://github.com/oxydaid/ctf-platform.git](https://github.com/oxydaid/ctf-platform.git) cd ctf-platform -
Install Dependencies Install semua package PHP yang dibutuhkan menggunakan Composer.
composer install --no-dev --optimize-autoloader
-
Konfigurasi Environment Salin file
.env.examplemenjadi.envdan generate kunci aplikasi.cp .env.example .env php artisan key:generate
-
Edit File
.envBuka file.envdengan editor teks (sepertinanoatauvim) dan sesuaikan bagian-bagian penting, terutama koneksi database.APP_NAME="CTF Platform" APP_ENV=production APP_DEBUG=false APP_URL=https://domain-anda.com DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database_anda DB_USERNAME=user_database_anda DB_PASSWORD='password_database_anda'
-
Jalankan Migrasi & Seeder Perintah ini akan membuat semua tabel yang dibutuhkan di database dan mengisi data awal (jika ada seeder).
php artisan migrate --seed
-
Konfigurasi Web Server Pastikan document root pada konfigurasi Nginx atau Apache Anda mengarah ke direktori
/public. Jangan lupa atur kepemilikan dan perizinan file agar server bisa menulis ke folderstoragedanbootstrap/cache.
Metode ini bisa sedikit lebih rumit karena keterbatasan akses.
-
Siapkan File Proyek
- Di komputer lokal Anda, jalankan
composer install --no-devuntuk menginstal dependensi. - Kompres seluruh folder proyek Anda menjadi satu file
.zip. Pastikan foldervendorikut terkompres.
- Di komputer lokal Anda, jalankan
-
Upload & Ekstrak
- Login ke cPanel, buka File Manager.
- Upload file
.zipke direktori root Anda (misal: di luarpublic_html). - Ekstrak file
.ziptersebut.
-
Pindahkan Folder
public- Masuk ke folder hasil ekstraksi.
- Pindahkan semua isi dari folder
publicke dalam folderpublic_html.
-
Edit
index.php- Di dalam
public_html, buka fileindex.php. - Ubah dua baris path berikut agar mengarah ke folder proyek Anda yang berada di luar
public_html.
// Ganti '../bootstrap' menjadi '/home/usercpanel/nama_folder_proyek/bootstrap' require __DIR__.'/../bootstrap/autoload.php'; // Ganti '../bootstrap' menjadi '/home/usercpanel/nama_folder_proyek/bootstrap' $app = require_once __DIR__.'/../bootstrap/app.php';
- Di dalam
-
Buat Database
- Di cPanel, buka "MySQL® Database Wizard".
- Ikuti langkah-langkah untuk membuat database baru, user database, dan memberikan semua hak akses (All Privileges) kepada user tersebut. Catat nama database, username, dan password.
-
Edit File
.env- Kembali ke File Manager, masuk ke folder proyek Anda.
- Salin
.env.examplemenjadi.env. - Edit file
.envdan masukkan informasi database yang baru saja Anda buat.
-
Jalankan Migrasi
- Cari fitur "Terminal" di cPanel.
- Masuk ke direktori proyek Anda (
cd nama_folder_proyek). - Jalankan perintah migrasi:
php artisan migrate --seed
Jika Terminal tidak tersedia, Anda mungkin perlu mengimpor database secara manual melalui phpMyAdmin.
Setelah menjalankan perintah migrate --seed, sebuah akun Super Admin akan dibuat secara otomatis. Gunakan kredensial berikut untuk login pertama kali.
- URL:
/admin - Email:
admin@gmail.com - Password:
password
PENTING: Demi keamanan, segera ganti password default setelah Anda berhasil login untuk pertama kalinya!