Installing Kibana on CentOS, RHEL, or Fedora uses Elastic's RPM repository to add the web interface for a self-managed Elasticsearch deployment. Kibana lets operators open dashboards, search data in Discover, manage saved objects, and use Elastic apps without querying Elasticsearch APIs directly.

The RPM package registers the kibana.service systemd unit, installs the application under /usr/share/kibana, and reads package configuration from /etc/kibana/kibana.yml. Elastic's current RPM repository provides Kibana 9.x packages through dnf or yum, so the installed Kibana version should match the Elasticsearch cluster it will enroll with.

A fresh secured Elastic Stack setup usually uses a Kibana enrollment token generated on an Elasticsearch node. Remote browser access remains local-only until server.host is changed, and opening port 5601 should happen only on networks protected by a firewall, VPN, or reverse proxy.

Steps to install Kibana on CentOS, RHEL, or Fedora:

  1. Import the Elastic package signing key.
    $ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

    No output indicates the key was imported successfully.

  2. Save the official Kibana RPM repository definition at /etc/yum.repos.d/kibana.repo.
    [kibana-9.x]
    name=Kibana repository for 9.x packages
    baseurl=https://artifacts.elastic.co/packages/9.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md

    The enabled repository follows Elastic's current Kibana RPM instructions. Keep stack upgrades coordinated so Kibana and Elasticsearch stay on the same version series.

  3. Install the Kibana package from the Elastic repository.
    $ sudo dnf install --assumeyes kibana
    Package Arch    Version   Repository      Size
    Installing:
     kibana aarch64 0:9.4.2-1 kibana-9.x   1.4 GiB
    ##### snipped #####
    Complete!

    Use dnf on Fedora, RHEL 8 and later, and current CentOS Stream releases. Use sudo yum install --assumeyes kibana only on older Red Hat based systems that are still supported by the Kibana version being installed.

  4. Confirm the installed RPM package.
    $ rpm -q kibana
    kibana-9.4.2-1.aarch64

    The version and architecture suffix reflect the host, such as aarch64 or x86_64.

  5. Generate a fresh Kibana enrollment token on an Elasticsearch node.
    $ sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
    eyJ2ZXIiOiI5LjQuMiIsImFkciI6WyJodHRwczovL2VzLmV4YW1wbGUubmV0OjkyMDAiXSwiZmdyIjoi##### snipped #####

    The token is valid for about 30 minutes and writes the current security connection settings into /etc/kibana/kibana.yml during enrollment. Add --url "https://<es-host>:9200" when the token tool must reach a non-default Elasticsearch endpoint. Use /usr/share/kibana/bin/kibana-setup --enrollment-token "<token>" for detached CLI enrollment when the browser-based setup flow is not practical.

  6. Set server.host in /etc/kibana/kibana.yml when Kibana must accept remote browser connections.
    server.host: "0.0.0.0"

    Keep the default localhost binding for local-only access, or use a specific interface IP when only one private network should reach the UI.

    Binding to 0.0.0.0 exposes port 5601 on every interface, so limit access with a firewall, VPN, reverse proxy, or private route before exposing the service.

  7. Allow TCP port 5601 through firewalld when remote access is required.
    $ sudo firewall-cmd --permanent --add-port=5601/tcp
    success

    Skip this step when Kibana stays on localhost, when another firewall stack is active, or when a reverse proxy is the only public listener.

  8. Reload firewalld after adding the port rule.
    $ sudo firewall-cmd --reload
    success
  9. Reload the systemd manager configuration.
    $ sudo /bin/systemctl daemon-reload

    The RPM installs /usr/lib/systemd/system/kibana.service, and reloading systemd makes the new unit available immediately.

  10. Enable Kibana at boot.
    $ sudo systemctl enable kibana.service
    Created symlink /etc/systemd/system/multi-user.target.wants/kibana.service -> /usr/lib/systemd/system/kibana.service.
  11. Start the Kibana service.
    $ sudo systemctl start kibana.service

    The start command does not print success output, so check the service state before opening the browser setup URL.

  12. Check the Kibana service status for the running state and setup URL.
    $ sudo systemctl status kibana --no-pager
    ● kibana.service - Kibana
         Loaded: loaded (/usr/lib/systemd/system/kibana.service; enabled; preset: enabled)
         Active: active (running) since Thu 2026-06-18 14:18:45 UTC; 9s ago
    ##### snipped #####
    Jun 18 14:18:54 kibana.example.net kibana[8123]: Kibana has not been configured.
    Jun 18 14:18:54 kibana.example.net kibana[8123]: Go to http://kibana.example.net:5601/?code=123456 to get started.

    The first-start status output commonly shows the browser URL and a six-digit verification code while Kibana waits for enrollment. Use sudo journalctl --unit=kibana.service --no-pager -n 50 when the unit does not reach active (running) or the setup URL never appears.

  13. Open the setup URL from the status output and paste the current enrollment token.
    http://kibana.example.net:5601/?code=123456

    Click Configure Elastic after pasting the token, and enter the six-digit verification code from the service status output if the browser asks for it.

  14. Sign in with the elastic user and the current password for the Elasticsearch cluster.

    On RPM package installs of Elasticsearch, reset the password on an Elasticsearch node first if the current elastic password was not saved from the initial setup.

  15. Confirm the Kibana home page loads after enrollment and sign-in complete.

    First-time access can land on the home page, a solution overview, or sample-data prompts instead of an existing dashboard, but the main Kibana navigation should be available.