Untuk hosting yang memakai cPanel (Niagahoster, Hostinger, Rumahweb, IDCloudHost, dan sejenisnya). Ikuti urut dari Langkah 0. Setiap langkah punya tanda โ supaya Anda tahu sudah benar. Tampilan menu cPanel tiap penyedia sedikit berbeda; nama menu yang dipakai di sini adalah nama bakunya.
Siapkan catatan berikut. Tulis di Notepad, jangan di kertas yang terlihat orang lain.
monitor.perusahaan.com (disarankan subdomain khusus).monitorpic-xampp-v9xx-โฆ.zip).pdo_mysql (kadang tertulis mysqlnd/pdo), mbstring, json, curl, openssl, zlib. Klik Save.monitor pada perusahaan.com./home/akunanda/monitor.perusahaan.com). Catat: di sinilah semua berkas aplikasi diunggah (Langkah 4).https://monitor.perusahaan.com menampilkan halaman default hosting dengan gembok (belum ada aplikasi, itu wajar).monitorpic โ Create Database. Hasil akhirnya berawalan nama akun, mis. akunanda_monitorpic.app (jadi akunanda_app). Klik Password Generator โ Use Password (salin password panjang itu) โ Create User.root dan jangan memakai password yang sama dengan akun cPanel. Bila password mengandung tanda kutip tunggal ' atau garis miring terbalik \, buat ulang password lain agar tidak merusak config.php.monitorpic) berisi index.html, api.php, assets, inc, dll.aplikasi.zip.aplikasi.zip โ tunggu 100%.aplikasi.zip โ Extract โ Extract File(s). Lalu hapus aplikasi.zip..htaccess terlihat.index.html, api.php, cron.php, .htaccess, folder assets, inc, uploads, logs. Bukan terbungkus lagi di dalam folder monitorpic/. Bila terbungkus, pindahkan isinya satu tingkat ke atas.database_hosting.sql (bukan database.sql). Berkas hosting tidak memuat CREATE DATABASE (yang akan gagal di hosting) dan tidak memuat data/akun contoh. Hanya ada satu akun: admin.database_hosting.sql dari File Manager ke komputer Anda (klik kanan โ Download), atau gunakan salinan hasil ekstrak di komputer.akunanda_monitorpic).database_hosting.sql โ biarkan pengaturan bawaan โ klik Import di bagian paling bawah.users, tickets, settings, menus, โฆ). Buka tabel users โ Browse โ hanya ada 1 baris (admin).database_hosting.sql. Di XAMPP: phpMyAdmin โ database monitorpic โ Export โ Quick โ SQL. Impor berkas hasilnya ke database hosting (hapus baris CREATE DATABASE/USE bila ada). Salin juga isi folder uploads/ (dokumen tiket) ke hosting. Bila versi aplikasi di XAMPP lebih lama, jalankan php migrate.php (lihat Langkah 15). Setelah itu tetap ganti semua password akun contoh.config.example.php โ Copy โ nama baru config.php (di folder yang sama).config.php โ Edit (abaikan peringatan encoding โ Edit).define('DB_HOST', 'localhost');
define('DB_NAME', 'akunanda_monitorpic'); // nama database LENGKAP
define('DB_USER', 'akunanda_app'); // nama user LENGKAP
define('DB_PASS', 'password-dari-langkah-3');
define('VERIFY_SSL', true); // biarkan true
config.php โ Change Permissions โ set 640 (Owner: baca+tulis; Group: baca; World: kosong) โ Save. Bila nanti muncul error "tidak bisa membaca config", ubah ke 644.DB_HOST dengan nilai dari halaman MySQL hosting Anda (sebagian hosting memakai nama server khusus, bukan localhost).uploads, logs dapat ditulis: klik kanan folder โ Change Permissions โ 755 (bila nanti unggah dokumen gagal, ubah ke 775).backups dibuat otomatis oleh aplikasi saat backup pertama. Bila gagal, buat folder baru bernama backups dan beri izin 755..htaccess ada di folder utama dan di dalam uploads, logs, inc, tests, tools, migrations, docs. Berkas ini menolak akses web ke folder-folder internal tersebut.uploads dan logs berizin 755/775 dan masing-masing berisi .htaccess.Berkas cek_hosting.php memeriksa PHP, ekstensi, config, folder, database, password bawaan, cron, dan HTTPS, dan memberi tahu apa yang perlu diperbaiki. Ia tidak mengubah data dan tidak menampilkan password.
config.php lagi dan tambahkan satu baris di paling bawah (ganti isinya dengan kata acak panjang buatan Anda, minimal 16 karakter):define('SETUP_KEY', 'ganti-dengan-kata-acak-panjang-anda');
https://monitor.perusahaan.com/cek_hosting.php?k=ganti-dengan-kata-acak-panjang-andaSETUP_KEY dari config.php dan hapus berkas cek_hosting.php dari server.SETUP_KEY halaman ini menolak semua akses (403). Jangan biarkan SETUP_KEY dan cek_hosting.php terpasang selamanya.https://monitor.perusahaan.com/ โ login admin / admin123.6281234567890, tanpa + dan tanpa 0 di depan) dan Email Anda โ Simpan.cek_hosting.php?k=โฆ; baris "Password bawaan/mudah ditebak" harus berubah menjadi [OK].admin123, siapa pun yang tahu alamat situs dapat masuk sebagai Admin. Kerjakan langkah ini segera setelah situs bisa dibuka.cron.php harus dijalankan tiap 15 menit. Ia mengirim reminder terjadwal, memproses antrean notifikasi, pengingat persetujuan, ringkasan terjadwal, dan backup.
*/15 dan kolom lain *).akunanda dan folder Document Root dari Langkah 2):/usr/local/bin/php /home/akunanda/monitor.perusahaan.com/cron.php >/dev/null 2>&1
/usr/local/bin/php, /opt/cpanel/ea-php81/root/usr/bin/php, atau php saja). Tanyakan support: "perintah cron untuk menjalankan PHP 8.1 CLI".* * * * * (tiap menit), tunggu 2 menit, cek Kesehatan Sistem, lalu ubah kembali ke tiap 15 menit.logs/cron.log terisi.config.php:define('WA_PROVIDER', 'fonnte');
define('FONNTE_TOKEN', 'tempel-token-di-sini');
define('WA_TEST_NUMBER', '6281234567890'); // sementara: semua pesan dialihkan ke nomor Anda sendiri
WA_TEST_NUMBER ('') agar pesan terkirim ke PIC sebenarnya.WA_TEST_NUMBER terisi, semua pesan dialihkan ke nomor itu dan PIC tidak menerima apa pun. Itu disengaja untuk uji coba; jangan lupa dikosongkan saat produksi. Harga/kuota Fonnte dapat berubah, cek di situs mereka.Dua pilihan: akun email dari hosting Anda, atau Gmail dengan App Password.
noreply@perusahaan.com. Lalu pada akun itu klik Connect Devices untuk melihat server SMTP (biasanya mail.perusahaan.com, port 465 SSL atau 587).myaccount.google.com/apppasswords โ buat App Password (16 karakter, tanpa spasi). Server smtp.gmail.com port 587.config.php:define('SMTP_HOST', 'mail.perusahaan.com');
define('SMTP_PORT', 587);
define('SMTP_USER', 'noreply@perusahaan.com');
define('SMTP_PASS', 'password-email');
define('SMTP_FROM_NAME', 'MonitorPIC');
define('EMAIL_TEST_ADDRESS', 'emailanda@gmail.com'); // sementara, kosongkan saat produksi
Buka alamat-alamat berikut di browser (jendela Incognito). Hasil yang benar tertulis di kolom kanan.
| Alamat | Hasil yang benar |
|---|---|
/config.php | Halaman kosong atau 403. Tidak boleh menampilkan teks kode. |
/database_hosting.sql dan /database.sql | 403 Forbidden (atau 404). Tidak boleh terunduh. |
/backups/ dan /logs/cron.log | 403 / 404. |
/uploads/ | 403 / 404 (dokumen tiket diunduh lewat aplikasi, bukan alamat langsung). |
/inc/lib.php, /tests/, /tools/, /migrations/ | 403 / 404. |
/lib.php, /cron.php, /migrate.php | 403 (atau pesan "CLI only"). |
http://monitor.perusahaan.com (tanpa s) | Otomatis pindah ke https://. |
.htaccess ada (aktifkan Show Hidden Files) dan tanyakan support apakah hosting mengizinkan .htaccess (AllowOverride). Pada server Nginx murni .htaccess tidak dipakai; minta support memblokir folder-folder tersebut.02:00, simpan 7 berkas โ Simpan.monitorpic_AAAAMMDD_JJMMDD.sql.gz di daftar.uploads/ (dokumen tiket). Unduh folder itu lewat File Manager (Compress โ Download) sesekali.SETUP_KEY dari config.php dan hapus cek_hosting.php dari server. Hapus juga database_hosting.sql dari server (sudah ada di komputer Anda).Cara memulihkan dari backup ada di docs/BACKUP.md (impor lewat phpMyAdmin pada database kosong atau database yang sama).
config.php, folder uploads/, backups/, logs/ (ZIP resmi memang tidak menyertakan config.php).database_hosting.sql (itu menghapus semua data). Terapkan migrasi saja: bila hosting punya Terminal (cPanel โ Terminal): cd ~/monitor.perusahaan.com && php migrate.php. Bila tidak ada Terminal: buat cron sekali jalan dengan perintah /usr/local/bin/php /home/akunanda/monitor.perusahaan.com/migrate.php >> /home/akunanda/monitor.perusahaan.com/logs/migrate.log 2>&1 di menit terdekat, tunggu, baca logs/migrate.log (harus ada "Tidak ada migrasi baru" atau daftar migrasi terapan), lalu hapus cron itu.| Gejala | Penyebab umum โ perbaikan |
|---|---|
| Muncul "File config.php belum ada" | Langkah 6 belum dikerjakan, atau nama salah (config.php, bukan config.example.php/config.php.txt). |
| Layar putih / "500 Internal Server Error" | Buka cPanel โ Errors atau berkas error_log di Document Root. Penyebab umum: PHP < 8.0 (Langkah 1), ekstensi belum aktif, salah ketik di config.php (tanda kutip/titik koma), atau .htaccess memuat perintah yang tidak diizinkan hosting (ganti nama sementara menjadi .htaccess.off untuk menguji, lalu hubungi support). |
| Login gagal "koneksi database" | Jalankan cek_hosting.php: kode 1045 = user/password salah; 1044 = user belum ditambahkan ke database; 1049 = nama database salah; 2002 = DB_HOST salah. |
| Impor phpMyAdmin gagal / timeout | Pastikan memakai database_hosting.sql (bukan database.sql). Bila "file terlalu besar" (jarang, berkas ยฑ20 KB), minta support menaikkan upload_max_filesize. |
| Halaman terbuka tapi tampilan berantakan / tombol tidak berfungsi | Cache lama: Ctrl+F5. Pastikan folder assets ikut terunggah lengkap (ada assets/css dan assets/js). |
| Dokumen tiket tidak bisa diunggah | Folder uploads tidak bisa ditulis: izin 755 โ 775. Periksa juga batas upload_max_filesize di Select PHP Version โ Options. |
| Reminder tidak terkirim otomatis | Kesehatan Sistem: cron hijau? Jam tenang aktif? Frekuensi/hari/jam di Reminder โ Jadwal sudah benar? WA_TEST_NUMBER masih terisi? Lihat Reminder โ Riwayat dan logs/cron.log. |
| Jam pada pesan/laporan selisih | Zona waktu bawaan Asia/Jakarta diatur config.php. Pastikan baris date_default_timezone_set('Asia/Jakarta'); ada di bagian atas config.php (ada pada config.example.php). |
| Backup gagal "folder tidak dapat ditulis" | Buat folder backups manual dan izin 755/775. |
| Saya lupa password admin | phpMyAdmin โ tabel users โ ubah baris admin; atau gunakan fitur "Lupa password" (OTP WhatsApp) bila Fonnte aktif dan nomor WA admin terisi. Hubungi pengembang bila perlu menyetel ulang hash. |
.htaccess adadatabase_hosting.sql diimporconfig.php diisi, izin 640cek_hosting.php tanpa [GAGAL]WA_TEST_NUMBER/EMAIL_TEST_ADDRESS dikosongkanSETUP_KEY, cek_hosting.php, database_hosting.sql dihapus dari server