วิธีการ Deploy ง่ายๆด้วย CapRover

ปัจจุบันมีวิธีการ Deploy Website หรือระบบของเราหลากหลายวิธีมากๆ จะพยายาม Setup Server ตัวเองขึ้นมา ลง Stack ที่ต้องใช้ หรือจะใช้ Service แบบ PaaS แบบ Heroku

แต่ปัญหาของมันคือ Heroku ไม่มี Server อยู่ใกล้ประเทศไทย ใกล้สุดตอนนี้อยู่ที่ญี่ปุ่น ซึ่งมันก็ทำให้เว็บไซต์ของเราโหลดช้าลง (อาจจะไม่เยอะ แต่มันก็ช้ากว่านะ😂)

ผมขอแนะนำให้รู้จักกับ CapRover

CapRover คือโปรแกรม Open Source ที่ให้คุณสามารถมี PaaS ของตัวเอง ไว้บน server ของคุณเอง หรือจะวางไว้บน VPS ประเทศไทย หรือ VPS ใกล้ๆบ้านเราแบบ DigitalOcean ได้ฟรี และสามารถ Deploy ได้ง่าย เหมือนใช้ Heroku

ก่อนอื่นเลยเราต้องมา Setup ระบบ CapRover บน Server ของเราก่อน

Requirement

สิ่งที่คุณต้องมี

  1. Server (ที่สามารถลง Docker ได้ และมี Public IP)
  2. Domain (ให้ point มาที่ Server ที่ต้องการจะใช้ก่อนด้วยนะครับ)

Setup Server

ผมจะทำการ Setup บน Server Ubuntu 20.04 ให้ดูนะครับ

1. Firewall

ก่อนอื่นต้องเช็คว่าคุณได้ตั้ง Firewall ไว้รึเปล่า ถ้าไม่ได้ตั้งให้ข้ามไปได้เลย ถ้าตั้งต้อง allow ports ดังนี้ก่อนนะครับ

TCP 80,443,3000,996,7946,4789,2377

UDP 7946,4789,2377

VPS อย่าง DigitalOcean หรือ Nipa Cloud มี external firewall service (อยู่นอก VPS ของเรา) อย่าลืมไปตั้งตรงนั้นให้เรียบร้อยนะครับ หรือถ้าใช้ UFW ก็อย่าลืม allow

1. ลง Docker

CapRover ทำงานบน docker เพราะฉะนั้นบนเครื่อง Server ของคุณจะต้องลง docker ไว้ก่อน

ลง Docker บน Ubuntu ให้ทำตามนี้เลย

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

ตบท้ายด้วย mod user ให้สามารถใช้ docker ได้โดยไม่ต้อง sudo

sudo usermod -aG docker $USER

2. ลง CapRover

ลงง่ายมาก command เดียวจบ!

docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover

3. ใช้งาน CapRover

เมื่อมันขึ้นว่า

*** CapRover is initializing ***
Please wait at least 60 seconds before trying to access CapRover.

ให้รอหนึ่งนาที แล้วเข้าไปที่ http:{IP ของคุณ}:3000 และใส่รหัส captain42

ก่อนอื่นเลย รีบเปลี่ยนรหัสผ่าน! และก็เสร็จเรียบร้อย คุณมี Heroku ใช้บน Server ของคุณเรียบร้อยแล้ว!

การใช้งานก่อนอื่นเลย ให้คุณสร้าง App โดยใส่ชื่อที่ต้องการและกด Create New App ถ้าต้องแอพคุณต้องมี persistent data หรือถ้าต้องการให้ data ไม่หายเมื่อเกิดการ restart เกิดขึ้น ให้ติ้กช่อง Has Persistant Data ด้วย

เสร็จแล้ว!

หลังจากคุณสามารถ Deploy App ของคุณลง CapRover ได้ 6 วิธี

  1. ผ่าน CapRover CLI
  2. Zip ไฟล์เป็น .tar และอัพโหลดผ่าน browser (ต้องมี Captain Definition File ด้วยนะ)
  3. Deploy ผ่าน Webhook ของ Git Repository
  4. เขียน Dockerfile ลง CapRover
  5. เขียน Captain-definition ลง CapRover
  6. เลือกใช้ Docker image

ถ้าหากคุณต้องการใช้แอพเช่น Wordpress หรือต้องการ MySQL Database สามารถกด One-Click Apps/Databases ได้ด้วยนะ โดยการกด One-Click Apps/Database ตอนกดสร้าง Create a new app