Fast Byte - Thuê VPS Giá Rẻ
Hướng dẫn chung

Cách Cài Jenkins Trên VPS Ubuntu Chuẩn CI/CD Từ A-Z Cho Người Mới

Cách cài Jenkins trên VPS là bước khởi đầu để tự động hóa quy trình build, test và deploy ứng dụng chuẩn CI/CD. Tuy nhiên, Jenkins chạy trên nền Java, đòi hỏi mở firewall riêng và không an toàn mặc định, nên người mới dễ vấp lỗi ngay lúc khởi động. Bài viết dưới đây […]

Ảnh đại diện Thanh Lam NguyễnThanh Lam Nguyễn15 phút đọc

Cách cài Jenkins trên VPS là bước khởi đầu để tự động hóa quy trình build, test và deploy ứng dụng chuẩn CI/CD. Tuy nhiên, Jenkins chạy trên nền Java, đòi hỏi mở firewall riêng và không an toàn mặc định, nên người mới dễ vấp lỗi ngay lúc khởi động. Bài viết dưới đây sẽ hướng dẫn bạn cài Jenkins trên VPS Ubuntu từng bước, kèm cách khắc phục các sự cố thường gặp để hệ thống chạy ổn định ngay trên một VPS giá rẻ tại ThueVPSGiaRe.vn.

1. Tổng quan & Yêu cầu tiên quyết trước khi cài đặt Jenkins

Jenkins là máy chủ tự động hóa mã nguồn mở chuyên phục vụ tích hợp liên tục và triển khai liên tục (CI/CD). Hoạt động hoàn toàn trên nền tảng Java, Jenkins có khả năng chạy nền liên tục và tương thích chặt chẽ với hầu hết các bộ công cụ phát triển phần mềm hiện đại.

Jenkins
Jenkins

Trước khi bắt đầu, hệ thống máy chủ của bạn cần đáp ứng các tiêu chuẩn kỹ thuật sau:

  • Hệ điều hành và tài nguyên: Một máy chủ máy chủ ảo chạy Linux (khuyến nghị bản phân phối Ubuntu), bộ nhớ RAM tối thiểu từ 1GB cho môi trường thử nghiệm và cấu hình cao hơn cho môi trường production tùy lượng pipeline thực thi.
  • Quyền quản trị: Tài khoản non-root đã được cấu hình phân quyền sudo user để thực thi lệnh an toàn.
  • Phiên bản Java: Bắt buộc đã cài đặt OpenJDK 17 hoặc OpenJDK 21 trở lên (theo đúng quy chuẩn trong hướng dẫn cài Java trên VPS). Jenkins không thể hoạt động nếu thiếu môi trường máy ảo Java.

Thuê VPS giá rẻ

CPU Intel Gold, SSD NVMe U.2, giá từ 50K/tháng

Hạ Tầng Ổn Định Cho CI/CD Pipeline

Dịch vụ VPS tại Fast Byte mang lại hiệu năng ổn định, ổ cứng NVMe tốc độ đọc ghi cao cùng băng thông rộng, tạo nền tảng vững chắc để Jenkins thực thi các tác vụ build và test code tự động mượt mà mà không lo nghẽn tài nguyên.

Tham khảo VPS giá rẻ

2. Bước 1: Thêm Repository và cài đặt Jenkins trên Ubuntu

Kho lưu trữ mặc định của hệ điều hành Ubuntu thường chỉ cung cấp các bản phát hành Jenkins cũ. Để cài đặt được bản phát hành ổn định và mới nhất từ chính dự án Jenkins, bạn nên cấu hình kho lưu trữ APT chính thức theo hướng dẫn dưới đây.

Thêm Repository và cài đặt Jenkins trên Ubuntu
Thêm Repository và cài đặt Jenkins trên Ubuntu

Trước hết, hãy tạo thư mục lưu trữ khóa hệ thống và tải về khóa xác thực GPG của Jenkins:

sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2026.key

Lệnh này lấy mã GPG của Jenkins lưu tại đường dẫn /etc/apt/keyrings – thư mục chuẩn hóa dành cho các khóa kho lưu trữ trên các phiên bản Ubuntu thế hệ mới.

Tiếp tục thêm kho lưu trữ Jenkins Debian chính thức vào danh sách nguồn APT của hệ thống:

echo "deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc]" https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

Tham số signed-by chỉ định cho trình quản lý gói apt chỉ xác thực các gói phần mềm bằng đúng tệp khóa đã tải về, đảm bảo an toàn tuyệt đối và phân tách riêng biệt với các nguồn khác.

Cập nhật lại chỉ mục gói phần mềm để hệ thống nhận diện nguồn mới:

sudo apt update

Cuối cùng, tiến hành cài đặt Jenkins cùng các gói phụ thuộc liên quan:

sudo apt install jenkins

3. Bước 2: Khởi động và kiểm tra dịch vụ Jenkins

Sau khi hoàn tất cài đặt, Jenkins chưa tự động chạy ngay. Bạn sử dụng công cụ quản trị systemctl để kích hoạt dịch vụ hoạt động trên nền hệ thống:

sudo systemctl start jenkins.service

Vì lệnh khởi động không trả về kết quả hiển thị, bạn cần kiểm tra trực tiếp trạng thái của dịch vụ bằng lệnh sau:

sudo systemctl status jenkins

Nếu quy trình diễn ra bình thường, đầu ra thông báo sẽ hiển thị trạng thái active (running) và dịch vụ đã được kích hoạt khởi động cùng máy chủ (enabled):

Output● jenkins.service - Jenkins Continuous Integration Server
     Loaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; preset: enabled)
     Active: active (running) since Thu 2026-02-05 06:20:00 UTC; 29s ago
   Main PID: 2292 (java)
      Tasks: 50 (limit: 4655)
     Memory: 718.8M (peak: 719.6M)
        CPU: 27.378s
     CGroup: /system.slice/jenkins.service
             └─2292 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war

4. Bước 3: Cấu hình mở cổng tường lửa UFW cho Jenkins

Mặc định, dịch vụ Jenkins lắng nghe kết nối web qua cổng 8080. Nếu VPS đang kích hoạt tường lửa, bạn phải thực hiện thiết lập tường lửa UFW để cho phép truy cập từ trình duyệt.

Mở cổng tường lửa UFW cho Jenkins
Mở cổng tường lửa UFW cho Jenkins

Khai báo mở cổng 8080 thông qua lệnh:

sudo ufw allow 8080

Lưu ý: Trong trường hợp UFW chưa được bật, hãy cho phép kết nối OpenSSH trước khi kích hoạt tường lửa để tránh mất quyền điều khiển máy chủ:

sudo ufw allow OpenSSH
sudo ufw enable

Kiểm tra lại danh sách quy tắc hiện thời để xác nhận cổng đã thông:

sudo ufw status

Kết quả hiển thị cho thấy lưu lượng đến cổng 8080 đã được chấp nhận:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8080                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
8080 (v6)                  ALLOW       Anywhere (v6)

5. Bước 4: Thiết lập ban đầu trên giao diện Web UI

Sau khi hoàn tất cấu hình hạ tầng, bạn mở trình duyệt và truy cập theo đường dẫn: http://<IP_VPS_HOAC_DOMAIN>:8080.

Màn hình Unlock Jenkins sẽ xuất hiện và yêu cầu nhập mật khẩu quản trị khởi tạo. Bạn quay lại cửa sổ terminal máy chủ và xem nội dung mật khẩu bằng lệnh:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Sao chép chuỗi mật khẩu 32 ký tự alphanumeric hiển thị ra màn hình, dán vào ô Administrator password trên trình duyệt và nhấn Continue.

Tại giao diện tùy biến (Customize Jenkins), hệ thống cung cấp 2 tùy chọn:

  • Install suggested plugins: Tự động cài đặt gói plugin được đề xuất bởi cộng đồng Jenkins (khuyên dùng để thiết lập môi trường CI/CD tiêu chuẩn nhanh nhất).
  • Select plugins to install: Lựa chọn cài đặt các plugin cụ thể theo nhu cầu chuyên biệt.

Nhấp chọn Install suggested plugins. Sau khi quá trình tải plugin hoàn thành, hệ thống sẽ chuyển đến trang tạo tài khoản quản trị đầu tiên (Create First Admin User). Mặc dù bạn có thể bỏ qua bước này để dùng tài khoản admin gốc, việc khởi tạo một tài khoản quản trị viên mới với thông tin đăng nhập rõ ràng là điều luôn được khuyến cáo.

Điền đầy đủ thông tin tên người dùng, mật khẩu, họ tên và địa chỉ email, sau đó tiếp tục sang trang Instance Configuration để xác nhận địa chỉ URL chính thức cho Jenkins. Nhấn Save and Finish, màn hình sẽ thông báo “Jenkins is Ready!”. Cuối cùng, chọn Start using Jenkins để chuyển hướng trực tiếp vào bảng điều khiển quản trị trung tâm.

6. Hướng dẫn thiết lập bảo mật Jenkins chuẩn Production

Cấu hình mặc định của Jenkins phù hợp cho việc phát triển và thử nghiệm nội bộ, nhưng chưa đủ an toàn cho môi trường thực tế (production). Trước khi kết nối kho mã nguồn hoặc đưa dữ liệu quan trọng vào hệ thống, bạn cần tuân thủ các nguyên tắc tăng cường bảo mật cốt lõi:

Bật xác thực và phân quyền tài khoản

Không bao giờ cho phép truy cập nặc danh (anonymous access) trên Jenkins. Sau khi hoàn thành thiết lập, bạn hãy truy cập mục Manage Jenkins > Security để kiểm tra lại cấu hình. Đối với các đội ngũ nhỏ, sử dụng cơ sở dữ liệu người dùng tích hợp sẵn của Jenkins, chỉ cấp quyền quản trị (admin) cho những nhân sự đáng tin cậy và hạn chế tối đa các quyền thực thi của người dùng thông thường.

Mã hóa truy cập bằng giao thức HTTPS

Jenkins mặc định truyền tải dữ liệu qua HTTP dạng văn bản rõ, khiến mật khẩu và mã nguồn có nguy cơ bị lộ trên đường truyền. Phương án tối ưu là đặt Jenkins phía sau một máy chủ Reverse Proxy (như Nginx hoặc Apache) nhằm cấu hình chứng chỉ số an toàn thông qua cài SSL miễn phí bằng Certbot. Việc dùng reverse proxy vừa che giấu cổng 8080 vừa đảm bảo toàn bộ phiên làm việc đều chạy trên kênh HTTPS mã hóa.

Thiết lập bảo mật Jenkins chuẩn Production
Thiết lập bảo mật Jenkins chuẩn Production

Giới hạn truy cập mạng và tường lửa

Tránh mở cổng 8080 công khai cho toàn bộ Internet. Thay vào đó, bạn chỉ nên cho phép các dải địa chỉ IP nội bộ hoặc IP cố định của lập trình viên truy cập vào bảng điều khiển Jenkins để giảm thiểu nguy cơ bị dò quét lỗ hổng từ xa.

Cập nhật phần mềm và plugin định kỳ

Hầu hết các rủi ro an ninh mạng trên Jenkins xuất phát từ các plugin lỗi thời. Thường xuyên kiểm tra và cập nhật core Jenkins cùng toàn bộ plugin tại menu Manage Jenkins > Plugins, đồng thời gỡ bỏ ngay những plugin không còn sử dụng.

Bảo vệ bí mật và quản lý thông tin xác thực

Các thông tin nhạy cảm như API token, khóa kết nối SSH hay mật khẩu dịch vụ đám mây tuyệt đối không được viết cứng (hard-code) vào tập lệnh cấu hình pipeline. Hãy luôn sử dụng tính năng Credentials của Jenkins để lưu trữ và phân quyền truy cập bí mật theo từng job cụ thể.

Nguyên tắc đặc quyền tối thiểu (Least Privilege)

Đảm bảo Jenkins luôn thực thi bằng tài khoản người dùng riêng biệt jenkins, tuyệt đối không vận hành dưới quyền root. Thư mục dữ liệu /var/lib/jenkins phải thuộc sở hữu độc quyền của người dùng này và không được cấp quyền sudo vô điều kiện cho tài khoản dịch vụ.

Giám sát nhật ký và sao lưu dự phòng định kỳ

Theo dõi hệ thống liên tục qua giao diện web hoặc thông qua công cụ đọc bản ghi bằng cách sử dụng lệnh journalctl xem log. Bên cạnh đó, bạn cần thiết lập cơ chế sao lưu định kỳ thư mục dữ liệu /var/lib/jenkins, các tệp cấu hình job và thông tin phân quyền theo đúng các phương án sao lưu dữ liệu trên VPS để phục hồi máy chủ kịp thời khi gặp sự cố.

7. Các lỗi thường gặp khi cài đặt Jenkins và cách khắc phục

Trong quá trình cài đặt và khởi động Jenkins trên máy chủ ảo, quản trị viên có thể đối mặt với một số lỗi phát sinh phổ biến. Dưới đây là hướng dẫn rà soát và khắc phục chi tiết cho từng trường hợp:

Jenkins không thể khởi động sau khi cài đặt

Nguyên nhân phổ biến nhất là hệ thống thiếu Java hoặc đang chạy phiên bản Java không tương thích (dưới chuẩn Java 17). Để xác định nguyên nhân, bạn kiểm tra trạng thái dịch vụ và xem chi tiết bản ghi hệ thống:

sudo systemctl status jenkins
sudo journalctl -u jenkins --no-pager

Tìm kiếm các thông báo lỗi liên quan đến Java như "Unsupported class version" hoặc "java: command not found". Đồng thời kiểm tra phiên bản Java hiện tại:

java -version

Nếu phiên bản Java chưa đạt chuẩn, bạn hãy cài đặt OpenJDK 17 hoặc 21 rồi khởi động lại Jenkins bằng lệnh sudo systemctl restart jenkins.

Dịch vụ đang chạy nhưng không thể truy cập giao diện Web

Trước hết, hãy sử dụng lệnh ss trong Linux để kiểm tra xem tiến trình Jenkins đã thực sự chiếm cổng kết nối hay chưa:

ss -ltnp | grep 8080

Nếu cổng 8080 đang mở, tiếp tục kiểm tra trạng thái UFW bằng lệnh sudo ufw status để chắc chắn cổng đã được bỏ chặn. Ngoài ra, bạn có thể kiểm tra phản hồi cục bộ ngay trên máy chủ:

curl http://localhost:8080

Nếu lệnh cURL nội bộ phản hồi tốt nhưng trình duyệt bên ngoài không vào được, vấn đề nằm ở cấu hình tường lửa của VPS, chính sách mạng của nhà cung cấp hoặc sai lệch địa chỉ IP/DNS.

Xung đột cổng 8080 với ứng dụng khác

Nếu một dịch vụ web khác đã chiếm dụng cổng 8080 từ trước, Jenkins sẽ thất bại khi kích hoạt. Bạn kiểm tra tiến trình đang chiếm cổng:

ss -ltnp | grep 8080

Bạn có thể dừng dịch vụ xung đột hoặc đổi cổng mặc định của Jenkins bằng cách chỉnh sửa tệp cấu hình:

sudo nano /etc/default/jenkins

Tìm dòng HTTP_PORT=8080, chuyển sang cổng mong muốn khác (ví dụ: 8081 hoặc 8888), lưu tệp và chạy lại lệnh sudo systemctl restart jenkins.

Dịch vụ khởi động rồi tắt ngay lập tức

Tình trạng này xuất phát chủ yếu do máy chủ bị thiếu bộ nhớ RAM, xung đột thư viện Java hoặc sai lệch quyền hạn trên thư mục lưu trữ dữ liệu. Hãy tra cứu log hệ thống bằng lệnh sudo journalctl -u jenkins --no-pager và phân bổ quyền sở hữu chuẩn xác cho Jenkins:

sudo chown -R jenkins:jenkins /var/lib/jenkins
sudo systemctl restart jenkins

Không tìm thấy tệp mật khẩu khởi tạo (initialAdminPassword)

Nếu lệnh đọc tệp mật khẩu báo lỗi tệp không tồn tại, có thể Jenkins chưa hoàn tất toàn bộ chu trình khởi tạo lần đầu. Bạn cần đảm bảo dịch vụ đã báo active (running) qua lệnh sudo systemctl status jenkins, đợi vài chục giây rồi chạy lại lệnh:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

8. Câu hỏi thường gặp (FAQs) về Jenkins trên VPS

1. Jenkins trên Ubuntu yêu cầu phiên bản Java nào?

Jenkins phiên bản hiện đại bắt buộc phải chạy trên Java 17 hoặc Java 21 trở lên. Trong đó, OpenJDK 17 được khuyến nghị về độ ổn định và tính tương thích cao với toàn bộ kho plugin, còn OpenJDK 21 là gói mặc định trên hệ điều hành Ubuntu 24.04. Cài đặt các bản Java cũ hơn sẽ khiến Jenkins báo lỗi khởi động.

2. Jenkins có thể vận hành mà không cần cài đặt Java không?

Không. Bản thân Jenkins là một ứng dụng viết hoàn toàn bằng Java, do đó bắt buộc phải có máy ảo JVM tương thích trên hệ thống để thực thi tiến trình controller. Tài liệu chính thức luôn yêu cầu cài đặt Java hoàn chỉnh trước khi cài đặt gói phần mềm Jenkins.

3. Những lệnh quản lý cơ bản của dịch vụ Jenkins là gì?

Jenkins được quản lý trực tiếp bằng công cụ systemd thông qua các cú pháp cơ bản:

  • Khởi động: sudo systemctl start jenkins
  • Dừng dịch vụ: sudo systemctl stop jenkins
  • Khởi động lại: sudo systemctl restart jenkins
  • Xem trạng thái: sudo systemctl status jenkins

4. Mặc định Jenkins chạy trên cổng nào?

Jenkins mở và lắng nghe kết nối web trên cổng TCP 8080. Nếu cần thay đổi cổng này để tránh xung đột, bạn có thể chỉnh sửa giá trị HTTP_PORT trong tệp cấu hình /etc/default/jenkins.

5. Làm thế nào để khôi phục mật khẩu quản trị Jenkins khi bị mất?

Nếu trong lần đầu thiết lập, bạn chỉ cần đọc lại tệp /var/lib/jenkins/secrets/initialAdminPassword. Trường hợp đã hoàn tất cài đặt nhưng quên thông tin đăng nhập: bạn cần dừng dịch vụ Jenkins, mở tệp /var/lib/jenkins/config.xml và tạm thời chuyển thẻ <useSecurity>true</useSecurity> thành false, sau đó khởi động lại Jenkins để truy cập trực tiếp không cần mật khẩu, tiến hành tạo mới tài khoản rồi bật lại bảo mật.

6. Cách gỡ bỏ hoàn toàn Jenkins khỏi máy chủ Ubuntu?

Để dọn dẹp sạch sẽ Jenkins khỏi hệ thống, bạn thực hiện lần lượt các bước sau:

sudo systemctl stop jenkins
sudo apt remove --purge jenkins
sudo rm -rf /var/lib/jenkins
sudo rm /etc/apt/sources.list.d/jenkins.list
sudo rm /etc/apt/keyrings/jenkins-keyring.asc
sudo apt update

Lời Kết

Quy trình thực hiện cách cài Jenkins trên VPS Ubuntu thực tế rất rõ ràng và dễ tiếp cận khi bạn tuân thủ đúng yêu cầu về môi trường Java và các bước cấu hình mạng. Sau khi thiết lập dịch vụ chạy ổn định, việc áp dụng các lớp bảo mật như phân quyền chi tiết, kích hoạt HTTPS qua Reverse Proxy và sao lưu dữ liệu thường xuyên là chìa khóa để vận hành hệ thống CI/CD an toàn, phục vụ tối đa hiệu suất phát triển phần mềm cho đội ngũ của bạn.

Cần một VPS giá rẻ để bắt đầu?

Chọn cấu hình vừa đủ nhu cầu, ưu tiên chi phí dễ tiếp cận và khả năng quản trị riêng.

Xem bảng giá VPS

Nội dung trong bài viết chỉ mang tính chất tham khảo kỹ thuật. Các câu lệnh, cú pháp và đường dẫn cấu hình có thể có sự thay đổi tùy thuộc vào phiên bản hệ điều hành máy chủ và gói phát hành phần mềm thực tế. Quản trị viên nên chủ động kiểm thử, tạo bản sao lưu dữ liệu toàn diện và đánh giá kỹ lưỡng các yếu tố bảo mật trước khi áp dụng trực tiếp lên môi trường production.

Chia sẻ: Facebook LinkedIn
Quay lại trang blog

Bài viết liên quan