139 lines
3.9 KiB
Markdown
139 lines
3.9 KiB
Markdown
# BUILD_SYSTEM.md
|
|
|
|
# Linux Package Installer System
|
|
|
|
**Server IP:** 172.20.235.176
|
|
|
|
Mục tiêu: xây dựng hệ thống cài đặt, quản lý package `.deb` cho ứng dụng web trên Linux với luồng **Web Server → Web Client → Local Installer Agent → Web Service**.
|
|
|
|
---
|
|
|
|
## 1. Thành phần hệ thống
|
|
|
|
1. **Web Server** (`server.package.robot`)
|
|
- Node.js + Express
|
|
- Chức năng:
|
|
- Lưu trữ các file `.deb`
|
|
- Metadata JSON về package: version, dependency, mô tả
|
|
- API download package
|
|
- Admin upload package
|
|
|
|
2. **Web Client** (`client.package.robot`)
|
|
- Frontend: React
|
|
- Backend: Node.js
|
|
- Chức năng:
|
|
- Hiển thị danh sách package
|
|
- Cho người dùng chọn Install / Modify / Update / Remove
|
|
- Relay lệnh tới Local Installer Agent
|
|
- Hiển thị tiến trình / status realtime
|
|
|
|
3. **Local Installer Agent**
|
|
- Python
|
|
- Chạy ngầm trên Linux client
|
|
- Chức năng:
|
|
- Tải package từ Web Server
|
|
- Kiểm tra checksum / chữ ký
|
|
- Cài / gỡ / update bằng dpkg/apt
|
|
- Start / restart các service systemd
|
|
- Báo tiến trình / status về Web Client
|
|
|
|
---
|
|
|
|
## 2. Flow hệ thống
|
|
|
|
|
|
Admin / Developer
|
|
│ Upload .deb và metadata
|
|
▼
|
|
Web Server (172.20.235.176)
|
|
│ Serve .deb + metadata
|
|
▼
|
|
Web Client (React + Node.js)
|
|
│ Hiển thị package list
|
|
│ User chọn Install/Modify/Update/Remove
|
|
▼
|
|
Local Installer Agent (Python)
|
|
│ Download .deb từ server
|
|
│ Verify checksum
|
|
│ Install / Remove / Update
|
|
│ Start/Restart systemd service
|
|
▼
|
|
Web Service / Package Service
|
|
│ Chạy sẵn
|
|
▼
|
|
User mở browser → truy cập service
|
|
|
|
|
|
---
|
|
|
|
## 3. Cấu trúc project
|
|
|
|
|
|
project-root/
|
|
├── server/
|
|
│ ├── packages/ # .deb files
|
|
│ ├── metadata/ # JSON metadata
|
|
│ └── src/ # Node.js + Express
|
|
│ ├── routes/
|
|
│ └── controllers/
|
|
│
|
|
├── client/
|
|
│ ├── frontend/ # React UI
|
|
│ └── backend/ # Node.js relay tới Agent
|
|
│
|
|
├── agent/
|
|
│ ├── bin/ # Python executable / script
|
|
│ ├── service/ # systemd service file
|
|
│ └── lib/ # logic install/update/remove/status
|
|
│
|
|
└── packages/ # Build các .deb trước khi upload
|
|
|
|
|
|
---
|
|
|
|
## 4. Metadata JSON mẫu
|
|
|
|
```json
|
|
{
|
|
"applications": [
|
|
{
|
|
"id": "sample-app",
|
|
"name": "Sample Package",
|
|
"version": "1.0.0",
|
|
"packages": [
|
|
{"id": "sample-core", "required": true, "version": "1.0.0", "file": "sample-core_1.0.0_amd64.deb"},
|
|
{"id": "sample-web", "required": false, "version": "1.0.0", "file": "sample-web_1.0.0_amd64.deb", "depends": ["sample-core"]},
|
|
{"id": "sample-api", "required": false, "version": "1.0.0", "file": "sample-api_1.0.0_amd64.deb", "depends": ["sample-core"]}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
5. Flow Install / Modify / Update / Remove
|
|
User mở Web Client
|
|
Web Client fetch metadata từ Web Server
|
|
User chọn package muốn Install/Modify/Update/Remove
|
|
Web Client gửi JSON request tới Local Installer Agent
|
|
Local Agent:
|
|
Download package từ Web Server
|
|
Verify checksum
|
|
Install / Remove / Update package
|
|
Start / Restart systemd service
|
|
Báo tiến trình / status về Web Client
|
|
Sau khi cài xong, service chạy sẵn
|
|
User mở browser → truy cập Web Service
|
|
6. Công nghệ & ngôn ngữ
|
|
Thành phần Ngôn ngữ / Framework
|
|
Web Server Node.js + Express
|
|
Web Client Frontend React
|
|
Web Client Backend Node.js
|
|
Local Installer Agent Python
|
|
Web Service Tùy ứng dụng
|
|
7. Quy trình triển khai từ đầu
|
|
Build package .deb cho ứng dụng web, chia thành các package nhỏ nếu cần.
|
|
Upload package + metadata lên Web Server.
|
|
Web Client fetch metadata, hiển thị package list.
|
|
Cài đặt Local Installer Agent lần đầu trên Linux client.
|
|
User chọn package → Install / Modify / Update / Remove.
|
|
Local Installer Agent thực hiện cài/gỡ/update ngầm.
|
|
Web Service chạy sẵn, người dùng truy cập browser.
|
|
 |