Tài liệu chuẩn ESC CV v1 — phiên bản hướng dẫn ngày 16/10/2026. Bài này dành cho người thiết kế CV, lập trình viên và các trợ lý AI (ChatGPT, Gemini, Grok, Claude…). Mục tiêu là tạo file ZIP được ESC CV Studio nhận là mẫu có thể chỉnh sửa trực tuyến, không chỉ là HTML nhìn giống CV.
Đường dẫn sử dụng: Tạo CV trực tuyến. Lưu ý: hệ thống sẽ tự kiểm tra ZIP; chỉ ZIP thỏa chuẩn mới mở Builder. File không đạt chuẩn có thể chỉ được xem trước và các biến {{...}} sẽ còn nguyên.
1. Tải mẫu ZIP chính thức để bắt đầu
Đây là mẫu nhỏ đã xây dựng theo contract của ESC CV v1: 2 cột, màu xanh công nghệ, có họ tên, ảnh, liên hệ, kỹ năng, kinh nghiệm và học vấn. Bạn có thể dùng trực tiếp, đổi giao diện hoặc giao cho AI phát triển tiếp từ chính các file này.
⬇ Tải mẫu ZIP ESC CV v1 chính thức (đầy đủ HTML/CSS/JSON/ảnh)
Nên giải nén, chỉnh sửa, nén lại đúng cấu trúc, sau đó tự upload vào ESC CV Studio. Không dùng ảnh chụp mẫu CV làm thay cho mã HTML/CSS.
2. Những định dạng nào được chấp nhận?
- ZIP ESC CV v1: tối đa 5 MB, kiểm tra manifest, HTML/CSS, preview và cú pháp biến; nếu hợp lệ thì chỉnh sửa trực tuyến.
- ZIP HTML không chuẩn: có thể xem trước nhưng không bật chế độ sửa trực tiếp; biến {{…}} sẽ không được thay bằng dữ liệu.
- HTML rời (.html/.htm): tối đa 2 MB, chỉ xem trước.
- PDF hoặc ảnh PNG/JPG/WebP: chỉ xem trước, không sửa nội dung theo từng trường.
- DOCX: chưa được hỗ trợ. Chức năng công khai CV lên hosting và Member hiện chưa triển khai.
3. Cấu trúc ZIP chính xác
ZIP cho phép đặt các tệp ở gốc hoặc trong một thư mục bao ngoài duy nhất. Tối thiểu phải có template.json, HTML, CSS và ảnh preview. Để CV có dữ liệu demo, nên thêm sample-data.json và ảnh dự phòng.
template.json
index.html
style.css
sample-data.json
preview.png
assets/avatar-placeholder.png
Tên file trong manifest phải trùng chính xác (phân biệt chữ hoa/thường). Không thêm các file tạm như .DS_Store, .git, file thực thi, hoặc đường dẫn lùi thư mục.
4. File template.json — manifest bắt buộc
{
"id": "ESCV1",
"version": "1.0.0",
"name": "ESC CV v1 - Hai cột công nghệ",
"engine": "esc-cv-v1",
"schema": "esc-cv-v1",
"entry": "index.html",
"stylesheet": "style.css",
"preview": "preview.png",
"sample": "sample-data.json"
}
id phải là 2–32 ký tự, bắt đầu bằng chữ in hoa và chỉ gồm A–Z, 0–9, dấu _ hoặc -. version dạng ba số nguyên như 1.0.0. name tối đa 140 ký tự. Hai khóa engine và schema phải bằng esc-cv-v1. entry, stylesheet và preview trỏ đúng tệp thật trong ZIP; đường dẫn tương đối, không dùng URL ngoài.
Tệp sample là tùy chọn nhưng rất nên có để khi chọn mẫu, Builder hiển thị dữ liệu demo. Manifest hợp lệ chưa đủ; hệ thống còn kiểm tra cú pháp HTML, CSS, ảnh và các nhóm dữ liệu.
5. File index.html — mẫu hoàn chỉnh có thể chỉnh sửa
Rất quan trọng: hãy đưa phần thân HTML như ví dụ bên dưới vào index.html. Không chèn các thẻ <meta>, <link> để gọi CSS. ESC tự đưa CSS từ file đã khai báo vào tài liệu khi render.
<div class="cv">
<aside class="sidebar">
<img class="avatar" src="{{profile.avatarUrl}}" alt="Ảnh đại diện">
<h2>Liên hệ</h2>
<p>{{profile.email}}</p>
<p>{{profile.phone}}</p>
<p>{{profile.location}}</p>
<h2>Kỹ năng</h2>
{{#each skills}}
<p class="skill">{{name}}</p>
{{/each}}
</aside>
<main class="detail">
<h1>{{profile.fullName}}</h1>
<p class="role">{{profile.jobTitle}}</p>
<h2>Giới thiệu</h2>
<p>{{profile.summary}}</p>
<h2>Kinh nghiệm làm việc</h2>
{{#each experiences}}
<section class="item">
<h3>{{position}}</h3>
<p>{{company}} · {{period}}</p>
<p>{{description}}</p>
</section>
{{/each}}
<h2>Học vấn</h2>
{{#each education}}
<section class="item"><h3>{{school}}</h3><p>{{degree}}</p></section>
{{/each}}
</main>
</div>
Bắt buộc có chính xác biến {{profile.fullName}}. Các trường khác bắt đầu bằng profile. để ESC nhận diện phần hồ sơ. Các nhóm nhiều item dùng cú pháp {{#each skills}} … {{/each}}, {{#each experiences}} … {{/each}} và mỗi item dùng thuộc tính cục bộ như {{name}}, {{position}}.
Mỗi nhóm lặp phải mở/đóng đúng cặp, không lồng quá sâu; trường trong nhóm phải trùng với keys ở sample-data.json. Dùng HTML có cấu trúc rõ ràng, nhóm lặp bao ngoài toàn bộ item để thao tác Thêm/Xóa/Đổi thứ tự.
6. File style.css — định dạng riêng, không nhúng link ngoài
*{box-sizing:border-box}
body{margin:0;background:#fff;color:#192b43;font:15px/1.65 Arial,sans-serif}
.cv{display:grid;grid-template-columns:32% 68%;max-width:900px;min-height:1110px;margin:auto}
.sidebar{padding:40px 26px;background:#10223d;color:#fff}
.avatar{display:block;width:124px;height:124px;object-fit:cover;border-radius:50%;margin:0 auto 30px}
.sidebar h2{font-size:17px;color:#85c1ff;margin-top:30px;padding-bottom:8px;border-bottom:1px solid #446288}
.sidebar p{overflow-wrap:anywhere}
.skill{margin:7px 0}
.detail{padding:43px 40px}
h1{font-size:34px;line-height:1.25;margin:0;color:#10223d}
.role{font-size:18px;color:#1683ea;font-weight:700;margin:10px 0 35px}
.detail h2{font-size:18px;text-transform:uppercase;margin-top:35px;border-bottom:2px solid #b9d7fa;padding-bottom:7px}
h3{font-size:16px;margin:15px 0 0}
p{margin:9px 0}
.item{break-inside:avoid;margin-bottom:22px}
@media(max-width:620px){.cv{grid-template-columns:1fr}.sidebar,.detail{padding:27px}}
Bạn có thể sáng tạo bố cục theo CV của mình, đặt màu sắc, khung, typography, cột, breakpoints ngay trong style.css. Hệ thống không cho CSS dùng @import, expression(...) hoặc url(http...), url(data:...). Không phụ thuộc JavaScript, Tailwind CDN, Google Fonts online hay tài nguyên mạng bên ngoài.
7. File sample-data.json — dữ liệu phải khớp 100% với HTML
{
"profile": {
"fullName": "Nguyễn Minh Anh",
"jobTitle": "Frontend Developer",
"email": "minhanh@example.com",
"phone": "0900 123 456",
"location": "TP. Hồ Chí Minh",
"summary": "Lập trình viên web có kinh nghiệm xây dựng giao diện dễ dùng, chú trọng hiệu năng và khả năng truy cập.",
"avatarUrl": ""
},
"skills": [
{
"name": "TypeScript · JavaScript"
},
{
"name": "React · Astro"
},
{
"name": "HTML · CSS"
}
],
"experiences": [
{
"position": "Frontend Developer",
"company": "Công ty Công nghệ Mẫu",
"period": "2023 – nay",
"description": "Phát triển giao diện sản phẩm, tối ưu trải nghiệm và phối hợp thiết kế hệ thống."
},
{
"position": "Web Developer",
"company": "Studio Mẫu",
"period": "2021 – 2023",
"description": "Xây dựng website responsive và cải thiện tốc độ tải trang."
}
],
"education": [
{
"school": "Đại học Công nghệ",
"degree": "Kỹ sư Công nghệ thông tin"
}
]
}
Đối tượng profile chứa thông tin đơn; skills, experiences, education là mảng đối tượng (không phải một chuỗi văn bản). Ví dụ skills: [{"name":"React"}], tương ứng với {{#each skills}}{{name}}{{/each}}. Dữ liệu mẫu giúp mở Builder thấy thông tin ngay; thiếu nó, nhiều trường sẽ để trống.
8. Quy tắc ảnh đại diện và ảnh preview
- Ảnh người dùng trong HTML: dùng đúng
<img src="{{profile.avatarUrl}}" alt="Ảnh đại diện">. Không dùng trực tiếp src="assets/portrait.webp" nếu muốn người dùng đổi ảnh trực tiếp.
- Ảnh demo dự phòng: đặt
assets/avatar-placeholder.png hoặc assets/sample-portrait.webp trong ZIP. Để profile.avatarUrl rỗng ("") khi dùng ảnh này. Khi người dùng thay ảnh, ESC sẽ dùng dữ liệu mới.
- Ảnh preview: khai báo
preview.png, preview.jpg hoặc preview.webp trong manifest; nội dung ảnh phải giải mã được, kích thước tối đa 5.000 × 5.000 pixel, dung lượng tối đa 1 MB.
- Asset tĩnh khác: để trong
assets/ và dùng đường dẫn tương đối; không tải ảnh từ domain ngoài.
9. Danh sách HTML/CSS bị từ chối vì an toàn
| Không dùng trong mẫu editable |
Cách làm đúng |
<script>, JavaScript, onclick, onload |
Chỉ HTML + CSS tĩnh và biến ESC |
<meta>, <link>, <base> |
ESC tự tạo head; stylesheet được khai báo bằng manifest |
<iframe>, <object>, <embed>, <form> |
Thay bằng phần tử hiển thị thuần túy |
javascript:, thẻ PHP hoặc tài nguyên CSS từ internet |
Đặt tài nguyên hợp lệ trong ZIP, không thực thi mã |
Đường dẫn ../, file ẩn hoặc file vượt giới hạn |
Chỉ đường dẫn tương đối an toàn trong đúng thư mục ZIP |
Giới hạn: ZIP 100 byte – 5 MB, tối đa 100 tệp, tổng dung lượng giải nén tối đa 20 MB. HTML/CSS/JSON dùng UTF-8. Tệp ZIP dùng nén Store hoặc Deflate phổ biến, không mật khẩu; ảnh phải là PNG/JPG/WebP hợp lệ. Nội dung có thể bị từ chối vì lý do khác nếu không qua các bước kiểm tra cấu trúc hoặc giải mã.
10. Danh sách tự kiểm tra trước khi tải lên
- ZIP có cấu trúc và tệp hợp lệ; không mã thực thi, không thư mục ../, không file ẩn.
- Manifest khai báo đúng engine/schema esc-cv-v1, các đường dẫn khớp file trong ZIP.
- index.html có {{profile.fullName}} và các {{#each …}} đóng bằng {{/each}} đúng thứ tự.
- Không có meta, link, script, iframe, onload/onclick hoặc liên kết JavaScript trong HTML.
- CSS chỉ dùng kiểu an toàn, không @import, không tải ảnh/font từ web ngoài.
- sample-data.json có đối tượng profile và các nhóm danh sách dạng mảng object.
- Ảnh preview thật (PNG/JPG/WebP) dưới 1 MB; ảnh đại diện dùng tên dự phòng đúng quy ước.
- Upload lên ESC hiển thị “Có thể chỉnh sửa trực tuyến”, sau đó kiểm tra chỉnh chữ/ảnh và thêm/xóa mục.
Thử tại ESC CV Studio, bấm Tải lên mẫu CV của bạn. Nếu đạt, hệ thống hiển thị chế độ chỉnh sửa trực tiếp; nếu chỉ xem trước hoặc còn chuỗi {{…}}, hãy kiểm tra manifest, các thẻ bị cấm, dữ liệu demo và đường dẫn ảnh.
11. Prompt giao việc cho ChatGPT, Gemini, Grok hoặc Claude
Bạn có thể sao chép nội dung sau, đính kèm ZIP mẫu ở mục 1 và yêu cầu AI tạo một CV khác. Chỉ ảnh chụp thiết kế là chưa đủ để AI tự suy ra chuẩn ESC:
Hãy tạo một mẫu CV đẹp theo tiêu chuẩn ESC CV v1.
Tôi sẽ tải lên và CHỈ chấp nhận kết quả nếu chỉnh sửa trực tuyến trong ESC CV Studio.
Dùng ZIP tham chiếu ESC CV v1 tôi đính kèm làm baseline; tạo thiết kế riêng, không phá contract.
Kết quả: một ZIP <= 5 MB gồm template.json, index.html, style.css, sample-data.json,
preview.png hoặc preview.webp thật, cùng ảnh đại diện dự phòng trong assets/.
Manifest: engine và schema đều esc-cv-v1; id, version, path hợp lệ.
index.html chứa {{profile.fullName}}, các trường profile.xxx, và các nhóm
{{#each skills}}, {{#each experiences}}, {{#each education}} đóng bằng {{/each}}.
KHÔNG dùng script, meta, link, iframe, sự kiện onclick, CSS @import, tài nguyên online.
Ảnh đại diện: <img src="{{profile.avatarUrl}}"> và file assets/avatar-placeholder.png.
sample-data.json điền đủ dữ liệu thực tế cho từng trường để preview không trống.
Tự kiểm ZIP từng file và đối chiếu checklist bài hướng dẫn trước khi trả kết quả.
Nếu chưa chạy thử trực tiếp trên ESC CV Studio, phải nói rõ CHƯA XÁC NHẬN upload.
Trả duy nhất ZIP hoàn thiện và nêu mọi giới hạn chưa kiểm chứng.
12. Lỗi thường gặp khi kiểm thử
| Hiện tượng |
Nguyên nhân hay gặp và cách xử lý |
CV hiện nguyên {{profile.fullName}}, {{#each}} |
Đang ở chế độ chỉ xem HTML; ZIP chưa đạt chuẩn editable. Kiểm tra thẻ cấm, manifest, ảnh và cú pháp groups. |
| Không thấy ảnh đại diện |
Đừng gán avatarUrl bằng đường dẫn ảnh; đổi thành chuỗi rỗng, thêm đúng asset dự phòng. |
| Upload báo manifest không hợp lệ |
Soát các khóa engine, schema, id, version, entry, stylesheet và preview; tên file phải trùng. |
| Builder trống hoặc nhóm không có dữ liệu |
Thêm sample-data.json, tạo mảng object có key trùng biến trong mỗi nhóm. |
| ZIP chỉ xem dù nhìn đẹp |
HTML/CSS có thể chứa script/meta/link, CSS import hoặc preview bị lỗi; hãy đối chiếu lại mục 9. |
Phạm vi: Tài liệu mô tả các quy tắc đang áp dụng cho ESC CV Studio tại thời điểm xuất bản, không bảo đảm mọi ZIP có thiết kế đẹp đều đạt chuẩn. Việc xác nhận cuối cùng cần tải trực tiếp ZIP lên Builder; bản mẫu tham chiếu giúp rút ngắn quá trình tạo và kiểm tra.
Quản Trị Mạng & Dịch Vụ Thư Điện Tử Doanh Nghiệp
CẤU HÌNH MAIL SERVER RIÊNG (POSTFIX & DOVECOT) CHUẨN KỸ THUẬT, XÁC THỰC SPF/DKIM/DMARC & TỐI ƯU 100% VÀO INBOX TRÊN eCLOUD VPS
Chuyên trang Hỗ trợ & Triển khai Máy chủ Đám mây ESC.VN
1. Giới thiệu tổng quan
Dịch vụ thư điện tử (Email) là kênh giao thương huyết mạch của mọi tổ chức. Tuy nhiên, việc tự triển khai một Mail Server độc lập trên máy chủ ảo eCloud VPS hoặc Dedicated Server luôn đòi hỏi tiêu chuẩn kỹ thuật nghiêm ngặt nhất:
- Nếu thiếu các bản ghi xác thực nguồn gốc thư, email gửi đi từ máy chủ sẽ bị Gmail, Microsoft Outlook hay Yahoo tự động đánh dấu là thư rác (Spam/Junk) hoặc từ chối tiếp nhận hoàn toàn (Bounced).
- Nếu máy chủ bị lợi dụng cấu hình Open Relay, kẻ xấu sẽ biến VPS thành công cụ phát tán thư rác hàng loạt, khiến địa chỉ IP Public bị liệt vào danh sách đen quốc tế (Blacklist/DNSBL) và bị các tổ chức an ninh mạng chặn tuyến.
Bài hướng dẫn này chuẩn hóa toàn bộ quy trình: cài đặt Postfix (MTA – gửi thư), Dovecot (MDA/IMAP – nhận thư), mã hóa TLS/SSL, và tích hợp bộ ba xác thực danh tính số SPF, DKIM (OpenDKIM), DMARC để đảm bảo tỷ lệ vào Hộp thư đến (Inbox) đạt mức tối đa.
2. Yêu Cầu Kỹ Thuật Tiên Quyết Trước Khi Cài Đặt
- Cấu hình Reverse DNS (PTR Record): Địa chỉ IP Public của máy chủ eCloud VPS bắt buộc phải phân giải ngược về đúng Hostname của Mail Server (ví dụ:
mail.tenmien.vn). (Quý khách gửi Ticket tại cổng khachhang.esc.vn để kỹ thuật ESC hỗ trợ trỏ PTR record cho IP máy chủ).
- Mở các cổng mạng Mail trên Tường lửa (Firewall):
- Cổng gửi thư (SMTP):
25 (Server-to-Server), 587 (Submission – Client gửi có TLS), 465 (SMTPS).
- Cổng nhận thư (IMAP/POP3):
993 (IMAPS), 995 (POP3S).
3. Cài Đặt và Cấu Hình Mail Transfer Agent (Postfix)
3.1. Cài đặt Postfix
Trên Ubuntu / Debian:
sudo DEBIAN_FRONTEND=noninteractive apt update && sudo apt install postfix mailutils -y
Trên AlmaLinux / Rocky Linux:
sudo dnf install postfix mailx -y
3.2. Cấu hình tệp tin chính /etc/postfix/main.cf
Mở file cấu hình Postfix:
sudo nano /etc/postfix/main.cf
Thiết lập các tham số vận hành chuẩn:
myhostname = mail.tenmien.vn
mydomain = tenmien.vn
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# CHỐNG OPEN RELAY: Chỉ máy chủ cục bộ mới được gửi thư không xác thực
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
home_mailbox = Maildir/
# MÃ HÓA TLS CHO GIAO THỨC GỬI THƯ (Dùng chung chứng chỉ SSL của Nginx/Let's Encrypt)
smtpd_tls_cert_file = /etc/ssl/esc_certs/fullchain.crt
smtpd_tls_key_file = /etc/ssl/esc_certs/private.key
smtpd_use_tls = yes
smtpd_tls_security_level = may
smtp_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_ciphers = high
# XÁC THỰC NGƯỜI DÙNG QUA DOVECOT SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
3.3. Mở cổng Submission 587 trong /etc/postfix/master.cf
Mở file master.cf và bỏ chú thích dòng dịch vụ submission:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unauth_destination=yes
Khởi động lại Postfix: sudo systemctl restart postfix
4. Cài Đặt và Cấu Hình Mail Delivery Agent (Dovecot)
Dovecot quản lý việc lưu trữ hộp thư dưới định dạng Maildir và cung cấp giao thức IMAPS an toàn để người dùng kết nối qua ứng dụng (Outlook, Thunderbird, Mail iOS/Android).
4.1. Cài đặt Dovecot
# Ubuntu / Debian:
sudo apt install dovecot-core dovecot-imapd -y
# AlmaLinux / Rocky Linux:
sudo dnf install dovecot -y
4.2. Cấu hình lưu trữ Maildir (/etc/dovecot/conf.d/10-mail.conf)
mail_location = maildir:~/Maildir
4.3. Cấu hình SASL xác thực kết nối với Postfix (/etc/dovecot/conf.d/10-master.conf)
Tìm khối service auth và sửa thành:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
4.4. Cấu hình chứng chỉ SSL cho Dovecot (/etc/dovecot/conf.d/10-ssl.conf)
ssl = required
ssl_cert = </etc/ssl/esc_certs/fullchain.crt
ssl_key = </etc/ssl/esc_certs/private.key
ssl_min_protocol = TLSv1.2
Khởi động lại Dovecot: sudo systemctl enable --now dovecot
5. Cấu Hình Xác Thực Số Toàn Diện: SPF, DKIM & DMARC
Đây là mắt xích quan trọng nhất để các nhà cung cấp dịch vụ email quốc tế (Google, Microsoft) xếp hạng tín nhiệm IP và đưa thư thẳng vào Inbox.
5.1. Cấu hình Bản ghi SPF (Sender Policy Framework)
Bản ghi SPF chỉ định công khai địa chỉ IP nào được phép gửi thư đại diện cho tên miền. Thêm bản ghi TXT vào cấu hình DNS của tên miền tại ESC:
- Tên bản ghi:
@
- Loại:
TXT
- Giá trị:
v=spf1 ip4:<IP_PUBLIC_ECLOUD_VPS> -all
5.2. Cài đặt và Sinh khóa ký số DKIM (DomainKeys Identified Mail) với OpenDKIM
DKIM mã hóa một chữ ký số vào tiêu đề (Header) của mỗi email gửi đi để chống giả mạo nội dung.
# Ubuntu / Debian:
sudo apt install opendkim opendkim-tools -y
# AlmaLinux / Rocky Linux:
sudo dnf install opendkim -y
Khởi tạo cặp khóa cho domain:
sudo mkdir -p /etc/opendkim/keys/tenmien.vn
cd /etc/opendkim/keys/tenmien.vn
sudo opendkim-genkey -s mail -d tenmien.vn
sudo chown -R opendkim:opendkim /etc/opendkim/keys
Lệnh trên sinh ra 2 file: mail.private (khóa bí mật trên server) và mail.txt (khóa công khai để trích xuất cấu hình DNS). Đọc nội dung file mail.txt bằng lệnh sudo cat mail.txt và thêm bản ghi TXT trên hệ thống DNS:
- Tên bản ghi:
mail._domainkey
- Loại:
TXT
- Giá trị: Dán chuỗi
v=DKIM1; k=rsa; p=MIIBIjANBgkqh... lấy từ file mail.txt.
Kết nối OpenDKIM với Postfix trong /etc/postfix/main.cf:
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
Khởi chạy dịch vụ OpenDKIM: sudo systemctl enable --now opendkim && sudo systemctl restart postfix
5.3. Cấu hình Chính sách DMARC (Domain-based Message Authentication)
DMARC hướng dẫn máy chủ nhận thư phải làm gì khi một email bị lỗi kiểm tra SPF hoặc DKIM. Thêm bản ghi TXT trên DNS:
- Tên bản ghi:
_dmarc
- Loại:
TXT
- Giá trị:
v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@tenmien.vn; pct=100; adkim=r; aspf=r (Chính sách p=quarantine yêu cầu đưa thư vào Spam nếu không khớp xác thực và gửi báo cáo định kỳ về email quản trị).
6. Bảng Kiểm Tra & Đánh Giá Tín Nhiệm Mail Server (Testing & Validation)
| Tiêu chuẩn kiểm tra |
Công cụ / Câu lệnh kiểm tra |
Tiêu chí đạt chuẩn |
| Kiểm tra điểm số Spam |
Gửi email thử nghiệm tới mail-tester.com |
Đạt điểm số 10/10 (Xanh toàn bộ SPF, DKIM, DMARC, PTR). |
| Kiểm tra Reverse DNS |
dig -x <IP_PUBLIC_VPS> +short |
Trả về chính xác hostname mail.tenmien.vn. |
| Kiểm tra chữ ký DKIM |
sudo opendkim-testkey -d tenmien.vn -s mail -vvv |
Trả về thông báo: key OK. |
| Kiểm tra log gửi thư |
sudo tail -f /var/log/mail.log |
Hiển thị status=sent (250 2.0.0 OK … dkim=pass). |
7. Quy Trình Khẩn Cấp Khi IP Bị Cảnh Báo Spam / Blacklist
Khi phát hiện lượng email gửi đi tăng đột biến và IP bị liệt vào danh sách chặn:
- Khóa ngay hàng đợi thư (Freeze Queue):
sudo postsuper -h ALL
- Kiểm tra tài khoản bị lộ mật khẩu:
mailq | grep -E "([A-Z0-9]{10})" | awk '{print $7}' | sort | uniq -c | sort -nr
Xác định user nào đang phát tán hàng nghìn thư rác để đổi mật khẩu tài khoản đó ngay lập tức.
- Xóa toàn bộ thư rác đang chờ gửi:
sudo postsuper -d ALL
- Yêu cầu gỡ bỏ IP khỏi Blacklist: Sau khi làm sạch máy chủ, truy cập các tổ chức chống spam (như Spamhaus, Barracuda, MXToolbox) để gửi yêu cầu Delist IP.
8. Kênh Tiếp Nhận Hỗ Trợ Kỹ Thuật 24/7/365 tại ESC.VN
Trong trường hợp Quý doanh nghiệp cần triển khai giải pháp Email Relay chuyên dụng qua cổng bảo vệ cao cấp, chuyển đổi hạ tầng Mail Server Hybrid kết hợp Microsoft 365 / Google Workspace hoặc cần cấp dải IP riêng sạch để gửi thư tiếp thị/giao dịch số lượng lớn, hãy liên hệ ngay với đội ngũ kỹ sư của ESC:
Hạ Tầng & Quản Trị Hệ Thống
XÂY DỰNG HỆ THỐNG LOAD BALANCING & REVERSE PROXY VỚI NGINX TRÊN eCLOUD VPS
Tối ưu khả năng chịu tải, mở rộng Scale-Out và bảo mật hạ tầng Backend chuyên nghiệp
1. Giới thiệu tổng quan
Khi website doanh nghiệp hoặc hệ thống thương mại điện tử phát triển vượt ngưỡng đáp ứng của một máy chủ đơn lẻ, mô hình mở rộng theo chiều ngang (Scale-Out) trở thành giải pháp bắt buộc. Bằng cách sử dụng một máy chủ eCloud VPS làm tầng cổng giao tiếp Reverse Proxy trung gian, quản trị viên có thể phân phối lưu lượng truy cập đồng đều tới nhiều máy chủ xử lý phía sau (Backend/Upstream Servers).
Mô hình này đem lại 3 giá trị kỹ thuật cốt lõi:
- Khả năng chịu lỗi và tính sẵn sàng cao (High Availability): Tự động phát hiện và cô lập máy chủ backend bị lỗi mà không làm gián đoạn trải nghiệm người dùng.
- Ẩn giấu hạ tầng backend (Security Shield): Khách hàng chỉ tương tác với IP Public của Reverse Proxy, IP thật của các cụm máy chủ ứng dụng và cơ sở dữ liệu được giấu hoàn toàn trong mạng nội bộ.
- Giảm tải xử lý (SSL Offloading & FastCGI/Microcaching): Tập trung giải mã mã hóa SSL/TLS và lưu bộ đệm tĩnh tại máy chủ proxy, giải phóng tài nguyên CPU/RAM cho máy chủ ứng dụng.
2. Mô Hình Kiến Trúc Triển Khai
Giả định kịch bản hạ tầng triển khai trên cụm máy chủ ảo eCloud VPS của ESC:
- Nginx Load Balancer (Proxy):
10.0.0.10 (Sở hữu IP Public trỏ tên miền tenmien.vn)
- Backend Node 01 (Web App 1):
10.0.0.11:8080 (Mạng nội bộ)
- Backend Node 02 (Web App 2):
10.0.0.12:8080 (Mạng nội bộ)
- Backend Backup Node:
10.0.0.13:8080 (Dự phòng khẩn cấp khi cả 2 node chính quá tải hoặc sập)
3. Cấu Hình Cân Bằng Tải Nâng Cao Trên Nginx Proxy
Mở hoặc tạo mới file cấu hình virtual host trên máy chủ proxy:
sudo nano /etc/nginx/conf.d/loadbalancer.conf
3.1. Thiết lập khối upstream với thuật toán điều phối
Nginx hỗ trợ nhiều thuật toán phân phối tải tùy theo đặc thù dịch vụ:
- Round Robin (mặc định): Phân chia lần lượt theo vòng tròn.
- Least Connections (least_conn): Chuyển tiếp request đến server đang xử lý ít kết nối nhất (khuyên dùng cho ứng dụng tải nặng).
- IP Hash (ip_hash): Cố định một IP người dùng vào cùng một backend server (giữ trạng thái Session).
Cấu hình mẫu tối ưu kết hợp trọng số (Weight) và kiểm tra tình trạng kết nối:
upstream backend_cluster {
least_conn; # Ưu tiên chuyển vào node có tải kết nối thấp nhất
# Node 1: Cấu hình mạnh hơn, gán trọng số 3 (nhận 60% lưu lượng)
server 10.0.0.11:8080 weight=3 max_fails=3 fail_timeout=15s;
# Node 2: Cấu hình cơ bản, gán trọng số 2 (nhận 40% lưu lượng)
server 10.0.0.12:8080 weight=2 max_fails=3 fail_timeout=15s;
# Node dự phòng: Chỉ kích hoạt khi cả Node 1 và Node 2 không phản hồi
server 10.0.0.13:8080 backup;
# Duy trì kết nối Keepalive để giảm độ trễ TCP handshake
keepalive 32;
}
3.2. Cấu hình khối Server, SSL Offloading và chuyển tiếp Header
Khi Reverse Proxy đảm nhiệm việc giải mã SSL, các backend phía sau chỉ cần chạy HTTP nội bộ để tối ưu tốc độ:
server {
listen 80;
server_name tenmien.vn www.tenmien.vn;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name tenmien.vn www.tenmien.vn;
# Chứng chỉ SSL cài đặt tập trung tại Proxy (Let's Encrypt hoặc Commercial SSL)
ssl_certificate /etc/ssl/esc_certs/fullchain.crt;
ssl_certificate_key /etc/ssl/esc_certs/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://backend_cluster;
# Bắt buộc chuyển tiếp đầy đủ Header thực của Client về cho Backend phân tích
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Thiết lập phiên HTTP/1.1 và xóa header Connection để tận dụng Keepalive
proxy_http_version 1.1;
proxy_set_header Connection "";
# Tinh chỉnh Timeout kết nối tới Backend
proxy_connect_timeout 5s;
proxy_send_timeout 15s;
proxy_read_timeout 15s;
# Xử lý tự động chuyển node nếu node hiện tại trả về mã lỗi 5xx
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
}
4. Thiết Lập Bộ Đệm Caching Tập Trung (Proxy Microcaching)
Để tăng tốc độ tải trang lên hàng chục lần và giảm tải trực tiếp cho các máy chủ backend, ta thiết lập bộ nhớ đệm trang tĩnh và API tạm thời ngay trên ổ SSD NVMe của Proxy:
4.1. Khởi tạo vùng lưu cache trong nginx.conf
Mở file /etc/nginx/nginx.conf, thêm dòng sau vào trong khối http { ... }:
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=PAGECACHE:50m max_size=5g inactive=60m use_temp_path=off;
4.2. Áp dụng Cache vào Virtual Host
Mở lại /etc/nginx/conf.d/loadbalancer.conf và điều chỉnh trong khối location /:
location / {
proxy_cache PAGECACHE;
proxy_cache_valid 200 301 302 5m; # Cache kết quả hợp lệ trong 5 phút
proxy_cache_valid 404 1m; # Cache trang không tìm thấy trong 1 phút
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
# Bỏ qua Cache đối với các trang quản trị hoặc giỏ hàng
proxy_cache_bypass $http_pragma $http_authorization $cookie_nocache;
proxy_no_cache $http_pragma $http_authorization $cookie_nocache;
# Thêm Header phản hồi để debug trạng thái Cache (HIT/MISS/BYPASS)
add_header X-Cache-Status $upstream_cache_status;
proxy_pass http://backend_cluster;
# ... (Các cấu hình proxy_set_header giữ nguyên)
}
Kiểm tra cú pháp và khởi động lại Nginx:
sudo nginx -t && sudo systemctl reload nginx
5. Cấu Hình Backend Nhận Diện IP Thật Của Khách Hàng (Real IP)
Vì toàn bộ request đến máy chủ backend đều bắt nguồn từ IP của Reverse Proxy (10.0.0.10), file log và phần mềm bảo vệ (như Fail2ban, phân tích truy cập) trên Backend sẽ ghi nhận nhầm IP của Proxy. Cần cấu hình module Real IP trên máy chủ Backend.
Nếu máy chủ Backend dùng Nginx:
Mở /etc/nginx/nginx.conf trên các máy Backend, thêm vào khối http { ... }:
set_real_ip_from 10.0.0.10; # Tin cậy IP của máy chủ Reverse Proxy
real_ip_header X-Forwarded-For;
real_ip_recursive on;
Nạp lại cấu hình: sudo systemctl reload nginx
Nếu máy chủ Backend dùng Apache:
Kích hoạt module remoteip:
sudo a2enmod remoteip # Trên Ubuntu/Debian
Mở file cấu hình Apache và thêm:
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 10.0.0.10
6. Giám Sát Và Chẩn Đoán Trạng Thái Cụm Cân Bằng Tải
| Nhu cầu chẩn đoán |
Câu lệnh kiểm tra chuẩn |
Mục tiêu |
| Kiểm tra trạng thái Cache |
curl -I https://tenmien.vn |
Quan sát header X-Cache-Status: HIT (đã nạp từ cache) hoặc MISS. |
| Theo dõi tải trên Proxy |
sudo tail -f /var/log/nginx/access.log |
Xem lưu lượng request đi qua máy chủ cân bằng tải thời gian thực. |
| Kiểm tra phân bổ Backend |
Định dạng log thêm biến $upstream_addr |
Xác định request thực tế đang rẽ nhánh vào Node 10.0.0.11 hay 10.0.0.12. |
7. Kênh Tiếp Nhận Hỗ Trợ Kỹ Thuật 24/7/365 tại ESC.VN
Trong trường hợp doanh nghiệp cần thiết kế kiến trúc cân bằng tải phần cứng độc lập, thiết lập cụm máy chủ chia sẻ Storage SAN/NFS hoặc chống tấn công DoS/DDoS tầng mạng diện rộng, đội ngũ kỹ sư hạ tầng của ESC luôn sẵn sàng đồng hành:
Hướng Dẫn Tối Ưu Hiệu Năng eCloud VPS Cho Nginx, PHP-FPM Và MariaDB
1. Giới thiệu tổng quan
Trong quá trình vận hành website doanh nghiệp hoặc ứng dụng thương mại điện tử trên hạ tầng eCloud VPS của ESC, hiện tượng phản hồi chậm, nghẽn kết nối hoặc xuất hiện lỗi 502 Bad Gateway / 504 Gateway Timeout thường không bắt nguồn từ thiếu hụt phần cứng mà do các thông số mặc định của Web Server và Database chưa được tinh chỉnh tương thích với lượng truy cập thực tế.
Tài liệu này hướng dẫn chi tiết quy trình chuẩn hóa các tham số cốt lõi của Nginx, PHP-FPM và MariaDB/MySQL nhằm khai thác tối đa tài nguyên CPU, RAM và ổ cứng SSD/NVMe trên máy chủ.
2. Tối ưu hóa Web Server Nginx
File cấu hình chính của Nginx nằm tại /etc/nginx/nginx.conf. Thực hiện mở file và điều chỉnh các khối tham số:
sudo nano /etc/nginx/nginx.conf
2.1. Cấu hình luồng xử lý (Worker Processes & Connections)
user www-data;
worker_processes auto; # Tự động gán theo số lõi vCPU của VPS
worker_rlimit_nofile 65535; # Tăng giới hạn file descriptor mở đồng thời
events {
worker_connections 4096; # Số kết nối tối đa trên mỗi worker
use epoll; # Cơ chế xử lý I/O hiệu năng cao nhất trên Linux
multi_accept on; # Cho phép worker nhận tất cả kết nối mới cùng lúc
}
2.2. Tinh chỉnh Buffer và Keepalive Timeout
Trong khối http { ... }, thêm hoặc sửa các thông số sau để giảm tải CPU và tăng tốc độ phân phối dữ liệu tĩnh:
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
types_hash_max_size 2048;
server_tokens off; # Ẩn thông tin phiên bản Nginx để tăng cường bảo mật
# Giới hạn kích thước gói tin gửi lên (Upload)
client_max_body_size 64M;
# Nén Gzip tiết kiệm băng thông và tăng tốc độ tải trang
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
}
Kiểm tra cú pháp và nạp lại cấu hình:
sudo nginx -t && sudo systemctl reload nginx
3. Tinh chỉnh Pool xử lý PHP-FPM
Vấn đề nghẽn tài nguyên phổ biến nhất trên máy chủ chạy mã nguồn PHP (như WordPress, Laravel) là việc cấu hình sai chế độ quản lý tiến trình (pm – process manager).
File cấu hình pool mặc định nằm tại /etc/php/<phiên_bản>/fpm/pool.d/www.conf (Ubuntu) hoặc /etc/php-fpm.d/www.conf (AlmaLinux).
# Ví dụ trên Ubuntu với PHP 8.2:
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
3.1. Công thức tính toán pm.max_children
Mỗi tiến trình PHP-FPM trung bình chiếm khoảng 40MB – 70MB RAM (đối với WordPress). Công thức phân bổ RAM cho PHP-FPM:
max_children = (Tổng RAM khả dụng cho PHP – trừ OS và MySQL) / (Bộ nhớ trung bình của 1 tiến trình PHP, VD: 50MB)
Ví dụ: Gói eCloud VPS có 4GB RAM, dành 1GB cho OS/Nginx, 1.5GB cho MySQL, còn lại 1.5GB (1536MB) cho PHP: 1536 / 50 ≈ 30 tiến trình.
3.2. Áp dụng thông số cấu hình tối ưu
pm = dynamic
pm.max_children = 30
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 12
pm.max_requests = 500 ; Tự giải phóng tiến trình sau 500 request để chống rò rỉ RAM (Memory Leak)
3.3. Kích hoạt OPcache trong php.ini
Mở file php.ini tương ứng (/etc/php/8.2/fpm/php.ini):
opcache.enable=1
opcache.memory_consumption=128 ; Bộ nhớ cấp cho OPcache (MB)
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 ; Đặt bằng 0 trên môi trường Production để đạt hiệu năng tối đa
Khởi động lại dịch vụ PHP-FPM:
sudo systemctl restart php8.2-fpm
4. Cấu hình Tối ưu Bộ đệm Database (MariaDB / MySQL)
Cơ sở dữ liệu lưu lượng lớn cần được cấp phát đủ bộ nhớ đệm để các truy vấn đọc/ghi diễn ra trực tiếp trên RAM thay vì truy xuất liên tục vào ổ cứng.
Tạo hoặc chỉnh sửa file cấu hình tùy chỉnh /etc/mysql/mariadb.conf.d/99-custom.cnf (Ubuntu) hoặc /etc/my.cnf.d/server.cnf (AlmaLinux):
[mysqld]
# Tùy chỉnh Engine InnoDB - trái tim của cơ sở dữ liệu
innodb_buffer_pool_size = 1536M # Chiếm khoảng 40% - 60% tổng RAM VPS
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2 # Ghi log bộ đệm mỗi giây (Tăng tốc độ ghi dữ liệu cực nhanh)
innodb_flush_method = O_DIRECT
# Quản lý kết nối
max_connections = 150 # Số kết nối tối đa phù hợp với max_children của PHP
max_connect_errors = 10000
wait_timeout = 60 # Tự động ngắt kết nối rảnh sau 60s
interactive_timeout = 60
# Bộ nhớ đệm bảng tạm
tmp_table_size = 64M
max_heap_table_size = 64M
Khởi động lại dịch vụ MariaDB/MySQL để áp dụng:
sudo systemctl restart mariadb
5. Kiểm tra Tải và Đánh giá Hiệu quả Tối ưu
Sau khi hoàn tất tinh chỉnh, cần tiến hành đo lường để đảm bảo hệ thống phản hồi ổn định dưới áp lực truy cập:
- Giám sát trực quan mức tiêu thụ: Chạy
htop để kiểm tra phân bổ CPU và RAM khi có lưu lượng truy cập.
- Kiểm tra trạng thái kết nối Nginx:
ss -s
Lệnh này hiển thị số lượng socket TCP đang ở trạng thái ESTABLISHED, TIME-WAIT để đánh giá mức độ dọn dẹp kết nối rác.
- Theo dõi truy vấn chậm (Slow Queries): Bật cờ
slow_query_log = 1 trong MySQL để phát hiện các câu lệnh SQL chiếm nhiều thời gian xử lý và đánh index bổ sung.
6. Tổng hợp Kênh Hỗ trợ Kỹ thuật Chuyên môn tại ESC.VN
Đối với các hệ thống có quy mô cơ sở dữ liệu lớn hàng chục GB, kiến trúc phân tán Master-Slave, hoặc các chiến dịch cao điểm đòi hỏi giải pháp cân bằng tải (Load Balancing), Quý khách hàng có thể liên hệ ngay bộ phận kỹ sư hạ tầng của ESC để được hỗ trợ chuyên sâu:
- Tổng đài Hỗ trợ Kỹ thuật 24/7: 1900 2069
- Hotline trực ban: TP.HCM: (028) 71 099 199 | Hà Nội: (024) 39 42 68 96
- Gửi yêu cầu hỗ trợ (Ticket): esc.vn/support-esc hoặc cổng quản trị member.esc.vn
- Website chính thức: https://esc.vn
Tài liệu hỗ trợ kỹ thuật chính thức từ ESC.VN
CẨM NANG VẬN HÀNH VÀ BẢO MẬT MÁY CHỦ LINUX CHUYÊN NGHIỆP
Chuyên trang Hỗ trợ & Triển khai Máy chủ Đám mây (eCloud VPS / Dedicated Server)
1. Giới thiệu tổng quan
Trong hạ tầng số hiện đại, hệ điều hành Linux (Ubuntu, Debian, AlmaLinux, Rocky Linux) là nền tảng cốt lõi cho hầu hết các dịch vụ web server, database và ứng dụng doanh nghiệp. Khi tiếp nhận bàn giao một máy chủ ảo eCloud VPS hoặc Dedicated Server tại ESC.VN, quản trị viên hệ thống (SysAdmin) cần nắm vững các kỹ năng vận hành, chuẩn hóa bảo mật và tối ưu tài nguyên.
Bài hướng dẫn này cung cấp quy trình toàn diện từ kết nối ban đầu, thiết lập bảo vệ đa lớp, quản lý dịch vụ hệ thống đến giám sát hiệu năng theo chuẩn kỹ thuật cao cấp nhất.
2. Kết nối và Quản lý Truy cập Ban đầu
2.1. Đăng nhập an toàn qua SSH
Trên máy trạm Linux/macOS hoặc Windows Terminal, kết nối tới máy chủ thông qua dòng lệnh:
ssh root@<IP_SERVER_ESC> -p 22
📌 Lưu ý: Trên giao diện dòng lệnh Linux, khi gõ mật khẩu hệ thống sẽ ẩn hoàn toàn ký tự (không xuất hiện dấu hoa thị). Hãy dán mật khẩu chính xác và nhấn Enter.
2.2. Khởi tạo tài khoản quản trị riêng biệt (Sudo User)
Vận hành trực tiếp bằng tài khoản root tiềm ẩn rủi ro thao tác nhầm hoặc bị tấn công dò mật khẩu. Hãy khởi tạo người dùng quản trị mới:
• Trên Ubuntu / Debian:
adduser escadmin
usermod -aG sudo escadmin
• Trên AlmaLinux / CentOS / Rocky Linux:
adduser escadmin
passwd escadmin
usermod -aG wheel escadmin
3. Cấu hình Bảo mật Cốt lõi (Server Hardening)
3.1. Cập nhật hệ điều hành và gói phần mềm
Ngay sau khi đăng nhập, thực hiện cập nhật toàn bộ bản vá bảo mật mới nhất:
# Dành cho Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y
# Dành cho AlmaLinux/Rocky Linux:
sudo dnf update -y
3.2. Đổi cổng kết nối SSH và vô hiệu hóa mật khẩu trực tiếp
Thay đổi cổng SSH mặc định từ 22 sang cổng ngẫu nhiên (ví dụ 2288) để hạn chế bot quét tự động:
sudo nano /etc/ssh/sshd_config
Chỉnh sửa hoặc thêm các tham số sau trong file cấu hình:
Port 2288
PermitRootLogin no
PasswordAuthentication no
🛡️ Khuyến nghị an toàn: Trước khi tắt mật khẩu và khởi động lại dịch vụ SSH, hãy cấu hình khóa SSH Key công khai (authorized_keys) và luôn giữ một cửa sổ terminal đang kết nối để kiểm tra thông tuyến tránh tình trạng bị khóa ngoài.
3.3. Thiết lập Tường lửa Hệ thống (UFW / Firewalld)
| Hệ điều hành |
Công cụ Tường lửa |
Câu lệnh mở SSH (Cổng 2288) |
Câu lệnh kích hoạt |
| Ubuntu / Debian |
UFW |
sudo ufw allow 2288/tcp |
sudo ufw enable |
| AlmaLinux / Rocky |
Firewalld |
sudo firewall-cmd --permanent --add-port=2288/tcp |
sudo firewall-cmd --reload |
3.4. Cài đặt Fail2ban ngăn chặn Brute-force
Cài đặt Fail2ban để tự động đưa các địa chỉ IP cố tình dò mật khẩu quá số lần quy định vào danh sách cấm truy cập:
# Ubuntu / Debian:
sudo apt install fail2ban -y && sudo systemctl enable fail2ban --now
# AlmaLinux / Rocky Linux:
sudo dnf install epel-release -y
sudo dnf install fail2ban -y && sudo systemctl enable fail2ban --now
4. Quản lý Dịch vụ và Tiến trình với Systemd
Quản trị viên cần thuần thục lệnh systemctl để điều khiển các dịch vụ cốt lõi (Nginx, Apache, MariaDB, Docker):
- Kiểm tra trạng thái dịch vụ:
sudo systemctl status <ten_dich_vu>
- Khởi chạy / Dừng dịch vụ:
sudo systemctl start <ten_dich_vu> / sudo systemctl stop <ten_dich_vu>
- Khởi động lại dịch vụ:
sudo systemctl restart <ten_dich_vu>
- Thiết lập tự khởi chạy cùng hệ thống:
sudo systemctl enable <ten_dich_vu>
5. Giám sát Hiệu năng và Xử lý Sự cố
5.1. Kiểm tra tài nguyên CPU, RAM và Ổ cứng
- Giám sát tải hệ thống trực quan: Sử dụng lệnh
htop (cài đặt qua apt install htop hoặc dnf install htop) để theo dõi tiến trình chiếm dụng phần trăm CPU/RAM lớn nhất.
- Kiểm tra dung lượng lưu trữ: Dùng lệnh
df -h để theo dõi các phân vùng ổ đĩa. Khi ổ cứng đạt ngưỡng 100%, các dịch vụ cơ sở dữ liệu sẽ tự động sập nguồn.
- Tìm thư mục chiếm nhiều dung lượng nhất:
5.2. Phân tích lưu lượng mạng và kết nối bất thường
Kiểm tra danh sách IP đang mở nhiều kết nối tới cổng dịch vụ (nghi vấn tấn công rà quét / DoS):
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -n 15
6. Chiến lược Sao lưu và Khôi phục Dữ liệu (Backup 3-2-1)
Bảo đảm an toàn dữ liệu là nguyên tắc sống còn trong quản trị hệ thống máy chủ:
- Chụp ảnh Snapshot định kỳ: Tận dụng tính năng Snapshot trên bảng điều khiển eCloud VPS tại khachhang.esc.vn trước khi tiến hành cập nhật hệ thống hoặc can thiệp mã nguồn quan trọng.
- Sao lưu cơ sở dữ liệu tự động: Thiết lập tác vụ Cronjob xuất bản ghi SQL và đẩy sang hệ thống lưu trữ độc lập (Cloud Storage / SFTP riêng).
7. Kênh Hỗ trợ Kỹ thuật Chuyên môn 24/7 từ ESC.VN
Khi hệ thống gặp các sự cố phức tạp vượt ngoài tầm kiểm soát như tấn công từ chối dịch vụ (DDoS) quy mô lớn, lỗi phân vùng ổ đĩa ảo hoặc cần nâng cấp phần cứng (Scale up CPU/RAM/SSD):
1. Giới thiệu tổng quan
Trong quá trình vận hành eCloud VPS tại esc.vn, đôi khi bạn sẽ gặp phải tình trạng website tải chậm, ứng dụng không phản hồi hoặc mất kết nối hoàn toàn. Sự cố này thường xuất phát từ hai nguyên nhân chính: quá tải tài nguyên phần cứng (CPU, RAM, Disk I/O) hoặc nghẽn băng thông mạng (do lượt truy cập tăng đột biến hoặc bị tấn công DDoS).
Tài liệu này hướng dẫn chi tiết cách tự kiểm tra, chẩn đoán nhanh hiệu suất của cả máy chủ VPS Linux và Windows, đồng thời đưa ra các bước xử lý sự cố kịp thời.
2. Giám sát và kiểm tra tài nguyên phần cứng VPS
2.1. Đối với eCloud VPS Linux (Ubuntu, CentOS, AlmaLinux, Rocky)
- Kiểm tra CPU và RAM bằng lệnh
top hoặc htop
- Sử dụng lệnh
top mặc định:
Đăng nhập SSH vào VPS và gõ:
top
Cách đọc các thông số quan trọng:
- Load average: Hiển thị tải trung bình của hệ thống trong 1 phút, 5 phút và 15 phút. Nếu con số này vượt quá số lượng Core CPU của VPS (ví dụ VPS có 2 Core nhưng Load average > 2.000), máy chủ đang bị quá tải nghiêm trọng.
- %Cpu(s): Xem dòng id (idle). Nếu %id gần bằng 0, nghĩa là CPU đang bị khai thác 100%.
- KiB Mem: Xem lượng RAM trống tại mục free. Nếu lượng RAM trống quá ít (< 100MB), hệ thống dễ rơi vào trạng thái tràn RAM (Out of Memory).
- Sử dụng công cụ trực quan
htop (Khuyên dùng):
Nếu hệ thống chưa cài đặt, bạn hãy cài đặt bằng lệnh:
- Với Ubuntu/Debian:
sudo apt install htop -y
- Với CentOS/AlmaLinux:
sudo dnf install epel-release -y && sudo dnf install htop -y
Sau đó khởi chạy:
htop
Giao diện htop sẽ hiển thị trực quan dạng thanh biểu đồ màu sắc cho từng Core CPU, dung lượng RAM đang sử dụng, và danh sách các tiến trình (process) đang chạy xếp theo thứ tự ngốn nhiều tài nguyên nhất. Để thoát ra ngoài, nhấn phím F10 hoặc q.
B. Kiểm tra dung lượng ổ cứng (Storage) và I/O (Đọc/Ghi)
- Kiểm tra dung lượng còn trống:
Nếu phân vùng hệ thống bị đầy 100%, các dịch vụ như MySQL, Nginx sẽ tự động bị crash (tắt ngang). Kiểm tra bằng lệnh:
df -h
Nhìn vào cột Use% của phân vùng / hoặc /dev/sdaX. Nếu đạt mức trên 90%, bạn cần tìm và xóa các file log dư thừa hoặc file backup cũ.
Mẹo tìm thư mục chiếm nhiều dung lượng nhất trên VPS:
du -sh /* 2>/dev/null | sort -h
- Kiểm tra tốc độ đọc ghi ổ cứng (Disk I/O):
Sử dụng công cụ iotop để xem tiến trình nào đang ghi đĩa quá nhiều (gây lag VPS):
sudo apt install iotop -y # Đối với Ubuntu
sudo iotop
2.2. Đối với eCloud VPS Windows Server
Sử dụng Task Manager nhanh chóng
- Kết nối vào VPS bằng Remote Desktop.
- Nhấp chuột phải vào thanh Taskbar và chọn Task Manager (hoặc nhấn tổ hợp phím Ctrl + Shift + Esc).
- Tại tab Processes, bạn có thể click vào đầu cột CPU hoặc Memory để sắp xếp xem ứng dụng nào đang chiếm dụng tài nguyên cao nhất (ví dụ: IIS, mssqlserver, chrome…).
- Chuyển sang tab Performance để xem biểu đồ trực quan về mức độ tải theo thời gian thực của CPU, RAM, ổ đĩa (Disk) và card mạng (Ethernet).
Phân tích chuyên sâu với Resource Monitor
Nếu cần kiểm tra chi tiết luồng dữ liệu hoặc file nào đang bị khóa/ghi liên tục:
- Nhấn Windows + R, gõ
resmon và nhấn Enter.
- Công cụ Resource Monitor sẽ hiển thị chi tiết các tiến trình đang đọc/ghi file nào trên Disk, kết nối đến IP nào trên Network với băng thông cụ thể.
3. Giám sát băng thông và xử lý nghẽn mạng
3.1. Các dấu hiệu nhận biết VPS bị nghẽn mạng
- Website phản hồi cực kỳ chậm hoặc xuất hiện lỗi 504 Gateway Time-out, 502 Bad Gateway.
- Khi thực hiện lệnh ping đến địa chỉ IP của VPS từ máy tính cá nhân, thời gian phản hồi (ms) rất cao hoặc xuất hiện thông báo bị mất gói tin (Request timed out / Packet Loss).
- Không thể kết nối SSH hoặc Remote Desktop vào VPS (báo lỗi kết nối hết hạn – Connection Timeout).
3.2. Giám sát băng thông mạng trên Linux
Đo băng thông thời gian thực bằng nload hoặc iftop
- Sử dụng nload để xem tổng lưu lượng mạng đang tải:
- Cài đặt:
sudo apt install nload -y (Ubuntu) hoặc sudo dnf install nload -y (AlmaLinux).
- Chạy lệnh:
Hệ thống hiển thị tốc độ mạng hiện tại (Incoming – Tải vào và Outgoing – Đẩy ra) giúp bạn biết card mạng có đang chạy hết công suất băng thông định mức hay không.
- Sử dụng iftop để xem IP nào đang ngốn băng thông:
- Cài đặt:
sudo apt install iftop -y / sudo dnf install iftop -y.
- Chạy lệnh:
Công cụ sẽ hiển thị chi tiết danh sách các IP ngoài đang kết nối tới VPS và lượng dữ liệu trao đổi giữa hai bên. Từ đây bạn dễ dàng phát hiện ra IP lạ đang cố tình tải file lớn hoặc spam request.
B. Kiểm tra số lượng kết nối TCP để phát hiện DDoS
Khi bị tấn công DDoS dạng Flood, lượng kết nối TCP ở trạng thái ESTABLISHED hoặc SYN_RECV sẽ tăng vọt. Hãy chạy lệnh sau để thống kê số lượng kết nối từ mỗi địa chỉ IP đến máy chủ của bạn:
netstat -anp | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Kết quả trả về sẽ có dạng:
12 127.0.0.1
15 42.113.12.14
850 1.2.3.4 <-- Địa chỉ IP này đang mở tới 850 kết nối (Bất thường/Nghi ngờ DDoS)
4. Quy trình xử lý nhanh khi VPS bị sự cố
Bước 1: Khởi động lại dịch vụ bị treo hoặc tiến trình chiếm tài nguyên cao
- Khởi động lại Web Server:
- Nginx:
sudo systemctl restart nginx
- Apache:
sudo systemctl restart apache2 (hoặc httpd)
- Khởi động lại Database (Nếu bị treo do tràn RAM/CPU):
- MySQL/MariaDB:
sudo systemctl restart mysql (hoặc mariadb)
- Sát hại (Kill) tiến trình chạy ngầm bị treo:
Tìm PID (Process ID) của tiến trình gây treo từ top hoặc htop rồi chạy lệnh:
kill -9 <PID_TIẾN_TRÌNH>
Bước 2: Chặn IP có hành vi bất thường/Tấn công
Nếu phát hiện một hoặc nhiều IP lạ đang spam kết nối phá hoại hệ thống ở bước 3.2, bạn tiến hành chặn ngay lập tức qua tường lửa của VPS:
- Sử dụng UFW (Ubuntu):
sudo ufw deny from 1.2.3.4 to any
sudo ufw reload
- Sử dụng Firewalld (AlmaLinux/CentOS):
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='1.2.3.4' reject"
sudo firewall-cmd --reload
- Sử dụng Windows Firewall:
- Truy cập Windows Defender Firewall with Advanced Security.
- Tạo một Inbound Rule mới, chọn loại Custom.
- Tại mục Scope, thêm IP cần chặn vào phần Remote IP addresses.
- Chọn hành động Block the connection.
5. Khi nào cần liên hệ bộ phận kỹ thuật esc.vn hỗ trợ?
Nếu bạn đã thực hiện các bước chẩn đoán trên nhưng:
- Máy chủ VPS hoàn toàn mất kết nối, không thể ping hay SSH từ bên ngoài (kể cả sau khi đã khởi động lại VPS qua trang quản trị).
- Lượng traffic tấn công DDoS quá lớn (vượt ngưỡng hàng Gbps), làm nghẽn toàn bộ đường truyền băng thông vật lý dẫn vào VPS từ tầng hạ tầng mạng Core của Datacenter.
- Bạn muốn mở rộng khẩn cấp cấu hình (Scale up CPU, RAM, SSD) để gánh tải lượng người dùng đang truy cập lớn đột ngột.
Cách thức liên hệ hỗ trợ kỹ thuật tại ESC:
- Gửi Ticket hỗ trợ (Khuyên dùng): Đăng nhập vào trang quản trị dịch vụ esc.vn, chọn mục Gửi yêu cầu hỗ trợ. Mô tả chi tiết lỗi bạn đang gặp phải, đính kèm ảnh chụp màn hình biểu đồ quá tải của VPS để kỹ sư hệ thống ESC khoanh vùng xử lý nhanh nhất.
- Đường dây nóng hỗ trợ kỹ thuật 24/7/365: Gọi ngay tới số 1900 2069 để gặp trực tiếp nhân viên kỹ thuật trực ca xử lý can thiệp khẩn cấp trên hạ tầng VMware vSphere.