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. Pada VPS baru setiap langkah berlaku berurutan; jika server sudah dikonfigurasi atau sudah ada panel hosting di dalamnya, sebagian pekerjaan sengaja ditinggalkan skrip untuk Anda — apa saja itu, ia tuliskan di akhir kerjanya (pembahasan keluarannya ada di langkah 01).
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.
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.
my.arciveo.com → bagian “Konfigurasi server” (tersedia setelah berlangganan Arcivéo Security 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):
2) Jalankan di server sebagai root perintah dari akun — tampilannya seperti ini:
3) Bacalah keluaran di bagian akhir — di sana tertulis apa yang tersisa untuk Anda. Skrip mengakhiri kerjanya dengan blok pemeriksaan dan daftar “Selanjutnya — pemasangan panel”. Sebagian langkah sengaja tidak dikerjakannya: apa saja itu bergantung pada profil yang dipilih dan pada apa yang ditemukannya di server. Cocokkan dengan daftar di bawah — yang perlu dikerjakan hanya butir-butir yang barisnya muncul pada keluaran Anda.
Control panel detected (…) — situs dibuat lewat panel hosting itu sendiri, skrip tidak membuat vhost. Langkah 03, cabang “Server dengan panel hosting”.No vhost created (no domain given) — profil “Server terkonfigurasi” tanpa domain: vhost tanpa nama akan menjadi situs bawaan dan mencegat situs-situs Anda sendiri, karena itu ia tidak dibuat. Langkah 03, cabang “Membuat vhost secara manual”.sudo rules NOT written — skrip tidak dapat menentukan akun mana yang menjalankan panel. Ini situasi biasa: file panel diunggah justru setelah konfigurasi otomatis, sehingga belum ada dasar untuk menentukannya. Tanpa aturan tersebut, modul tidak akan melihat data sistem. Langkah 04, blok “sudo untuk server web”.! Nginx does not read .htaccess — di depan Apache ada Nginx, dan menuliskan larangan ke konfigurasinya secara otomatis tidak berhasil. Kerjakan ini, wajib: jika tidak, data/, keys/, database/, dan config.php terekspos ke luar melewati .htaccess. Langkah 03, blok “Jika di depan Apache ada Nginx”.UFW installed but inactive — firewall terpasang, tetapi mati: pada server yang sudah dikonfigurasi skrip tidak menyalakannya sendiri agar tidak memutus akses Anda. Nyalakan sendiri, dan pastikan mengizinkan port SSH Anda:
Fail2ban installed but not running — jalankan: sudo systemctl enable --now fail2ban.Database server present … but not running — jalankan DBMS sebelum langkah 04: sudo systemctl enable --now mariadb (atau mysql — tergantung yang terpasang).Certbot skipped — issue SSL in … — sertifikat diterbitkan lewat sakelar Let's Encrypt di panel hosting; langkah 06 tidak Anda perlukan.All checks passed. Butir dengan ! perlu perhatian; rinciannya ditulis ke log, jalurnya dicetak skrip di bagian paling akhir (Log: …).
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:
Setelah beberapa menit (kadang hingga satu jam), pastikan domain sudah mengarah ke server:
/var/www/monitor dan menyiapkan situs Apache (DocumentRoot ke akar panel, PHP-FPM, AllowOverride untuk .htaccess). Pada keluaran skrip ini adalah baris vhost … → DocumentRoot …. Anda tidak perlu membuat direktori dan vhost sendiri — cukup unggah file dan atur izinnya.
Cabang “Server dengan panel hosting” (pada keluaran: Control panel detected (…)). Situs di server seperti itu dikelola oleh panel, dan skrip sengaja tidak membuat vhost sendiri — vhost itu akan tertimpa pada penyusunan ulang konfigurasi yang pertama oleh panel. Urutannya begini:
public_html domain tersebut: bersama index.php, api/, assets/ harus ada pula berkas layanan config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Tidak perlu memindahkan apa pun ke atas web-root: folder layanan ditutup oleh berkas .htaccess dari distribusi, dan di bawah Nginx — oleh larangan yang dituliskan skrip ke konfigurasi domain.config.php (langkah 05). Ganti jalur pada perintah menjadi /home/akun/web/domain/public_html, dan pemiliknya — menjadi pengguna domain tersebut, bukan www-data.Cabang “Membuat vhost secara manual” (pada keluaran: No vhost created (no domain given)). Ini hanya terjadi pada profil “Server terkonfigurasi”, ketika domain tidak diteruskan. Cara termudah — jalankan ulang perintah dari akun dengan menyertakan domain:
Menjalankan ulang itu aman: yang sudah dikerjakan tidak digandakan. Namun jika vhost memang perlu dibuat dengan tangan — inilah konfigurasi yang sama seperti yang ditulis penginstal:
ServerName di sini wajib. Vhost tanpa nama menjadi situs bawaan Apache dan mulai merespons domain milik orang lain di server yang sama. Karena alasan yang sama, jangan menonaktifkan 000-default.conf pada server yang sudah dikonfigurasi: situs itu bisa saja telah diubah menjadi situs kerja seseorang — pada VPS baru penginstal menyingkirkannya sendiri, di sini hal itu tidak perlu dilakukan.
! Nginx does not read .htaccess). Nginx menyajikan berkas statis langsung dari disk dan tidak membaca .htaccess — folder layanan akan terbuka ke luar, meskipun Apache menutupnya dengan benar. Skrip sudah menyiapkan berkas berisi larangan sebelumnya; berkas itu perlu disertakan pada blok server{} situs Anda, lalu muat ulang Nginx:
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:
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.
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:
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:
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:
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.
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:
admin sendiri saat pertama kali dibuka di browser (dari database/db.sql), jika BD kosong.
Jika tabel tidak terbuat (panel menampilkan galat koneksi ke BD atau layar kosong alih-alih formulir login) — impor skemanya secara manual. Perintah dijalankan di root panel, nilainya diambil dari blok di atas:
$DBNAME / $DBUSER / $DBPASS sudah “terlupakan” (sesi terminal baru) — masukkan nilainya ke perintah dengan tangan atau tetapkan lagi dengan tiga baris yang sama dari blok di atas.
sudo rules NOT written — belum ada dasar untuk menentukan akun panel (file belum diunggah), sehingga aturan tidak dibuat. Tanpa aturan itu bagian seperti firewall, Fail2ban, dan CrowdSec akan tetap kosong. Sekarang, setelah file berada di tempatnya, jalankan lagi perintah dari akun dengan menyebut akunnya secara eksplisit:
www-data ganti dengan pengguna yang menjalankan PHP situs Anda (pada panel hosting biasanya pemilik domain). Cara melihatnya:
/etc/sudoers.d/monitor ada dan di dalamnya terdapat baris dengan pengguna Anda.
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:
Masukkan nilai Anda pada bagian yang disorot; sisanya biarkan apa adanya:
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.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:
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.
http:// Anda tidak akan bisa masuk.
Certbot skipped — issue SSL in …). Sertifikat diterbitkan lewat sakelar Let's Encrypt pada web-domain di panel itu sendiri — dengan begitu perpanjangannya pun diurus oleh panel.
certbot dan plugin untuk Apache sudah dipasang oleh konfigurasi otomatis. DNS domain sudah harus mengarah ke server (langkah 02). Penerbitan cukup satu perintah:
Jika panel juga harus bisa dibuka dengan www. — sebutkan kedua nama dalam satu perintah, jika tidak, pada alamat kedua peramban akan menampilkan peringatan sertifikat:
Y.<VirtualHost *:443>, mengatur redirect http→https dan perpanjangan otomatis. Di akhir — Successfully enabled HTTPS.
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://.
Buka https://monitor.example.com, masuk dengan admin / useradmin lalu ikuti daftar periksa:
ARCIVEO-… dari akun ke domain Anda lalu tempel kunci ke “Pengaturan” → “Lisensi”. Selengkapnya.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.sudo /usr/local/bin/clamav-scan.sh) sangat membebani disk dan prosesor serta bisa berjalan satu jam atau lebih — pada server yang sedang berjalan lebih baik menunggu jadwal malam pukul 01:30. Bagian “Disk (SMART)”, “Kinerja”, dan “Pembaruan keamanan” terisi sendiri: masing-masing setiap 30 menit, 5 menit, dan sekali sejam.