Referensi Perintah Artisan CLI
Paket menyertakan kumpulan perintah Artisan CLI untuk administrasi, otomasi pemindaian, dan pemeliharaan server secara mandiri.
Paket menyertakan kumpulan perintah Artisan CLI untuk administrasi, otomasi pemindaian, dan pemeliharaan server secara mandiri.
1. `pasax:install`#
Wizard instalasi terpandu bilingual (Indonesia default / English via --lang=en): pilihan mode API-only (--api-only), tawaran dashboard Blade murni, cek kelengkapan lingkungan, tawaran migrasi langsung, dan saran langkah berikutnya beserta tautan dokumentasi.
Menginisialisasi paket, mempublikasikan konfigurasi, migrasi database, konfigurasi Nginx hardened WAF, serta menerapkan aturan Apache .htaccess Hardened di folder public/.
php artisan pasax:install [options]
Mekanisme Pembaruan `.htaccess`:#
- Jika
public/.htaccessbelum ada: installer membuat berkas baru dengan rewrite standar Laravel + blok proteksi hardening. - Jika
public/.htaccesssudah ada: installer membuat berkas backup otomatis (.htaccess.backup-YYYYMMDD_HHMMSS) dan menambahkan blok hardening keamanan di bagian bawah berkas tanpa merusak aturan kustom pengguna. - Jika sudah terpasang: installer mendeteksi signature hardening dan tidak menduplikasi aturan.
Mekanisme Penyematan Variabel `.env` & `.env.example`:#
- Installer secara otomatis memeriksa apakah blok konfigurasi
PASAX_*sudah ada di.envdan.env.example. - Jika belum ada, installer menyematkan blok variabel lingkungan lengkap dengan komentar dokumentasi berbahasa Indonesia di akhir berkas.
- Opsi
--without-envdapat digunakan untuk melewati langkah ini jika Anda ingin mengonfigurasi variabel lingkungan secara manual.
Opsi:#
--migrate: Menjalankan migrasi database dan menyemai pengaturan bawaan kepasax_settingssecara otomatis (cocok untuk alur otomatis/CI).--force: Menimpa seluruh berkas konfigurasi, migrasi,nginx.conf, danpublic/.htaccessdengan template bawaan.--lang=: Bahasa wizard (id|en).--api-only: Jalan pintas — API ya, Web tidak (inti + keamanan saja, tanpa halaman/dashboard).--without-api: Melewatkan pemasangan dukungan API.--without-web: Melewatkan pemasangan dashboard web.--with-dashboard/--with-plain/--with-blade: Dashboard Blade murni (semua aplikasi Laravel, tanpa dependensi frontend).--without-nginx: Melewatkan publikasi berkasnginx.conf.--without-htaccess: Melewatkan publikasi atau penambahan aturan padapublic/.htaccess.--with-htaccess: Memaksa pembaruan berkaspublic/.htaccessdengan aturan hardening keamanan.--without-env: Melewatkan penyematan variabel konfigurasi ke berkas.envdan.env.example.
2. `pasax:scan-logs`#
Memindai berkas log web server (Apache/Nginx) secara streaming, mendeteksi serangan yang ditolak di level web server, mengimpor ke tabel log keamanan, atau langsung memblokir IP penyerang zero-tolerance.
php artisan pasax:scan-logs [options]
Opsi:#
--file=*: Berkas log yang diperiksa (dapat ditentukan lebih dari satu kali, misal:--file=/var/log/nginx/access.log --file=/var/log/nginx/access.log.1).--ip=: Memfilter analisis hanya untuk satu alamat IP penyerang tertentu.--since=: Membatasi baris sejak waktu tertentu (misal:"2 days ago"atau"2026-10-01 00:00").--until=: Membatasi baris hingga waktu tertentu.--min-level=: Saring level ancaman minimal (low,medium,high,critical).--top=20: Jumlah IP penyerang teratas yang ditampilkan di tabel ringkasan.--samples: Menampilkan contoh URI request yang mencurigakan untuk setiap IP.--json: Mengeluarkan hasil analisis dalam format JSON murni (cocok untuk pipeline SIEM / alerting).--import: Menyimpan temuan ke tabel databasepasax_logs.--block: Memblokir otomatis IP yang memicu signature zero-tolerance.--dry-run: Mode simulasi: menampilkan apa saja yang akan diblokir/diimpor tanpa mengubah data apa pun di database.
Contoh Skenario:#
# 1. Analisis cepat 24 jam terakhir tanpa ubah database
php artisan pasax:scan-logs --since="24 hours ago" --samples
# 2. Tangkap penyerang dan blokir langsung di database
php artisan pasax:scan-logs --since="6 hours ago" --import --block
3. `pasax:baseline`#
Membuat, mengaudit, atau menghapus baseline hash SHA-256 integritas berkas aplikasi.
php artisan pasax:baseline [options]
Opsi:#
- (tanpa opsi): Membuat baseline baru jika belum ada, atau menampilkan ringkasan baseline yang tersimpan.
--check: Membandingkan kondisi berkas saat ini dengan baseline tanpa menulis apa pun ke disk (mode audit).--prune: Menghapus berkas baseline yang tersimpan distorage/app/security-baseline.json.--force: Membuat baseline baru dan menimpa baseline lama tanpa meminta konfirmasi interaktif.
Contoh Output Audit:#
Baseline SHA-256 dibuat: 2026-10-01 10:00:00 (1.420 berkas)
Status Audit:
- Berkas dimodifikasi : 0
- Berkas hilang : 0
- Berkas baru : 1 (public/uploads/backdoor.php) [PERINGATAN!]
4. `pasax:unblock-ip`#
Membuka blokir alamat IP yang terkena karantina WAF. Berfungsi sebagai Escape Hatch darurat jika administrator tidak sengaja memblokir IP mereka sendiri.
php artisan pasax:unblock-ip [ip] [options]
Argumen & Opsi:#
ip: Alamat IP yang ingin dibuka blokirnya (misal:198.51.100.50).--all: Membuka blokir seluruh IP yang sedang aktif sekaligus.--list: Menampilkan daftar seluruh IP yang sedang diblokir aktif saat ini.
Contoh:#
# Buka blokir satu IP
php artisan pasax:unblock-ip 198.51.100.50
# Lihat siapa saja yang sedang diblokir
php artisan pasax:unblock-ip --list
# Buka seluruh blokir saat insiden darurat
php artisan pasax:unblock-ip --all
5. `pasax:prune-logs`#
Membersihkan riwayat log keamanan yang telah melewati batas retensi waktu.
php artisan pasax:prune-logs [options]
Opsi:#
--days=: Mengesampingkan konfigurasi retensi hari (default:PASAX_LOG_RETENTION_DAYS, biasanya 90 hari).
Contoh:#
# Bersihkan log yang lebih tua dari 30 hari
php artisan pasax:prune-logs --days=30
6. `pasax:purge-injected-data`#
Mendeteksi dan menghapus residu payload pentest atau injeksi yang tersimpan di dalam tabel aplikasi (misal {{7*7}}, .htaccess, ../../../public/).
php artisan pasax:purge-injected-data [options]
Opsi:#
- (tanpa
--force): Menjalankan mode simulasi (hanya mendeteksi dan menampilkan daftar baris data yang tercemar tanpa menghapusnya). --force: Menghapus baris data tercemar yang ditemukan.--marker=*: Marker teks spesifik yang dicari (dapat diulang, default: canary pentest umum).--model=*: Membatasi pencarian pada model Eloquent tertentu.
7. `pasax:upgrade`#
Memperbarui paket via Composer lalu menyinkronkan migrasi, rute kustom, dan tampilan dashboard tanpa menimpa kustomisasi host (sinkronisasi paksa mencadangkan dulu ke *.backup-*).
php artisan pasax:upgrade --check
php artisan pasax:upgrade --force --no-composer --no-migrate
Opsi:#
--check: Hanya memeriksa versi terbaru tanpa mengubah apa pun.--force: Jalankan penuh meskipun sudah versi terbaru.--no-composer: Lewaticomposer update(sinkronisasi aset lokal saja).--no-migrate: Lewatiphp artisan migrate.--sync-routes/--sync-views: Timpa berkas rute/tampilan setelah mencadangkan.
8. `pasax:uninstall`#
Mencopot seluruh jejak paket dari aplikasi host tanpa merusaknya: menghapus 7 tabel Pasax (+ record migrasinya), rute publikasi, middleware, trait User, variabel PASAX_*, mengembalikan .htaccess dari cadangan, menghapus berkas publikasi, dan menjalankan composer remove.
php artisan pasax:uninstall --force
Opsi:#
--force: Jalankan tanpa konfirmasi interaktif.--keep-tables: Pertahankan tabel database.--keep-env: Pertahankan variabel.env.
9. `pasax:secret`#
Membuat atau membuat ulang PASAX_DASHBOARD_SECRET pada berkas .env. Rahasia ini menandatangani token URL dashboard acak per aplikasi; .env.example sengaja dibiarkan kosong agar nilai rahasia tidak ikut ter-commit.
Jalankan sekali setelah deploy atau git clone di server baru, lalu bersihkan cache konfigurasi:
php artisan pasax:secret
php artisan config:clear
Opsi:#
--force: Buat ulang (regenerate) meskipun secret sudah terisi. Token dashboard lama otomatis ditandatangani ulang saat pengguna membuka/pasax(tidak ada 404).--show: Tampilkan nilai secret aktif di keluaran terminal.--path=: Berkas env tujuan selain.env(mis..env.production).
10. `pasax:deploy`#
Perintah satu langkah untuk otomasi deployment di server VPS / produksi atau dalam pipeline CI/CD.
Perintah ini dirancang agar aman dijalankan berulang kali (idempotent) dan hanya berfokus pada tabel khusus paket Pasax (pasax_*), sehingga tidak akan menduplikasi data (no double data) dan sama sekali tidak menyentuh tabel pengguna (users) atau data aplikasi utama Anda.
php artisan pasax:deploy [options]
Alur Eksekusi Otomatis:#
- Memastikan
PASAX_DASHBOARD_SECRET:- Membaca berkas
.envdan memastikan barisPASAX_DASHBOARD_SECRETterisi string rahasia 48 karakter acak kriptografis. - Jika sudah terisi, nilai dipertahankan agar token sesi aktif tidak terputus (kecuali diberikan
--force-secret). - Memastikan berkas
.env.examplememiliki baris kosongPASAX_DASHBOARD_SECRET=agar aman saat di-clone ke server lain.
- Membaca berkas
- Sinkronisasi Migrasi Khusus Pasax:
- Mempublikasikan berkas migrasi paket dan mengeksekusi
migrate --force.
- Mempublikasikan berkas migrasi paket dan mengeksekusi
- Seeder Pengaturan Bawaan (
PasaxDefaultSettingsSeeder):- Menanam pengaturan keamanan bawaan ke tabel
pasax_settingssecara aman tanpa menduplikasi data.
- Menanam pengaturan keamanan bawaan ke tabel
- Pembersihan Cache Framework:
- Menjalankan penyegaran cache framework (
config:clear,route:clear,view:clear) dan membersihkan cache versi paket.
- Menjalankan penyegaran cache framework (
Opsi:#
- (tanpa opsi): Deployment standar aman (cek secret, migrasi pasax, seeder bawaan tanpa duplikasi data, dan bersihkan cache).
--reset-settings: Menyetel ulang seluruh pengaturan di tabelpasax_settingskembali ke nilai bawaan pabrik tanpa menghapus riwayat log atau blokir.--reset-tables: Mengosongkan (truncate/delete) seluruh tabel khusus paket Pasax untuk memulai status bersih di VPS, tetap membiarkan tabel host sepertiusers100% aman.--force-secret: Memaksa membuat ulang nilaiPASAX_DASHBOARD_SECRETdi berkas.env.--no-migrate: Melewati eksekusi migrasi database (misalnya jika migrasi dijalankan terpisah di alur CI/CD).--no-cache-clear: Melewati pembersihan cache framework.--force: Menjalankan proses tanpa meminta konfirmasi interaktif (wajib untuk script otomatis / CI/CD).--env-path=: Menentukan lokasi berkas.envkhusus (default:.env).
Contoh Penggunaan di VPS:#
# 1. Jalankan rutin setiap deploy ulang di VPS
php artisan pasax:deploy --force
# 2. Setel ulang pengaturan WAF ke bawaan jika ada anomali konfigurasi
php artisan pasax:deploy --reset-settings --force
# 3. Mulai ulang tabel Pasax dari nol di staging tanpa merusak data user host
php artisan pasax:deploy --reset-tables --force