Bỏ qua để đến nội dung

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.

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

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.

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 compose v2
  • zstd và 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
  1. 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/
  2. 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.sh

    Các tùy chọn hữu ích:

    Terminal window
    sudo ./install.sh --profile jetson-gpu # force the profile
    sudo ./install.sh --with-systemd # also start on boot
    sudo ./install.sh --no-backup # skip the pre-migration snapshot (see below)

    Bên dưới, install.sh chạy các bước này theo thứ tự:

    1. 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.
    2. 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.
    3. Nạp images — docker load từ kho lưu trữ đi kèm. Không pull, không build.
    4. Đặt các tệp runtime vào /opt/aiboard.
    5. Sinh secret — tạo secret ký JWT và mật khẩu admin trên box, và ghi secret vào /opt/aiboard/.env (mode 600). Không có secret nào đi kèm bên trong gói.
    6. 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.
    7. Khởi chạy stack — docker compose up -d.
    8. Cổng tình trạng — chờ các dịch vụ báo cáo khỏe mạnh.
    9. Tạo mầm admin và in URL bảng điều khiển và mật khẩu admin một lần.
  3. 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.sh từ 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
  4. 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.onnx trong 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.
  5. 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-real và aiboard-backend-real phải hiển thị (healthy), và aiboard-frontend-real hiể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.

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:

Terminal window
sudo ./update.sh

update.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ó:

  1. 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.
  2. Nạp các image mới và trỏ cấu hình tới chúng.
  3. Tạo lại stack. Backend migrate cơ sở dữ liệu khi khởi động.
  4. 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ì.
  5. Dọn dẹp, chỉ sau khi bản phát hành mới khỏe mạnh:
    • Giữ AIBOARD_BACKUP_KEEP kho lưu trữ ảnh chụp nhanh mới nhất (mặc định 3) và xóa các bản cũ hơn. Đặt AIBOARD_BACKUP_KEEP=0 trong /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.

Để 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.

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ạng backup-<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-backup bỏ qua ảnh chụp nhanh ở cả hai script.

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:

/opt/aiboard/.env
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ờ.

Triệu chứngNó có nghĩa gì
Bundle manifest missingBạ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 mismatchGó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 absentMá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 DockerDocker trên Jetson này không có runtime nvidia. Sửa JetPack image để Docker liệt kê nó.
Low diskKhô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ị startingKhở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ớpThiế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.