Cài đặt từ gói offline
Đây là cách cài đặt tại một site biên của khách hàng khi không có internet, không truy cập được registry, và không build image trên box. Bạn cài đặt mọi thứ từ một gói phát hành tự chứa duy nhất, được giao trên thiết bị USB.
Bạn nhận được gì
Phần tiêu đề “Bạn nhận được gì”Một gói phát hành là một thư mục, được đặt tên theo hồ sơ và phiên bản, ví dụ
jetson-gpu-v1.58.4. Hồ sơ jetson-gpu nhắm tới Jetson TX2 chạy JetPack 4.5 và
chạy suy luận trên GPU qua CUDA.
Bên trong gói:
Thư mụcjetson-gpu-v1.58.4/
Thư mụcimages/
- jetson-gpu-v1.58.4.images.tar.zst ba image dịch vụ, đã nén
- manifest.txt hồ sơ, phiên bản, tag image, checksum
Thư mụccompose/
- docker-compose.release.yml stack dựa trên image (không có bước build)
- docker-compose.tls.yml overlay HTTPS (tùy chọn)
- docker-compose.certs.yml overlay chứng chỉ TLS của datasource (tùy chọn, xem bên dưới)
- .env.template placeholder cho cổng và thiết lập
Thư mụcmodels/
- predictive_maintenance_op15.onnx mô hình mầm demo (trọng số ngẫu nhiên)
Thư mụclib/ các script hỗ trợ trình cài đặt
- …
Thư mụcsystemd/ mẫu unit tự khởi động khi boot
- …
Thư mụccerts/
- …
Thư mụctls/
- …
- install.sh
- update.sh
- uninstall.sh
- compact-db.sh thu hồi dung lượng đĩa của cơ sở dữ liệu
- README.txt
Nơi stack đang chạy được lưu
Phần tiêu đề “Nơi stack đang chạy được lưu”Trình cài đặt sao chép những gì stack đang chạy cần vào /opt/aiboard: các tệp
compose, mô hình mầm, .env đã sinh, tls/, certs/, và backups/ trước cập nhật.
Sau một lần cài đặt hoặc cập nhật thành công, box đang chạy không còn cần thư mục gói
nữa.
Trước khi bắt đầu
Phần tiêu đề “Trước khi bắt đầu”Jetson đích phải đã cài sẵn những thành phần này. Chúng đi kèm trên golden JetPack image. Trình cài đặt kiểm tra chúng và dừng lại nếu thiếu bất kỳ thứ gì; nó không tự cài chúng cho bạn.
- Docker Engine 20.10 trở lên, kèm plugin
docker composev2 zstdvàopenssl- NVIDIA container runtime, đã đăng ký với Docker
- Khoảng 6 GB dung lượng đĩa trống tại nơi bạn sao chép gói
Runbook cài đặt
Phần tiêu đề “Runbook cài đặt”-
Sao chép gói vào box
Phần tiêu đề “Sao chép gói vào box”Sao chép toàn bộ thư mục gói từ thiết bị USB của bạn vào Jetson, rồi mở một terminal trong đó:
Terminal window cd jetson-gpu-v1.58.4/ -
Chạy trình cài đặt
Phần tiêu đề “Chạy trình cài đặt”Trình cài đặt phát hiện Jetson, nạp các image container, sinh secret, khởi chạy stack, và chờ tình trạng khỏe mạnh.
Terminal window sudo ./install.shCác tùy chọn hữu ích:
Terminal window sudo ./install.sh --profile jetson-gpu # force the profilesudo ./install.sh --with-systemd # also start on bootsudo ./install.sh --no-backup # skip the pre-migration snapshot (see below)Bên dưới,
install.shchạy các bước này theo thứ tự:- Preflight — kiểm tra kiến trúc CPU, Docker, Compose,
zstd,openssl, Jetson và NVIDIA container runtime của nó, và dung lượng đĩa trống. - Xác minh checksum của kho lưu trữ image. Bước này phát hiện media hỏng hoặc bị giả mạo.
- Nạp images —
docker loadtừ kho lưu trữ đi kèm. Không pull, không build. - Đặt các tệp runtime vào
/opt/aiboard. - Sinh secret — tạo secret ký JWT và mật khẩu admin trên box, và ghi secret
vào
/opt/aiboard/.env(mode600). Không có secret nào đi kèm bên trong gói. - Chụp nhanh cơ sở dữ liệu — nếu box đã có cơ sở dữ liệu, trình cài đặt sao lưu nó trước khi bản phát hành mới có thể migrate. Xem Ảnh chụp nhanh cơ sở dữ liệu.
- Khởi chạy stack —
docker compose up -d. - Cổng tình trạng — chờ các dịch vụ báo cáo khỏe mạnh.
- Tạo mầm admin và in URL bảng điều khiển và mật khẩu admin một lần.
- Preflight — kiểm tra kiến trúc CPU, Docker, Compose,
-
Lưu lại mật khẩu admin
Phần tiêu đề “Lưu lại mật khẩu admin” -
Xác nhận secret đã được ghi
Phần tiêu đề “Xác nhận secret đã được ghi”Trình cài đặt sinh secret ký JWT tự động. Bạn thường không bao giờ động đến nó, nhưng có thể xác nhận
.envđược bảo vệ tồn tại:Terminal window sudo ls -l /opt/aiboard/.env # expect mode -rw------- (600)Nếu chính sách doanh nghiệp yêu cầu giá trị của riêng bạn, hãy đặt nó trong tệp đó, rồi chạy lại
sudo ./update.shtừ gói bạn đã cài để áp dụng. Mọi phiên đăng nhập sẽ kết thúc khi secret thay đổi.# /opt/aiboard/.env (placeholder — generate a strong random value, do not reuse)AIBOARD_JWT_SECRET=your-strong-random-jwt-secret -
Thay thế mô hình demo
Phần tiêu đề “Thay thế mô hình demo”Gói đi kèm một mô hình demo với trọng số ngẫu nhiên. Thay nó bằng mô hình đã huấn luyện của bạn để các dự đoán có ý nghĩa. Mô hình cho TX2 phải dùng ONNX opset 15 trở xuống.
- Tải lên từ bảng điều khiển (khuyến nghị). Xem Triển khai mô hình.
- Trước lần cài đặt đầu tiên, bạn có thể ghi đè
models/predictive_maintenance_op15.onnxtrong gói. Mỗi lần cập nhật sẽ làm mới mô hình mầm từ gói mới, nên hãy dùng bảng điều khiển cho thay đổi lâu dài.
-
Kiểm tra tình trạng
Phần tiêu đề “Kiểm tra tình trạng”Xác nhận các dịch vụ đang chạy:
Terminal window docker ps --filter name=aiboard- --format 'table {{.Names}}\t{{.Status}}'aiboard-inference-realvàaiboard-backend-realphải hiển thị(healthy), vàaiboard-frontend-realhiển thịUp. Sau đó mở URL bảng điều khiển mà trình cài đặt đã in và đăng nhập bằng tài khoản admin.
Vận hành ngày-2
Phần tiêu đề “Vận hành ngày-2”Triển khai một gói mới hơn. Sao chép nó vào box, mở một terminal trong đó, và chạy:
sudo ./update.shupdate.sh đọc cấu hình đang chạy từ /opt/aiboard/.env, nên bạn không cần sao
chép gì giữa các thư mục gói. Sau đó nó:
- Chụp nhanh cơ sở dữ liệu khi các tiến trình ghi đã dừng, và xác minh kho lưu trữ. Xem Ảnh chụp nhanh cơ sở dữ liệu.
- Nạp các image mới và trỏ cấu hình tới chúng.
- Tạo lại stack. Backend migrate cơ sở dữ liệu khi khởi động.
- Chờ tình trạng khỏe mạnh. Nếu stack không khỏe mạnh, quá trình cập nhật dừng lại, in cách rollback, và không xóa gì.
- Dọn dẹp, chỉ sau khi bản phát hành mới khỏe mạnh:
- Giữ
AIBOARD_BACKUP_KEEPkho lưu trữ ảnh chụp nhanh mới nhất (mặc định3) và xóa các bản cũ hơn. ĐặtAIBOARD_BACKUP_KEEP=0trong/opt/aiboard/.envđể giữ mọi kho lưu trữ. Xem Biến môi trường. - Giữ image của bản phát hành vừa cài và bản phát hành mà nó thay thế, và xóa các image Xisom cũ hơn. Khi bạn chạy lại cùng một bản phát hành, ví dụ sau khi cổng tình trạng thất bại, nó bỏ qua bước dọn image để bản phát hành trước vẫn còn cho rollback.
- Giữ
Để bỏ qua ảnh chụp nhanh, truyền --no-backup. Chỉ làm vậy nếu bạn đã chụp nhanh
bằng cách khác: migration cơ sở dữ liệu chỉ đi một chiều.
sudo ./uninstall.sh # stop the stack, KEEP all datasudo ./uninstall.sh --purge # also delete the database, models, and logs (confirmation prompt)Ảnh chụp nhanh cơ sở dữ liệu
Phần tiêu đề “Ảnh chụp nhanh cơ sở dữ liệu”Cả install.sh và update.sh đều sao lưu cơ sở dữ liệu trước khi bản phát hành mới
có thể migrate nó:
- Ảnh chụp nhanh được tạo khi các tiến trình ghi của cơ sở dữ liệu đã dừng, nên kho lưu trữ nhất quán. Stack khởi động lại khi lần chạy tiếp tục; nếu lần chạy thất bại trước thời điểm đó, các container đã dừng được khởi động lại.
- Kho lưu trữ được đọc lại trước khi thay đổi bất kỳ thứ gì khác. Nếu không đọc lại được, lần chạy dừng khi cơ sở dữ liệu hiện tại vẫn còn nguyên.
- Kho lưu trữ được ghi vào
/opt/aiboard/backups/dưới dạngbackup-<UTC timestamp>.tgz. Lần chạy in lệnh khôi phục chính xác bên cạnh tên kho lưu trữ. - Ảnh chụp nhanh chỉ bao gồm cơ sở dữ liệu, không bao gồm mô hình đã tải lên. Hãy sao lưu volume mô hình riêng nếu bạn cần rollback mô hình.
--no-backupbỏ qua ảnh chụp nhanh ở cả hai script.
Chứng chỉ TLS của datasource
Phần tiêu đề “Chứng chỉ TLS của datasource”TLS phía datasource — CA, chứng chỉ client và khóa mà một datasource MQTT hoặc OPC UA
dùng để tới một broker hoặc server đã bảo mật — tách biệt với chứng chỉ HTTPS của
chính box. Mặc định nó tắt. Bật nó bằng một cờ .env, đối xứng với
AIBOARD_TLS_ENABLED:
AIBOARD_CERTS_ENABLED=1Đặt các tệp CA và chứng chỉ/khóa client MQTT/OPC UA của bạn vào
/opt/aiboard/certs/. Khi cờ bật, trình cài đặt và update.sh đặt overlay
docker-compose.certs.yml đi kèm lên trên stack phát hành, và backend mount thư
mục đó ở chế độ chỉ đọc. Trước lần cài đặt đầu tiên, hãy đặt cờ trong
compose/.env.template của gói. Trên một box đang chạy, hãy chạy lại
sudo ./update.sh sau khi đổi cờ.
Nếu có gì đó sai
Phần tiêu đề “Nếu có gì đó sai”| Triệu chứng | Nó có nghĩa gì |
|---|---|
Bundle manifest missing | Bạn đã chạy trình cài đặt từ một thư mục nguồn, không phải một gói đã lắp ráp. Dùng thư mục gói bạn đã sao chép từ USB. |
Architecture mismatch | Gói dành cho Jetson arm64, và máy này không phải. Sao chép gói vào Jetson. |
/etc/nv_tegra_release is absent | Máy này không phải Jetson chạy L4T. Hãy cài trên Jetson TX2. |
NVIDIA container runtime not wired into Docker | Docker trên Jetson này không có runtime nvidia. Sửa JetPack image để Docker liệt kê nó. |
Low disk | Không đủ dung lượng trống cho các image. Giải phóng khoảng 6 GB và thử lại. |
Suy luận hiển thị starting | Khởi tạo CUDA mất tối đa khoảng 90 giây ở lần khởi động đầu — hãy chờ. Nếu sau đó nó chuyển sang unhealthy, kiểm tra docker logs aiboard-inference-real. |
Found an existing install at: … | Box được cài trước khi có /opt/aiboard. Chạy lại cùng script đó một lần với --migrate. |
| Checksum kho lưu trữ không khớp | Thiết bị USB bị hỏng hoặc bị giả mạo. Sao chép lại gói và thử lại. |
Xem runbook Khắc phục sự cố đầy đủ để có các cách sửa theo từng triệu chứng.