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
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=alist DATABASE_USERNAME=ysx7sjmuoun DATABASE_PASSWORD=pscale_pw_G4Wvwz5wAoW3zxXFQ
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
Chú ý 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 tại đây
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
Về cơ bản lúc này file.bibica.net (cài riêng trên VPS) và download.bibica.net (cài qua Render – PlanetScale) đã có dữ liệu tương tự 😀
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 150.000 request mỗi ngày
So sánh sơ bộ thì cấu hình dùng Render – PlanetScale khi load trang chủ nó sẽ chậm hơn 1 chút so với cấu hình riêng trên 1 con VPS, cũng có thể chấp nhận được, vì combo này miễn phí 😀
Phần vì khi download file, sẽ dùng qua proxy của Cloudflare Workers, tổng thể đủ tốt
Bước 6: cập nhập docker
Theo thời gian sử dụng, tác giả sẽ cập nhập các phiên bản mới, thường sẽ có thêm các tính năng mới, sửa các lỗi cũ ….
- Ở bước cấu hình chúng ta đã chọn phiên bản mới nhất
xhofe/alist:latest
, nên khi cần cập nhập, chỉ cần click vàoDeploy latest reference
Lúc này mặc định sẽ được cập nhập lên phiên bản mới nhất
- Thậm chí bạn có thể làm tự động quy trình này, bằng cách lấy Deploy Hook từ Setting, sau đó tạo cron tự chạy hàng ngày
Mình nghĩ lúc nào rảnh thì vào cập nhập thủ công là đủ, đôi khi bản mới nhất tác giả viết gặp lỗi, chạy cập nhập tự động hàng ngày dễ làm sập hệ thống
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 😀
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!