Hướng dẫn triển khai code lên hosting cPanel BKNS bằng VibeCode Deploy: kết nối bằng URL Git (HTTPS) và SSH Git (Deploy key)
ann
23/09/2026
41 Lượt xem
Chia sẻ bài viết
VibeCode Deploy là plugin trong cPanel của BKNS, nằm ở nhóm BKNS trên trang Tools. Plugin giúp bạn đưa mã nguồn từ repo (repository) Git trên GitHub lên hosting. Plugin tải code về, nhận diện loại ứng dụng, chạy các lệnh cài đặt và build bạn khai báo, triển khai ứng dụng lên tên miền bạn chọn, đồng thời ghi log cho từng lần triển khai.
Plugin hỗ trợ hai nhóm ứng dụng. Nhóm thứ nhất chạy trên máy chủ qua Passenger, gồm Python (Passenger), Node/Express (Passenger) và Next.js (SSR, Passenger). Nhóm thứ hai là ứng dụng tĩnh, gồm Vue/React (SPA) và Static thuần.
Bài này hướng dẫn kết nối plugin với repo bằng cách nhập thẳng địa chỉ Git vào ô Hoặc Clone URL, không cần GitHub App hay token (PAT). Tuỳ chế độ của repo, bạn chọn một trong hai cách. Cách A dùng địa chỉ clone HTTPS dạng https://github.com/
<tài-khoản>/<tên-repo>.git, dành cho repo công khai (Public). Cách B dùng địa chỉ SSH dạng git@github.com:<tài-khoản>/<tên-repo>.git kèm Deploy key do plugin tạo, dành cho repo riêng tư (private). Màn hình plugin cũng gợi ý: “Repo private không dùng PAT: nhập URL SSH (git@…)”.
Mỗi deployment được tạo qua ba màn hình trong plugin: 1. Nguồn Git → 2. Nhận diện → 3. Cấu hình. Hai cách trong bài chỉ khác nhau ở màn hình 1. Nguồn Git. Bước 1 và Bước 2 hướng dẫn mở plugin và tạo deployment mới. Cách A gồm Bước 3 và Bước 4. Cách B gồm Bước 5 đến Bước 14: tạo SSH key trên cPanel và thêm vào tài khoản GitHub, lấy địa chỉ SSH của repo, để plugin tạo Deploy key, gắn Deploy key vào repo rồi kiểm tra kết nối. Bước 15 đến Bước 18 (nhận diện, cấu hình, triển khai và kiểm tra kết quả) dùng chung cho cả hai cách. Bảng so sánh bên dưới giúp bạn chọn cách phù hợp.
Nếu muốn dùng cách kết nối khác, bạn xem bài hướng dẫn kết nối bằng GitHub App (theo mô tả của plugin, GitHub App là cách kết nối gọn nhất; cách này dùng được cả với repo private) hoặc bài hướng dẫn kết nối bằng Personal Access Token (PAT). Plugin cũng cho phép tải lên file .zip (lựa chọn Upload file .zip), nhưng bài này không hướng dẫn cách đó.
Quy ước trong bài: “Bước N” là số bước của bài hướng dẫn này. Tên in đậm như Bước 1 — Nguồn code là tiêu đề màn hình trong plugin, không phải số bước của bài. Tên tài khoản GitHub, tên repo, tên App và tên miền xuất hiện trong ảnh chỉ là dữ liệu mẫu, bạn hãy thay bằng thông tin của mình.
Tóm Tắt Bài Viết
- Chuẩn bị trước khi bắt đầu
- Chọn trường hợp kết nối nguồn code
- Mở VibeCode Deploy và tạo deployment mới
- Trường hợp A — Repo công khai: kết nối bằng URL HTTPS
- Trường hợp B — Repo riêng tư: kết nối bằng SSH và Deploy key
- Bước 5: Mở Manage SSH Keys trên cPanel và tạo SSH key
- Bước 6: Mở trang quản lý của public key
- Bước 7: Cấp quyền (Authorize) cho key
- Bước 8: Mở trang SSH keys của tài khoản GitHub
- Bước 9: Thêm public key của hosting vào GitHub
- Bước 10: Sao chép địa chỉ SSH của repo
- Bước 11: Nhập URL SSH và tạo Deploy key trong plugin
- Bước 12: Mở mục Deploy keys của repo trên GitHub
- Bước 13: Dán public key và thêm Deploy key
- Bước 14: Kiểm tra kết nối và chuyển sang bước nhận diện
- Nhận diện, cấu hình và triển khai
- Lưu ý chung
Chuẩn bị trước khi bắt đầu
- Tài khoản hosting cPanel tại BKNS đã có plugin VibeCode Deploy (trang Tools, nhóm BKNS).
- Repo GitHub chứa mã nguồn cần triển khai. Bạn cần biết chính xác tên nhánh (branch) cần triển khai, ví dụ main.
- Tên miền hoặc subdomain dùng để chạy ứng dụng đã có sẵn trong tài khoản cPanel. Nếu chưa có, bạn tạo trước tại cPanel → Domains (đúng như dòng gợi ý dưới ô Domain của plugin), rồi quay lại chọn. Với ứng dụng tĩnh, document root của tên miền đó phải còn trống.
- Với trường hợp A (URL HTTPS): repo phải đang ở chế độ Public (công khai).
- Với trường hợp B (SSH và Deploy key): tài khoản GitHub của bạn phải có quyền quản trị (admin) trên repo cần triển khai. Chỉ khi có quyền này bạn mới thấy tab Settings và mục Deploy keys của repo (Bước 12).
- Với trường hợp B, bạn cũng cần dùng công cụ SSH Access trong cPanel để tạo SSH key (Bước 5 đến Bước 7), và đăng nhập được GitHub để thêm key đó vào tài khoản (Bước 8 và Bước 9).
Chọn trường hợp kết nối nguồn code
| Trường hợp kết nối | Khi nào nên dùng | Cần chuẩn bị | Các bước |
| Trường hợp A — URL Git (HTTPS) | Repo ở chế độ công khai (Public) và bạn không muốn tạo GitHub App, token hay SSH key. | Địa chỉ clone HTTPS dạng
https://github.com/ |
Bước 3–4 |
| Trường hợp B — SSH Git (Deploy key) | Repo riêng tư (private) và bạn không dùng GitHub App hay token (PAT). Plugin gợi ý: “Repo private không dùng PAT: nhập URL SSH (git@…)”. | Địa chỉ SSH dạng git@github.com:<tài-khoản>/<tên-repo>.git. Bạn cần quyền admin trên repo để thêm Deploy key do plugin tạo (mỗi Deploy key chỉ gắn được một repo). Theo quy trình trong bài, bạn còn tạo một SSH key trong cPanel (công cụ SSH Access) và thêm key đó vào tài khoản GitHub. | Bước 5–14 |
Mở VibeCode Deploy và tạo deployment mới
Cả hai cách kết nối trong bài đều bắt đầu bằng việc mở plugin và tạo một deployment mới.
Bước 1: Mở plugin VibeCode Deploy
Plugin VibeCode Deploy nằm trong trang Tools của cPanel, thuộc nhóm BKNS ở trên cùng (phía trên nhóm Email).
- Đăng nhập vào cPanel của hosting.
- Mở trang Tools (nếu đang ở trang khác, bạn bấm mục Tools ở cột menu bên trái), rồi tìm nhóm BKNS ở trên cùng.
- Bấm vào mục VibeCode Deploy (biểu tượng hộp màu cam, được mũi tên đỏ đánh dấu trong ảnh).

Lưu ý: Nếu không thấy nhóm BKNS, bạn có thể gõ VibeCode vào ô Search Tools ở góc trên bên phải cPanel để tìm nhanh.
Bước 2: Thêm deployment mới
Trang chính của plugin (tiêu đề VibeCode Deploy) là danh sách các deployment bạn đã tạo. Lần đầu sử dụng, trang hiển thị thông báo “Chưa có deployment nào. Bấm Thêm deployment để bắt đầu.”
Sau khi bấm + Thêm deployment, bạn đến màn hình đầu tiên của biểu mẫu là Bước 1 — Nguồn code. Với cách kết nối trong bài này, bạn chọn Nguồn code là Repo Git, không dùng khung Kết nối GitHub và ô Hoặc token (PAT), để ô Chọn repo ở — (dùng URL thủ công) —, rồi nhập địa chỉ repo vào ô Hoặc Clone URL và tên nhánh vào ô Branch. Với Cách B, khi bạn dán địa chỉ SSH, plugin hiện thêm khung SSH Deploy key cho repo này để tạo Deploy key.
- Bấm nút màu xanh + Thêm deployment ở góc trên bên phải khung VibeCode Deploy (được mũi tên đỏ đánh dấu trong ảnh).
- Chờ trang chuyển sang VibeCode Deploy — Thêm / Sửa. Biểu mẫu Thêm deployment hiện ra, gồm ba bước 1. Nguồn Git → 2. Nhận diện → 3. Cấu hình, và đang ở màn hình Bước 1 — Nguồn code.
- Giữ nguyên tab trình duyệt đang mở màn hình này. Bạn sẽ lấy địa chỉ repo trên GitHub (và với Cách B, tạo SSH key trong cPanel) ở tab khác, rồi quay lại tab này để dán.
- Làm tiếp theo Cách A (Bước 3 và Bước 4) nếu repo ở chế độ Public, hoặc theo Cách B (Bước 5 đến Bước 14) nếu repo là private.

Lưu ý: Ảnh màn hình Bước 1 — Nguồn code có tại Bước 4 (Cách A) và Bước 11 (Cách B).
Trường hợp A — Repo công khai: kết nối bằng URL HTTPS
Mục này dành cho repo ở chế độ Public. Nếu repo của bạn là private, bạn bỏ qua mục này và làm theo Cách B (Bước 5 đến Bước 14).
Bước 3: Sao chép địa chỉ clone HTTPS của repo trên GitHub
Bạn lấy địa chỉ clone HTTPS của repo chứa mã nguồn trên GitHub. Hãy mở GitHub ở một tab mới để giữ nguyên tab plugin đang mở từ Bước 2. Ảnh minh hoạ là trang của repo mẫu qlnn (có nhãn Public) trên GitHub. Bạn hãy làm tương tự với repo của mình.
Hai mũi tên đỏ trong ảnh đánh dấu hai thao tác chính của bước này: nút Code và biểu tượng sao chép cạnh địa chỉ HTTPS.
- Mở một tab mới trên trình duyệt, vào trang repo cần triển khai trên GitHub (đăng nhập nếu cần) và kiểm tra bạn đang ở tab Code (tab đầu tiên trên thanh menu của repo).
- Bấm nút Code màu xanh lá ở phía trên bên phải danh sách file, ngay cạnh nút Add file.
- Trong khung vừa mở, giữ nguyên tab Local. Ở mục Clone, chọn tab HTTPS.
- Bấm biểu tượng sao chép (hai hình vuông chồng lên nhau) ở bên phải ô chứa địa chỉ dạng https://github.com/
<tài-khoản>/<tên-repo>.git. - Ghi lại tên nhánh cần triển khai. Tên nhánh hiện trên nút chọn nhánh ở góc trên bên trái danh sách file, ví dụ main. Repo mẫu chỉ có 1 Branch.

Hình 3: Trang repo trên GitHub: bấm nút Code, chọn tab HTTPS rồi bấm biểu tượng sao chép cạnh địa chỉ clone
Lưu ý: Dòng chữ “Clone using the web URL.” bên dưới ô địa chỉ cho biết bạn đang lấy đúng địa chỉ HTTPS. Với Cách A, bạn đừng chọn tab SSH: địa chỉ dạng git@github.com:… dành cho Cách B (Bước 10).
Lưu ý: Tên tài khoản GitHub và tên repo qlnn trong ảnh chỉ là ví dụ. Bạn hãy thay bằng tài khoản và repo của mình.
Bước 4: Dán Clone URL vào VibeCode Deploy và bấm Tiếp tục
Bạn quay lại tab VibeCode Deploy đang mở ở màn hình Bước 1 — Nguồn code (Bước 2). Trên thanh tiến trình, nút 1. Nguồn Git được tô xanh.
Ảnh minh hoạ được chụp ở màn hình Sửa deployment, tức là khi chỉnh một deployment đã có. Khi tạo mới, tiêu đề sẽ là Thêm deployment, còn các trường nhập thì giống hệt.
Hai mũi tên đỏ trong ảnh chỉ vào ô Hoặc Clone URL và nút Tiếp tục →.
- Chuyển về tab VibeCode Deploy đang mở ở màn hình Bước 1 — Nguồn code (Bước 2). Nếu đã lỡ đóng tab này, bạn mở lại plugin và bấm + Thêm deployment như Bước 1 và Bước 2.
- Ở dòng Nguồn code, chọn Repo Git.
- Bạn không cần thao tác gì ở khung Kết nối GitHub, và hãy để trống ô Hoặc token (PAT).
- Ở ô Chọn repo, giữ nguyên lựa chọn — (dùng URL thủ công) —.
- Bấm vào ô Hoặc Clone URL rồi dán địa chỉ đã sao chép tại Bước 3, ví dụ https://github.com/
<tài-khoản>/qlnn.git. - Ở ô Branch, nhập đúng tên nhánh cần triển khai. Giá trị mặc định là main.
- Bấm nút Tiếp tục → ở góc dưới bên trái khung để sang bước 2. Nhận diện.
- Chuyển tới Bước 15 để làm tiếp. Bạn bỏ qua Cách B (Bước 5 đến Bước 14), vì mục đó chỉ dành cho repo riêng tư.

Lưu ý: Trong ảnh, khung Kết nối GitHub hiển thị “✓ Đã kết nối và cài GitHub App: VibeCode Deploy – test” vì tài khoản mẫu đã kết nối bằng GitHub App từ trước (xem bài hướng dẫn kết nối bằng GitHub App); VibeCode Deploy – test chỉ là tên App ví dụ. Cách dùng URL không cần thao tác ở khung này, nên trên màn hình của bạn khung này có thể hiển thị khác.
Lưu ý: Nhánh bạn nhập phải có thật trên repo. Nếu gõ sai (ví dụ main-1), khi sang bước 2. Nhận diện, plugin sẽ báo lỗi “Không clone được (kiểm tra token/branch)” kèm dòng “fatal: Remote branch <tên nhánh> not found in upstream origin” (xem ảnh tại Bước 15).
Lưu ý: Dòng gợi ý dưới ô Hoặc Clone URL ghi: “Repo private không dùng PAT: nhập URL SSH (git@…) — hướng dẫn tạo key hiện bên dưới.” Nếu repo của bạn là private, hãy làm theo Cách B (Bước 5 đến Bước 14).
Trường hợp B — Repo riêng tư: kết nối bằng SSH và Deploy key
Mục này dành cho repo riêng tư (private). Nếu bạn đã làm theo Cách A với repo công khai, bạn bỏ qua mục này và chuyển tới Bước 15.
Bước 5: Mở Manage SSH Keys trên cPanel và tạo SSH key
Trước tiên, bạn tạo một cặp SSH key (public key và private key) cho tài khoản hosting bằng công cụ SSH Access của cPanel. Vì tab hiện tại đang mở màn hình Bước 1 — Nguồn code của plugin (Bước 2), bạn hãy mở cPanel ở một tab mới để làm bước này.
Màn hình Manage SSH Keys có hai bảng: Public Keys và Private Keys. Bảng Public Keys có cột Authorization Status cho biết key đã được cấp quyền hay chưa.
- Mở một tab mới trên trình duyệt và vào cPanel của hosting (đăng nhập nếu được yêu cầu), giữ nguyên tab plugin đang mở.
- Mở công cụ SSH Access (nếu không thấy, gõ tên công cụ vào ô Search Tools
ở góc trên bên phải), rồi bấm Manage SSH Keys.
- Tại màn hình Manage SSH Keys, bấm nút Generate a New Key ở góc trên bên trái (nút có mũi tên đỏ trong ảnh).
- Điền thông tin trong biểu mẫu tạo key, sau đó xác nhận để cPanel tạo cặp key.
- Sau khi tạo xong, key mới xuất hiện ở cả hai bảng Public Keys và Private Keys (ví dụ tên id_rsa). Ở bảng Public Keys, cột Authorization Status của key lúc này là not authorized.

Lưu ý: Nếu bảng Public Keys đã có sẵn một key (như id_rsa trong ảnh), bạn có thể dùng luôn key đó cho các bước tiếp theo, không cần tạo thêm.
Bước 6: Mở trang quản lý của public key
Vẫn ở màn hình Manage SSH Keys, bạn mở trang quản lý của public key vừa tạo để cấp quyền cho key.
- Trong bảng Public Keys, tìm dòng của key vừa tạo (ví dụ id_rsa, trạng thái not authorized).
- Ở cột Actions của dòng đó, bấm Manage (liên kết có biểu tượng cờ lê, ngoài cùng bên phải, được đánh dấu mũi tên đỏ).

Bước 7: Cấp quyền (Authorize) cho key
Màn hình SSH Access hiện thông báo key (ví dụ id_rsa) đang ở trạng thái “not authorized”, tức là chưa được phép dùng khi kết nối tới tài khoản hosting này.
- Bấm nút Authorize ngay dưới dòng thông báo (được đánh dấu mũi tên đỏ).
- Bấm Go Back để quay lại màn hình Manage SSH Keys. Kết quả mong đợi là cột Authorization Status của key chuyển sang authorized.

Lưu ý: Bạn giữ tab cPanel này mở, vì tại Bước 9 bạn sẽ quay lại đây để sao chép public key.
Bước 8: Mở trang SSH keys của tài khoản GitHub
Ở bước này, bạn chuyển sang GitHub để thêm public key của hosting vào tài khoản GitHub của mình. Đây là phần cài đặt của tài khoản, không phải cài đặt của repo.
- Mở GitHub ở một tab mới (giữ nguyên tab plugin và tab cPanel) rồi đăng nhập. Bấm ảnh đại diện ở góc trên bên phải rồi chọn Settings. Bạn cũng có thể truy cập thẳng https://github.com/settings/keys
. - Ở cột bên trái, trong nhóm Access, chọn SSH and GPG keys.
- Trong khối SSH keys, bấm nút xanh New SSH key ở góc trên bên phải (được đánh dấu mũi tên đỏ).

Lưu ý: Nếu tài khoản chưa có SSH key nào, GitHub hiển thị dòng “There are no SSH keys associated with your account.”
Bước 9: Thêm public key của hosting vào GitHub
Màn hình Add new SSH Key gồm ba trường: Title, Key type và Key. Bạn cần dán vào ô Key nội dung public key đã tạo trên cPanel tại Bước 5.
- Chuyển về tab cPanel đang mở màn hình Manage SSH Keys (Bước 5 đến Bước 7). Trong bảng Public Keys, bấm View/Download ở dòng key vừa cấp quyền, rồi sao chép toàn bộ nội dung public key (ví dụ bắt đầu bằng ssh-rsa như trong ảnh).
- Trở lại tab GitHub. Tại ô Title, nhập một tên dễ nhận biết, ví dụ keycpanelssh.
- Tại Key type, giữ nguyên Authentication Key.
- Dán public key vừa sao chép vào ô Key (ô được đánh dấu mũi tên đỏ).
- Bấm nút xanh Add SSH key ngay dưới ô Key (cũng được đánh dấu mũi tên đỏ).

Lưu ý: Chỉ sao chép public key ở bảng Public Keys. Tuyệt đối không dán hay chia sẻ nội dung private key ở bảng Private Keys.
Lưu ý: SSH key thêm tại mục SSH and GPG keys áp dụng cho cả tài khoản GitHub, tức là mọi repo mà tài khoản của bạn truy cập được. Deploy key tại Bước 11 đến Bước 13 thì chỉ áp dụng cho một repo.
Bước 10: Sao chép địa chỉ SSH của repo
Bạn lấy địa chỉ clone dạng SSH của repo cần triển khai để dán vào plugin tại Bước 11.
- Trên tab GitHub, mở trang repo cần triển khai.
- Bấm nút xanh Code ở phía trên, bên phải danh sách file.
- Trong tab Local, mục Clone, chọn SSH (được đánh dấu mũi tên đỏ).
- Bấm biểu tượng sao chép bên phải ô địa chỉ (cũng được đánh dấu mũi tên đỏ) để sao chép địa chỉ dạng git@github.com:<tài-khoản>/<tên-repo>.git. Trong ảnh, repo mẫu là qlnn; bạn thay bằng repo của mình.

Lưu ý: Địa chỉ phải bắt đầu bằng git@github.com:. Địa chỉ dạng https://github.com/
… dùng cho Cách A (Bước 3 và Bước 4), chỉ áp dụng với repo công khai.
Bước 11: Nhập URL SSH và tạo Deploy key trong plugin
Bạn quay lại tab VibeCode Deploy đang mở ở màn hình Bước 1 — Nguồn code (Bước 2), dán địa chỉ SSH của repo và để plugin tạo một SSH key riêng cho repo đó. Gợi ý dưới ô Hoặc Clone URL ghi rõ: “Repo private không dùng PAT: nhập URL SSH (git@…) — hướng dẫn tạo key hiện bên dưới.”
Khung SSH Deploy key cho repo này giải thích: “Deploy key cho phép server kéo code repo private mà không cần PAT. Mỗi key chỉ gắn được 1 repo trên GitHub.” Ngay trong khung cũng có hướng dẫn tóm tắt bốn bước: sao chép public key; mở GitHub → repo của bạn → Settings → Deploy keys → Add deploy key; đặt Title tuỳ ý, dán key vào ô Key rồi bấm Add key (không cần đánh dấu “Allow write access”); sau đó quay lại bấm Kiểm tra kết nối.
- Chuyển về tab VibeCode Deploy đang mở ở màn hình Bước 1 — Nguồn code (Bước 2). Nếu đã lỡ đóng tab này, bạn mở lại plugin và bấm + Thêm deployment như Bước 1 và Bước 2.
- Tại dòng Nguồn code, giữ lựa chọn Repo Git.
- Tại ô Chọn repo, để nguyên — (dùng URL thủ công) —. Bạn không cần điền ô Hoặc token (PAT).
- Dán địa chỉ SSH đã sao chép tại Bước 10 vào ô Hoặc Clone URL (được mũi tên đỏ đánh dấu), ví dụ git@github.com:<tài-khoản>/qlnn.git.
- Khung SSH Deploy key cho repo này hiện ra ngay bên dưới. Bấm nút Tạo SSH key ở góc trái khung (được mũi tên đỏ đánh dấu) để plugin tạo key cho repo.
- Public key vừa tạo hiển thị trong ô văn bản của khung. Bấm nút Copy bên phải ô (được mũi tên đỏ đánh dấu) để sao chép toàn bộ key.

Lưu ý: Nút Kiểm tra kết nối cũng được đánh dấu trong ảnh, nhưng bạn chỉ bấm nút này sau khi đã gắn Deploy key lên repo trên GitHub (Bước 12 và Bước 13); thao tác kiểm tra được hướng dẫn tại Bước 14. Nếu bấm trước, plugin sẽ báo lỗi màu đỏ “✗ Kết nối thất bại (đã gắn Deploy key lên GitHub chưa?): git@github.com: Permission denied (publickey)…” như trong ảnh. Đây là điều bình thường; bạn làm tiếp các bước sau rồi quay lại kiểm tra.
Lưu ý: Bạn hãy giữ tab plugin này mở để quay lại tại Bước 14. Bước 12 và Bước 13 làm trên GitHub ở tab khác.
Bước 12: Mở mục Deploy keys của repo trên GitHub
Bạn gắn public key vừa sao chép tại Bước 11 vào repo dưới dạng Deploy key. Đây là phần cài đặt của repo, không phải của tài khoản.
- Chuyển sang tab GitHub và mở trang repo cần triển khai (chính là repo có địa chỉ đã dán vào ô Hoặc Clone URL tại Bước 11).
- Bấm tab Settings ở cuối thanh menu của repo, sau Insights (được đánh dấu mũi tên đỏ).
- Ở cột bên trái, trong nhóm Security and quality, chọn Deploy keys (được đánh dấu mũi tên đỏ).
- Bấm nút xanh Add deploy key ở góc trên bên phải khối Deploy keys (được đánh dấu mũi tên đỏ).

Lưu ý: Nếu repo chưa có Deploy key nào, GitHub hiển thị dòng “There are no deploy keys for this repository”.
Lưu ý: Dải thông báo phía trên gợi ý dùng GitHub Apps. Bạn có thể bỏ qua nếu đã chọn cách kết nối bằng SSH.
Bước 13: Dán public key và thêm Deploy key
Màn hình Deploy keys / Add new gồm ô Title, ô Key và tuỳ chọn Allow write access.
- Tại ô Title, nhập một tên tuỳ ý để dễ nhận biết (trong ảnh là keycpanelssh).
- Dán public key đã sao chép từ plugin tại Bước 11 vào ô Key. Theo gợi ý ngay dưới ô, key phải bắt đầu bằng tiền tố loại key như ssh-ed25519 hoặc ssh-rsa.
- Không đánh dấu ô Allow write access (để trống như trong ảnh).
- Bấm nút xanh Add key (được đánh dấu mũi tên đỏ). GitHub sẽ quay về trang Deploy keys và hiển thị key vừa thêm.

Lưu ý: Hướng dẫn trong plugin ghi rõ không cần đánh dấu “Allow write access”. Theo dòng mô tả bên dưới tuỳ chọn này, Deploy key luôn có quyền kéo code (pull), đủ để máy chủ lấy code về.
Lưu ý: Tên và nội dung key trong ảnh chỉ là ví dụ. Bạn dán đúng key đang hiển thị trong khung SSH Deploy key cho repo này của plugin, không dán key đã thêm vào tài khoản GitHub tại Bước 9 (mục SSH and GPG keys). GitHub không cho dùng lại một key đã được sử dụng ở nơi khác và sẽ báo “Key is already in use”.
Bước 14: Kiểm tra kết nối và chuyển sang bước nhận diện
Sau khi gắn Deploy key, bạn quay lại plugin để xác nhận máy chủ đã truy cập được repo, rồi chuyển sang bước nhận diện ứng dụng.
- Quay lại tab VibeCode Deploy đang mở ở màn hình Bước 1 — Nguồn code (tab đã dùng ở Bước 11).
- Trong khung SSH Deploy key cho repo này, bấm Kiểm tra kết nối.
- Nếu kết nối thành công, dòng chữ xanh “✓ Kết nối GitHub OK — repo truy cập được” hiện ngay bên phải nút.
- Kiểm tra ô Branch (trong ảnh đang là main). Bạn sửa lại nếu nhánh cần triển khai có tên khác.
- Bấm Tiếp tục → ở góc dưới bên trái biểu mẫu (được đánh dấu mũi tên đỏ) để sang bước 2. Nhận diện, rồi làm tiếp từ Bước 15.

Lưu ý: Nếu vẫn báo “Kết nối thất bại”, bạn hãy kiểm tra ba điểm: key đã dán trên GitHub phải trùng với key đang hiển thị trong ô của plugin, key phải được gắn đúng repo có trong ô Hoặc Clone URL, và địa chỉ phải bắt đầu bằng git@github.com:.
Lưu ý: Tên nhánh phải tồn tại trong repo. Nếu nhập sai, tại màn hình Bước 2 — Nhận diện ứng dụng plugin sẽ báo “✗ Không clone được (kiểm tra token/branch)” kèm lỗi dạng “Remote branch … not found in upstream origin” (xem ảnh tại Bước 15). Khi đó bạn bấm ← Quay lại để sửa ô Branch.
Nhận diện, cấu hình và triển khai
Từ Bước 15 đến Bước 18, thao tác giống nhau cho cả Cách A và Cách B.
Bước 15: Nhận diện loại ứng dụng
Biểu mẫu chuyển sang bước 2. Nhận diện, màn hình Bước 2 — Nhận diện ứng dụng. Plugin tải (clone) code từ địa chỉ trong ô Hoặc Clone URL và nhánh trong ô Branch để xác định loại ứng dụng.
Ảnh minh hoạ được chụp ở một lần nhập sai tên nhánh: ô Branch được nhập main-1, là nhánh không có trong repo mẫu, nên plugin báo “✗ Không clone được (kiểm tra token/branch): … fatal: Remote branch main-1 not found in upstream origin — chọn loại thủ công bên dưới để đi tiếp.”
- Đọc thông báo phía trên ô Loại app. Nếu plugin báo “Không clone được”, bấm ← Quay lại để về màn hình Bước 1 — Nguồn code, kiểm tra lại ô Hoặc Clone URL và ô Branch (Bước 4 với Cách A; Bước 11 và Bước 14 với Cách B), rồi bấm Tiếp tục → lần nữa.
- Nếu muốn plugin nhận diện lại, bấm nút Nhận diện lại bên phải ô Loại app.
- Kiểm tra ô Loại app (danh sách được mũi tên đỏ đánh dấu). Nếu plugin chưa xác định được loại (ô hiển thị — chọn loại —), mở danh sách và chọn đúng loại ứng dụng: Python (Passenger), Node/Express (Passenger), Next.js (SSR, Passenger), Vue/React (SPA) hoặc Static thuần.
- Bấm Tiếp tục → (được mũi tên đỏ đánh dấu) để sang bước 3. Cấu hình.

Lưu ý: Tự chọn loại ứng dụng giúp bạn đi tiếp, nhưng nếu lỗi do sai nhánh hoặc không truy cập được repo thì khi triển khai plugin vẫn không lấy được code. Bạn nên sửa nguyên nhân lỗi trước.
Lưu ý: Các loại có chữ Passenger là ứng dụng có code chạy trên máy chủ (Python, Node.js/Express, Next.js SSR). Vue/React (SPA) và Static thuần là ứng dụng tĩnh, không có code chạy trên máy chủ.
Bước 16: Cấu hình ứng dụng
Tại bước 3. Cấu hình (màn hình Bước 3 — Cấu hình ứng dụng), bạn khai báo tên app, tên miền chạy ứng dụng, các lệnh build và chạy, cùng một số tuỳ chọn khác.
Ảnh minh hoạ đánh dấu các mục nên xem kỹ: Số worker khi build, Thư mục giữ lại, nhóm Lệnh install / Lệnh build / Lệnh start, Email thông báo và nút Lưu & Deploy.
- Tại ô Tên app (a-z0-9_-), nhập tên ngắn chỉ gồm chữ thường, chữ số, dấu gạch dưới hoặc dấu gạch ngang (trong ảnh là tên mẫu qlnn).
- Tại ô Domain, chọn tên miền hoặc subdomain sẽ chạy ứng dụng (trong ảnh là tên miền mẫu labrsys.io.vn; bạn chọn tên miền của mình). Nếu tên miền dùng được, plugin hiện dòng “✓ Document root sẵn sàng: …” ngay bên dưới, kèm thư mục document root của tên miền đó (trong ảnh là public_html).
- Mục Application Path do plugin tự sinh, có dạng ~/.autodeploy/deployments/<id>/current (id được tạo khi lưu). Bạn không cần nhập mục này.
- Tại ô Số worker khi build (số tiến trình chạy song song khi build, ví dụ khi Next.js sinh trang tĩnh), giữ giá trị 1 nếu dùng hosting chia sẻ, vì hosting chia sẻ thường chỉ có 1 CPU và bị giới hạn số tiến trình. Bạn chỉ tăng giá trị này khi máy chủ đủ mạnh.
- Tại ô Thư mục giữ lại, nhập các thư mục mà ứng dụng ghi dữ liệu vào (ảnh người dùng upload, file sinh ra…). Đường dẫn tính từ gốc repo và phân cách bằng dấu phẩy, ví dụ uploads, public/uploads. Để trống nếu ứng dụng không ghi file.
- Tại các ô Lệnh install, Lệnh build và Lệnh start, nhập lần lượt lệnh cài thư viện, lệnh build và lệnh khởi động phù hợp với dự án (ví dụ npm install và npm run build với dự án Node.js). Ô nào không cần thì để trống; trong ảnh minh hoạ, cả ba ô đều để trống.
- Tại ô Biến môi trường (.env), nhập các biến môi trường, mỗi dòng một biến theo dạng KEY=VALUE.
- Tại ô Email thông báo, nhập email để nhận thông báo khi triển khai lỗi. Nếu bỏ trống, bạn sẽ không nhận email.
- Tại ô Chế độ, chọn Auto để ứng dụng tự cập nhật mỗi khi code trên GitHub thay đổi. Nếu chọn Manual, ứng dụng vẫn chạy nhưng không tự cập nhật khi GitHub thay đổi.
- Kiểm tra lại toàn bộ thông tin, rồi bấm nút Lưu & Deploy ở cuối biểu mẫu.

Lưu ý: Tên miền phải có sẵn trong tài khoản. Nếu cần tên miền mới, bạn tạo tại cPanel → Domains trước, rồi quay lại chọn. Ứng dụng tĩnh yêu cầu document root của tên miền còn trống, vì VibeCode Deploy trỏ document root đó vào bản build (plugin không sửa cấu hình Apache).
Lưu ý: Bạn có thể mở thư mục ~/apps/<tên app> trong File Manager để xem code đang chạy. Thư mục này được tạo lại từ repo sau mỗi lần triển khai, nên mọi chỉnh sửa trực tiếp sẽ mất ở lần triển khai sau. Bạn hãy sửa code trong Git.
Lưu ý: File ghi vào các thư mục không khai báo trong Thư mục giữ lại sẽ mất sau mỗi lần triển khai. Dữ liệu trong thư mục giữ lại được giữ qua mọi lần triển khai hoặc rollback, nhưng sẽ bị xoá khi bạn xoá deployment. Ứng dụng tĩnh không nhận được file upload.
Lưu ý: Nếu repo đã đặt experimental.cpus trong next.config, giá trị đó được ưu tiên hơn Số worker khi build.
Lưu ý: Bạn nên khai báo mật khẩu và khoá API trong ô Biến môi trường (.env) thay vì đưa vào repo.
Bước 17: Lưu, triển khai và theo dõi log
Sau khi bạn bấm Lưu & Deploy, plugin lưu cấu hình và mở cửa sổ Log deploy — <tên app> (trong ảnh là Log deploy — qlnn, với qlnn là tên app mẫu). Góc trên bên phải cửa sổ hiển thị trạng thái, ban đầu là Queued (đang xếp hàng chờ xử lý). Khung log hiện dòng “Đang thu thập thông tin cấu hình deploy…”.
- Giữ cửa sổ log mở để theo dõi tiến trình triển khai.
- Bấm Mở trang log nếu muốn xem log ở trang riêng, hoặc bấm Đóng để đóng cửa sổ.
- Khi quá trình triển khai hoàn tất, mở tên miền đã chọn tại Bước 16 trên trình duyệt để kiểm tra ứng dụng.

Lưu ý: Nếu triển khai lỗi, bạn hãy đọc log để tìm nguyên nhân. Nếu đã điền Email thông báo tại Bước 16, bạn cũng sẽ nhận email báo lỗi.
Bước 18: Kiểm tra kết quả trong danh sách deployment
Khi quá trình triển khai hoàn tất, deployment vừa tạo xuất hiện trong danh sách ở trang chính của plugin (tiêu đề VibeCode Deploy). Bảng danh sách gồm các cột Tên, Loại, Nguồn, Chế độ, Trạng thái và Hành động.
Trong ảnh minh hoạ, deployment mẫu có Tên là qlnn, Loại là static, Nguồn là nhánh main, Chế độ là Manual và Trạng thái là Success (nhãn màu xanh lá), nghĩa là lần triển khai gần nhất đã thành công.
- Đóng cửa sổ Log deploy rồi quay về trang chính của plugin: bấm nút ← Danh sách ở góc trên bên phải màn hình Thêm deployment, hoặc mở lại VibeCode Deploy từ trang Tools của cPanel.
- Tìm dòng có tên app của bạn và kiểm tra cột Trạng thái hiển thị Success.
- Mở tên miền đã chọn cho ứng dụng trên trình duyệt để kiểm tra website đã chạy.
- Khi cần thao tác tiếp với deployment, dùng các nút ở cột Hành động: Deploy (triển khai lại), Rollback (quay về bản triển khai trước), Log (xem log), Sửa (sửa cấu hình deployment), Mở code (xem code đang chạy), Bật auto (chuyển sang chế độ tự cập nhật khi code trên GitHub thay đổi) và Xoá (nút màu đỏ, xoá deployment).

Lưu ý: Nút Bật auto chỉ hiện khi deployment đang ở chế độ Manual như trong ảnh. Nếu bạn đã chọn Auto ở bước cấu hình (Bước 16), cột Chế độ sẽ hiển thị Auto.
Lưu ý: Bấm Xoá sẽ xoá deployment, kể cả dữ liệu trong các thư mục đã khai báo ở Thư mục giữ lại. Bạn hãy sao lưu dữ liệu cần giữ trước khi xoá.
Lưu ý chung
- Với Cách B, bạn chỉ sao chép public key: public key trong bảng Public Keys của cPanel (Bước 9) và public key hiển thị trong khung SSH Deploy key cho repo này của plugin (Bước 11). Tuyệt đối không dán lên GitHub hay gửi cho bất kỳ ai private key trong bảng Private Keys của cPanel.
- Bạn nên cấp quyền ở mức tối thiểu: khi thêm Deploy key, không đánh dấu Allow write access. Deploy key luôn có quyền kéo code (pull), đủ để máy chủ lấy code về.
- Mỗi Deploy key chỉ gắn được một repo trên GitHub. Khi triển khai một repo riêng tư khác bằng Cách B, bạn tạo và gắn Deploy key cho repo đó theo Bước 11 đến Bước 14.
- Mật khẩu và khoá API của ứng dụng nên được khai báo trong ô Biến môi trường (.env) của plugin, thay vì đưa vào repo. Điều này đặc biệt quan trọng với Cách A, vì mã nguồn trong repo công khai ai cũng xem được.
- Khi gửi ảnh chụp màn hình cho bộ phận hỗ trợ BKNS hoặc chia sẻ ra ngoài, bạn hãy che nội dung key và thanh địa chỉ cPanel, vì địa chỉ này có chứa mã phiên đăng nhập (cpsess…).
- Nếu tại màn hình Bước 2 — Nhận diện ứng dụng plugin báo “Không clone được (kiểm tra token/branch)”, bạn hãy kiểm tra hai điểm. Thứ nhất, tên nhánh ở ô Branch phải có trong repo. Thứ hai, plugin phải truy cập được repo: với Cách A, repo phải ở chế độ Public và địa chỉ có dạng https://github.com/
…; với Cách B, Deploy key phải được gắn đúng repo và nút Kiểm tra kết nối báo “✓ Kết nối GitHub OK — repo truy cập được”. Sau đó bấm ← Quay lại để sửa. - Bạn không nên sửa code trực tiếp trong thư mục ~/apps/<tên app>, vì thư mục này được tạo lại sau mỗi lần triển khai; hãy sửa trong Git. Dữ liệu do ứng dụng ghi ra (ví dụ file người dùng upload) phải nằm trong các thư mục đã khai báo ở Thư mục giữ lại. Trên hosting chia sẻ, bạn nên giữ Số worker khi build là 1.


































