Deploy dengan Easypanel
RingkasnyaBuat layanan MySQL dan layanan aplikasi dari repo GitHub memakai Dockerfile. Isi environment, pasang volume storage, arahkan domain ke port 80, lalu jadwalkan schedule:run setiap menit. Container menjalankan pondok:install sendiri saat start.
Daftar isi
Easypanel memasang aplikasi dari repo GitHub dengan Dockerfile, memberi domain HTTPS, dan menyediakan MySQL sebagai layanan terpisah. Halaman ini memakai Dockerfile bawaan repo Pondok CMS, jadi Anda tidak perlu menulis konfigurasi Docker sendiri.
Apa yang dibutuhkan untuk Easypanel? Tautan ke bagian Apa yang dibutuhkan untuk Easypanel?
- VPS yang sudah terpasang Easypanel, dengan domain atau subdomain yang DNS-nya mengarah ke VPS.
- Repo
dankedev/pondoksudah publik, jadi Easypanel bisa menariknya tanpa token. Fork ke akun sendiri bila Anda paham Git dan ingin mengubah kode. Bila tidak, pasang langsung dari repo ini. - Mesin dengan PHP untuk membuat
APP_KEY, atau cara lain untuk menghasilkan kunci Laravel. - RAM VPS minimal 2 GB. Build asset dan
composer installcukup berat.
Bagaimana langkah pemasangannya? Tautan ke bagian Bagaimana langkah pemasangannya?
Buat project. Di dasbor Easypanel, buat project baru, misalnya
pondok. Nama project ikut membentuk nama host internal antar-layanan.Buat layanan MySQL. Di dalam project, pilih layanan baru bertipe MySQL, beri nama
db, dan isi nama database serta user. Kosongkan kolom password bila Anda ingin Easypanel membuatnya. Setelah layanan jalan, buka tab Credentials dan salin host internal, port, user, password, dan nama database. Jangan menebak host internal: format persisnya ditampilkan di tab itu.Buat layanan aplikasi. Tambahkan layanan App. Di Source, pilih GitHub, isi
dankedev/pondok(atau fork Anda bila punya), pilih branchmainatau tag rilis, dan biarkan Build Path/. Di Build, pilih Dockerfile dengan pathDockerfile.Isi Environment. Buka tab Environment dan tempel kunci berikut:
Kunci Keterangan APP_URLAlamat publik persis, termasuk https://APP_KEYBuat dengan php artisan key:generate --showdi mesin ber-PHP. Wajib: container berhenti bila kosongDB_HOSTHost internal dari tab Credentials layanan MySQL DB_PORT3306DB_DATABASE,DB_USERNAME,DB_PASSWORDSama dengan Credentials MySQL SUPER_ADMIN_NAME,SUPER_ADMIN_EMAIL,SUPER_ADMIN_PASSWORDAkun pertama, dibuat saat container start TRUSTED_PROXIES*. Dockerfile sudah menyetel ini, tetapi tulis eksplisit agar jelas bahwa aplikasi berada di belakang proxy EasypanelSESSION_DRIVER,CACHE_STORE,QUEUE_CONNECTIONdatabaseMAIL_*Sesuai penyedia email Anda, bila ingin mengirim email Kunci lain mengikuti konfigurasi .env.
APP_ENV=productiondanAPP_DEBUG=falsesudah menjadi bawaan image.Simpan APP_KEY di tempat amanAPP_KEYmengenkripsi sesi dan data sensitif. Kunci yang hilang atau berganti membuat data terenkripsi tidak terbaca. Simpan salinannya di pengelola kata sandi, di luar Easypanel.Pasang volume storage. Kecuali unggahan disimpan di S3 (isi
FILESYSTEM_DISK=s3dan kunciAWS_*), Anda wajib menambahkan volume. Tanpa ini, unggahan hilang setiap kali layanan dibuat ulang. Di bagian Mounts, pilih Add Volume Mount, beri nama volume (misalnyapondok-storage), dan isi mount path/var/www/html/storage. Volume yang kosong tidak masalah: entrypoint membuat sub-folder yang dibutuhkan.Jangan hapus volumeMenghapus volume storage atau layanan MySQL menghapus unggahan dan database. Pastikan backup tersedia sebelum menghapus layanan apa pun.
Atur domain dan port. Di tab Domains, tambahkan domain Anda dan isi port tujuan
80, port yang didengarkan Apache di dalam container. Aktifkan HTTPS agar Easypanel menerbitkan sertifikat.Deploy. Tekan Deploy. Build pertama memakan beberapa menit karena Composer dan Vite berjalan di dalam image.
Setiap kali container start, entrypoint menjalankan
pondok:install --no-interaction: migrasi, data awal, dan pembuatan super-admin. Perintah ini aman diulang. Bila database belum siap, ia mencoba lagi sampai 10 kali dengan jeda 5 detik. Anda tidak perlu menjalankan installer manual. Pantau tab log sampai Apache berjalan.Jadwalkan cron. Pondok membutuhkan
php artisan schedule:runsetiap menit untuk antrean dan tagihan bulanan. Dokumentasi Easypanel tidak menjelaskan fitur cron bawaan untuk layanan aplikasi, jadi pilih salah satu:Layanan kedua dari repo yang sama. Buat layanan App baru dengan sumber, Dockerfile, environment, dan volume yang sama, tanpa domain. Ganti perintah start-nya (bila tab Advanced pada versi Easypanel Anda menyediakannya) menjadi:
Terminalsh -c 'while true; do php artisan schedule:run; sleep 60; done'Cron di host VPS. Lewat SSH, tambahkan baris crontab yang mengeksekusi perintah di container aplikasi. Cari nama container dengan
docker ps:Terminal* * * * * docker exec NAMA_CONTAINER php artisan schedule:run >> /dev/null 2>&1Nama container bisa berubah setelah redeploy, jadi periksa lagi setelah tiap deploy.
Login lalu bersihkan password awal. Buka
APP_URL/admin, masuk dengan akunSUPER_ADMIN_*, lalu hapusSUPER_ADMIN_PASSWORDdari tab Environment dan deploy ulang.Periksa instalasi. Buka Shell pada layanan aplikasi, lalu jalankan:
Terminalphp artisan pondok:doctorPerbaiki semua temuan sebelum dipakai. Healthcheck aplikasi ada di
/upbila Anda ingin memantaunya dari luar.
Bagaimana backup? Tautan ke bagian Bagaimana backup?
Sebelum upgrade dan secara berkala, cadangkan dua hal: database dan storage.
Database. Tab Backups pada layanan MySQL membuat backup logis terjadwal ke penyedia penyimpanan yang Anda atur di pengaturan server. Uji satu backup dan satu restore di data uji sebelum mengandalkannya. Sebagai tambahan, ambil dump manual lewat Shell layanan MySQL:
TerminalMYSQL_PWD="PASSWORD_DB" mysqldump --single-transaction --no-tablespaces -u USER_DB NAMA_DB > pondok-db.sqlStorage. Tab Storage menyediakan backup volume. Bila tidak tersedia di versi Anda, arsipkan
/var/www/html/storagelewat Shell aplikasi, lalu salin keluar VPS.
Enkripsi hasil backup dan simpan di lokasi terpisah dari VPS.
Bagaimana upgrade versi? Tautan ke bagian Bagaimana upgrade versi?
Ambil backup database dan storage sebelum upgrade. Migrasi tidak bisa dibatalkan dengan menekan tombol.
Backup database dan storage.
Pilih branch atau tag baru di Source bila perlu, lalu Deploy agar Easypanel menarik kode dan membangun image baru. Entrypoint menjalankan
pondok:installlagi saat start.Di Shell layanan aplikasi, jalankan:
Terminalphp artisan pondok:upgrade --forceJalankan
php artisan pondok:doctoruntuk memastikan semuanya sehat.
Perintah upgrade tidak menjalankan migrate:fresh, jadi data tetap utuh. Bila Anda memakai layanan cron kedua, deploy ulang juga layanan itu agar memakai kode yang sama.