Skip to main content
Doanh nghiệp có thể tự triển khai và quản lý phần mềm CyStack Endpoint trên máy chủ của Doanh nghiệp theo hướng dẫn dưới đây.
Lưu ý: Hiện tại Endpoint Server chỉ hỗ trợ máy chủ Linux.

Yêu cầu trên máy chủ

Lưu ý: Máy chủ cần có IP công khai (Public IP).

Trường hợp quản lý ít hơn 100 thiết bị

Cài tất cả các dịch vụ phụ thuộc redis, mySQL trực tiếp trên Server thì cần Server đáp ứng tối thiểu những yêu cầu như sau:
Số máy chủSố CPU trên 1 máy chủ (số core)Lượng RAM trên 1 máy chủDung lượng ổ đĩa (SSD)
124GB75GB

Trường hợp quản lý từ 100 - 1000 thiết bị

Trường hợp 1: Cài tất cả các dịch vụ phụ thuộc redis, mySQL trực tiếp trên Server thì cần Server đáp ứng tối thiểu những yêu cầu như sau:
Số máy chủSố CPU trên 1 máy chủ (số core)Lượng RAM trên 1 máy chủDung lượng ổ đĩa (SSD)
110.517.1GB200 - 300GB
Trường hợp 2: Đối với các dịch vụ phụ thuộc redis, mySQL mà triển khai trong các Container thì yêu cầu tối thiểu về cấu hình của Container như sau:
Fleet ContainerSố CPU trên 1 Container (số core)Lượng RAM trên 1 Container
10.5 core4GB
DependenciesPhiên bảnSố CPU trên 1 Container (số core)Lượng RAM trên 1 ContainerDung lượng ổ đĩa (SSD)Số Container
Redis621.47 GB3
MySQL8.0.mysql_aurora.3.07.1 (theo khuyến nghị của Fleet)24.3 GB10 GB2

Hướng dẫn cài đặt

Khách hàng có thể cài đặt tự động CyStack_Endpoint sử dụng EndpointCtl (một file Binary).
Lưu ý: user không nên ấn Ctrl + C trong quá trình chạy vì có thể gây lỗi không mong muốn.
1

Tải file cài đặt

Tải từ đường link hoặc bằng cách chạy lệnh:
mkdir -p ~/endpoint && cd ~/endpoint && wget https://d.cystack.net/endpointctl/endpointctl
install-server-1.pngCó thể kiểm tra file đã được tải về hay chưa bằng cách chạy lệnh này:
ls -l
install-server-2.png
2

Cấp quyền thực thi cho file vừa tải

chmod +x endpointctl
install-server-3.png
3

Cài đặt

./endpointctl start
Lúc này EndpointCtl sẽ yêu cầu quyền root để tiền hành cài đặt. Người dùng cần nhập password cho tài khoản hiện tại (tài khoản này cần có quyền root)Sau khi nhập password, sẽ mất khoảng 1-3 phút để server download và cài đặt các dịch vụ cần thiết.
4

Sử dụng cấu hình mặc định

nhập vào 1 ấn Enter
install-server-4.png
5

Sử dụng cấu hình Mysql do doanh nghiệp cung cấp (nếu có)

nhập vào 2 ấn Enter
  • ❗❗❗Lưu ý quan trọng khi sử dụng config Mysql do chính doanh nghiệp cung cấp
  • user được yêu cầu nhập các thông tin như bên dưới, kiểm trạng thái của biến sql_require_primary_key bằng lệnh SHOW VARIABLES LIKE 'sql_require_primary_key';
Mysql Host
Mysql Port
Mysql database for ces_fleet
Mysql user for ces_fleet
Mysql password for ces_fleet
Mysql database for ces_api
Mysql user for ces_api
Mysql password for ces_api
  • Trường hợp: sql_require_primary_key: off user cần tạo trước username, password, database cho 3 dịch vụ ces_api, ces_fleet, data-labling
  • Trường hợp sql_require_primary_key: on user cần đưa trạng thái này về off. Ví dụ với Mysql trên DigitalOcean:
  • Các bước:
  1. Lấy API TOKEN: https://cloud.digitalocean.com/account/api/tokens
image.png
  1. Lấy database id bằng cách sử dụng API
curl --location 'https://api.digitalocean.com/v2/databases' \
--header 'Authorization: Bearer dop_v1_c06a1847af324970bfd91c88b15e287f916546510fe1931cf3321bb691448c79' \
--header 'Cookie: __cf_bm=.TDBT5a.NegHZrSasA4ONNbmv4IEhMQWXclz2hkaAYQ-1747818408-1.0.1.1-4oduR8iSLiWGM0NtReSRvUtYlJ1k9Hd5cBRY5BaW1Su7k_ElxRlf65WQrH3czBAPHo7fwU5BYBzHXUBmf5vUAs_gmPHnsy8jdUgH956qZu6DuMeOK3ney.HIBEcI.5Od'
  1. Set sql_require_primary_key: off sử dụng API
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"config": {"sql_require_primary_key": false}}' \
"https://api.digitalocean.com/v2/databases/your-db-id-here/config"
  1. Tham khảo thêm tại:
  2. https://www.digitalocean.com/community/questions/how-do-i-disable-the-require-primary-key-when-creating-a-table
  3. https://docs.digitalocean.com/reference/api/digitalocean/#section/Introduction/Requests
  • Sau khi setup sql_require_primary_key , user tạo trước username, password, database cho 3 dịch vụ ces_api, ces_fleet, data-labling
  • Sau đó code chạy và user sẽ cần nhập thêm WorkSpaceIdWorkSpaceSecret
Đợi 1 khoảng thời gian khoảng 3-5 phút để quá trình khởi tạo hoàn tất (thời gian có thể lâu hơn nếu cấu hình server không đáp ứng yêu cầu bên trên). Sau đó sẽ hiển thị phần thông tin các dịch vụ đang chạy, và người dùng được yêu cầu nhập:
Work Space ID
Work Space Secret

(các thông tin này sẽ được CyStack cung cấp)
(người dùng nhập thông tin bằng tay, nhấn Enter để tiếp tục)
image.pngimage.pngSau khi nhập, đợi để quá trình cài đặt hoàn tất:image.pngTrong quá trình đợi 5-10 phút, nếu có trường hợp cần yêu cầu quyền root để cài đặt, khách hàng hãy nhập password của user hiện tại đang chạy trên server (user này cần có quyền root)image.pngKhách hàng cần chuẩn bị trước các thông tin sau:
MySQL Host: localhost
MySQL Port: 3306
MySQL database name for Fleet: ces_fleet
MySQL Username for Fleet: ces_fleet_user
MySQL Password for Fleet: Password1!
MySQL database name for Api: ces_api
MySQL Username for Api: ces_api_user
MySQL Password for Api : Password2!
MySQL database name for Data Labeling: ces_data_labeling
MySQL Username for Data Labeling: ces_data_labeling_user
MySQL Password for Data Labeling: Password3!
6

Nhận hướng dẫn

Trong lúc đó, CyStack sẽ tạo file cài công cụ Agent dành riêng cho doanh nghiệp (quá trình mất 3-5 phút, và Quản trị viên sẽ được thông báo qua email khi file cài đặt sẵn sàng). Người dùng có thể tìm thấy file cài đặt ở màn Quản lý thiết bị > Thiết bị > chọn nút Cài đặt agentinstall-agent.png
7

Cài đặt agent

Quản trị viên cần yêu cầu người dùng tải và cài đặt công cụ Agent trên thiết bị cần quản lý. Xem hướng dẫn
  1. Đợi 1 khoảng thời gian khoảng 3-5 phút để quá trình khởi tạo hoàn tất (thời gian có thể lâu hơn nếu cấu hình server không đáp ứng yêu cầu bên trên), sau đó sẽ hiển thị phần thông tin các dịch vụ đang chạy.
  2. Người dùng được yêu cầu nhập:
Work Space ID
Work Space Secret

(các thông tin này sẽ được CyStack cung cấp)
(người dùng nhập thông tin bằng tay, nhấn Enter để tiếp tục)
image.png
  1. Sau khi nhập, đợi để quá trình cài đặt hoàn tất
Trong quá trình đợi 5-10 phút, nếu có trường hợp cần yêu cầu quyền root để cài đặt, khách hàng hãy nhập password của user hiện tại đang chạy trên server (user này cần có quyền root)
  1. 1 file agent sẽ được tự động sinh ra sau khi cài đặt xong, có dạng cystack-endpoint_1.0.21_amd64.deb. Cần kiểm tra file đó tồn tại hay chưa bằng lệnh
ls -l
image.png Khách hàng sử dụng file có định dạng: cystack-endpoint_1.0.22_amd64.deb để cài đặt cho các máy agent.
  1. Sau khi quá trình cài đặt hoàn tất, khách hàng chạy lệnh sau để tự động Update định kỳ.
nohup ./endpointctl update > endpoint_updater.log 2>&1 &
Kết quả là 1 chuỗi số ngẫu nhiên có định dạnh như ảnh image.png

Hướng dẫn sử dụng

  • Danh sách các tham số và cờ
    • Subcommand
    • start
    ./endpointctl start
    
Dùng để cài đặt CyStack_Endpoint, user có thể chọn option:
  • sử dụng toàn bộ config mặc định
  • Code sẽ gen toàn bộ config mặc định, user cần đợi code chạy, sau đó nhập WorkSpaceIdWorkSpaceSecret
Sau khi hoàn thành, user sẽ có file config gốc tại: ~/.cystack/endpoint-server/configs/config.yml
  • Flags
./endpointctl start --**config** <config-path>
  • user nhập đường dẫn của file config (file config của user phải giựa trên file config gốc)
./endpointctl start **--re-config
Lưu ý: khi sử dụng cờ này, toàn bộ data trong mysql đã sinh trước đó sẽ bị xóa.**
  • Trường hợp user nhập sai WorkSpaceIdWorkSpaceSecret hoặc sai thông tin Mysql thì có thể sử dụng Flag này để nhập lại
  • Nếu User sử dụng Mysql của chính họ, họ sẽ cần xóa các database đã tạo trước rồi mới chạy Flag --re-config
  • stop
Dừng các service đang chạy trong file docker-compose.yml
./endpointctl stop
image.png
  • status
Hiển thị trạng thái của các service đang chạy trong file docker-compose.yml
./endpointctl status
image.png
  • backup
Tạo ra 1 file nén .zip tại ~/.cystack/endpoint_server/backupdb/ gồm các file backup database bên trong. (Đường dẫn đầy đủ của file zip có dạng: ~/.cystack/endpoint_server/backupdb/1610090625.zip)
./endpointctl backup
  • restore
Dùng để nạp file backup vào database. User phải nhập đường dẫn file zip khi sử dụng subcommand này.
./endpointctl backup ~/.cystack/endpoint_server/backupdb/1610090625.zip
  • update
Sau khi cài đặt xong xuôi, chạy lệnh này để tự động update vào 0H hàng ngày.
./endpointctl update
Chạy lệnh bên dưới để chương trình Run ở dạng Background
nohup ./endpointctl update > endpoint_updater.log 2>&1 &
  • Một số lỗi tình huống
    1. Trường hợp Container có trạng thái Unhealthy
  • Nếu đó là ces_fleet_container:
  1. có thể do database hoặc máy của user quá yếu, migrate quá lâu so với thời gian healthcheck → Unhealthy.
  • Cách xử lý 1:
kiểm tra log của ces_fleet_container:
  • Nếu log như này thì tức là đã chạy xong. Lúc này có thể chạy lệnh endpointctl start —reconfig để nhập config của workspace_idworkspace_secret
image.png
  • Nếu logs như này thì có nghĩa là ces_fleet_container vẫn đang chạy migrate
image.png
  • Nếu lỗi khác: thì có khả năng sai thông tin kết nối database, lúc này cần xóa hết config và thực hiện chạy lại từ đầu.
  • Cách xử lý 2: chạy lại lệnh endpointctl start
  1. Truờng hơp user chạy với file config bị thiếu config →chắc chắn lỗi (conantainer sẽ bị chết do thiếu config)
  • Giải pháp: sử dụng Start mặc định lần đầu để có được file config gốc, sau đó copy file config này và chỉnh sửa
  1. Trường hợp backup quá lâu có 2 tình huống:
  • nếu không sử dụng Mysql mặc định: có thể do cấu hình của máy chủ chạy Mysql đó không mạnh
  • nếu sử dụng Mysql mặc định: có thể do cấu hình của server đang chạy không mạnh
image.png
  • Giải pháp: đợi cho đến khi việc backup hoàn thành
  1. Trường hợp lỗi khi lấy Token
image.png Liên hệ CyStack Support để được hỗ trợ.
  1. Debug bằng cách: xem log của caddy
  • Kiểm tra logs của caddy container
docker logs -f caddy_container
  • Kiểm tra xem container service còn sống hay không
docker ps -a | grep caddy
  1. Các tình huống lỗi có thể xảy ra cho trường hợp này: (xem logs của caddy container)
  2. domain name mà CyStack cung cấp chưa trỏ đúng vào IP public của khách hàng
  • Giải pháp: khách hàng kiểm tra lại địa chỉ IP public và gửi lại để CyStack xử lý
  1. domain name bị lỗi vượt quá số lần đăng kí SSL vì caddy tự động sử dụng Let’t Enscript để đăng kí SSL
  • Giải pháp: đổi domain name