# Cài đặt Jenkins Agent trên Proxmox VE

### Step 1: Khởi tạo Container

- <span style="white-space: pre-wrap;">Tải template: Trên PVE tải template </span>**Ubuntu 24.04**[![image.png](https://knowledge.thanhdv.com/uploads/images/gallery/2026-01/scaled-1680-/image.png)](https://knowledge.thanhdv.com/uploads/images/gallery/2026-01/image.png)
- Tại CT với template Ubuntu vừa tải về
    - CPU: 2 - 4 core
    - RAM: 2048 MB (Swap 512 MB)
    - Disk: 16GB (có thể mở rộng thêm nếu cần)
    - <span style="white-space: pre-wrap;">Network: sử dụng </span>**Static IP**<span style="white-space: pre-wrap;"> dạng 192.168.1.100/24 (</span>**nhớ điền Gateway**<span style="white-space: pre-wrap;"> 192.168.1.1)</span>
- Ok, Create and Start container vừa tạo.

### Step 2: Thiết lập môi trường cho Agent

Đăng nhập vào Agent với quyền root và mật khẩu đã tạo.

- Cài đặt các tools cần thiết:
    - `<span class="editor-theme-code">apt update && apt upgrade -y // Update các package đã có trong hệ thống.</span>`
    - `<span class="editor-theme-code">apt install openjdk-17-jdk git curl -y // Cài đặt JDK, Git, curl</span>`
- Tạo user riêng cho jenkins
    - `<span class="editor-theme-code">adduser jenkins // Tạo user tên là jenkins</span>`
- <span style="white-space: pre-wrap;">Tạo thư mục làm việc và cấp quyền cho </span>`<span class="editor-theme-code">jenkins</span>`
    - `<span class="editor-theme-code">mkdir -p /var/jenkins_home // Tạo thư mục jenkins_home </span>`
    - `<span class="editor-theme-code">chown -R jenkins:jenkins /var/jenkins_home // Cấp quyền cho user jenkins</span>`
- Chuyển SSH từ Socket sang Service (Mặc định SSH sẽ ở socket, chỉ hoạt động khi có yêu cầu. Để tránh gặp lỗi trong quá trình tự động thì nên chuyển sang Service)
    - `<span class="editor-theme-code">systemctl stop ssh.socket </span>`  
        `<span class="editor-theme-code">systemctl disable ssh.socket </span>`  
        `<span class="editor-theme-code">systemctl enable ssh.service </span>`  
        `<span class="editor-theme-code">systemctl start ssh.service</span>`

### Step 3: Thiết lập SSH Key

Tạo SSH Key để Jenkins Master có thể ra lệnh cho Agent mà không cần nhập mật khẩu mỗi khi cần build.

```sh
# Chuyển sang user jenkins
su - jenkins
# Tạo key (không đặt passphrase)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

# Tự cấp quyền cho chính mình (Authorized Keys)
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# Hiển thị Private Key để copy vào Jenkins Master
cat id_rsa
```

### Step 4: Tạo Node mới trên Jenkins Master

- <span style="white-space: pre-wrap;">Tạo Credentials mới loại </span>**SSH Username with private key**<span style="white-space: pre-wrap;"> với Private Key vừa lấy ở bước trên.</span>
    - Chú ý domain là global
- Tạo Node. Jenkins Master &gt; Manage Jenkins &gt; Node &gt; New Node
    - **Remote root directory**<span style="white-space: pre-wrap;">: </span>`<span class="editor-theme-code">/var/jenkins_home</span>`<span style="white-space: pre-wrap;"> (thư mục làm việc đã tạo ở trên)</span>
    - **Label**: label bất kỳ để dùng trong jenkinsfile.
    - **Host**: IP của Agent đã tạo ở Bước 1.
    - **Host Key Verification Strategy:**<span style="white-space: pre-wrap;"> Chọn </span>**"Non-verifying Verification Strategy"**.
- Ok tạo Node. Nếu có respond như hình thì tức là đã tạo và kết nối thành công. Nếu không thì kiểm tra log để biết vấn đề.[![image.png](https://knowledge.thanhdv.com/uploads/images/gallery/2026-01/scaled-1680-/nHBimage.png)](https://knowledge.thanhdv.com/uploads/images/gallery/2026-01/nHBimage.png)

### Step 5: Update Jenkinsfile

- Thay đổi chính so với Agent Windows:
    - `<span class="editor-theme-code">bat</span>`<span style="white-space: pre-wrap;"> &gt; </span>`<span class="editor-theme-code">sh</span>`
    - `<span class="editor-theme-code">del /F /Q</span>`<span style="white-space: pre-wrap;"> &gt; </span>`<span class="editor-theme-code">rm -f</span>`