LINUXSELF HOSTING

Cài đặt AList bằng Render + PlanetScale + Cloudflare Workers miễn phí

Cài đặt AList theo combo này thì hơi phức tạp và dài dòng, cụ thể chạy docker qua Render, chạy MySQL qua PlanetScale và cuối dùng là dùng Cloudflare Workers để tải file.

AList là 1 ứng dụng rất thích hợp để chạy qua các công cụ miễn phí như bài này, vì nó chỉ load dữ liệu từ Google Drive, OneDriver … các cấu hình gần như không thay đổi, trong trường hợp xấu nhất, các dịch vụ bên dưới bị sập, database bị lỗi hoặc share file không có bản quyền, bị kiện cáo này nọ …. cũng chỉ mất ít phút để tạo mới tài khoản, cài lại 1 trang AList khác.

Thứ hơi phiền, nếu trang sau 15 phút không có truy cập thì Render sẽ xóa hết dữ liệu, khi có truy cập thì mới chạy lại, vấn đề mất dữ liệu có thể giải quyết bằng cách sử dụng database ngoài như PlanetScale, vấn đề không có truy cập thì dùng các dịch vụ cron cũng đã giải quyết tốt.

Nói chung, nếu bạn setup các bước như mình viết bên dưới, là AList có thể tự vận hành một cách khá ổn định, bạn có thể click vào trang demo bên dưới để xem thử tốc độ load trang và tốc độ download:

cloud.romhub.me

Lý do mình lựa chọn combo Render và PlanetScale vì họ đều hỗ trợ location tại Singapore, cho tốc độ truy cập từ Việt Nam khá tốt, trong đó chắc hãi nhất là PlanetScale

Chưa hiểu nguồn vốn đâu ra mà họ miễn phí cho mỗi user 1 database MySQL, dung lượng 5GB, đọc 1 tỷ lần và ghi 10 triệu lần mỗi tháng, thậm chí database này cho phép 1000 kết nối cùng lúc, mình tự setup 1 VPS riêng, cấu hình vài GB RAM, cũng không dám tự tin khẳng định 1000 kết nối thẳng vào database mà không sập.

Thế nên dù PlanetScale bắt nhập card verified lúc đăng kí tài khoản, nhưng miễn phí thơm quá nên cũng phải đú.

Bước 1: tạo 1 database MySQL miễn phí từ PlanetScale

  • Vào PlanetScale tạo 1 tài khoản miễn phí (nếu chưa có), tiếp theo là tạo database MySQL (chú ý là dù dùng gói miễn phí, bạn vẫn phải điền thông tin thẻ thanh toán vào)
  • Region chọn Singapore cho nhanh
  • Plan type: chọn gói miễn phí Hobby

Tiếp theo là tạo password

  • Thông tin database MySQL sẽ hiện ra như sau
DATABASE_HOST=aws.connect.psdb.cloud
DATABASE_NAME=romhub-alist
DATABASE_USERNAME=b8u0qnjx92lqxxxxxx
DATABASE_PASSWORD=pscale_pw_f5z3ktoGBcrGxcEFxxxxxxxxxxxxxxxxx

Bước 2: triển khai AList lên Render

  • Đăng ký 1 tài khoản Render (nếu chưa có)

Bên trong Dashboard

  • Chọn New -> Web Service
  • Chọn Deploy an existing image from a registry
  • Image URL: điền vào xhofe/alist:latest
  • Name: đặt tên tùy ý
  • Region: chọn Singapore cho nhanh
  • For hobby projects: Free

Environment Variables: các giá trị này điền như bên dưới

DB_TYPE: mysql
DB_PORT: 3306
PORT: 5244
DB_TABLE_PREFIX: alist_
CDN: https://cdn.jsdelivr.net/npm/alist-web@$version/dist
DB_SSL_MODE: true

Tùy chỉnh lại 4 giá trị này

DB_HOST: lấy thông tin từ database PlanetScale 
DB_NAME: lấy thông tin từ database PlanetScale 
DB_USER: lấy thông tin từ database PlanetScale 
DB_PASS: lấy thông tin từ database PlanetScale

Thời gian deploy rất nhanh, khoảng 30s là xong

  • Tài khoản admin sẽ hiện ra ở log cài đặt

Về tổng thể lúc này chúng ta đã cài đặt thành công AList qua Render và PlanetScale

Tiếp theo cần cấu hình tinh chỉnh lại 1 số thứ râu ria

Bước 3: Tinh chỉnh và cấu hình Render

Custom Domains

Vào tab Setting sau đó kéo xuống dưới sẽ thấy phần Custom Domains, điền vào 1 subdomain mà bạn muốn sử dụng, trỏ CNAME về theo hướng dẫn của Render

NOTE:
Khi add CNAME, nếu dùng Cloudflare nhớ tắt đám mây màu vàng, sau khi Render tạo thành công SSL, nếu muốn an toàn hơn có thể bật proxy Cloudflare lên lại

Trong trường hợp bạn không thích dùng domain riêng, có thể dùng subdomain dạng onrender.com của Render cấp cho cũng ổn, tránh tình huống domain hết hạn, không renew, làm die các link download

Bypass free instance types will spin down with inactivity

  • Mặc định nếu sử dụng Render Web Services miễn phí, sau 15 phút không có truy cập, Render sẽ tự ngắt kết nối, khi có truy cập tiếp theo thì mới chạy lại
  • PlanetScale thì mình nhớ đâu sau 7 ngày không dùng, cũng tự chuyển sang chế độ Sleeping

Giải pháp đơn giản nhất để vượt qua giới hạn này là chạy cron, 1-2 phút gì đó tự truy cập vào trang chủ của Web Services là được

Mình thấy dùng cronjob từ Cloudflare Worker là ổn nhất, dịch vụ của Cloudflare rất to, không lo sập. Lo xa thì bạn có thể dùng thêm 1 dịch vụ cron khác như cron-job.org

  • Set cơ bản 1 phút tự chạy 1 lần

Dùng cron-job.org rất hay, trong trường hợp cron chạy lỗi, nó sẽ gửi email báo về cho bạn, cũng là 1 hình thức monitor uptime đơn giản.

Bước 4: Tinh chỉnh AList

Nếu đây là lần đầu tiên bạn cài đặt Alist, thì login tài khoản admin với thông số ở trên, sau đó cấu hình như bình thường, có thể tham khảo cách cấu hình các storage trong bài viết gốc về AList

Do mình đang dùng trên database cũ, nên chỉ restore lại các cấu hình cũ

Tiếp theo đổi lại thông tin tài khoản admin, và phân quyền lại cho tài khoản guest

CHÚ Ý:
Xem kĩ lại phần phân quyền các tài khoản, vì backup qua giao diện web thi thoảng nó có lỗi, không ghi đè lên được

Bước 5: sử dụng Cloudflare Workers để download file

Phần này ở bài gốc mình đã nói qua, đây là tùy chọn, thích dùng hay không tùy bạn, nhưng trên cấu hình dùng Render, chỉ được FREE 100 GB băng thông hàng tháng, nên dùng hoàn toàn Cloudflare Workers để download file, tiết kiệm băng thông và giảm tải cho tài khoản Render.

Nếu trang có lượng download nhiều, quản lý bằng cách tách ra thật nhiều thư mục con, mỗi thư mục con dùng 1 tài khoản Cloudflare Workers để download, tránh hết 100.000 request mỗi ngày

Kết luận

Sử dụng thực tế 1-2 ngày thì mình thấy mọi thứ vận hành bình thường, không gặp vấn đề gì liên quan tới hiệu năng

Tạm mình cũng chưa rõ các con số liên quan tới đọc và ghi, PlanetScale tính toán dựa vào cái gì, ở các trang có số lượng người download đông đảo thì có đủ không? để thử nghiệm hôm qua mình có ngồi nghe Thùy Chi online trên AList, upload thêm 1 số file trực tiếp lên AList, chạy nửa buổi thì thấy các con số liên quan tới đọc và ghi như thế

Render mặc định miễn phí 750h sử dụng Web Service, nếu chỉ cài đặt duy nhất AList ở tài khoản này là có thể chạy 24/24 trong 31 ngày.

Về băng thông Render miễn phí 100GB, do gần như mọi data load ra trên AList, đều từ CDN như alicdn.com, cdn.jsdelivr.net, cloudflare …. nên gần như không tốn băng thông

Hiện tại, Render – PlanetScale – Cloudflare Workers đều miễn phí, bạn có thể dùng thoải mái cho tới khi 3 nhà cung cấp này thay đổi chính sách, chủ yếu việc backup và restore dữ liệu cũ trên AList chỉ ở thời điểm đầu tiên khi bạn cấu hình các storage, lưu lại 1 bản backup là đủ, 3 thèng trên ngáo ngáo đòi tiền thì chuyển sang các dịch vụ khác cũng rất đơn giản, mình có thử sơ qua Koyeb, thấy cũng ngon.

Dù gói free của Koyeb chỉ có location tại Frankfurt và Washington, mà thấy CPU có vẻ khỏe, chạy khét lắm, bạn nào rảnh có thể dùng Koyeb thay Render trong bài này

Hiệu quả thực tế của Render – PlanetScale rất mạnh, khi bạn đã quen với việc cấu hình, thì gần như có thể chuyển mọi dịch vụ chạy docker sang 2 dịch vụ này miễn phí

Tất nhiên, nếu bạn đăng kí được tài khoản Oracle miễn phí, thì tát hết mấy dịch vụ mình nói trong bài này về hiệu quả và tốc độ, cài đặt cũng đơn giản hơn

Chia sẻ: bibica

Có thể bạn chưa biết

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận