Cara membuat web host manager sendiri V3 dashboard dasar

Me Nime Id
Please wait 0 seconds...
Scroll Down and click on Go to Link for destination
Congrats! Link is Generated

 Oke, kita mulai dari dashboard dasar dulu. Aku akan buatkan arsitektur sederhana untuk WHM custom dengan fitur utama seperti:

Dashboard Admin (Statistik Akun Hosting)
Manajemen Akun Hosting (Buat & Hapus Akun)
Manajemen Domain (Tambahkan & Hapus Domain)
Auto SSL (Let's Encrypt)
Manajemen Database (MySQL)
File Manager (Tiny File Manager)
Sistem Login Admin


1️⃣ Struktur Folder & File

Buat folder utama whm-custom/ di server atau localhost, lalu buat struktur berikut:

whm-custom/
│── public/                 # Folder untuk akses web
│   ├── index.php           # Halaman Dashboard
│   ├── login.php           # Halaman Login
│   ├── logout.php          # Logout
│   ├── css/                # Folder CSS
│   ├── js/                 # Folder JavaScript
│── admin/                  # Folder untuk Admin
│   ├── dashboard.php       # Dashboard Admin
│   ├── akun.php            # Manajemen Akun
│   ├── domain.php          # Manajemen Domain
│   ├── database.php        # Manajemen Database
│── includes/               # Folder Fungsi Backend
│   ├── config.php          # Konfigurasi Database
│   ├── functions.php       # Fungsi WHM
│── scripts/                # Folder Shell Script
│   ├── create_account.sh   # Script Buat Akun Hosting
│   ├── delete_account.sh   # Script Hapus Akun
│   ├── add_domain.sh       # Script Tambah Domain
│   ├── backup.sh           # Script Backup
│── .htaccess               # Redirect ke index.php

2️⃣ Buat Database & Konfigurasi

Buat database whm_db di MySQL dengan tabel users untuk login admin.

📌 Tabel Users (whm_db.users)

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    password VARCHAR(255),
    role ENUM('admin', 'reseller') DEFAULT 'admin'
);

📌 File includes/config.php

<?php
$host = "localhost";
$user = "root";
$pass = "";
$dbname = "whm_db";

$conn = new mysqli($host, $user, $pass, $dbname);
if ($conn->connect_error) {
    die("Koneksi gagal: " . $conn->connect_error);
}
?>

3️⃣ Halaman Login

📌 File public/login.php

<?php
session_start();
include '../includes/config.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $stmt = $conn->prepare("SELECT * FROM users WHERE username=?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($row = $result->fetch_assoc()) {
        if (password_verify($password, $row['password'])) {
            $_SESSION['user'] = $row['username'];
            $_SESSION['role'] = $row['role'];
            header("Location: dashboard.php");
            exit;
        } else {
            $error = "Password salah!";
        }
    } else {
        $error = "Username tidak ditemukan!";
    }
}
?>
<form method="post">
    <input type="text" name="username" placeholder="Username" required><br>
    <input type="password" name="password" placeholder="Password" required><br>
    <button type="submit">Login</button>
</form>
<?php if (isset($error)) echo "<p>$error</p>"; ?>

4️⃣ Dashboard Admin

📌 File admin/dashboard.php

<?php
session_start();
if (!isset($_SESSION['user'])) {
    header("Location: ../public/login.php");
    exit;
}
?>
<h1>Selamat Datang, <?php echo $_SESSION['user']; ?>!</h1>
<ul>
    <li><a href="akun.php">Manajemen Akun</a></li>
    <li><a href="domain.php">Manajemen Domain</a></li>
    <li><a href="database.php">Manajemen Database</a></li>
    <li><a href="../public/logout.php">Logout</a></li>
</ul>

5️⃣ Fungsi Membuat Akun Hosting

📌 File scripts/create_account.sh

#!/bin/bash
username=$1
password=$2
domain=$3

# Membuat akun user di Linux
useradd -m -s /bin/bash $username
echo "$username:$password" | chpasswd

# Membuat folder hosting
mkdir -p /var/www/$domain
chown -R $username:$username /var/www/$domain

# Menambahkan Virtual Host
echo "<VirtualHost *:80>
    ServerName $domain
    DocumentRoot /var/www/$domain
</VirtualHost>" > /etc/apache2/sites-available/$domain.conf

a2ensite $domain.conf
systemctl reload apache2

echo "Akun hosting untuk $username berhasil dibuat!"

📌 File includes/functions.php

<?php
function createAccount($username, $password, $domain) {
    $cmd = "bash ../scripts/create_account.sh $username $password $domain";
    $output = shell_exec($cmd);
    return $output;
}
?>

📌 File admin/akun.php

<?php
include '../includes/functions.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $domain = $_POST['domain'];
    
    echo createAccount($username, $password, $domain);
}
?>
<form method="post">
    <input type="text" name="username" placeholder="Username" required><br>
    <input type="password" name="password" placeholder="Password" required><br>
    <input type="text" name="domain" placeholder="Domain" required><br>
    <button type="submit">Buat Akun Hosting</button>
</form>

6️⃣ Tambahkan SSL Otomatis

📌 File scripts/ssl.sh

#!/bin/bash
domain=$1
certbot --apache -d $domain --non-interactive --agree-tos -m admin@$domain
systemctl reload apache2
echo "SSL untuk $domain telah aktif!"

📌 File includes/functions.php (Tambahkan)

function enableSSL($domain) {
    $cmd = "bash ../scripts/ssl.sh $domain";
    return shell_exec($cmd);
}


Posting Komentar

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.