Chuyển bibica.net về location Việt Nam

Hiện tại, khi bạn đọc thấy bài này, thì mình đã chuyển trang chủ và các addon đi kèm của thèng bibica.net bao gồm Artalk, Umami, Cloudinary, WireGuard Easy về location Việt Nam, cụ thể là trên gói BudgetKVMVN-2 của GreenCloud

Location Việt Nam cải thiện duy nhất là tốc độ khi Việt Nam đứt cáp quốc tế, còn bình thường, nếu mạng Việt Nam ổn định, sự khác biệt không đáng kể, cụ thể nếu dùng location Singapore, tốc độ trang home thèng bibica.net khoảng 0.4s, khi dùng location Việt Nam, khoảng 0.1-0.2s, nhìn % thì nhanh hơn gấp 2-4 lần, nhưng thực tế chắc khó ai quan cảm nhận được sự khác biệt 0.1-0.2s như thế

Bảo mật, chịu tải, thao tác backup, restore …. hay các tính năng thêm thắt gần như đều thua cấu hình cũ do không tận dụng được cơ sở hạ tầng của Cloudflare, phần vì nhiều năm nay mình cũng đã quen các cấu hình từ Cloudflare, nên khi quản trị lại từ webserver khá là ngu người 😛

Ví dụ response header, dùng Cloudflare mình có thể tùy biến, thêm, xóa các header thoải mái, dùng Nginx muốn thêm header thì thoải mái, nhưng xóa header khá là phiền

Về vấn đề bảo mật, nếu bạn xem các bài viết trước đây, mình luôn tắt firewall trên OS, nó hoàn toàn không có ý nghĩa nếu bạn dùng Cloudflare 😛 tại có ai biết IP của server là gì đâu mà phá :]] chưa kể bạn có thể cấu hình, bắt buộc user phải truy cập qua Cloudflare -> tới site, hạn chế rất nhiều các truy cập rác, spam ….

Để hiệu quả nhất khi dùng location Việt Nam, đơn giản nhất là dùng Reverse Proxy kết hợp FastCgi Cache cho mọi dịch vụ bạn đang sử dụng
  • Ảnh trên trang chủ thì mình dùng Cloudinary để xử lý nén ảnh, tạo thumbnail, sau đó sử dụng reverse proxy kết hợp FastCgi Cache để lưu các ảnh này xuống localhost
  • Trên Artalk các avatar và ảnh ở comment mình cũng dùng Cloudinary để xử lý nén ảnh, sau đó cũng sử dụng reverse proxy kết hợp FastCgi Cache để lưu các ảnh này xuống localhost

2 phần này thì chủ yếu làm màu :]] thực tế khi dùng host tại VN rồi thì bạn load trực tiếp cái ảnh chưa nén, có khi nó còn nhanh hơn cả ảnh đã nén qua Cloudinary hoặc Jetpack Photon :]]

  • UmamiWireGuard Easy thì cài đặt như bình thường là đủ
  • Cache trang lúc này thì mình dùng FlyingPress, cơ chế preload hiệu quả

Theo cách vận hành này, dễ nhất là dùng Webinoly, do nó đã có sẵn các lệnh liên quan tới FastCgi Cache cho Reverse Proxy, việc cài đặt sẽ nhanh và đơn giản hơn

Webinoly hỗ trợ cơ chế backup toàn server, chỉ cần cấu hình lần đầu tiên, sau đó chuyển server chỉ cần restore lại là xong, toàn bộ các cấu hình liên quan tới SSL, Domain, data và database đều sẽ được cài đặt chính xác

Cài đặt và cấu hình OS

  • Dùng BudgetKVMVN-2 của GreenCloud thì việc đầu tiên là Reinstall OS về Ubuntu 22.04

Lý do là bản OS mặc định của GreenCloud họ cài đặt bản rút gọn quá, đôi lúc cài đặt các script auto viết thiếu các lệnh setup, rất dễ văng lỗi mà không hiểu tại sao, thời gian xử lý rất phiền, nên cứ reinstall OS về mặc định cho dễ kiểm soát

  • Bản Reinstall OS mình thấy thiếu hostname (bibica-net), có thể bổ xung đơn giản bằng cách thêm vào bên trong file /etc/hosts
127.0.0.1 localhost bibica-net
  • Tiếp theo là tắt IPv6 (không chắc lắm về ý này, vì khi bật mặc định IPv6 băng thông mình thấy nó rất loạn, nói chung là nên tắt, vì IPv6 chẳng có tác dụng gì cả :D)
# Disable IPv6
echo '# Disable IPv6' >> /etc/sysctl.conf
echo 'net.ipv6.conf.all.disable_ipv6=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf

sysctl --system

# Cron reload sysctl
crontab -l > reload_sysctl
echo "@reboot sysctl --system >> ./out 2>&1 <&- &" >> reload_sysctl
crontab reload_sysctl

Cài đặt Webinoly

Nếu đây là lần đầu tiên bạn biết tới Webinoly thì có thể cài đặt các lệnh tuần tự như bên dưới

# Update
locale-gen en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

sudo apt update -y
sudo apt install -y htop zip unzip screen nano wget curl gpg 

# Webinoly Installation
sudo wget -qO weby qrok.es/wy && sudo bash weby -clean
sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica-net-no-cloudflare/main/webinoly.conf -O /opt/webinoly/webinoly.conf
sudo stack -lemp -build=light

# Tắt Firewall
sudo apt remove iptables-persistent -y
sudo ufw disable
sudo iptables -F

# Optimization PHP, MariaDB
sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica-net-no-cloudflare/main/php.ini -O /etc/php/7.4/fpm/php.ini
sudo service php7.4-fpm restart
sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica-net-no-cloudflare/main/my.cnf -O /etc/mysql/my.cnf
sudo service mysql restart

Đây là cấu hình mình dùng trên Webinoly, cấu hình này, gần như không thua hiệu năng bất cứ script auto nào đang có ngoài thị trường, dùng PHP 7.4 nên nó tương thích mạnh hơn với nhiều plugin trên WordPress, máu chó hiệu năng thì bạn có thể cài bản v1.17.8 hỗ trợ PHP 8.3, vừa mới được tác giả ra mắt cách đây ít giờ

Cài đặt Reverse Proxy FastCgi Cache

Cấu hình tương tự với bài cũ mình từng viết cách đây khá lâu, nếu bạn nào dùng VPS của GreenCloud thì mình nghĩ không cần cache xuống RAM, chỉ cần lưu cache xuống SSD là đủ, vì các ổ cứng của GreenCloud có tốc độ rất nhanh, đọc > 1GB/s, ghi ~ 500MB/s

FastCgi Cache có tác dụng lớn nhất ở các avatar từ Gravatar, load trực tiếp ~ 1000ms, khi dùng FastCgi cache xuống ~ 5-10ms

  • Do đợt này mình dùng trực tiếp location Việt Nam, không còn dùng Cloudflare nữa, nên SSL dùng qua Let's Encrypt
sudo site bibica.net -ssl=on -wildcard

Mọi subdomain phụ mình dùng đều từ domain bibica.net, nên có thể dùng lệnh trên để tạo SSL dùng chung cho tất cả subdomain

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/analytics.bibica.net/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/analytics.bibica.net/privkey.pem
This certificate expires on 2024-02-27.
These files will be updated when the certificate renews.

Có 2 file ssl đó rồi thì cấu hình tương tự như khi dùng SSL của Cloudflare

15 3 * * 7 certbot renew

Mặc định sau khi tạo ssl, Webinoly sẽ bổ xung thêm cron tự renew trước khi ssl hết hạn trong khoảng 30 ngày, khoản này thì mình cũng không chắc lắm về sự hiệu quả, vì trước đây thấy mấy cái ssl từ Let's Encrypt thi thoảng lỗi, không tự renew, Let's Encrypt cũng rất phiền vì đôi lúc bạn tạo mới nhiều ssl trong 1 thời gian ngắn, nó không cho tạo luôn 😀

  • Nói chung là mình rất không thích dùng Let's Encrypt, đợt này dùng tạm xem thế nào

Cấu hình Artalk, Umami, WireGuard Easy chạy qua docker thì cơ bản như các bài viết giới thiệu cũ

Backup và restore

Sau khi chuyển sang dùng location Việt Nam, mình mới đọc hướng dẫn tính năng backup và restore toàn server trên Webinoly, vì đợt này dùng gần như toàn bộ các dịch vụ trên 1 VPS, các cấu hình nhỏ bên trong Nginx khá nhiều, copy thủ công rất dễ nhầm

Việc backup và restore toàn server trên Webinoly khá mượt, có thể lưu được các cấu hình gốc của Webinoly cho tới các cấu hình SSL, Nginx, Domain, data của website kèm database, việc restore hoàn toàn tự động, không phải ấn yes hay no gì cả, restore xong chỉ cần đổi DNS là WordPress chạy luôn 😀

Nếu thích, bạn có thể tạo 1 file bash để backup toàn bộ các dịch vụ hàng ngày đang dùng, như bên dưới

# backup mỗi ngày toàn trang
sudo webinoly -backup=local -export
mv webinoly_full_backup_* webinoly_full_backup
tar -cvf backup.tar /root/Artalk /root/Umami /root/wg-easy webinoly_full_backup
rclone copy backup.tar cloudflare-r2:cdn-bibica-net/xxxxxx
rm backup.tar webinoly_full_backup

Sau này khi cần đổi sang server khác, thì chạy cài đặt tự động như sau

# Webinoly Installation
sudo wget -qO weby qrok.es/wy && sudo bash weby -clean
sudo wget --no-check-certificate https://cdn.bibica.net/xxxxxx/backup.tar
tar -xvf backup.tar
mv /root/root/Artalk /root/Artalk
mv /root/root/Umami /root/Umami
mv /root/root/wg-easy /root/wg-easy
rm -r /root/root
sudo webinoly -backup=local -import=full -file=/root/webinoly_full_backup
rm backup.tar webinoly_full_backup

Với các dịch vụ phụ như Artalk, Umami, WireGuard Easy, chạy qua docker, mình cũng đã sửa lại các cấu hình tại bài viết liên quan để có thể tự lưu database, giúp công đoạn restore nhàn hơn

Có thể tham khảo thêm về cấu hình backup Webinoly -> Rclone -> Cloudflare R2 và Google Drive

FastCgi Cache

2023 12 03 6 03 21

Các hình ảnh sau khi dùng FastCgi Cache có hiệu năng khá tương đồng với load trực tiếp từ localhost, vài bài viết có nhiều ảnh và nặng thì tốc độ lên tới 500-700ms, tất nhiên nếu mưu hèn kế bẩn, thích các con số làm màu thì có thể dùng các hình thức như Lazy load

Phần lớn các bài viết khi đã cache load toàn bộ trang khoảng 0.1-0.2s

Thời gian backup full site

2023 12 02 16 45 14

Khi sử dụng Webinoly để backup full trang, sau đó zip lại, thời gian tổng 2 lần tạo file backup chỉ ~ 30s, sau đó chuyển sang Cloudflare R2 (location Singapore), tổng thời gian hoàn thành khoảng 4 phút

2023 12 03 6 24 32

Con VPS có ~2$ 1 tháng mà GreenCloud dùng ổ cứng nhanh khiếp người (SSD RAID-10), mình thấy tốc độ ghi ~ 500MB/s, còn tốc độ đọc > 1GB/s, SSD đã thế thì không rõ mấy gói NVMe của họ nhanh cỡ nào đây :]]

Vì SSD nhanh quá nên các file cache mình lưu vào ổ cứng là đủ, không cần phải lưu vào RAM luôn

2023 12 03 6 35 42

Kết quả là dù cài 1 tấn các addon (Artalk, Umami, Cloudinary, WireGuard Easy) trên thèng bibica.net, RAM dùng cũng chỉ loanh quanh < 1.5GB

Speedtest

Trước đây khi ở giai đoạn bắt đầu tập tành cấu hình server, tinh chỉnh này nọ, mình khá là thích các bài speedtest, tuy thế sau khi dùng tới Cloudflare cache, gần như mình không còn speedtest hiệu năng nữa, vì kết nối đi qua Cloudflare, speedtest là vô nghĩa

Đợt này do chuyển toàn bộ về VPS tại Việt Nam, không còn dùng bất cứ hình thức cache bên ngoài nào, nên chạy thử bài test loader.io xem thế nào

2023 12 07 22 45 08

Đây là 1 bài test cực nặng, vì tất cả request đều đi thẳng tới VPS, không hề cache bất cứ thứ gì qua Cloudflare, chưa kể mình còn dùng Artalk, 1 hệ thống comment ngoài, và nó hoàn toàn không được cache

FlyingPress trước đây mình thử trên các gói VPS khác, cũng chưa khi nào pass nổi 1000 kết nối mỗi giây ở trang chủ, chứ đừng nói là ở bài viết, quá xá hình ảnh và load cả comment

2023 12 07 22 46 33

Ấy thế mà trên gói BudgetKVMVN-2 của GreenCloud sử dụng 2 core Xeon(R) Gold 6148, cài đặt Webinoly + FlyingPress + Artalk có thể pass nổi 1000 kết nối mỗi giây mà không có bất cứ lỗi nào

BudgetKVMVN-2 with Webinoly + FlyingPress + WordPress + Artalk in loader.io

Thực sự rất sock với GreenCloud, trước đây mình dùng các VPS khác, phải cache hết các file tĩnh qua Cloudflare, trên 1 trang WordPresss không có data, mới ngáp ngáp qua được bài test này, ấy thế mà trên BudgetKVMVN-2 pass ngọt luôn :]]

Vấn đề gặp phải

  • Sau khoảng gần 1 tháng chuyển hoàn toàn các dịch vụ trực tiếp về Việt Nam, đôi lúc mình cảm giác phân giải DNS của GreenCloud trên máy của mình khá ngáo

Kiểu mình thử trên 5-6 trình duyệt, mỗi trình duyệt có thể dùng 1 dịch vụ DNS khác nhau, thường thì không gặp vấn đề gì, nhưng đôi lúc ở 1 vài dịch vụ DNS, phân giải ra IP rất chậm, nếu bạn clear cache hoàn toàn trên trình duyệt, lần đầu tiên khi bạn gõ domain bibica.net sẽ có xác xuất load cực chậm, thậm chí tới 3s

Trước đây khi dùng proxy qua Cloudflare (đám mây màu cam) dù phải đi qua Sing, US …. nhưng không bao giờ gặp vấn đề liên quan tới DNS như này

Do nó chỉ thi thoảng mới gặp, và cũng chỉ xảy ra ở lần đầu tiên bạn vào, nên tạm mình cũng chưa có hướng xử lý =)) đành tạm coi như do máy mình gặp vấn đề 😛

  • Vấn đề cache ảnh bị MISS

Sau khi đổi hoàn toàn sang dịch vụ ảnh từ Cloudinary thì không còn gặp tình huống ảnh đã cache mà bị MISS nữa, dùng Jetpack Photon thỉnh thoảng bị, mình đoán cái này do cấu hình FastCgi Cache, mà Cloudinary chạy ổn rồi thì cũng không tìm hiểu thêm, phần vì mình cũng thích các link ảnh từ Cloudinary hơn

  • Đơ lag khi preload cache

FlyingPress khi làm mới toàn bộ cache, nó sẽ đơ lag 1 hồi, dù CPU dùng chỉ 20-30%, tình huống này khi dùng các VPS khác mình không gặp, cũng không quá quan trọng, vì sau khi trang đi vào ổn định, xác xuất bạn phải xóa toàn bộ cache cũng khá ít, khi cập nhập bài viết, thêm bài mới, mọi thứ ổn định

  • Downtime

Khoảng 1 tháng nay mình khá thường xuyên tùy chỉnh, cấu hình, cài đặt, reboot VPS 😀 thường thì mình cũng làm lúc ít có ai truy cập, nhưng nếu tình cờ bạn vào mà thấy SẬP thì thành thật xin lỗi

Nhất là tính huống gần nhất, khi mình cập nhập Artalk lên phiên bản mới nhất, phần comment phía user gặp lỗi liên qua tới cookie, cache 😛

Kết luận

Tới thời điểm này, mình vẫn không thích dùng location Việt Nam, mình vẫn quan điểm khi Việt Nam đứt cáp, nặng tới nổi đi sang Singapore cũng lê lết, có nghĩa là toàn bộ hệ thống mạng của Việt Nam có vấn đề, lỗi này do cơ sở hạ tầng của chúng ta, hay nói đơn giản hơn, là vấn đề của khách truy cập vào site 😀

Cơ mừ nhân dịp có ít bạn donate cho thèng bibica.net, thêm vào GreenCloud bán gói BudgetKVMVN-2 giá như cho, nên cũng ráng đú 😀 sau này Việt Nam có đứt cáp nặng cũng đỡ lê lết hơn 1 tẹo 😛

Nếu vì lý do “thần thánh” nào đó mà bạn muốn ủng hộ trang bibica.net, nói kiểu giờ là ít thì 5 quả trứng, nhiều thì một tên lửa 😀 có thể tham khảo tại đây hé 😛

Comment policy: We love comments and appreciate the time that readers spend to share ideas and give feedback.
Notes: However, those deemed to be spam or solely promotional will be deleted.

You can create a Gravatar account, add avatar, then use that email to comment here, your account will have a more beautiful Avatar, easier to recognize with other members.

Please use real emails, you can receive notifications when comments are replied