Tất cả bài viết

56 bài viết về Backend, Cloud, DevOps và Homelab

BOT
MSG
FREE
Telegram Bot
alert • monitor • notify
BackendDevOpsNestJS

Gửi thông báo Telegram từ NestJS: alert lỗi, deploy và monitor

Tích hợp Telegram Bot API vào NestJS: TelegramModule, exception filter bắt 5xx, BullMQ job fail, app start và deploy xong — không cần thư viện ngoài.

11 phút đọc18/06/2026
LOST
DIRTY
PHTM
Isolation Level
rc • rr • for update
BackendMySQLDatabase

Race condition trong MySQL: isolation level nào giải quyết được?

MySQL có 4 isolation level nhưng mặc định REPEATABLE READ không chặn được mọi race condition. Dirty read, lost update, phantom read — từng loại xảy ra khi nào, isolation level nào ngăn được, và khi nào cần SELECT FOR UPDATE.

12 phút đọc18/06/2026
DTO
DB
Validate in Code
dto • service • not db
BackendDatabase

Tại sao không nên dùng database để validate input trong backend

Nhiều backend dựa vào NOT NULL, VARCHAR(n), UNIQUE constraint của database để bắt lỗi input. Quan điểm này sai về kiến trúc — database không phải lớp validate. Validate đúng chỗ: DTO hoặc service layer, trước khi data chạm vào DB.

10 phút đọc18/06/2026
TX1
LOCK
TX2
Deadlock
innodb • log • rollback
BackendMySQLDatabase

MySQL Deadlock: cách đọc log InnoDB và giảm xác suất xảy ra

Deadlock trong MySQL tự resolve nhưng rollback transaction ngẫu nhiên gây lỗi ở app layer. Cách đọc SHOW ENGINE INNODB STATUS để biết chính xác dòng nào bị lock, nguyên nhân phổ biến, và 5 cách giảm xác suất deadlock.

12 phút đọc18/06/2026
1
+N
SQL
SLOW
N+1 Query
orm • join • batch
BackendDatabase

N+1 Query trong ORM: cách phát hiện bằng SQL log và fix bằng eager loading

N+1 query không gây lỗi nhưng làm API chậm dần khi data tăng — ORM gửi 1 query lấy danh sách rồi lặp N query con. Cách bật SQL log để bắt, đếm query per request, và fix bằng include, batch, hoặc DataLoader.

11 phút đọc18/06/2026
12s
200ms
MySQL Query
explain • scan • optimize
DatabaseMySQLSQL

SQL có xử lý dữ liệu lớn được không? Vai trò của index và query

Vì sao SQL vẫn xử lý tốt dữ liệu lớn nếu schema, index và query đúng cách, từ lọc trước khi join đến tối ưu MySQL cho bài toán hàng triệu khách hàng.

11 phút đọc18/06/2026
12s
200ms
MySQL Query
explain • scan • optimize
BackendMySQLDatabase

MySQL query chậm vì ORDER BY và LIMIT: nguyên nhân và cách tối ưu

ORDER BY kết hợp LIMIT có thể gây filesort trên triệu bản ghi dù bảng đã có index. Giải thích cách MySQL chọn execution plan, cách đọc EXPLAIN, và 4 pattern tối ưu thực tế.

12 phút đọc18/06/2026
N7
N8
N9
N11
NestJS Upgrade
ai • diff • test
BackendNestJSAI

Cách nâng NestJS 7 lên 11 bằng AI mà không đổi logic code

Cách nâng NestJS cũ lên mới bằng AI mà ít lỗi: nâng từng major version, khoanh breaking change, review git diff và giữ nguyên logic code.

13 phút đọc18/06/2026
DTO
MOD
ENT
Backend Layers
controller • service • db
BackendArchitecture

Cách phân biệt DTO, Model và Entity trong backend

Cách phân biệt DTO, Model và Entity trong backend để tránh dùng lẫn giữa controller, service và database, đặc biệt khi dùng TypeORM và validate đầu vào.

12 phút đọc18/06/2026
BE
FE
QA
Role Boundaries
api • dto • test logic
BackendArchitecture

Cách tách bạch Backend, Frontend và Tester để tránh đổ lỗi

Cách tách bạch Backend, Frontend và Tester để tránh đổ lỗi, lệch logic và tranh cãi khi thiết kế API, validate dữ liệu và test hệ thống.

11 phút đọc17/06/2026
WRK
vs
PGS
Workers vs Pages
api • deploy • edge fn
CloudCloudflare

Cloudflare Workers vs Pages: khi nào dùng cái nào?

Workers là serverless function thuần, Pages là hosting tĩnh có kèm Functions — bảng so sánh rõ, use case cụ thể, và cách chọn đúng cho từng loại dự án.

10 phút đọc17/06/2026
KV
Q
JOB
Queue & KV
async • cache • worker
CloudCloudflare

Cách dùng Cloudflare Queues và KV cho side project

Dùng Cloudflare Queues xử lý job bất đồng bộ và Workers KV lưu cache/config, hợp dự án cá nhân chạy trên Workers hoặc Pages.

12 phút đọc16/06/2026
DNS
CDN
Cloudflare
dns • cdn • ssl • ddos
CloudCloudflareDNS

4 tính năng Cloudflare nên dùng: DNS, CDN, SSL và DDoS Protection

Phân tích 4 tính năng cốt lõi của Cloudflare — DNS nhanh hơn, CDN miễn phí, SSL tự động và chặn DDoS — và lý do thực tế nên bật từng tính năng cho website.

12 phút đọc16/06/2026
D1
SQL
Cloudflare D1
sqlite • free • edge
CloudCloudflareDatabase

Cloudflare D1 Database: khi nào nên dùng?

Cloudflare D1 là managed SQLite serverless cho Workers và Pages, hợp side project nhỏ nhưng có giới hạn nếu cần chuyển sang MySQL/PostgreSQL.

10 phút đọc16/06/2026
R2
vs
S3
Object Storage
egress • free tier • cost
CloudCloudflareAWS

So sánh Cloudflare R2 và AWS S3: chi phí, egress fee và free tier

So sánh Cloudflare R2 và AWS S3 về giá, egress fee, free tier, khi nào R2 rẻ hơn S3 và cách migrate bằng endpoint.

11 phút đọc16/06/2026
SHR
R5
Synology RAID
shr • raid5 • nas drive
HomelabProxmoxSynology

Synology trên Proxmox: ưu nhược điểm, SHR và RAID

Ưu nhược điểm của Synology DSM trên Proxmox qua Xpenology, kèm so sánh RAID 0/1/5/6, SHR và SHR-2.

13 phút đọc16/06/2026
VM1
VM2
VM3
Proxmox VE
vm • template • clone
HomelabProxmoxLinux

Cách dùng Proxmox để tạo nhiều VM riêng cho từng dự án

Hướng dẫn cài Proxmox VE, tạo VM, dùng template để clone nhanh và quản lý storage — phù hợp cho homelab muốn vọc dự án riêng biệt mà không sợ ảnh hưởng nhau.

14 phút đọc16/06/2026
HIT
TTL
DB
Cache Strategy
aside • write-through • ttl
BackendRedisDatabase

Chiến lược caching giảm tải database và API

Các chiến lược caching thực tế để giảm tải database và API: cache-aside, write-through, write-behind, TTL và cache invalidation.

13 phút đọc16/06/2026
SSH
FMT
VSCode Ext
ssh • docker • prettier • lint
BackendVSCode

5 extension VSCode nên cài cho backend dev

Remote SSH, Docker, Prettier, ESLint và Code Spell Check: 5 extension VSCode giải quyết các việc dev thực tế hằng ngày.

10 phút đọc16/06/2026
HAP
×3
HAProxy LB
round-robin • health • scale
DevOpsHAProxyDocker

Cách cân bằng tải với HAProxy trên Docker Compose

Hướng dẫn triển khai HAProxy làm load balancer với Docker Compose, bao gồm cấu hình round-robin, health check và Stats UI để giám sát backend.

12 phút đọc16/06/2026
SRP
DIP
OCP
SOLID in Practice
clean • test • scale
BackendArchitecture

Áp dụng SOLID để giảm coupling trong dự án lớn

Cách áp dụng SOLID vào code thực tế để giảm coupling, giảm code rối, dễ test, dễ mở rộng và đỡ đau đầu hơn khi dự án bắt đầu lớn lên.

10 phút đọc16/06/2026
API
RAM
N+1
State and Scale
cron • file • memory
BackendArchitecture

Stateless và stateful khi scale nhiều instance

Giải thích stateless và stateful cho backend, kèm lỗi hay gặp khi scale như schedule chạy trùng, lưu file local và giữ state trong memory.

10 phút đọc16/06/2026
EC2
LOG
CPU
EC2 Production
logs • disk • monitor
CloudAWSDevOpsDocker

Quản lý EC2 production: Docker logs, CPU và RAM

Checklist vận hành EC2 production: giới hạn Docker logs, tránh đầy disk và theo dõi CPU, RAM, disk, network, status checks.

8 phút đọc16/06/2026
NS
DNS
CF
Cloudflare DNS
A • CNAME • proxy
CloudCloudflareDNS

Chuyển nameserver sang Cloudflare và trỏ DNS

Cách chuyển nameserver domain sang Cloudflare, trỏ A record hoặc CNAME về VPS, phân biệt DNS only với Proxied và khi nào nên bật proxy.

10 phút đọc16/06/2026
MINT
USB
APP
Linux Mint
install • setup • daily
Linux

Cách cài Linux Mint, thiết lập sau khi cài và sử dụng hằng ngày

Hướng dẫn cài Linux Mint từ USB boot, chọn đúng edition, các thiết lập nên làm sau khi cài và cách dùng Linux Mint hằng ngày. Có kèm link tải chính thức.

11 phút đọc16/06/2026
PC
LNX
LAB
Old PC Reuse
server • nas • app
HomelabLinux

PC cũ làm gì? Linux, mini server, homelab và NAS

Cách tận dụng PC cũ chạy Linux làm mini server, NAS, homelab hoặc app cá nhân, kèm hướng bắt đầu thực tế với Ubuntu.

9 phút đọc16/06/2026
TAIL
WEB
Tailscale Funnel
private • public • tunnel
HomelabTailscale

Cách dùng Tailscale Funnel để đưa máy ra Internet

Cách dùng Tailscale để truy cập máy từ xa và dùng Tailscale Funnel để đưa web service ra Internet, kèm phân biệt với Serve và các ưu nhược điểm thực tế.

10 phút đọc16/06/2026
Old PC NAS
samba • lan • dav
HomelabLinuxUbuntu

Biến PC cũ thành NAS với Ubuntu, Samba và WebDAV

Cách tận dụng PC cũ làm NAS lưu trữ với Ubuntu, chia sẻ file trong mạng nội bộ bằng Samba và truy cập hoặc chia sẻ file qua Internet bằng WebDAV trên HTTPS.

11 phút đọc16/06/2026
AWS EC2 Public
sg • eip • ssh • web
CloudAWS

Cách đưa app ra Internet bằng AWS EC2 và Elastic IP

Hướng dẫn thực tế để tạo EC2 trên AWS, hiểu Security Group, gắn Elastic IP và đưa app ra Internet theo cách dễ làm nhưng an toàn hơn.

10 phút đọc16/06/2026
AWS
HEAD
TAIL
T3 Headscale
cluster • mesh • nginx
CloudAWSHomelab

Dùng EC2 t3.micro, Headscale và Tailscale cho homelab

Dùng EC2 t3.micro làm host Headscale, nối nhiều PC bằng Tailscale và thêm Nginx để reverse proxy hoặc public app khi cần.

11 phút đọc16/06/2026
HTML
FREE
Pages Static Blog
cdn • build • static
CloudCloudflare

Xây dựng blog tĩnh miễn phí với Cloudflare Pages

Cách dùng Cloudflare Pages host blog tĩnh miễn phí, web tĩnh là gì, vì sao static assets dễ scale và các giới hạn cần biết.

10 phút đọc16/06/2026
IDX
SLOW
MySQL Index
scan • query • data
DatabaseMySQLSQL

Vai trò của index và những kiểu query làm MySQL chậm

Vì sao index quan trọng trong MySQL, và những kiểu query hay làm chậm như chưa đánh index, SELECT quá nhiều data, hoặc lấy dư dữ liệu rồi mới xử lý ở code.

10 phút đọc16/06/2026
1|500
EX
Logical Exception
nestjs • code • status
BackendNestJS

NestJS xử lý lỗi logic bằng error code nội bộ và LogicalException

Cách chuẩn hoá lỗi logic trong NestJS bằng message code, LogicalException, HttpException và error code để debug nhanh hơn.

9 phút đọc16/06/2026
FK
DB Consistency
schema • key • rule
DatabaseSQLBackend

Cách thiết kế database nhất quán, ít lệch dữ liệu

Nguyên tắc thiết kế database để giữ dữ liệu nhất quán: naming, primary key, foreign key, unique, not null và chuẩn hoá vừa đủ.

10 phút đọc16/06/2026
APT
OK
Docker Install
ubuntu • group • hello
DevOpsDockerLinuxUbuntu

Cách cài Docker trên Ubuntu bằng docker.io

Cách cài Docker nhanh trên Ubuntu bằng sudo apt install docker.io, thêm user bằng usermod -aG docker và test bằng docker run hello-world.

7 phút đọc16/06/2026
AI
IDE
TAB
AGT
Coding Tool Compare
codex • claude • cursor • copilot
AI

So sánh Codex, Claude Code, Cursor và Copilot

So sánh Codex, Claude Code, Cursor và GitHub Copilot: giá, VS Code extension, autocomplete, agent coding và nên chọn gì.

12 phút đọc16/06/2026
PM2
LOG
UP
NestJS + PM2
restart • logs • reboot
BackendNestJSDevOpsPM2

PM2 chạy NestJS production: restart, log và reboot

Cách dùng PM2 để chạy NestJS trên VPS hoặc server Linux, gồm build app, start bằng ecosystem file, xem log, restart khi crash và tự khởi động lại sau reboot.

9 phút đọc16/06/2026
AI
LLM
UI
Ollama Local
free • local • chat
AIOllama

Cài Ollama local với Docker Compose và Open WebUI

Hướng dẫn cài Ollama local bằng Docker Compose, dùng Open WebUI để chat, gọi local API miễn phí và chọn model phù hợp với cấu hình máy cá nhân.

10 phút đọc16/06/2026
GPT
5.5
OpenAI News
agentic • coding • release
News

GPT-5.5 là gì, có gì mới và đã có trong ChatGPT, API chưa?

GPT-5.5 là model mới của OpenAI công bố ngày 23/04/2026. Bài viết tóm tắt điểm mới chính, rollout trong ChatGPT và thời điểm GPT-5.5 có trong API.

5 phút đọc16/06/2026
CF
F5
Anthropic News
security • policy • ai
News

Claude Fable 5 là gì và vì sao access bị tạm dừng?

Claude Fable 5 được Anthropic công bố ngày 09/06/2026, nhưng access Fable 5 và Mythos 5 bị tạm dừng ngày 12/06/2026 theo thông báo chính thức.

5 phút đọc16/06/2026
JOB
30s
BullMQ Timeout
stalled • attempt • worker
BackendNestJSRedis

BullMQ Job stalled với ElastiCache dù Redis vẫn chạy

Phân tích nguyên nhân và cách khắc phục lỗi BullMQ timeout, Job stalled khi dùng AWS ElastiCache (Redis).

7 phút đọc15/06/2026
UB
24.04
LTS
Ubuntu Setup
install • server • apt
LinuxUbuntu

Cách cài Ubuntu 24.04 LTS cho người dùng Việt

Hướng dẫn cài Ubuntu 24.04 LTS từng bước cho máy dev hoặc desktop cá nhân, kèm lưu ý gõ tiếng Việt ổn định.

12 phút đọc15/06/2026
SMB
Drive
Photos
Share
Synology NAS
lan • apps • public
HomelabSynology

Cách dùng Synology NAS: SMB, Drive, Photos

Cách dùng Synology NAS cho SMB/Samba, Synology Drive, Photos, mobile app và chia sẻ file nội bộ hoặc qua Internet có kiểm soát.

11 phút đọc15/06/2026
PC
TNL
WEB
Cloudflare Tunnel
no port forward
CloudCloudflareHomelab

Cách dùng Cloudflare Tunnel khi không mở được port

Cách dùng Cloudflare Tunnel để đưa một PC cũ hoặc mini server ra Internet khi không mở được port router, bị CGNAT hoặc đang ở mạng chung cư.

10 phút đọc15/06/2026
API
DB
Redis
compose
DevOpsDocker

Docker Compose cho local dev nhiều project

Cách dùng Docker Compose để chạy nhiều project song song không trùng port, tách riêng MySQL và Redis cho từng app, và giữ môi trường dev sạch, dễ reset.

14 phút đọc15/06/2026
API
JOB
WORKER
BullMQ Queue
retry • delay • async
BackendNestJSRedis

Redis queue trong NestJS với BullMQ: cách triển khai

Cách dùng Redis làm queue trong NestJS với BullMQ, từ luồng producer-consumer, retry, delay job đến các lưu ý production khi xử lý email, webhook và tác vụ nền.

10 phút đọc15/06/2026
SSL
NPM
APP
Proxy Manager
domain • ssl • docker
DevOpsNginxDocker

Nginx Proxy Manager với Docker Compose và SSL

Chạy Nginx Proxy Manager bằng Docker Compose, trỏ nhiều domain về một server, reverse proxy app nội bộ và xin SSL Let's Encrypt.

9 phút đọc15/06/2026
VI
Linux Input
ibus • fcitx5 • unikey
LinuxUbuntu

Ubuntu nên dùng ibus-bamboo hay fcitx5-unikey?

So sánh ibus-bamboo và fcitx5-unikey trên Ubuntu, gồm GNOME, Electron apps, lỗi predict bar và cách chọn bộ gõ ổn định.

8 phút đọc15/06/2026
PVE
DSM
Proxmox Storage
xpenology • vm • disk
HomelabProxmoxSynology

Xpenology trên Proxmox VE 8.2.4 với passthrough HDD

Hướng dẫn cài đặt Xpenology DSM 7.2.1 trên Proxmox VE 8.2.4 và cấu hình passthrough HDD để đọc SMART thông qua passthrough.

12 phút đọc12/06/2026
EBS
XFS
Resize EBS
ec2 • volume • filesystem
CloudAWSLinux

Resize EC2 EBS volume và mở rộng XFS không mất dữ liệu

Các bước mở rộng EBS volume và filesystem XFS trên EC2 Ubuntu một cách an toàn.

8 phút đọc10/06/2026
RDS
TCP
RE
Redis Reconnect
failover • readonly • retry
BackendNestJSRedis

NestJS mất kết nối Redis: cấu hình ioredis reconnect

Cách cấu hình ioredis trong NestJS để reconnect an toàn khi Redis disconnect, gặp TCP idle timeout hoặc ElastiCache failover trả về READONLY.

6 phút đọc08/06/2026
12s
200ms
MySQL Query
explain • scan • optimize
DatabaseMySQLSQL

Tối ưu MySQL query với 300k+ records

Case study tối ưu query MySQL từ 12s xuống 200ms với explain, index và query rewrite.

10 phút đọc05/06/2026
OOM
137
Docker Memory
oomkilled • exit • limit
DevOpsDocker

Container exit 137: debug OOMKilled và memory limit

Debug container restart vô hạn với exit code 137 trên Docker và Kubernetes, set --max-old-space-size đúng tỷ lệ, và detect memory leak bằng heap snapshot.

9 phút đọc02/06/2026
PVE
DSM
Proxmox Storage
xpenology • vm • disk
HomelabProxmox

Proxmox cluster mất quorum và cách khôi phục

pvecm status báo 'not in quorum', VMs bị freeze — cách dùng pvecm expected, pvecm delnode và setup QDevice để phòng tránh lần sau.

11 phút đọc28/05/2026
SHR
RAID
NAS
Synology Storage
disk • expand • redundancy
HomelabSynology

Thêm ổ cứng vào SHR Synology không mất dữ liệu

Cách add drive vào SHR storage pool trên DSM, xem tiến trình reshape qua /proc/mdstat, và những lưu ý tránh mất dữ liệu khi mở rộng.

8 phút đọc25/05/2026
NGX
413
MB
Nginx Upload
413 • body size • proxy
DevOpsNginx

Nginx 413 dù đã set client_max_body_size: cách fix

Tại sao Nginx trả 413 dù đã set client_max_body_size, và cách fix khi có nhiều layer proxy hoặc reverse proxy.

5 phút đọc20/05/2026