Instalasi otomatis

Cara otomatis: satu skrip dari akun menyiapkan seluruh server (web-stack Apache + PHP, basis data, alat keamanan, cron). Selanjutnya — pasang panel, terbitkan SSL, dan masukkan lisensi. Berjalan di Ubuntu/Debian: pada VPS baru mengatur semuanya dari nol, pada server yang sudah dikonfigurasi — hanya secara aditif (profil “Server terkonfigurasi”, langkah 01). Semua perintah di bawah sudah urut, cukup gulir dari atas ke bawah.

Nilai contoh dalam perintah ganti dengan milik Anda: monitor.example.com — domain Anda; 203.0.113.10 — IP server sebenarnya; /var/www/monitor — root panel (tempat public/, assets/, config.php berada); buat sendiri kata sandi basis data Anda.
Paket lengkap (“Perlindungan penuh”) ditujukan untuk VPS baru. Pada Ubuntu/Debian bersih ia mengatur sistem keamanan dari nol — Fail2ban (jail.local), root-crontab, aturan UFW, konfigurasi Apache. Jika server sudah dikonfigurasi (panel berjalan, situs, email, jail buatan Anda sendiri) — pilih profil “Server terkonfigurasi”: ia hanya membuat perubahan aditif dan tidak mengutak-atik firewall, Fail2ban, email, SSH, serta sysctl Anda. Saat mendeteksi panel hosting, skrip beralih ke mode ini sendiri. Sebelum menjalankan pertama kali, Anda bisa mengaktifkan uji coba kering (centang di akun) — ia akan menunjukkan apa yang akan dilakukan tanpa mengubah apa pun. Pada server yang sedang berjalan, buatlah snapshot untuk berjaga-jaga.

01. Perintah konfigurasi otomatis dari akun

Perintah diambil di akun Anda my.arciveo.com → bagian “Konfigurasi server” (tersedia setelah berlangganan Arcivéo Monitor). Perintah terikat ke akun Anda dan berisi token pribadi.

Skrip menyiapkan seluruh server: web-stack (Apache + PHP), basis data, alat untuk SSL, rangkaian lengkap alat proteksi dan tugas cron (Lynis, SMART, debsums, Logwatch, laporan harian, pembaruan ipsum).

1) Pilih tingkat proteksi (di akun, sebelum menyalin perintah):

  • Proteksi penuh (disarankan) — UFW (firewall), Fail2ban, CrowdSec + bouncer, ipsum (daftar blokir IP), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (integritas file), debsums, ClamAV + maldet (antivirus), Auditd, AppArmor, Monit, Lynis (audit), Logwatch, pembaruan keamanan otomatis.
  • Ringan — untuk VPS dengan RAM kecil: rangkaian dasar tanpa komponen berat.
  • Server terkonfigurasi (panel hosting) — untuk server yang sudah berjalan dengan panel (HestiaCP dsb.), situs, dan email: hanya perubahan aditif (pemasangan alat tambahan, cron, aturan sudo), sedangkan firewall, Fail2ban, email, SSH, dan sysctl tetap apa adanya. Pada server berpanel, skrip memilih mode ini sendiri.
Uji coba kering. Di akun, Anda dapat mencentang “Uji coba kering” — maka perintah hanya menampilkan apa yang akan dipasang dan diubah skrip, lalu berhenti tanpa menyentuh apa pun. Berguna pada server yang sudah dikonfigurasi: uji coba dulu, lalu jalankan sungguhan tanpa centang.

2) Jalankan di server sebagai root perintah dari akun — tampilannya seperti ini:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Rahasiakan perintah ini — perintah terikat ke akun Anda. Tautan memiliki masa berlaku terbatas; jika sudah kedaluwarsa, klik “Dapatkan tautan baru” di akun.
Setelah konfigurasi otomatis, web-server adalah Apache + PHP-FPM, dan alat keamanan serta tugas cron sudah terpasang dan berjalan “out of the box” — tidak perlu mengonfigurasi apa pun lagi.

02. Domain dan DNS

Agar dashboard bisa dibuka di alamat seperti monitor.example.com dan mendapatkan SSL gratis, domain harus mengarah ke server. Di panel pengelolaan DNS (di registrar atau penyedia hosting), buat A-record:

Tipe: A Nama: monitor (subdomain → monitor.example.com) atau @ (root domain → example.com) Nilai: 203.0.113.10 ← IP server Anda TTL: 3600

Setelah beberapa menit (kadang hingga satu jam), pastikan domain sudah mengarah ke server:

dig +short monitor.example.com # harus mengembalikan IP Anda # atau, jika dig tidak ada: getent hosts monitor.example.com
Sertifikat SSL (langkah 06) hanya diterbitkan untuk domain — karena itu DNS harus mengarah ke server sebelum sertifikat diterbitkan.

03. Unggah file panel

Konfigurasi otomatis sudah membuat direktori panel /var/www/monitor dan menyiapkan situs Apache (DocumentRoot ke akar panel, PHP-FPM, AllowOverride untuk .htaccess). Anda tidak perlu membuat direktori dan vhost sendiri — cukup unggah file dan atur izinnya.
File panel (arsip distribusi) diunduh setelah pembelian di akun my.arciveo.com“Unduhan”. Ekstrak arsip sebelum diunggah ke server.

Unggah isi distribusi ke /var/www/monitor (agar di dalamnya terdapat public/, assets/, config.php, dan lain-lain) — melalui SFTP/SCP (FileZilla / WinSCP) atau dengan perintah scp dari komputer lokal:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Agar domain Anda langsung tercatat di vhost (ServerName), teruskan ke perintah konfigurasi otomatis pada langkah 01: … | sudo bash -s -- monitor.example.com (atau isikan domain di kolom “Domain panel” di akun). Jika domain tidak diteruskan — panel merespons host apa pun dan lewat IP, sedangkan ServerName akan dicatat oleh certbot saat menerbitkan SSL (langkah 06); tidak perlu menginstal ulang apa pun.
Atur izin file — ini langkah wajib. Jika mengunggah sebagai root atau lewat SFTP, file dimiliki root, dan server web (www-data) tidak dapat membacanya — panel akan terbuka kosong atau dengan galat 403 (di log: .htaccess unreadable / directory not executable). Perintah di bawah memperbaikinya:
# Normalisasi izin seluruh webroot: direktori yang dibuat root tidak dapat diakses # server web (www-data) — tanpa ini panel menampilkan halaman kosong atau 403. cd /var/www/monitor # Buat folder kerja SEBELUM chown — jika tidak, direktori baru tetap root:root # dan saat chmod 750 server web (www-data) tidak dapat menulis ke dalamnya. sudo mkdir -p data/lynis data/logwatch tmp logs sudo chown -R www-data:www-data /var/www/monitor sudo find /var/www/monitor -type d -exec chmod 755 {} \; sudo find /var/www/monitor -type f -exec chmod 644 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 750 data tmp logs

Buka akses unggah file lewat SFTP untuk diri Anda. Setelah perintah di atas semua file dimiliki www-data, sedangkan FileZilla / WinSCP terhubung sebagai pengguna Anda sendiri — unggahan lalu gagal dengan SSH_FX_PERMISSION_DENIED (Permission denied). Pilih salah satu dari dua opsi.

Opsi A — ACL hanya untuk pengguna Anda (disarankan). Hak tulis hanya Anda yang dapat; server web tetap tidak bisa menimpa kode panel:

sudo apt install -y acl # Hak tulis untuk pengguna Anda pada seluruh direktori panel: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Aturan yang sama sebagai bawaan — untuk file dan folder yang dibuat kemudian: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Opsi B — lewat grup www-data. Lebih sederhana, tetapi hak tulis ke file panel juga didapat server web: bila ada celah di PHP, kode bisa diganti. Urutan perintah penting — config.php dan folder kerja ditutup paling akhir:

sudo usermod -aG www-data deploy # Hak tulis untuk grup + setgid (bit 2): file yang diunggah lewat SFTP tetap # berada di grup www-data — jika tidak, panel tak bisa menimpanya. sudo find /var/www/monitor -type d -exec chmod 2775 {} \; sudo find /var/www/monitor -type f -exec chmod 664 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 2750 /var/www/monitor/data /var/www/monitor/tmp /var/www/monitor/logs
Setelah opsi B, sambungkan ulang di FileZilla (Server → Putuskan sambungan, lalu masuk lagi) — grup baru hanya berlaku pada login baru, sebelum itu izin tetap belum ada. Pemeriksaan: id deploy — pada daftar grup harus muncul www-data; ls -ld /var/www/monitor — izin drwxrwsr-x, huruf s menggantikan x berarti setgid sudah aktif.

04. Basis data

Buat basis data dan pengguna, lalu impor skemanya. Blok BD ditempel ke terminal secara utuh (sudo mysql masuk sebagai root melalui unix-socket — kata sandi root tidak diperlukan). monitor_db dan monitor_user hanyalah nama contoh, Anda bisa menentukan nama sendiri; ingat nama basis data, pengguna, dan kata sandi — masukkan ke config.php pada langkah berikutnya:

# 1. Basis data. Kata sandi ditetapkan SEKALI di DBPASS dan disisipkan ke semua baris. # Blok ditempel ke terminal SECARA UTUH; sudo mysql masuk sebagai root via unix-socket # (kata sandi root tidak diperlukan). JANGAN gunakan `sudo mysql -u root -p` interaktif # dengan tempel — saat menempel, baris SQL akan masuk ke prompt kata sandi dan hilang. DBPASS='CHOOSE_A_PASSWORD' # ← ubah hanya baris ini sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS monitor_db CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS 'monitor_user'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON monitor_db.* TO 'monitor_user'@'localhost'; FLUSH PRIVILEGES; SQL # Pemeriksaan (harus menampilkan monitor_db): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Masukkan kata sandi yang sama ini ke config.php → DB_PASS.
Skema tidak perlu diimpor — dashboard membuat tabel dan akun admin sendiri saat pertama kali dibuka di browser (dari database/db.sql), jika BD kosong.
sudo untuk server web sudah diatur oleh konfigurasi otomatis — modul langsung melihat data sistem. sudo hanya perlu diatur terpisah jika PHP berjalan di bawah pengguna non-standar (bukan www-data).

05. Konfigurasi config.php

config.php di root panel (/var/www/monitor/config.php) adalah satu-satunya berkas yang perlu diedit secara manual. Semua pengaturan panel didefinisikan di dalamnya sebagai konstanta define(). Buka di editor:

sudo nano /var/www/monitor/config.php

Masukkan nilai Anda pada bagian yang disorot; sisanya biarkan apa adanya:

// --- Basis data (dari langkah 04) --- define('DB_HOST', 'localhost'); // biarkan define('DB_NAME', 'db_name'); // yang dibuat di langkah 04 define('DB_USER', 'user'); // yang dibuat di langkah 04 define('DB_PASS', 'db_password'); // yang ditetapkan di langkah 04 define('DB_CHARSET', 'utf8mb4'); // biarkan // --- Aplikasi --- define('APP_URL', 'https://monitor.example.com'); // alamat panel, tanpa garis miring di akhir define('TIMEZONE', 'Asia/Jakarta'); // zona waktu Anda // --- Waktu sesi --- define('SESSION_LIFETIME', 28800); // idle sebelum login ulang, detik (28800 = 8 jam)

Yang perlu diubah:

  • DB_NAME, DB_USER, DB_PASS — persis nama basis data, pengguna, dan kata sandi yang Anda tetapkan saat membuat DB di langkah 04 (jika contoh dibiarkan — monitor_db / monitor_user). DB_HOST dan DB_CHARSET jangan diubah.
  • APP_URL — alamat lengkap panel dengan https://, tanpa garis miring di akhir dan tanpa www. Harus cocok dengan domain tempat lisensi diaktifkan (langkah 07), jika tidak, kunci akan ditolak.
  • TIMEZONE — zona waktu Anda (daftar — timedatectl list-timezones). Hanya memengaruhi cara panel menampilkan tanggal; waktu menjalankan tugas cron tidak terpengaruh (di sana berlaku zona waktu sistem).
  • SESSION_LIFETIME — setelah berapa detik tanpa aktivitas panel meminta login ulang (bawaan 8 jam). Mis. 3600 = 1 jam, 86400 = sehari.
  • Blok pencatatan galat (display_errors, log_errors, error_log) — biarkan bawaan.

Simpan berkas (Ctrl+O, Enter, lalu Ctrl+X) dan mulai ulang PHP-FPM — jika tidak, karena OPcache perubahan tidak akan diterapkan:

sudo systemctl restart php*-fpm
config.php — berkas rahasia (berisi kata sandi DB). Berkas ini berada di root panel, yang juga merupakan web-root, tetapi tertutup: hak akses 640 (diatur di langkah 03) dan larangan eksplisit di .htaccess root. Jangan unggah ke repositori publik dan jangan kirim ke dukungan dengan kata sandi asli.
Uraian lengkap semua parameter — di FAQ: “Berkas config.php — semua pengaturan panel”.

06. Terbitkan SSL (HTTPS)

Dashboard hanya berjalan lewat HTTPS. Sesi login memakai cookie aman, dan WebAuthn (2FA) secara standar hanya bekerja di HTTPS. Lewat http:// Anda tidak akan bisa masuk.

certbot dan plugin untuk Apache sudah dipasang oleh konfigurasi otomatis. DNS domain sudah harus mengarah ke server (langkah 02). Penerbitan cukup satu perintah:

sudo certbot --apache -d monitor.example.com
Yang akan ditanyakan certbot:
  1. Enter email address — e-mail Anda (ke situlah notifikasi kedaluwarsa sertifikat dikirim).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — terserah Anda.
Selanjutnya certbot akan menerbitkan sertifikat sendiri, menuliskan <VirtualHost *:443>, mengatur redirect http→https dan perpanjangan otomatis. Di akhir — Successfully enabled HTTPS.
Jika penerbitan gagal — pastikan dig +short monitor.example.com mengembalikan IP server dan port 80/443 terbuka (sudo ufw allow 80,443/tcp).

Setelah diterbitkan: https://monitor.example.com terbuka dengan ikon gembok, http:// mengalihkan ke https://.

07. Login dan pengaturan awal

Buka https://monitor.example.com, masuk dengan admin / useradmin lalu ikuti daftar periksa:

  1. Ganti kata sandi admin — bagian “Pengguna” di menu.
  2. Aktifkan WebAuthn (2FA) — “Kunci WebAuthn” → daftarkan kunci/passkey (memerlukan HTTPS). Daftarkan dua sekaligus: jika satu-satunya kunci hilang, login dengannya tidak akan mungkin. Selengkapnya.
  3. Batasi akses berdasarkan IP — “Pengaturan” → “Pembatasan akses berdasarkan IP” (masukkan IP Anda sebelum mengaktifkan, jika tidak Anda akan mengunci akses sendiri).
  4. Masukkan lisensi — aktifkan kode aktivasi ARCIVEO-… dari akun ke domain Anda lalu tempel kunci ke “Pengaturan” → “Lisensi”. Selengkapnya.
  5. Atur notifikasi — Telegram dan/atau Email di “Pengaturan”. Selengkapnya.
  6. Hapus penginstal public/start_db.php jika masih ada: file ini memungkinkan pembuatan ulang basis data tanpa otorisasi. Selama file berada di root panel atau di public/, panel akan memperingatkannya dengan banner merah.
Selesai. Alat keamanan sudah berjalan — dasbor akan langsung menampilkan statusnya dan Skor Keamanan. Panduan setiap alat ada di FAQ.
Arcivéo - Security Monitor © 2026