Deploy dengan Easypanel

  • Diperbarui
  • 5 menit baca
  • Untuk pengelola server / devops
  • Waktu pengerjaan 30 menit

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/pondok sudah 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 install cukup berat.

Bagaimana langkah pemasangannya? Tautan ke bagian Bagaimana langkah pemasangannya?

  1. Buat project. Di dasbor Easypanel, buat project baru, misalnya pondok. Nama project ikut membentuk nama host internal antar-layanan.

  2. 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.

  3. Buat layanan aplikasi. Tambahkan layanan App. Di Source, pilih GitHub, isi dankedev/pondok (atau fork Anda bila punya), pilih branch main atau tag rilis, dan biarkan Build Path /. Di Build, pilih Dockerfile dengan path Dockerfile.

  4. Isi Environment. Buka tab Environment dan tempel kunci berikut:

    KunciKeterangan
    APP_URLAlamat publik persis, termasuk https://
    APP_KEYBuat dengan php artisan key:generate --show di mesin ber-PHP. Wajib: container berhenti bila kosong
    DB_HOSTHost internal dari tab Credentials layanan MySQL
    DB_PORT3306
    DB_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 Easypanel
    SESSION_DRIVER, CACHE_STORE, QUEUE_CONNECTIONdatabase
    MAIL_*Sesuai penyedia email Anda, bila ingin mengirim email

    Kunci lain mengikuti konfigurasi .env. APP_ENV=production dan APP_DEBUG=false sudah menjadi bawaan image.

    Simpan APP_KEY di tempat aman

    APP_KEY mengenkripsi sesi dan data sensitif. Kunci yang hilang atau berganti membuat data terenkripsi tidak terbaca. Simpan salinannya di pengelola kata sandi, di luar Easypanel.

  5. Pasang volume storage. Kecuali unggahan disimpan di S3 (isi FILESYSTEM_DISK=s3 dan kunci AWS_*), Anda wajib menambahkan volume. Tanpa ini, unggahan hilang setiap kali layanan dibuat ulang. Di bagian Mounts, pilih Add Volume Mount, beri nama volume (misalnya pondok-storage), dan isi mount path /var/www/html/storage. Volume yang kosong tidak masalah: entrypoint membuat sub-folder yang dibutuhkan.

    Jangan hapus volume

    Menghapus volume storage atau layanan MySQL menghapus unggahan dan database. Pastikan backup tersedia sebelum menghapus layanan apa pun.

  6. 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.

  7. 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.

  8. Jadwalkan cron. Pondok membutuhkan php artisan schedule:run setiap 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:

      Terminal
      sh -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>&1

      Nama container bisa berubah setelah redeploy, jadi periksa lagi setelah tiap deploy.

  9. Login lalu bersihkan password awal. Buka APP_URL/admin, masuk dengan akun SUPER_ADMIN_*, lalu hapus SUPER_ADMIN_PASSWORD dari tab Environment dan deploy ulang.

  10. Periksa instalasi. Buka Shell pada layanan aplikasi, lalu jalankan:

    Terminal
    php artisan pondok:doctor

    Perbaiki semua temuan sebelum dipakai. Healthcheck aplikasi ada di /up bila 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:

    Terminal
    MYSQL_PWD="PASSWORD_DB" mysqldump --single-transaction --no-tablespaces -u USER_DB NAMA_DB > pondok-db.sql
  • Storage. Tab Storage menyediakan backup volume. Bila tidak tersedia di versi Anda, arsipkan /var/www/html/storage lewat 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?

Backup dulu

Ambil backup database dan storage sebelum upgrade. Migrasi tidak bisa dibatalkan dengan menekan tombol.

  1. Backup database dan storage.

  2. Pilih branch atau tag baru di Source bila perlu, lalu Deploy agar Easypanel menarik kode dan membangun image baru. Entrypoint menjalankan pondok:install lagi saat start.

  3. Di Shell layanan aplikasi, jalankan:

    Terminal
    php artisan pondok:upgrade --force
  4. Jalankan php artisan pondok:doctor untuk 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.

Langkah berikutnya Tautan ke bagian Langkah berikutnya

Perbaiki halaman ini di GitHub