Skip to content

Deploy with Docker Compose

Neutree supports deploying monitoring components and control plane using Docker Compose. It is recommended to deploy monitoring components and control plane on separate hosts to improve platform availability and performance.

Please refer to the following sections to configure the system and install Docker as the container runtime based on your operating system type.

  1. Configure static IP address:

    Terminal window
    sudo vi /etc/sysconfig/network-scripts/ifcfg-<interface>

    Replace <interface> with your network interface name, such as eth0.

  2. Configure DNS server:

    Terminal window
    sudo vi /etc/resolv.conf
  3. Disable firewall:

    Terminal window
    sudo systemctl stop firewalld && sudo systemctl disable firewalld
  4. Disable SELinux:

    Terminal window
    echo -e "SELINUX=disabled\nSELINUXTYPE=targeted" | sudo tee /etc/selinux/config
    sudo setenforce 0
  1. Install Docker CE:

    Terminal window
    sudo dnf -y install dnf-plugins-core
    sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
    sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Start Docker service:

    Terminal window
    sudo systemctl enable --now docker
  3. Verify Docker installation:

    Terminal window
    docker --version
  4. Reboot the operating system to apply the configuration:

    Terminal window
    sudo reboot

Log in to the host where you will deploy the monitoring components.

Preparation

  1. Download the Neutree CLI from GitHub Releases according to your server’s CPU architecture:

    Terminal window
    # For amd64
    curl -LO https://github.com/neutree-ai/neutree/releases/download/v1.0.0/neutree-cli-amd64
    # For aarch64
    curl -LO https://github.com/neutree-ai/neutree/releases/download/v1.0.0/neutree-cli-aarch64
  2. Rename and grant executable permissions to the CLI:

    Terminal window
    mv neutree-cli-<arch> neutree-cli
    chmod +x neutree-cli

    Replace <arch> with your server’s CPU architecture: amd64 or aarch64.

  3. Download the control plane offline image file for the specified version from GitHub Releases.

  4. Load the control plane offline image using the CLI tool:

    Terminal window
    ./neutree-cli import controlplane \
    --package <controlplane_package> \
    --local
    ParameterDescription
    <controlplane_package>Control plane offline image filename, format: neutree-controlplane-v1.0.0-<arch>.tar.gz.

Steps

  1. Start the monitoring service:

    Terminal window
    ./neutree-cli launch obs-stack
  2. Access http://<obstack_ip>:3030/. If the Grafana login interface appears, the monitoring components have been successfully deployed.

    Replace <obstack_ip> with the IP address of the server where the monitoring components are deployed.

Log in to the host where you will deploy the control plane.

Preparation

  1. Run the following command to generate a random JWT secret:

    Terminal window
    openssl rand -base64 32 | tr '+/' '-_' | tr -d '='
  2. Download the Neutree CLI from GitHub Releases according to your server’s CPU architecture:

    Terminal window
    # For amd64
    curl -LO https://github.com/neutree-ai/neutree/releases/download/v1.0.0/neutree-cli-amd64
    # For aarch64
    curl -LO https://github.com/neutree-ai/neutree/releases/download/v1.0.0/neutree-cli-aarch64
  3. Rename and grant executable permissions to the CLI:

    Terminal window
    mv neutree-cli-<arch> neutree-cli
    chmod +x neutree-cli

    Replace <arch> with your server’s CPU architecture: amd64 or aarch64.

  4. Download the control plane offline image file for the specified version from GitHub Releases.

  5. Load the control plane offline image using the CLI tool:

    Terminal window
    ./neutree-cli import controlplane \
    --package <controlplane_package> \
    --local
    ParameterDescription
    <controlplane_package>Control plane offline image filename, format: neutree-controlplane-v1.0.0-<arch>.tar.gz.

Steps

  1. Start the control plane service:

    Terminal window
    ./neutree-cli launch neutree-core \
    --version=v1.0.0 \
    --metrics-remote-write-url=http://<obstack_ip>:8480/insert/0/prometheus/ \
    --jwt-secret=<jwt_secret> \
    --grafana-url=http://<obstack_ip>:3030 \
    --admin-password=<admin_password>
    ParameterDescription
    <obstack_ip>IP address of the server where the monitoring components are deployed.
    <jwt_secret>JWT secret string generated in the preparation step.
    <admin_password>Initial password for the Neutree administrator. Optional but recommended to set a custom initial password. If left empty, the system will auto-generate one, which can be retrieved after deployment using kubectl -n neutree logs -l app.kubernetes.io/component=neutree-post-migration-hook-job.
  2. Check service status:

    Terminal window
    docker ps
  3. Access http://<control_plane_ip>:3000 using the administrator account admin@neutree.local and the initial password. Successfully accessing the Neutree management interface indicates successful deployment.

    Replace <control_plane_ip> with the IP address of the server where the control plane is deployed.