Wazuh dashboard
The build-packages.sh
script, located in the dev-tools/build-packages/
folder, orchestrates the package generation process. This script bundles plugins into a single application and supports tar
, rpm
, and deb
distributions. It accepts the following parameters:
version
revision
distribution
wazuh-dashboard
,wazuh-dashboard-plugins
, andwazuh-security-dashboards-plugin
package paths
Official packages are built through a GitHub Actions pipeline, however, the process is designed to be independent enough for maximum portability. The building process is self-contained in the application code.
Build manually
Requirements:
Docker: Refer to Docker installation guide.
NVM (Node Version Manager): Refer to NVM installation guide.
Yarn v1.22.22 (Node Package Manager): Refer to Yarn installation guide.
Utilities: Ensure the following are available:
zip
unzip
gzip
brotli
curl
Generating zip packages
To use the script you first need to generate the packages from these repositories:
wazuh-dashboard
wazuh-security-dashboards-plugin
wazuh-dashboard-plugins
To build the packages, follow these steps:
Clone the Wazuh dashboard repository and build the application.
$ git clone -b <BRANCH_OR_TAG> https://github.com/wazuh/wazuh-dashboard.git $ cd wazuh-dashboard/ $ nvm install $(cat .nvmrc) $ nvm use $(cat .nvmrc) $ yarn osd bootstrap $ yarn build-platform --linux --skip-os-packages --release
Example:
$ git clone -b v4.10.1 https://github.com/wazuh/wazuh-dashboard.git $ cd wazuh-dashboard/ $ nvm install $(cat .nvmrc) $ nvm use $(cat .nvmrc) $ yarn osd bootstrap $ yarn build-platform --linux --skip-os-packages --release
Clone the Wazuh Security Dashboards Plugin repository in the plugins folder and build the plugin.
$ cd plugins/ $ git clone -b <BRANCH_OR_TAG> https://github.com/wazuh/wazuh-security-dashboards-plugin.git $ cd wazuh-security-dashboards-plugin/ $ yarn $ yarn build
Example:
$ cd plugins/ $ git clone -b v4.10.1 https://github.com/wazuh/wazuh-security-dashboards-plugin.git $ cd wazuh-security-dashboards-plugin/ $ yarn $ yarn build
Clone the Wazuh dashboard plugins repository in the plugins folder, move the contents of the plugins folder to the folder where the repository was cloned and build the plugins.
Note
The yarn build command requires an entry specifying the OpenSearch Dashboard version. This version can be obtained from the
package.json
file.$ cd ../ $ git clone -b <BRANCH_OR_TAG> https://github.com/wazuh/wazuh-dashboard-plugins.git $ cd wazuh-dashboard-plugins/ $ nvm install $(cat .nvmrc) $ nvm use $(cat .nvmrc) $ cp -r plugins/* ../ $ cd ../main $ yarn $ yarn build $ cd ../wazuh-core/ $ yarn $ yarn build $ cd ../wazuh-check-updates/ $ yarn $ yarn build
Example:
$ cd ../ $ git clone -b v4.10.1 https://github.com/wazuh/wazuh-dashboard-plugins.git $ cd wazuh-dashboard-plugins/ $ nvm install $(cat .nvmrc) $ nvm use $(cat .nvmrc) $ cp -r plugins/* ../ $ cd ../main $ yarn $ yarn build $ cd ../wazuh-core/ $ yarn $ yarn build $ cd ../wazuh-check-updates/ $ yarn $ yarn build
Zip the packages and move them to the packages folder
$ cd ../../../ $ mkdir packages $ cd packages $ zip -r -j ./dashboard-package.zip ../wazuh-dashboard/target/opensearch-dashboards-<OPENSEARCH_VERSION>-linux-x64.tar.gz $ zip -r -j ./security-package.zip ../wazuh-dashboard/plugins/wazuh-security-dashboards-plugin/build/security-dashboards-<OPENSEARCH_VERSION>.0.zip $ zip -r -j ./wazuh-package.zip ../wazuh-dashboard/plugins/wazuh-check-updates/build/wazuhCheckUpdates-<OPENSEARCH_VERSION>.zip ../wazuh-dashboard/plugins/main/build/wazuh-<OPENSEARCH_VERSION>.zip ../wazuh-dashboard/plugins/wazuh-core/build/wazuhCore-<OPENSEARCH_VERSION>.zip
Example:
$ cd ../../../ $ mkdir packages $ cd packages $ zip -r -j ./dashboard-package.zip ../wazuh-dashboard/target/opensearch-dashboards-2.13.0-linux-x64.tar.gz $ zip -r -j ./security-package.zip ../wazuh-dashboard/plugins/wazuh-security-dashboards-plugin/build/security-dashboards-2.13.0.0.zip $ zip -r -j ./wazuh-package.zip ../wazuh-dashboard/plugins/wazuh-check-updates/build/wazuhCheckUpdates-2.13.0.zip ../wazuh-dashboard/plugins/main/build/wazuh-2.13.0.zip ../wazuh-dashboard/plugins/wazuh-core/build/wazuhCore-2.13.0.zip
At this point you must have three packages in the packages
folder:
dashboard-package.zip
security-package.zip
wazuh-package.zip
Using the script
Run the build-packages.sh
script in the dev-tools/build-packages/
folder of the repository. The script requires the following parameters:
-v
: Version of the package.-r
: Revision of the package.--deb
or--rpm
: Distribution of the package.-a
: Path to thewazuh-package.zip
.-s
: Path to thesecurity-package.zip
.-b
: Path to thedashboard-package.zip
.
$ cd ../wazuh-dashboard/dev-tools/build-packages/
$ ./build-packages.sh -v <VERSION> -r <REVISION> --<DISTRIBUTION> -a file:///<PATH_TO_wazuh-package.zip> -s file:///<PATH_TO_security-package.zip> -b file:///<PATH_TO_dashboard-package.zip>
Where --<DISTRIBUTION>
is either --deb
or --rpm
.
Example:
$ cd ../wazuh-dashboard/dev-tools/build-packages/
$ ./build-packages.sh -v v4.10.1 -r 1 --deb -a file:///packages/wazuh-package.zip -s file:///packages/security-package.zip -b file:///packages/dashboard-package.zip
The package will be generated in the output
folder of the same directory where the script is located.
Build with Docker image
With this option you can create an image that has the package in tar.gz format and then if desired you can use the created package to generate the .deb or .rpm file.
Requirements
Docker: Refer to Docker installation guide.
Internet connection to download the Docker images for the first time.
Utilities: Ensure the following are available:
jq
curl
Clone the Wazuh dashboard repository.
$ git clone -b <BRANCH_OR_TAG> https://github.com/wazuh/wazuh-dashboard.git $ cd wazuh-dashboard/dev-tools/build-packages/
Example:
$ git clone -b v4.10.1 https://github.com/wazuh/wazuh-dashboard.git $ cd wazuh-dashboard/dev-tools/build-packages/
Build the Docker image with the following parameters:
NODE_VERSION
: Node version to use in the.nvmrc
file.WAZUH_DASHBOARDS_BRANCH
: Branch of the Wazuh dashboards repository.WAZUH_DASHBOARDS_PLUGINS
: Branch of the Wazuh dashboards Plugins repository.WAZUH_SECURITY_DASHBOARDS_PLUGIN_BRANCH
: Branch of the Wazuh Security Dashboards Plugin repository.OPENSEARCH_DASHBOARDS_VERSION
: Version of the OpenSearch Dashboards. You can find the version in thepackage.json
file of the Wazuh dashboards repository.-t
: Tag of the image.
$ docker build \ --build-arg NODE_VERSION=<NODE_VERSION> \ --build-arg WAZUH_DASHBOARDS_BRANCH=<BRANCH_OF_wazuh-dashboard> \ --build-arg WAZUH_DASHBOARDS_PLUGINS=<BRANCH_OF_wazuh-dashboard-plugins> \ --build-arg WAZUH_SECURITY_DASHBOARDS_PLUGIN_BRANCH=<BRANCH_OF_wazuh-security-dashboards-plugin> \ --build-arg OPENSEARCH_DASHBOARDS_VERSION=<OPENSEARCH_DASHBOARDS_VERSION> \ -t <TAG_OF_IMAGE> \ -f wazuh-dashboard.Dockerfile .
Example:
$ docker build \ --build-arg NODE_VERSION=$(cat ../../.nvmrc) \ --build-arg WAZUH_DASHBOARDS_BRANCH=v4.10.1 \ --build-arg WAZUH_DASHBOARDS_PLUGINS=v4.10.1 \ --build-arg WAZUH_SECURITY_DASHBOARDS_PLUGIN_BRANCH=v4.10.1 \ --build-arg OPENSEARCH_DASHBOARDS_VERSION=2.13.0 \ -t wzd:v4.10.1 \ -f wazuh-dashboard.Dockerfile .
Run the Docker image:
$ docker run -d --rm --name wazuh-dashboard-package <TAG_OF_IMAGE> tail -f /dev/null
Example:
$ docker run -d --rm --name wazuh-dashboard-package wzd:v4.10.1 tail -f /dev/null
Copy the package to the host:
$ docker cp wazuh-dashboard-package:/home/node/packages/. <PATH_TO_SAVE_THE_PACKAGE>
Example:
$ docker cp wazuh-dashboard-package:/home/node/packages/. /
This copies the final package and the packages that were used to generate the final package.
Optional. If you want to generate the .deb or .rpm file, you can use the script
launcher.sh
in thedev-tools/build-packages/rpm/
ordev-tools/build-packages/deb/
folder of the repository with the following parameters:-v
: Version of the package.-r
: Revision of the package.-p
: Path to the package in tar.gz format generated in the previous step
$ ./launcher.sh -v <VERSION> -r <REVISION> -p <PATH_TO_PACKAGE>
Example:
$ ./launcher.sh -v v4.10.1 -r 1 -p file:///wazuh-dashboard-4.10.1-1-linux-x64.tar.gz
The package will be generated in the output
folder of the rpm
or deb
folder.