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
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.
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/sudopenuh. - 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.
Instalasi Paket
Perbarui daftar repository paket dan pilih opsi web server sesuai kebutuhan Anda:
sudo apt update
sudo apt install -y apache2 mariadb-server cacti certbot python3-certbot-apache git
sudo apt update
sudo apt install -y nginx php-fpm mariadb-server cacti certbot python3-certbot-nginx git
- Configure database for cacti with dbconfig-common? → Select Yes
- MySQL application password for cacti → Select Yes (biarkan dbconfig-common menggenerasi password secara otomatis)
Konfigurasi DNS
Pastikan record DNS untuk sub-domain / domain monitoring telah dipetakan dengan tepat ke IP server:
mrtg.resolver.net.id. A 43.247.xx.xx
mrtg.resolver.net.id. AAAA 2402:xxxx:xxxx::xxxx
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.
Membuat Virtual Host Apache Baru: mrtg.conf
Jika menggunakan Apache2, buat file konfigurasi Virtual Host baru khusus domain Cacti:
sudo nano /etc/apache2/sites-available/mrtg.conf
Isi file dengan konfigurasi teroptimasi berikut:
<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>
sudo a2ensite mrtg.conf
sudo a2enmod headers rewrite
sudo apache2ctl configtest
sudo systemctl reload apache2
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:
sudo a2disconf cacti
sudo systemctl reload apache2
Mengubah Nilai $url_path
$url_path tidak diubah, Cacti akan terus melakukan HTTP Redirect berulang (looping) kembali ke path /cacti/.
Buka file konfigurasi internal Cacti versi Debian:
sudo nano /etc/cacti/debian.php
Cari baris berikut:
$url_path = '/cacti/';
Ubah nilainya menjadi root path:
$url_path = '/';
Restart Apache Service
Jika menggunakan Apache, uji keabsahan sintaksis dan muat ulang service:
sudo apache2ctl configtest
sudo systemctl restart apache2
Konfigurasi Nginx Server Block (Alternatif Web Server)
Jika Anda memilih Nginx + PHP-FPM daripada Apache, buat berkas Server Block baru untuk Cacti:
sudo nano /etc/nginx/sites-available/mrtg.conf
Isi file dengan konfigurasi Nginx teroptimasi berikut:
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;
}
sudo ln -s /etc/nginx/sites-available/mrtg.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Konfigurasi HTTPS dengan Certbot
Gunakan Let's Encrypt Certbot untuk mengaktifkan HTTPS gratis sesuai dengan web server yang Anda pilih:
sudo certbot --apache -d mrtg.resolver.net.id
sudo certbot --nginx -d mrtg.resolver.net.id
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.
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. |
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.
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.
- Jangan mengekspos portal manajemen Cacti secara terbuka tanpa proteksi perimeter.
- Terapkan pembatasan IP allowlist pada firewall (UFW) atau gunakan VPN internal.
- Lakukan update berkala ke Cacti upstream versi 1.2.31 atau paket keamanan terbaru dari Debian.
- Pasang dan aktifkan Fail2ban untuk memproteksi serangan brute force pada form autentikasi Cacti.
- Batasi akses ke folder
/installpada Virtual Host Apache maupun Nginx location block.
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.
Jalankan perintah berikut untuk mendownload dan mengaktifkan 13 plugin utama sekaligus:
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
| 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. |
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)
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)
# 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.
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)
# 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)
# 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
- Buka menu Console → Configuration → Plugins.
- Pada baris plugin target, klik tombol Disable (ikon tombol merah/stop).
- Setelah status berubah menjadi Disabled, klik tombol Uninstall (ikon tong sampah) untuk membersihkan seluruh tabel database terkait secara otomatis.
- Buka terminal server dan hapus berkas fisik plugin:
sudo rm -rf /usr/share/cacti/site/plugins/<nama_plugin>/.
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 = 512Mdanmax_execution_time = 300padaphp.inijika 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.