DEV Community

Hudaipi Wardani
Hudaipi Wardani

Posted on

Deep Dive: Full Stack Setup Radius Billing with Docker

Menjalankan PHPNuxBill di atas Docker memerlukan ketelitian dalam sinkronisasi antara kontainer aplikasi dan database. Berikut adalah langkah-langkah teknis rincinya.

πŸ“¦ 1. Struktur Direktori & Volume

Pastikan folder proyek kamu bersih dari file log database yang nyasar.
~/radius-lab/
β”œβ”€β”€ nuxartbil/ # Source code aplikasi (PHP)
β”œβ”€β”€ db_data/ # Persistent storage MariaDB (Otomatis)
└── docker-compose.yml # Orkestrasi kontainer

πŸ—οΈ 2. Inisialisasi Database (Step-by-Step)

Langkah ini dilakukan setelah kontainer MariaDB berjalan (up -d). Jangan lakukan import jika database belum dibuat.

A. Pembuatan "Wadah" Database

Masuk ke sistem MariaDB dan buat database bar
docker exec -it lab-mariadb mariadb -u root -prootpass -e "CREATE DATABASE nuxartbill;"

B. Import Skema Tabel Aplikasi

Gunakan operator < untuk menyuntikkan file SQL dari laptop ke dalam kontainer.
docker exec -i lab-mariadb mariadb -u root -prootpass nuxartbill < ./nuxartbil/install/phpnuxbill.sql

C. Import Skema Radius (FreeRADIUS)

Sistem billing tidak akan bisa berkomunikasi dengan Mikrotik tanpa tabel radius ini
docker exec -i lab-mariadb mariadb -u root -prootpass nuxartbill < ./nuxartbil/install/radius.sql

πŸ”§ 3. Konfigurasi Koneksi (Environment Mapping)

Edit file ~/radius-lab/nuxartbil/config.php. Kesalahan paling umum adalah menggunakan localhost. Dalam Docker, host adalah nama service

/* Konfigurasi Database */
$db_host = "mariadb"; // Merujuk ke container name/service
$db_port = "3306"; // Port default MariaDB
$db_user = "root"; // User tertinggi (sesuaikan environment .yml)
$db_pass = "rootpass"; // Password dari MARIADB_ROOT_PASSWORD
$db_name = "nuxartbill"; // Nama database yang dibuat di langkah 2A

πŸ‹ 4. Kamus Perintah (The DevOps Toolbox)

Sebagai pengembang, kamu wajib menguasai perintah-perintah kontrol berikut:

Operasi Dasar

  • Membangun Ulang: Gunakan jika ada perubahan pada file .yml atau Dockerfile. docker compose up -d --force-recreate
  • Monitoring Log: Gunakan ini jika muncul "500 Internal Server Error". docker compose logs -f phpfpm

Inspeksi File

Cek Sinkronisasi Folder: Memastikan volume terpasang dengan benar di /var/www/html.
docker exec -it lab-phpfpm ls -la /var/www/html

Akses Terminal Kontainer (Interactive Shell)

jika ingin melakukan modifikasi file langsung di dalam server:
docker exec -it lab-phpfpm bash

πŸ” 5. Final Checklist & Permission

Setelah semua siap, jalankan perintah ini untuk memastikan aplikasi memiliki hak akses menulis ke folder cache dan log:
# Memberikan izin akses penuh ke folder krusial
sudo chmod -R 777 ~/radius-lab/nuxartbil/system/cache
sudo chmod -R 777 ~/radius-lab/nuxartbil/system/uploads

`

Top comments (0)