Xin chào! Cảm ơn bạn
đã ghé thăm Blog của tôi.
Xin chào! Cảm ơn bạn
đã ghé thăm Blog của tôi.
Nếu bạn từng dùng Vercel hay Netlify thì chắc đã quen cảm giác “push code là website tự lên”. Vấn đề là các dịch vụ đó chạy trên hạ tầng của họ, còn app backend, database hay WordPress thì vẫn phải tự lo trên VPS. OpsVibes là control panel mình viết để mang trải nghiệm đó về chính VPS của bạn: kết nối GitHub, chọn repo, bấm Deploy, panel tự build, chạy container, gắn tên miền và cấp SSL.
Trong bài này mình hướng dẫn chi tiết từ lúc cài panel lên một VPS trắng cho tới deploy website đầu tiên, tạo database, gắn tên miền, sao lưu và dùng AI Agent để debug. Bạn có thể xem trước giao diện ở bản live demo (dữ liệu mẫu, bấm thoải mái).
OpsVibes là control panel tự host, chạy trên nền Docker + Traefik + Nixpacks:
Những việc panel làm được:


root hoặc user có sudo.panel.example.com.| Cổng | Dùng cho |
|---|---|
80 | HTTP, xác minh chứng chỉ Let’s Encrypt |
443 | HTTPS cho panel và các app |
3000 | Mở panel lần đầu khi chưa có tên miền, đóng lại được sau đó |
Lưu ý: nếu VPS ở AWS, Google Cloud, Oracle, Azure… thì nhớ mở thêm 3 cổng này ở security group của nhà cung cấp, không chỉ tường lửa trong máy.

SSH vào VPS và chạy một lệnh duy nhất:
curl -sSL https://get.opsvibes.com | sudo sh
Script sẽ tự:
ufw hoặc firewalld, xử lý SELinux trên dòng RHEL.opsvibes (panel) và opsvibes-traefik (proxy), rồi in ra địa chỉ để mở panel.Nếu server đã có Docker hoặc bạn muốn tự kiểm soát từng bước:
docker network create opsvibes
docker run -d --name opsvibes --network opsvibes \
--restart unless-stopped \
-p 3000:3000 \
-v /etc/opsvibes:/etc/opsvibes \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /proc:/host/proc:ro \
-e OPSVIBES_HOST_PROC=/host/proc \
ghcr.io/opsvibes/opsvibes:latest
Trên Rocky/AlmaLinux/RHEL đang bật SELinux, thêm dòng --security-opt label=disable \ trước dòng image. Toàn bộ dữ liệu của panel nằm trong /etc/opsvibes.

http://<IP-VPS>:3000.sudo cat /etc/opsvibes/setup.tokenCopySau khi đăng nhập bạn sẽ thấy Dashboard: biểu đồ CPU, RAM, ổ đĩa, mạng của server ở trên cùng, danh sách project và các lần deploy gần đây. Thanh bên trái gồm Dashboard, Domain, Sao lưu, AI Agent, Model AI, Cài đặt; phía dưới có IP máy chủ, nút chế độ tối và chọn ngôn ngữ.
Truy cập panel qua http://IP:3000 chỉ nên dùng lúc mới cài. Để dùng lâu dài, hãy gắn tên miền:
A tên panel trỏ về IP VPS. Nếu dùng Cloudflare, để DNS only (mây xám) khi cấp chứng chỉ lần đầu.dig +short panel.example.comhttps://panel.example.com để kiểm tra.Ở cùng mục này có ô Tên miền mặc định cho app. Mỗi service sẽ có sẵn địa chỉ dạng <project>-<service>.<tên-miền-mặc-định>:
<IP>.sslip.io, ví dụ shop-web.203-0-113-10.sslip.io. Không cần cấu hình DNS gì, có HTTPS ngay.*.apps.example.com trỏ về VPS, rồi đặt tên miền mặc định là apps.example.com.Khi panel đã chạy ổn qua HTTPS, bạn có thể đóng cổng 3000 trên tường lửa.


Đây là bước giúp OpsVibes giống Vercel: kết nối một lần, sau đó chọn repo từ danh sách thay vì dán URL, và push code là tự deploy.
Mẹo: nên gắn tên miền HTTPS cho panel trước khi kết nối GitHub, vì GitHub gửi webhook về địa chỉ panel. Nếu sau này bạn đổi tên miền panel, panel tự cập nhật địa chỉ webhook của App.
Repo trên GitLab, Gitea hoặc repo GitHub chưa cấp quyền vẫn deploy được bằng cách Nhập URL Git kèm token truy cập.
Ở Dashboard bấm Tạo project. Project là nhóm các service của một sản phẩm, ví dụ project shop gồm frontend, backend và database. Tên project dùng chữ thường, số và dấu gạch ngang.
Mở project, bấm Thêm service. Trang này có các nguồn deploy:
compose.yml ngay trên panel, kèm file .sql, config… không cần repo.
Sau khi bấm Import, panel đọc repo, nhận diện framework và hiện form cấu hình. Thường bạn chỉ cần kiểm tra lại rồi bấm Deploy:
web, api.apps/web; push chỉ deploy lại service có file thay đổi.0.0.0.0:$PORT, không phải 127.0.0.1.Bấm Deploy. Panel clone repo, build bằng Dockerfile (nếu có) hoặc Nixpacks, chạy container rồi chuyển traffic sang bản mới. Log build hiện theo thời gian thực, các giá trị bí mật được tự che.

Deploy xong, bấm Mở app để xem website. Từ giờ mỗi lần bạn git push lên nhánh đã chọn, panel tự deploy lại.
Trang của mỗi service có các tab:

Biến môi trường có thể tham chiếu service khác trong cùng project, ví dụ frontend cần URL của API:
NEXT_PUBLIC_API_URL=${api.URL} # địa chỉ công khai của service api
API_INTERNAL=${api.INTERNAL_URL} # địa chỉ nội bộ giữa các container
Trong trang project bấm Thêm database, chọn loại (PostgreSQL, MySQL, MariaDB, MongoDB, Redis), đặt tên và phiên bản. Mật khẩu được sinh ngẫu nhiên và mã hóa. Database chạy trong network nội bộ của panel nên chỉ app trên server này kết nối được, không mở cổng ra Internet.
Trang của database có:
DATABASE_URL, DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME vào biến môi trường của service. Deploy sẽ chờ database sẵn sàng rồi mới chạy app.

Muốn có ngay một trang WordPress, Ghost, n8n hay Uptime Kuma: vào Thêm service → Ứng dụng 1-click, chọn ứng dụng, đặt tên và tên miền rồi bấm Cài. Panel dùng image chính thức, tạo sẵn database trắng, giữ dữ liệu ở volume riêng (deploy lại không mất) và cấp HTTPS.
Chuyển website WordPress hoặc PHP từ hosting khác sang:
wp-config.php đọc database từ biến môi trường, import file dump, chặn tải file .sql/log từ bên ngoài và giữ thư mục ảnh tải lên bằng volume.Muốn cập nhật bản mới thì tải file nén mới lên ở tab Cài đặt của service, panel build lại và chuyển traffic khi bản mới chạy được.
Trang Domain ở thanh bên liệt kê mọi tên miền trên tất cả project, kèm hai cột kiểm tra:
Thêm tên miền riêng cho service ở tab Cài đặt của service. Panel cấp chứng chỉ cho từng tên miền.

Vào Sao lưu ở thanh bên:
.vpbak chứa đủ để dựng lại mọi thứ: cấu hình panel, project, service, biến môi trường, tài khoản, dữ liệu database và dữ liệu service. Mã nguồn từ GitHub không cần lưu vì panel tự clone lại.Quan trọng: ghi passphrase ở nơi khác ngoài server. Mất passphrase thì không giải mã được bản sao lưu.

Chuyển toàn bộ sang VPS mới:
.vpbak mới nhất từ trang Sao lưu, S3 hoặc Google Drive.Chỉ muốn mang một website sang hosting khác? Dùng Sao lưu project trong trang của project để tải bản mang đi gồm database và mã nguồn đang chạy.
Phần này hoàn toàn tùy chọn, panel vẫn deploy bình thường khi không có AI. Nếu bạn có API key của một nhà cung cấp model thì nên thử.
Trang AI Agent là một khung chat cho cả máy chủ. Agent đọc được log, trạng thái container, Traefik và tài nguyên server; tự sửa cấu hình, đặt biến môi trường, restart hoặc deploy lại. Bạn có thể hỏi những câu như:
Mỗi bước agent làm (đọc log, đặt biến, deploy, gửi request kiểm tra…) đều hiện rõ trong hội thoại. Những thao tác nguy hiểm như chạy lệnh với quyền root trên máy chủ, sửa mã nguồn hay ghi đè database đều phải chờ bạn bấm Cho phép.

Ở trang service, chọn model AI bên cạnh nút Deploy rồi bấm Deploy với AI: trước khi build, agent đọc mã nguồn, thêm cấu hình còn thiếu (Dockerfile, nixpacks.toml…) và biến môi trường (tự sinh secret như JWT_SECRET). Nếu build hoặc khởi động lỗi, agent tự sửa cấu hình và panel build lại, tối đa 2 lần. Khi một lần deploy thất bại, bấm Nhờ AI sửa để mở chat với log lỗi đã đính kèm sẵn.

Panel tự kiểm tra bản mới mỗi 6 giờ. Khi có bản mới, thanh bên hiện nhãn Bản mới; bấm vào đó (hoặc vào Cài đặt → Phiên bản và cập nhật) rồi bấm Cập nhật. Panel tải bản mới, khởi động lại và tự quay về bản cũ nếu bản mới không chạy được. Các app đang chạy không bị dừng.
Hoặc chạy lại lệnh cài đặt trên server, script nhận ra panel đã có và chỉ cập nhật:
curl -sSL https://get.opsvibes.com | sudo sh

Kiểm tra tường lửa trong máy (ufw/firewalld) và tường lửa của nhà cung cấp cloud. Xem trạng thái và log của panel:
docker ps --filter name=opsvibes
docker logs --tail 100 opsvibes
Server từng cài Nginx, Apache hay control panel khác sẽ giữ cổng 80/443. Tìm tiến trình đang dùng cổng, tắt nó rồi khởi động lại panel:
sudo ss -tlnp | grep -E ':(80|443|3000)\s'
sudo systemctl disable --now nginx
docker restart opsvibes
dig +short.Nguyên nhân phổ biến nhất là app chỉ lắng nghe ở 127.0.0.1/localhost. Sửa app để nghe ở 0.0.0.0 và đúng cổng trong biến PORT, hoặc điền đúng Cổng trong tab Cài đặt của service. Nếu đã thêm model AI, bấm Nhờ AI sửa để agent tự tìm nguyên nhân.
sudo cat /etc/opsvibes/setup.token
# hoặc
docker logs opsvibes 2>&1 | grep "Setup token"
Với OpsVibes, quy trình đưa một website lên VPS rút gọn còn: cài panel bằng một lệnh, kết nối GitHub, chọn repo và bấm Deploy. Phần reverse proxy, SSL, database, sao lưu và cả debug đều có giao diện để làm, không phải SSH vào sửa từng file cấu hình.
Tài liệu đầy đủ ở opsvibes.com/docs, xem trước giao diện tại opsvibes.com/livedemo. Có vấn đề gì cứ gửi email tới help@opsvibes.com hoặc để lại bình luận bên dưới, mình sẽ hỗ trợ.
Chào mọi người, mình là Kiên – hiện đang công tác tại Phòng Kỹ thuật AZDIGI. Trong quá trình làm việc mình có cơ hội được tiếp xúc với khá nhiều các vấn đề liên quan đến Website/Hosting/VPS/Server, do đó mình viết lại các hướng dẫn này nhằm chia sẻ kiến thức, cũng như tạo một môi trường để chúng ta giao lưu và học hỏi lẫn nhau.
2026 - Website được phát triển nội dung bởi Đàm Trung Kiên
Hãy để lại thông tin của bạn. Đội ngũ chuyên gia của chúng tôi sẽ trực tiếp phân tích nhu cầu và tư vấn giải pháp công nghệ phù hợp, tối ưu hiệu quả cho công việc của bạn hoàn toàn miễn phí.
Tìm kiếm bài viết...