Bunchee
Back to Blog

FlowiseAI บน AWS EC2

ในเว็บไซต์ของ FlowiseAI ได้แนะนำวิธีการ ติดตั้ง FlowiseAI บน AWS EC2 ไว้แล้ว เพียงแต่เป็น AWS Linux ไม่ใช่ Ubuntu บทความนี้เพื่อช่วยเติมเต็ม

FlowiseAI บน AWS EC2

ในเว็บไซต์ของ FlowiseAI ได้แนะนำวิธีการ ติดตั้ง FlowiseAI บน AWS EC2 ไว้แล้ว เพียงแต่เป็น AWS Linux ไม่ใช่ Ubuntu บทความนี้เพื่อช่วยเติมเต็ม สำหรับคนที่ต้องการลง FlowiseAI บน AWS EC2 และเลือกใช้ Ubuntu 22.04

สร้าง AWS EC2 Instance ใหม่

New AWS EC2 Instance for FlowiseAI

ไปที่ EC2 ของ AWS คลิ๊กปุ่ม Launch instance

ตั้งชื่อ ตามต้องการ ใน Name and tags

ในที่นี้ขอตั้งชื่อว่า FlowiseAI

เลือก Ubuntu ซึ่งมี Default เป็น Ubuntu Server 22.04 และเป็น Free tier eligible

ถ้าสมัคร AWS ใหม่ ๆ จะได้ใช้ฟรี 12 เดือน

Setup AWS EC2 Instance use FlowiseAI as Name

ต่อไปให้เลือก t2.micro ซึ่งมีขนาด 1 vCPU 1 GiB Ram สเปคเท่านี้ก็เพียงพอแล้ว ที่สำคัญคือสามารถใช้ได้ฟรี 1 ปี (ถ้าเราเป็นสมาชิกใหม่ของ AWS)

สำหรับ Key pair (login) ให้เลือก Create new key pair

ตรง Network settings เป็นการกำหนด Security Group ให้เลือก Create security group แล้วติ๊กถูกทั้ง 3 ช่องตามรูปด้านล่าง โดย

  • Allow SSH traffic from จะเปิดพอร์ต 22

  • Allow HTTPS traffic from the internet จะเปิดพอร์ต 433

  • Allow HTTP traffic from the internet จะเปิดพอร์ต 80

Key pair and Security Group using AWS EC2 t2.micro for FlowiseAI


วิธีสร้าง Key pair บน AWS EC2

ตรง Key pair name ตั้งชื่อตามต้องการ ในที่นี้ตั้งชื่อว่า flowise

สำหรับ Key pair type เลือก RSA

ถ้าทำงานบน Mac หรือ Linux เลือก .pem

ถ้าทำงานบน Windows เลือก .ppk

Create key pair


สำหรับขนาดของฮาร์ดดิสก์ให้เปลี่ยน 8 GiB เป็น 20GiB เนื่องจากถ้าใช้ฮาร์ดดิสก์แค่ 8 GiB พอต้องการอัพเดท FlowiseAI เคยเจอปัญหาฮาร์ดดิสก์เต็ม

เสร็จแล้วคลิ๊กปุ่ม Launch instance

Storage selection

เมื่อสร้าง EC2 Instance เสร็จแล้วก็จะขึ้น Notification สีเขียวแบบนี้

ขอ Fixed IP สำหรับ AWS EC2

ในระหว่างที่ EC2 Instance กำลังเซ็ตตัว เราไปสร้าง Fixed IP Address ก่อน

เนื่องจากเราอาจจำเป็นต้อง รีบู๊ต Ubuntu เพื่อการบำรุงรักษา แต่ทุกครั้งที่เรารีบู๊ต เราจะได้เลข IP Address ใหม่ เราจึงต้องขอ Fixed IP Address หรือ Elastic IPs

Elastic IPs

ถ้าเราอยู่ที่หน้าจอ EC2 Instance ให้มองหา Elastic IPs ที่จอด้านซ้าย (Left Sidebar)

คลิ๊กเลือก Elastic IPs

AWS EC2 Elastic IPs

หน้าจอถัดไปให้คลิ๊กปุ่ม Allocate Elastic IP address

Allocate Elastic IP address

ถัดไปกดปุ่ม Allocate ได้เลยครับ

Allocate Elastic IP address for FlowiseAI on AWS EC2

หลังจากนั้นเราจะได้เลข Fixed IP มา

คลิ๊กตรงเลข IP

มุมบนขวาจะมีปุ่ม Associate Elastic IP address ให้คลิ๊กปุ่มนี้

หน้าจอถัดไปให้เลือก Instance ที่เราเพิ่งสร้าง ซึ่งจะมีวงเล็บระบุชื่อเอาไว้ ในที่นี้จะเป็นชื่อ FlowiseAI

กดปุ่ม Associate

เปิดพอร์ต 3000 สำหรับ FlowiseAI

ตอนนี้เรายังอยู่ที่ EC2 Instance ให้มองหาแท็บ Security

ตรง Security groups คลิ๊กตรงลิงค์ sg-xxxxxxxxxxxxxxxx(launch-wizard-x)

ในหน้าจอถัดไป กดปุ่ม Edit inbound rules

กดปุ่ม Add rule เลือก Custom TCP ใส่เลข 3000 ในคอลัมน์ Port range ตรง Source เลือก Anywhere หรือ 0.0.0.0/0

ใส่รายละเอียดใน Description หรือไม่ใส่ก็ได้ เสร็จแล้วกดปุ่ม Save rules

จบขั้นตอนนี้เราก็จะได้พอร์ต 3000 สำหรับรัน Flowise บน localhost

Connect to AWS EC2

เนื่องจาก EC2 Instance Connect ทำงานค่อนข้างเสถียร ผมจึงประหยัดเวลา ด้วยการเชื่อมต่อ EC2 ผ่านตรงนี้เลย

ให้ไปที่ EC2 instance ที่เราเพิ่งสร้างเสร็จ ซึ่งในที่นี้คือ FlowiseAI มองหาปุ่ม Connect

หน้าจอถัดไป กดปุ่ม Connect อีกครั้ง

จะได้หน้าจอ Terminal แบบนี้ ซึ่งอยู่บน AWS Cloud

คำสั่งแรกเลยคือให้อัพเดท Ubuntu 22.04 ก่อนครับ

sudo apt-get update && sudo apt-get upgrade -y

ถ้าต้องการติดตั้ง Python หรือ PIP สามารถดูจาก บทความ นี้ได้ครับ

เพิ่มบัญชีผู้ใช้ใหม่

sudo adduser <your-username>
sudo usermod -aG sudo <your-username>
su <your-username>
cd /home/<your-username>

กรณีที่ต้องการเชื่อมต่อ EC2 ผ่าน VSCode

ตอนติดตั้ง Ubuntu ระบบจะสร้าง Default user ขึ้นมาชื่อว่า ubuntu แต่ถ้าเราต้องการสร้าง user ขึ้นมาใหม่ เราต้องกำหนดรหัสผ่านด้วย ปัญหาคือ ถ้าเราจะเข้าถึงข้อมูลภายใต้ user ใหม่ ผ่าน VSCode เราจะเจอ Error No Public Key เราจึงต้องแก้ไขค่า Config ในไฟล์ sshd_config ดังนี้

  1. ติดตั้ง Visual Studio Code Plugin Remote Development

  2. แก้ไขไฟล์ sshd_config โดย

เข้าไปที่ EC2 terminal แล้วพิมพ์คำสั่ง

sudo nano /etc/ssh/sshd_config

ec2 sshd_config

ให้แก้ PasswordAuthentication no เป็น

PasswordAuthentication yes

ec2 sshd_config password auth enable

กดปุ่ม CTRL + X ตอบ Y แล้วกดปุ่ม Enter เพื่อบันทึกไฟล์ sshd_config เสร็จแล้วสั่ง restart

service sshd restart

จะมีคำถามว่าจะ Enable password auth กับ User ไหน ให้เราเลือก User ที่เราเพิ่งสร้าง ก็คือตัวที่ 2 แล้วใส่พาสเวิร์ดให้เรียบร้อย


ติดตั้ง Docker

เราจะรัน AWS EC2 FlowiseAI บน docker

สามารถอ่านข้อมูลเพิ่มเติมจากเว็บไซต์เป็นทางการของ Docker

apt repository

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

ติดตั้ง Docker packages

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

docker-compose

sudo apt-get install docker-compose

ลองใช้คำสั่งต่อไปนี้เพื่อเช็คว่าติดตั้ง docker และ docker-compose เสร็จสมบูรณ์

docker --version
docker-compose --version

สร้างกลุ่ม Docker

sudo groupadd docker

ถ้าใช้คำสั่งนี้แล้ว ได้คำตอบแบบนี้ groupadd: group 'docker' already exists ไม่เป็นไรนะครับ

ใส่ชื่อ username ของเราเข้าไปในกลุ่ม

sudo usermod -aG docker $USER

ให้รันคำสั่ง

newgrp docker

เพื่อ Activate Group

ใส่ Docker เข้าไปเป็นส่วนหนึ่งของคำสั่ง Server

sudo systemctl enable docker.service
sudo systemctl enable containerd.service
sudo systemctl start docker.service

หลังจากมาถึงขั้นตอนนี้ Ubuntu น่าจะติดตั้ง Git มาให้แล้ว ถ้าไม่แน่ใจก็ใช้คำสั่ง

sudo apt-get install git -y

Clone FlowiseAI repo มาที่ AWS EC2

ตอนนี้เราต้องอยู่ที่ username ของเรานะครับ ให้เช็คด้วยคำสั่ง

pwd

จะได้คำตอบเป็น

/home/<your-username>

เช่น

/home/moocoding

เริ่ม Clone กันเลย โดยคำสั่ง

git clone https://github.com/FlowiseAI/Flowise.git

หลังจากโคลน Repository เสร็จแล้ว เราจะได้โฟลเดอร์ Flowise ในโฟลเดอร์ Flowise จะมีโฟลเดอร์ docker ให้เข้าไปที่ docker ด้วยคำสั่ง

cd Flowise && cd docker

สร้างไฟล์ .env ด้วยคำสั่ง

nano .env

ถ้าติดปัญหาเรื่อง Permission denied ให้ใช้ sudo nano .env

หรือถ้าให้ง่ายกว่านั้น ใช้คำสั่งคัดลอกไฟล์ .env.example ไปที่ไฟล์ .env

cp .env.example .env

ดูให้ไฟล์ .env มีข้อมูลตามนี้ครับ

PORT=3000
DATABASE_PATH=/root/.flowise
APIKEY_PATH=/root/.flowise
SECRETKEY_PATH=/root/.flowise
LOG_PATH=/root/.flowise/logs
FLOWISE_USERNAME=<your-username>
FLOWISE_PASSWORD=<your-password>

เราจำเป็นต้องปกป้อง FlowiseAI ด้วย พาสเวิร์ดครับ โดยต้องระบุ FlOWISE_USERNAME และ FLOWISE_PASSWORD เสร็จแล้วกดปุ่ม Ctrl + X พร้อมกัน และตอบ Y เพื่อบันทึกไฟล์

รัน docker-compose

เปิดใช้งาน docker ด้วย

docker-compose up -d

หมายเหตุ: ถ้าต้องการปิด docker ใช้คำสั่ง

docker-compose stop

หลังใช้คำสั่ง docker-compose up -d แล้ว ตอนนี้ FlowiseAI ทำงานเรียบร้อยแล้ว สามารถตรวจสอบโดยการพิมพ์ URL

http://<your-public-ip4>.ap-southeast-1.compute.amazonaws.com:3000/

วิธีหา your-public-ip4

ไปที่ EC2 instance มองหาคำว่า Public IPv4 DNS แล้วคลิ๊กตรงปุ่มที่ใช้คัดลอกได้เลย ตามรูปประกอบ

เมื่อใช้งานไปซักพัก เราสามารถอัพเกรด FlowiseAI ด้วยคำสั่ง

docker pull flowiseai/flowise

Production setup

สำหรับการ ติดตั้ง FlowiseAI บน AWS EC2

ติดตั้ง NGINX

sudo apt-get install nginx
sudo systemctl start nginx

แก้ไขไฟล์ config

sudo nano /etc/nginx/conf.d/flowise.conf

คัดลอกโค้ดนี้เข้าไปในไฟล์ flowise.conf

server {
    listen 80;
    listen [::]:80;
    server_name yourdomain.com; #เช่น: flowise.your-domain.com
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_cache_bypass $http_upgrade;
    }
}

เสร็จแล้วกดปุ่ม Ctrl + X พร้อมกัน และตอบ Y เพื่อบันทึกไฟล์

Restart NGINX

sudo systemctl restart nginx

AWS Route 53 สำหรับ FlowiseAI บน AWS EC2

ถ้าคุณวาง Domain Name ไว้ที่ AWS Route 53 ไปที่ Route 53

คลิ๊กลิงค์ตรง Hosted zones

ไปที่ Hosted zone name แล้วเลือก domain ที่ต้องการใช้งาน

Create hosted zone for FlowiseAI on AWS EC2

กดปุ่ม Create record

Create record at Route 53 for FlowiseAI on AWS EC2

ถ้าเราต้องการตั้งชื่อ flowise.your-domain.com

ใส่ flowise ตรง Record name

ตรง Record type ให้ใส่ A

ช่อง Value ให้ใส่ your Public IPv4 address

นอกนั้นปล่อยไว้ตามค่า Default

กดปุ่ม Create records

Create record for FlowiseAI on AWS EC2

หลังจากขั้นตอนนี้ให้ลองเข้าไปที่ http://flowise.your-domain.com โดยไม่ต้องใส่พอร์ต 3000

เปลี่ยน HTTP เป็น HTTPS

เราจะเปลี่ยน http://flowise.your-domain.com เป็น https://flowise.your-domain.com

ให้ติดตั้ง Certbot

sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot certbot-nginx
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
sudo certbot --nginx

Automatic renewal certificate สำหรับ FlowiseAI AWS EC2

echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

จบครับ ขั้นตอนต่อไปจะลองใช้ FlowiseAI เพื่อสร้าง Chat Bot

การติดตั้ง FlowiseAI บน AWS EC2 ไม่ยากเลย

จะเห็นว่าการ ติดตั้ง FlowiseAI บน AWS EC2 ไม่ยากเลย สำหรับคนที่ไม่ชอบตัวหนังสือเยอะๆ ผมพยายามใส่รูปประกอบเพื่อทำความเข้าใจได้ง่ายขึ้น โดยเฉพาะสำหรับคนที่เพิ่งใช้งาน AWS

บทความที่เกี่ยวข้อง