OpenSearch Dashboards custom branding

    By default, OpenSearch Dashboards uses the OpenSearch logo, but if you want to use custom branding elements such as the favicon or main Dashboards logo, you can do so by editing or by including a custom opensearch_dashboards.yml file when you start your OpenSearch cluster.

    For example, if you’re using Docker to start your OpenSearch cluster, include the following lines in the opensearch-dashboards section of your docker-compose.yml file:

    Doing so replaces the Docker image’s default opensearch_dashboards.yml with your custom opensearch_dashboards.yml file, so be sure to include your desired settings as well. For example, if you want to configure TLS for OpenSearch Dashboards, see Configure TLS for OpenSearch Dashboards.

    Re-launch OpenSearch Dashboards, and OpenSearch Dashboards now uses your custom elements.

    The following elements in OpenSearch Dashboards are customizable:

    To consolidate navigation controls and reduce the space the header takes up on the page, see Condensed header.

    1. # opensearchDashboards.branding:
    2. # logo:
    3. # defaultUrl: ""
    4. # darkModeUrl: ""
    5. # mark:
    6. # defaultUrl: ""
    7. # darkModeUrl: ""
    8. # loadingLogo:
    9. # defaultUrl: ""
    10. # darkModeUrl: ""
    11. # faviconUrl: ""
    12. # applicationTitle: ""

    Add the URLs you want to use as branding elements to the appropriate setting. Valid image types are SVG, PNG, and GIF.

    Customization of dark mode Dashboards is also available, but you first must supply a valid link to defaultUrl, and then link to your preferred image with darkModeUrl. If you don’t provide a darkModeUrl link, then Dashboards uses the provided defaultUrl element for dark mode. You are not required to customize all branding elements, so if you wanted to, it’s perfectly valid to change just the logo or any other element. Leave unchanged elements as commented.

    The following example demonstrates how to use files as logos but leaves the other elements as defaults.

    We recommend linking to images that are hosted on a web server, but if you really want to use locally hosted images, save your images inside assets, and then configure opensearch_dashboards.yml to use the correct paths. You can access locally stored images through the ui/assets folder.

    The following example assumes the default port of 5601 that Dashboards uses and demonstrates how to link to locally stored images.

    1. logo:
    2. defaultUrl: "https://localhost:5601/ui/assets/my-own-image.svg"
    3. mark:
    4. defaultUrl: "https://localhost:5601/ui/assets/my-own-image2.svg"
    5. darkModeUrl: "https://localhost:5601/ui/assets/dark-mode-my-own-image2.svg"
    6. # loadingLogo:
    7. # defaultUrl: ""
    8. # darkModeUrl: ""
    9. # faviconUrl: ""
    10. applicationTitle: "My custom application"

    The condensed header view reduces the footprint of the header and frees up space on the page by combining navigational elements into a single header bar.

    The current default view remains close in appearance to the two-bar header offered in the previous version of Dashboards, with minor differences. To specify the condensed header, add the configuration property useExpandedHeader to the opensearch_dashboards.yml file and set the value to false, as the following example illustrates.

    The condensed view header appears as in the example below.

    Condensed header

    The default view remains close to the traditional view, with minor changes.

    Preserving nagivation elements in the default view

    You can continue using the top header bar in the default view for custom navigation links (such as menu items and plugins). Follow the steps below to keep these elements in the top header in the default view.

    1. Replace the property coreStart.chrome.navControls.registerRight(...) with coreStart.chrome.navControls.registerExpandedRight(...) and then replace the property coreStart.chrome.navControls.registerCenter(...) with coreStart.chrome.navControls.registerExpandedCenter(...)

    2. Make sure the configuration property useExpandedHeader is explicitly set to true.

    Sample configuration

    1. opensearch.hosts: ["https://localhost:9200"]
    2. opensearch.ssl.verificationMode: none
    3. opensearch.username: "kibanaserver"
    4. opensearch.password: "kibanaserver"
    5. opensearch.requestHeadersAllowlist: [ authorization,securitytenant ]
    6. #server.ssl.enabled: true
    7. #server.ssl.certificate: /path/to/your/server/certificate
    8. opensearch_security.multitenancy.enabled: true
    9. opensearch_security.multitenancy.tenants.preferred: ["Private", "Global"]
    10. opensearch_security.readonly_mode.roles: ["kibana_read_only"]
    11. # Use this setting if you are running opensearch-dashboards without https
    12. opensearch_security.cookie.secure: false
    13. opensearchDashboards.branding:
    14. logo:
    15. defaultUrl: "https://example.com/sample.svg"
    16. darkModeUrl: "https://example.com/dark-mode-sample.svg"
    17. # mark:
    18. # defaultUrl: ""
    19. # darkModeUrl: ""
    20. # loadingLogo:
    21. # defaultUrl: ""
    22. # darkModeUrl: ""