Bun
Cài Máy chủ thi bằng Bun và tự chạy nó như một dịch vụ.
Gói Bun không cài dịch vụ, Caddy hay quy tắc tường lửa. Bạn tự làm ba việc đó. Nếu muốn bộ cài làm hết, dùng gói Linux.
Bạn cần Bun, Caddy 2, và địa chỉ registry hoặc tệp .tgz do nhóm vận hành cấp. Bạn cũng cần làm xong phần Chuẩn bị trước khi cài.
Cài Máy chủ thi
Cài gói
Nếu nhóm vận hành cấp registry, thêm registry vào ~/.bunfig.toml:
[install.scopes]
"@edtech" = { url = "https://<registry>/", token = "<token>" }Sau đó cài gói:
bun add -g @edtech/exam-runtimeNếu nhóm vận hành gửi tệp .tgz, chạy bun add -g ./edtech-exam-runtime-<phiên bản>.tgz thay cho hai bước trên.
Tạo tệp cấu hình
Tạo tệp /etc/exam-runtime.env. Thay địa chỉ AMG-Cloud, IP LAN và đường dẫn Caddy bằng giá trị của máy:
SYNC_GATEWAY_URL=https://<địa-chỉ-AMG-Cloud>
LAN_HOST=<IP-LAN>
RUNTIME_PROXY_CADDY_BIN=/usr/bin/caddy
AMG_DATA=/var/lib/exam-runtime
LOCAL_DB_PATH=/var/lib/exam-runtime/data/runtime.db
LOCAL_STORE_PATH=/var/lib/exam-runtime/data/storeTạo chứng chỉ
Chạy lệnh này bằng chính người dùng sẽ chạy dịch vụ:
exam-runtime cert --env-file /etc/exam-runtime.envLệnh in đường dẫn chứng chỉ và địa chỉ tệp install-ca.cmd cho Máy thi.
Tạo và bật dịch vụ
Tạo tệp /etc/systemd/system/exam-runtime.service:
[Unit]
Description=Exam Runtime
After=network-online.target
[Service]
ExecStart=/root/.bun/bin/exam-runtime --env-file /etc/exam-runtime.env
Environment=PATH=/root/.bun/bin:/usr/bin:/bin
Restart=always
[Install]
WantedBy=multi-user.targetGiữ dòng Restart=always, vì Máy chủ thi tự khởi động lại bằng cách thoát. Sau đó bật dịch vụ:
sudo systemctl daemon-reload
sudo systemctl enable --now exam-runtimeMở cổng 18443
Mở cổng TCP 18443 cho LAN trên tường lửa. Sau đó mở https://<máy-chủ-LAN>:18443/server/ để kiểm tra.
Tiếp theo, đăng ký máy chủ rồi cài chứng chỉ trên Máy thi.
Quản lý máy chủ sau khi cài
| Việc | Lệnh |
|---|---|
| Xem log | journalctl -u exam-runtime -f |
| Cập nhật | Chạy bun add -g @edtech/exam-runtime@latest, rồi chạy sudo systemctl restart exam-runtime. |
| Đổi IP LAN | Sửa LAN_HOST, chạy lại exam-runtime cert, rồi khởi động lại dịch vụ. |
| Gỡ cài đặt và giữ dữ liệu | bun remove -g @edtech/exam-runtime |
Không cập nhật khi đang có Ca thi. Sao lưu thư mục tls trong AMG_DATA. Nếu mất khóa CA, bạn không làm mới được chứng chỉ.
Khi gặp sự cố
| Thông báo | Làm gì |
|---|---|
needs Bun ..., not ...: bun upgrade | Chạy bun upgrade. |
No LAN certificate in ... | Tạo chứng chỉ như bước 3, với cùng tệp cấu hình. |
requires LOCAL_DB_PATH and LOCAL_STORE_PATH | Thêm hai khóa đó vào tệp cấu hình. |
exam-runtime: command not found | Thêm ~/.bun/bin vào PATH. |