Tutorial Instalasi Cacti di Root Domain

Konfigurasi Virtual Host Terpisah (Apache & Nginx) di Debian 12/13 — Tanpa Subpath /cacti/

Studi Kasus: mrtg.resolver.net.id · Apache2 / Nginx + PHP-FPM · Certbot HTTPS · 13 Essential Plugins

80 & 443
Port Utama
mrtg.conf
VHost / Block
13 Plugins
Enterprise Stack
1

Pendahuluan

Paket Cacti dari repository resmi Debian secara default diinstal dengan path akses /cacti/. Akibatnya aplikasi hanya dapat diakses melalui alamat seperti https://domain/cacti/, bukan langsung dari root domain.

Bagi banyak administrator yang mengkhususkan satu domain khusus untuk monitoring, path tambahan ini dianggap tidak perlu dan tidak elegan.

Dokumen ini merangkum seluruh langkah agar hasil instalasi Cacti via apt dapat berjalan langsung di root domain. Disediakan 2 pilihan stack web server utama (Apache2 Virtual Host & Nginx Server Block) serta panduan lengkap instalasi 13 Plugin Enterprise Cacti untuk pemantauan jaringan tingkat lanjut.

2

Persyaratan Sistem

Sebelum memulai instalasi, pastikan lingkungan server memenuhi persyaratan berikut:

  • Sistem Operasi: Server Debian 12 (Bookworm) / Debian 13 (Trixie) atau Ubuntu 22.04/24.04 LTS dengan akses root / sudo penuh.
  • Hardware: Minimal 2 GB RAM (disarankan 4 GB+ untuk lingkungan jaringan besar).
  • Network & Domain: FQDN domain sudah diarahkan ke IP server (Record A untuk IPv4, dan AAAA jika dual-stack IPv6).
  • Web Server & Port: Apache2 atau Nginx + PHP-FPM dengan port 80 dan 443 terbuka dari internet untuk validasi SSL Certbot.
  • Firewall: UFW / iptables dikonfigurasi dengan baik untuk mengamankan port manajemen.
3

Instalasi Paket

Perbarui daftar repository paket dan pilih opsi web server sesuai kebutuhan Anda:

Opsi A: Stack Apache2 (Bawaan Standard)
Instalasi APT — Apache Stack
sudo apt update
sudo apt install -y apache2 mariadb-server cacti certbot python3-certbot-apache git
Opsi B: Stack Nginx + PHP-FPM (Performa Tinggi)
Instalasi APT — Nginx Stack
sudo apt update
sudo apt install -y nginx php-fpm mariadb-server cacti certbot python3-certbot-nginx git
Pilihan pada Wizard Installer (dbconfig-common)
  • Configure database for cacti with dbconfig-common? → Select Yes
  • MySQL application password for cacti → Select Yes (biarkan dbconfig-common menggenerasi password secara otomatis)
Catatan penting: Paket Debian saat ini mungkin masih menyediakan Cacti versi 1.2.30. Versi 1.2.31 memuat banyak perbaikan kerentanan keamanan kritis. Setelah instalasi dasar berhasil, sangat direkomendasikan melakukan audit dan pertimbangan upgrade ke versi 1.2.31.
4

Konfigurasi DNS

Pastikan record DNS untuk sub-domain / domain monitoring telah dipetakan dengan tepat ke IP server:

DNS Mapping
mrtg.resolver.net.id.    A       43.247.xx.xx
mrtg.resolver.net.id.    AAAA    2402:xxxx:xxxx::xxxx
Record AAAA (IPv6) bersifat opsional dan hanya diperlukan jika server Anda mendukung dual-stack IPv6 aktif.
5

Mempertahankan 000-default.conf (Apache)

Jika Anda menggunakan Apache, file /etc/apache2/sites-available/000-default.conf tidak boleh diubah dan harus tetap menggunakan konfigurasi bawaan. File ini bertindak sebagai Virtual Host default/fallback untuk menangani permintaan HTTP langsung melalui IP server tanpa ServerName match.

Dengan mempertahankan Virtual Host fallback, akses IP langsung tidak akan mengekspos aplikasi Cacti ke publik secara tidak sengaja.
6

Membuat Virtual Host Apache Baru: mrtg.conf

Jika menggunakan Apache2, buat file konfigurasi Virtual Host baru khusus domain Cacti:

Editor Command
sudo nano /etc/apache2/sites-available/mrtg.conf

Isi file dengan konfigurasi teroptimasi berikut:

/etc/apache2/sites-available/mrtg.conf
<VirtualHost *:80>
    ServerName mrtg.resolver.net.id
    ServerAdmin [email protected]

    DocumentRoot /usr/share/cacti/site

    <Directory /usr/share/cacti/site>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted

        <FilesMatch \.php$>
            SetHandler application/x-httpd-php
        </FilesMatch>
        DirectoryIndex index.php
    </Directory>

    # Restriksi akses ke wizard installer setelah setup selesai
    <Directory /usr/share/cacti/site/install>
        Require local
    </Directory>

    # Security Headers
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"

    ErrorLog ${APACHE_LOG_DIR}/mrtg-error.log
    CustomLog ${APACHE_LOG_DIR}/mrtg-access.log combined
</VirtualHost>
Mengaktifkan Site & Modul Apache
Aktivasi Modul
sudo a2ensite mrtg.conf
sudo a2enmod headers rewrite
sudo apache2ctl configtest
sudo systemctl reload apache2
7

Menonaktifkan Alias /cacti

Paket Debian secara otomatis mengaktifkan alias global melalui /etc/apache2/conf-available/cacti.conf yang berisi instruksi Alias /cacti /usr/share/cacti/site. Matikan konfigurasi alias global ini jika menggunakan Apache:

Disable Config Alias
sudo a2disconf cacti
sudo systemctl reload apache2
8

Mengubah Nilai $url_path

Perhatian Kritis: Langkah ini berlaku baik untuk Apache maupun Nginx. Jika $url_path tidak diubah, Cacti akan terus melakukan HTTP Redirect berulang (looping) kembali ke path /cacti/.

Buka file konfigurasi internal Cacti versi Debian:

Edit Configuration
sudo nano /etc/cacti/debian.php

Cari baris berikut:

Semula
$url_path = '/cacti/';

Ubah nilainya menjadi root path:

Menjadi
$url_path = '/';
9

Restart Apache Service

Jika menggunakan Apache, uji keabsahan sintaksis dan muat ulang service:

Restart Apache
sudo apache2ctl configtest
sudo systemctl restart apache2
10

Konfigurasi Nginx Server Block (Alternatif Web Server)

Jika Anda memilih Nginx + PHP-FPM daripada Apache, buat berkas Server Block baru untuk Cacti:

Create Nginx Server Block
sudo nano /etc/nginx/sites-available/mrtg.conf

Isi file dengan konfigurasi Nginx teroptimasi berikut:

/etc/nginx/sites-available/mrtg.conf
server {
    listen 80;
    listen [::]:80;
    server_name mrtg.resolver.net.id;
    server_tokens off;

    root /usr/share/cacti/site;
    index index.php index.html;

    # Security Headers
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    # Blokir akses publik ke direktori sensitif & file tersembunyi
    location ~ ^/(include|install|resource|log|rra)/ {
        deny all;
        return 403;
    }

    location ~ /\. {
        deny all;
    }

    # Handling Request Root Domain
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # FastCGI PHP-FPM Handler
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    access_log /var/log/nginx/mrtg_access.log;
    error_log /var/log/nginx/mrtg_error.log;
}
Mengaktifkan Server Block Nginx
Aktivasi Symlink Nginx
sudo ln -s /etc/nginx/sites-available/mrtg.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
11

Konfigurasi HTTPS dengan Certbot

Gunakan Let's Encrypt Certbot untuk mengaktifkan HTTPS gratis sesuai dengan web server yang Anda pilih:

Untuk Apache2:
Certbot Apache
sudo certbot --apache -d mrtg.resolver.net.id
Untuk Nginx:
Certbot Nginx
sudo certbot --nginx -d mrtg.resolver.net.id
Certbot secara otomatis mendeteksi blok domain dan memperbarui file konfigurasi SSL port 443 serta mengaktifkan pengalihan otomatis dari HTTP ke HTTPS.
12

Konfigurasi Dual-Stack (IPv4 & IPv6)

VirtualHost Apache (*:80) maupun Nginx (listen [::]:80;) mendukung jaringan dual-stack secara penuh. Selama antarmuka jaringan dan record DNS (A dan AAAA) aktif, web server akan melayani permintaan dari IPv4 dan IPv6 secara transparan.

13

Troubleshooting

Tabel rangkuman solusi untuk mengatasi kendala teknis yang sering ditemui selama proses pemasangan Cacti:

Gejala Masalah Kemungkinan Penyebab Solusi Tindakan
Domain menampilkan halaman default Apache / Nginx Virtual host / Server block belum diaktifkan via symlink atau a2ensite. Jalankan sudo a2ensite mrtg.conf (Apache) atau sudo ln -s /etc/nginx/sites-available/mrtg.conf /etc/nginx/sites-enabled/ (Nginx).
Selalu redirect otomatis ke /cacti/ Nilai variabel $url_path di debian.php masih '/cacti/'. Ubah nilai menjadi '/' di /etc/cacti/debian.php dan restart web server.
Nginx: HTTP 502 Bad Gateway Service PHP-FPM mati atau path socket Unix /run/php/php-fpm.sock tidak sesuai versi. Cek status dengan systemctl status php8.2-fpm dan periksa directive fastcgi_pass.
Nginx / Apache: HTTP 403 Forbidden File permission /usr/share/cacti/site salah atau terblokir rule deny all. Pastikan user www-data memiliki akses baca dan periksa konfigurasi blok location / Directory.
Akses IP server langsung mengekspos Cacti File 000-default.conf atau default server block Nginx diubah secara manual. Kembalikan default site bawaan agar menangani fallback IP.
Certbot gagal verifikasi ACME Port 80 tertutup firewall atau propagasi DNS A/AAAA belum selesai. Periksa konektivitas port 80 dengan ufw status dan verifikasi IP via dig.
14

Hasil Akhir

Setelah seluruh tahapan diselesaikan, halaman dasbor Cacti kini dapat diakses dengan mulus secara langsung dari root domain:

Aplikasi berjalan langsung pada Root Domain tanpa pengalihan kembali ke subpath /cacti/ baik pada stack Apache2 maupun Nginx + PHP-FPM.

15

Catatan Keamanan Terbaru (Agustus 2026)

Cacti versi 1.2.30 dan sebelumnya teridentifikasi memiliki beberapa celah keamanan berkategori tinggi hingga kritis yang dipublikasikan pada pertengahan 2026. Seluruh isu ini telah ditutupi pada versi rilis upstream 1.2.31:

  • CVE-2026-39938 — Unauthenticated Local File Inclusion (LFI) ke Remote Code Execution (CVSS 9.8).
  • CVE-2026-40079 — Arbitrary Command Injection via unescaped shell arguments pada fungsi escape_command().
  • CVE-2026-39955 — Pre-authentication SQL Injection pada endpoint parameter graph_view.php (CVSS 9.8).
  • CVE-2026-39951 — Stored SQL Injection melalui manipulasi variabel graph_name_regexp.
Langkah Mitigasi & Pengamanan Wajib:
  1. Jangan mengekspos portal manajemen Cacti secara terbuka tanpa proteksi perimeter.
  2. Terapkan pembatasan IP allowlist pada firewall (UFW) atau gunakan VPN internal.
  3. Lakukan update berkala ke Cacti upstream versi 1.2.31 atau paket keamanan terbaru dari Debian.
  4. Pasang dan aktifkan Fail2ban untuk memproteksi serangan brute force pada form autentikasi Cacti.
  5. Batasi akses ke folder /install pada Virtual Host Apache maupun Nginx location block.
16

Instalasi & Konfigurasi Plugin Cacti Essensial

Pada Cacti versi 1.2.x, arsitektur plugin telah terintegrasi secara bawaan. Seluruh plugin ditempatkan di direktori /usr/share/cacti/site/plugins/ dan dapat diaktifkan melalui Web Console (Console → Configuration → Plugins) atau secara otomatis via skrip CLI Cacti.

Skrip Otomatisasi Git Clone & Aktivasi Plugin CLI

Jalankan perintah berikut untuk mendownload dan mengaktifkan 13 plugin utama sekaligus:

CLI Plugin Downloader & Enabler
cd /usr/share/cacti/site/plugins/

# Clone repository resmi plugin Cacti
sudo git clone https://github.com/Cacti/plugin_mikrotik.git mikrotik
sudo git clone https://github.com/Cacti/plugin_thold.git thold
sudo git clone https://github.com/Cacti/plugin_syslog.git syslog
sudo git clone https://github.com/Cacti/plugin_maint.git maint
sudo git clone https://github.com/Cacti/plugin_monitor.git monitor
sudo git clone https://github.com/Cacti/plugin_hmib.git hmib
sudo git clone https://github.com/Cacti/plugin_webseer.git webseer
sudo git clone https://github.com/Cacti/plugin_gexport.git gexport
sudo git clone https://github.com/Cacti/plugin_intropage.git intropage
sudo git clone https://github.com/Cacti/plugin_audit.git audit
sudo git clone https://github.com/Cacti/plugin_routerconfigs.git routerconfigs
sudo git clone https://github.com/Cacti/plugin_weathermap.git weathermap
sudo git clone https://github.com/Cacti/plugin_flowview.git flowview

# Set hak milik direktori ke user web server
sudo chown -R www-data:www-data /usr/share/cacti/site/plugins/

# Install & Activate plugin via CLI Cacti
for p in mikrotik thold syslog maint monitor hmib webseer gexport intropage audit routerconfigs weathermap flowview; do
    sudo php /usr/share/cacti/site/cli/plugin_manage.php --plugin=$p --action=install
    sudo php /usr/share/cacti/site/cli/plugin_manage.php --plugin=$p --action=enable
done
Tabel Rangkuman 13 Plugin Utama Cacti
Nama Plugin Kategori & Nama Folder Fungsi Operasional & Deskripsi
Mikrotik mikrotik Support for Mikrotik — Integrasi monitoring RouterOS, API, interface, CPU, temperature, & wireless clients.
Thold thold Fault Management — Manajemen ambang batas (threshold alerts) & notifikasi otomatis (email/syslog/slack).
Syslog syslog Log Management — Pengumpul log Syslog terpusat dengan kemampuan pemfilteran & alert trigger.
Maint maint Maintenance Management — Penjadwalan jendela perawatan perangkat untuk mencegah alarm palsu.
Monitor monitor Host Status Dashboard — Tampilan dasbor visual status ketersediaan (Up/Down) seluruh host secara grid.
Hmib hmib Host MIB Attributes — Monitoring atribut hardware, CPU, RAM, disk, & OS via SNMP Host-Resources-MIB.
Webseer webseer Web Service Checks — Pengujian uptime, latensi, dan ketersediaan HTTP/HTTPS URL web service.
Gexport gexport Graph Exports — Otomatisasi ekspor grafik statis ke server remote via FTP/HTTP/Local storage.
Intropage intropage Console Replacement — Dasbor kustom pengganti halaman depan konsol manajemen Cacti.
Audit audit Change Audit Tracker — Pencatatan & pengauditan riwayat perubahan konfigurasi oleh administrator.
Routerconfigs routerconfigs Device Config Backup — Otomatisasi backup berkas konfigurasi perangkat (RouterOS/Cisco/Juniper) via SSH/Telnet.
Weathermap weathermap Traffic Mapping — Pemetaan visual topologi jaringan dengan indikator warna utilisasi bandwidth real-time.
Flowview flowview NetFlow Graphing — Analisis dan grafik lalu lintas protokol NetFlow / sFlow per IP & port.
Cara Memperbarui (Update) Plugin Cacti

Pembaruan plugin dapat dilakukan secara massal (bulk) untuk 13 plugin sekaligus atau secara individual per plugin:

A. Update Massal (Bulk Update 13 Plugin via CLI & Git)
Bulk CLI Plugin Update
cd /usr/share/cacti/site/plugins/

# 1. Update seluruh repository plugin via loop Git Pull
for d in mikrotik thold syslog maint monitor hmib webseer gexport intropage audit routerconfigs weathermap flowview; do
    if [ -d "$d/.git" ]; then
        echo "Updating plugin $d..."
        sudo git -C "$d" pull
    fi
done

# 2. Atur ulang izin kepemilikan berkas ke user web server
sudo chown -R www-data:www-data /usr/share/cacti/site/plugins/

# 3. Re-enable & refresh skema database seluruh plugin via CLI Cacti
for p in mikrotik thold syslog maint monitor hmib webseer gexport intropage audit routerconfigs weathermap flowview; do
    sudo php /usr/share/cacti/site/cli/plugin_manage.php --plugin=$p --action=enable
done
B. Update Plugin Spesifik (Single Plugin)
Single Plugin Update
# Contoh memperbarui plugin THOLD
cd /usr/share/cacti/site/plugins/thold/
sudo git pull
sudo chown -R www-data:www-data /usr/share/cacti/site/plugins/thold/
sudo php /usr/share/cacti/site/cli/plugin_manage.php --plugin=thold --action=enable
C. Update via Web Console UI
  • Akses menu Console → Configuration → Plugins.
  • Klik tombol Check / Upgrade Plugin untuk memeriksa dan menerapkan migrasi database jika tersedia versi rilis baru.
Cara Menghapus (Uninstall & Remove) Plugin Cacti

Pelepasan plugin harus dilakukan melalui 3 tahap bersih (Disable, Uninstall dari Database, dan Hapus Berkas dari Disk) untuk mencegah error kueri database pada Cacti:

A. Menghapus 1 Plugin Spesifik (Single Plugin via CLI)
Single Plugin Remove
# Contoh menghapus plugin THOLD secara bersih
# Tahap 1: Nonaktifkan (Disable) plugin dari Cacti Engine
sudo php /usr/share/cacti/site/cli/plugin_manage.php --plugin=thold --action=disable

# Tahap 2: Uninstall skema tabel database plugin dari MySQL/MariaDB
sudo php /usr/share/cacti/site/cli/plugin_manage.php --plugin=thold --action=uninstall

# Tahap 3: Hapus berkas direktori plugin dari disk server
sudo rm -rf /usr/share/cacti/site/plugins/thold/
B. Menghapus Massal (Bulk Reset/Remove 13 Plugin via CLI)
Bulk Plugin Remove
# Tahap 1 & 2: Disable & Uninstall seluruh 13 plugin dari Cacti Database
for p in mikrotik thold syslog maint monitor hmib webseer gexport intropage audit routerconfigs weathermap flowview; do
    sudo php /usr/share/cacti/site/cli/plugin_manage.php --plugin=$p --action=disable
    sudo php /usr/share/cacti/site/cli/plugin_manage.php --plugin=$p --action=uninstall
done

# Tahap 3: Hapus seluruh folder berkas plugin dari filesystem
cd /usr/share/cacti/site/plugins/
sudo rm -rf mikrotik thold syslog maint monitor hmib webseer gexport intropage audit routerconfigs weathermap flowview
C. Menghapus Plugin via Web Console UI
  1. Buka menu Console → Configuration → Plugins.
  2. Pada baris plugin target, klik tombol Disable (ikon tombol merah/stop).
  3. Setelah status berubah menjadi Disabled, klik tombol Uninstall (ikon tong sampah) untuk membersihkan seluruh tabel database terkait secara otomatis.
  4. Buka terminal server dan hapus berkas fisik plugin: sudo rm -rf /usr/share/cacti/site/plugins/<nama_plugin>/.
Peringatan Kritis: Jangan pernah langsung menghapus folder plugin dari filesystem server tanpa melakukan tindakan Disable dan Uninstall dari Web UI / CLI Cacti terlebih dahulu, karena hal tersebut akan menyebabkan error kueri database SQL pada konsol Cacti.
Tips Manajemen: Setelah plugin diaktifkan via CLI, Anda dapat mengatur hak akses pengguna pada Console → Utilities → User Management agar setiap staf NOC memiliki tampilan dasbor plugin yang sesuai role.
17

Optimasi Tambahan

Langkah penyesuaian opsional untuk memaksimalkan performa dan stabilitas server Cacti:

  • Gunakan Spine Poller: Ganti default PHP poller dengan binary C poller (cacti-spine) untuk efisiensi eksekusi jaringan berskala besar.
  • Tuning PHP Memory Limit: Naikkan nilai memory_limit = 512M dan max_execution_time = 300 pada php.ini jika memuat grafik berkapasitas besar.
  • Optimasi RRDtool: Aktifkan rrdcached untuk mengurangi beban I/O pada penyimpan berkas RRD.
  • Otomasisasi Backup Database: Buat cron job periodik untuk membackup database MariaDB Cacti secara otomatis.
Dokumentasi teknis berdasarkan riset & pengujian pengalihan Cacti ke Root Domain (Apache & Nginx + 13 Plugins) di Debian 12/13