NỘI DUNG
Giới thiệu về UniTime
UniTime (https://www.unitime.org/) là một hệ thống lập lịch học tập mã nguồn mở được thiết kế dành riêng cho các cơ sở giáo dục, đặc biệt là các trường đại học. Được phát triển từ sự hợp tác giữa các giảng viên, sinh viên và nhân viên tại các trường ở Bắc Mỹ và châu Âu, UniTime cung cấp một giải pháp linh hoạt, hiệu quả để quản lý lịch trình phức tạp như lịch học, kỳ thi và phân bổ tài nguyên (phòng học, giảng viên).
UniTime là phần mềm miễn phí, được duy trì bởi cộng đồng mã nguồn mở và UniTime LLC dưới sự bảo trợ của Apereo Foundation. Tính đến tháng 3 năm 2025, phiên bản mới nhất là UniTime 4.8 (build 189), phát hành vào ngày 10 tháng 12 năm 2024, cho thấy dự án vẫn được cập nhật thường xuyên và không lỗi thời.
Chức năng chính của UniTime
- Lập lịch khóa học (Course Timetabling): Tạo lịch giảng dạy tối ưu, tránh xung đột thời gian giữa các lớp học và đảm bảo phân bổ hợp lý phòng học, giảng viên.
- Lập lịch kỳ thi (Examination Timetabling): Sắp xếp lịch thi không trùng lặp, phù hợp với sinh viên và cơ sở vật chất.
- Quản lý phòng học: Phân bổ và theo dõi việc sử dụng phòng học cho các lớp học hoặc sự kiện khác.
- Phân bổ sinh viên (Student Scheduling): Đăng ký sinh viên vào các lớp học dựa trên nhu cầu cá nhân, tránh xung đột lịch trình.
- Tùy chỉnh và tích hợp: Hỗ trợ tích hợp với các hệ thống thông tin sinh viên hiện có hoặc hoạt động độc lập.
Công nghệ sử dụng trong UniTime
UniTime được xây dựng dựa trên các công nghệ hiện đại, đảm bảo tính ổn định và khả năng triển khai linh hoạt:
- Ngôn ngữ lập trình: Java (hỗ trợ Java 11 trở lên).
- Cơ sở dữ liệu: MySQL hoặc PostgreSQL.
- Framework: Sử dụng Hibernate 6.4 để quản lý dữ liệu.
- Xác thực: Hỗ trợ OAuth2, LDAP, và các phương thức xác thực khác.
- Triển khai: Có thể triển khai qua Docker, giúp đơn giản hóa quá trình cài đặt và quản lý.
- Giao diện: Web-based, dễ sử dụng trên nhiều thiết bị.
UniTime sử dụng cho công việc gì?
UniTime là lựa chọn lý tưởng cho:
- Các trường đại học và cao đẳng: Quản lý lịch học, kỳ thi và phòng học cho hàng nghìn sinh viên và giảng viên.
- Các tổ chức giáo dục nhỏ hơn: Sử dụng như một công cụ miễn phí để tối ưu hóa tài nguyên mà không cần đầu tư vào phần mềm thương mại đắt đỏ.
- Nghiên cứu học thuật: Các nhà nghiên cứu trong lĩnh vực tối ưu hóa lịch trình có thể tùy chỉnh mã nguồn để thử nghiệm các thuật toán mới.
Với tính năng mạnh mẽ và chi phí bằng 0, UniTime đặc biệt phù hợp cho các tổ chức muốn một giải pháp lập lịch hiệu quả, có thể tùy chỉnh mà không phụ thuộc vào các nhà cung cấp thương mại.
Hướng dẫn cài đặt UniTime với Docker trên aaPanel
Trong hướng dẫn này, chúng ta sẽ cài đặt UniTime phiên bản 4.8 (build 189) bằng Docker trên một máy chủ sử dụng aaPanel – một bảng điều khiển quản lý server phổ biến với giao diện thân thiện và tích hợp sẵn Docker Manager.
Yêu cầu trước khi cài đặt
- Máy chủ: Một VPS hoặc máy chủ chạy hệ điều hành Linux (Ubuntu, Almalinux, hoặc Debian được khuyến nghị).
- aaPanel: Đã cài đặt aaPanel trên máy chủ. Nếu chưa cài, bạn có thể làm theo hướng dẫn tại (https://dotrungquan.info/aapanel-1-huong-dan-cai-dat-control-aapanel-len-may-chu-linux/)
- Docker: Đã cài đặt Docker và Docker Compose thông qua aaPanel Docker Manager.
- Kết nối SSH: Truy cập terminal qua SSH (Putty, Terminal, hoặc aaPanel Terminal).
- Dung lượng: Ít nhất 2GB RAM và 10GB dung lượng trống để chạy UniTime và cơ sở dữ liệu.
Bước 1: Cài đặt aaPanel và Docker
1. Cài đặt aaPanel:
Truy cập SSH và chạy lệnh cài đặt aaPanel
URL=https://www.aapanel.com/script/install_7.0_en.sh && if [ -f /usr/bin/curl ];then curl -ksSO "$URL" ;else wget --no-check-certificate -O install_7.0_en.sh "$URL";fi;bash install_7.0_en.sh aapanel

Sau khi cài xong, truy cập giao diện aaPanel qua trình duyệt: http://:port được cung cấp như ảnh.
2. Cài Docker trong aaPanel:
Vào App Store > Tìm Docker > Nhấn Install. Sau khi cài xong, vào Docker Manager để kiểm tra Docker và Docker Compose đã sẵn sàng.

Bước 2: Tải và giải nén UniTime
Bạn có thể xem và tải các phiên bản mới tại đây: https://builds.unitime.org/
1. Tải tệp UniTime:
Trong terminal của aaPanel (hoặc SSH), chạy lệnh:
wget https://builds.unitime.org/unitime-4.8_bld189.zip
Lệnh này sẽ tải tệp nén UniTime 4.8 (build 189) từ máy chủ chính thức.
2. Giải nén tệp:
Thực hiện chạy lệnh sau
unzip unitime-4.8_bld189.zip
Sau khi giải nén, bạn sẽ thấy một thư mục chứa mã nguồn và tệp cấu hình Docker.
3. Di chuyển vào thư mục Docker:
Thực hiện chạy lênh sau
cd docker/
Thư mục này chứa tệp docker-compose.yml
và các tệp liên quan để triển khai UniTime.
Bước 3: Build và chạy UniTime với Docker
1. Build Docker images:
Chạy lệnh sau
docker-compose build
Lệnh này sẽ tạo các container cần thiết (bao gồm UniTime application server và cơ sở dữ liệu) dựa trên cấu hình trong docker-compose.yml
2. Khởi động UniTime:
Chạy lệnh sau
docker-compose up
Lệnh này sẽ khởi động tất cả các dịch vụ (UniTime và database). Nếu muốn chạy ở chế độ nền, thêm -d
:
docker-compose up -d

3. Kiểm tra trạng thái:
Trong aaPanel, vào Docker Manager > Tab Container để xem các container đang chạy (thường bao gồm unitime_app và unitime_db).

Nếu không có lỗi, UniTime sẽ chạy trên cổng mặc định (thường là 8888). User/passwd đều là admin/admin


Bước 4: Tạo proxy truy cập với tên miền và cài SSL
Việc tạo một proxy sẽ giúp bạn có thể truy cập bằng tên miền riêng của bạn.
Bạn chọn vào Website > Proxy Project. Sau đó chọn Add proxy và nhập vào các thông tin sau
- Domain name: Nhập vào tên miền
- Target: Nhập vào
http://ip:port
Các thông tin khác thì bạn giữa nguyên và chọn Confirm

Nếu muốn cài đặt SSL cho tên miền, bạn click vào dòng Not Set như ảnh. Chọn Let’s Encrypt => Chọn tên miền cài SSL và chọn Apply

Sau khi thiết lập xong, bạn đã có thể truy cập với tên miền.

Bước 5: Tùy chỉnh (Tùy chọn)
- Cấu hình cơ sở dữ liệu: Mở tệp
docker-compose.yml
để thay đổi thông tin database (nếu cần dùng MySQL/PostgreSQL bên ngoài). - Thay đổi cổng: Chỉnh sửa cổng trong
docker-compose.yml
nếu cổng8888
đã được sử dụng.
Kết luận
UniTime là một công cụ mạnh mẽ, miễn phí và linh hoạt để quản lý lịch trình học tập. Với hướng dẫn trên, bạn đã cài đặt thành công UniTime bằng Docker trên aaPanel, tận dụng giao diện quản lý tiện lợi của aaPanel để giám sát và vận hành. Bây giờ, bạn có thể bắt đầu cấu hình lịch học, kỳ thi và phòng học cho tổ chức của mình!
Nếu bạn cần thêm thông tin hoặc hỗ trợ, hãy tham khảo tài liệu chính thức tại https://www.unitime.org/ hoặc cộng đồng mã nguồn mở trên GitHub.