Skip to content

Elasticsearch and stack - self managed tutorial 1 complete refinement#5636

Open
eedugon wants to merge 4 commits intomainfrom
tutorial1-refinement-extra
Open

Elasticsearch and stack - self managed tutorial 1 complete refinement#5636
eedugon wants to merge 4 commits intomainfrom
tutorial1-refinement-extra

Conversation

@eedugon
Copy link
Contributor

@eedugon eedugon commented Mar 26, 2026

Summary

Major and hopefully final refinement of tutorial 1.

Addressed issues:

Structure and navigation

  • Added Step 6: Consolidate {{es}} configuration to the table of contents.

Elasticsearch setup and configuration

  • Added/clarified the Elasticsearch configuration consolidation step after nodes and cluster deployment.
  • Added a clear “Install {{es}} with RPM” reference in the Step 1 intro.
  • Replaced wget downloads with curl -L -O equivalents.
  • Updated prerequisites to require curl (removed wget dependency).
  • Refined networking configuration guidance: clarified transport.host, explained http.host from automatic setup, and aligned references to official networking settings docs.
  • Added optional node.name guidance and mirrored it in the second-node flow.
  • Clarified that enrollment tokens for joining nodes are generated from an existing cluster node.
  • Improved IP-address step wording for clarity and portability.
  • Refined systemd and bootstrap-check explanations around first-node startup.

Kibana setup and enrollment

  • Added a Kibana intro link pattern aligned with Elasticsearch sections.
  • Added xpack.encryptedSavedObjects.encryptionKey setup in kibana.yml.
  • Added kibana-encryption-keys generate usage with explicit guidance on which key to use.
  • Clarified that only xpack.encryptedSavedObjects.encryptionKey is needed for this tutorial path.
  • Added production guidance to prefer Kibana keystore for sensitive settings.
  • Added official references for saved objects encryption and key rotation.
  • Improved the “Start and enroll {{kib}}” introduction and first-run purpose.
  • Clarified enrollment-token generation flow and browser prompt wording.

Fleet Server and Elastic Agent flows

  • Added Fleet server intro, aligned with official docs terminology.
  • Explicitly documented that this tutorial uses Fleet Quick Start (self-signed cert path).
  • Added official references for:
    • Quick Start vs Advanced Fleet Server setup
    • SSL/TLS configuration for self-managed Fleet Server
  • Added architecture-awareness guidance (aarch64 vs x64) in Fleet Server and Agent install steps.
  • Clarified command-handling flow: copy commands to editor first when edits are required.
  • Added a concise explanation for why --insecure is required in this tutorial path.
  • Added operational prerequisites for Fleet/Agent setup:
    • Fleet/Integrations Kibana privileges (conditional wording for non-elastic users)
    • Direct network connectivity (Agent ↔ Fleet Server ↔ Elasticsearch)
    • Kibana access to https://epr.elastic.co:443
  • Added official limitation note: only one {{agent}} per host.
  • Kept and refined the Settings verification step (Fleet Server hosts and Outputs URL validation).

Data validation and closing section

  • Expanded Step 10 intro to explain multiple data access paths:
    • solution views in {{observability}}
    • integration-provided dashboards
  • Added context note that System integration assets/dashboards are installed automatically.
  • Added host-level validation path via Observability -> Infrastructure -> Hosts.
  • Kept logs/metrics dashboard checks as concrete examples from System integration.
  • Minor wording polish in closing and next-step transitions.

Generative AI disclosure

  1. Did you use a generative AI (GenAI) tool to assist in creating this contribution?
  • Yes - Cursor in auto mode
  • No

Closes https://github.com/elastic/docs-content-internal/issues/929

@eedugon eedugon requested a review from a team as a code owner March 26, 2026 10:46
@github-actions
Copy link
Contributor

github-actions bot commented Mar 26, 2026

🔍 Preview links for changed docs

@github-actions
Copy link
Contributor

github-actions bot commented Mar 26, 2026

✅ Vale Linting Results

No issues found on modified lines!


The Vale linter checks documentation changes against the Elastic Docs style guide.

To use Vale locally or report issues, refer to Elastic style guide for Vale.

* {{agent}} enrolls using that Quick Start flow, which requires the install command to include the `--insecure` flag.

If you plan to use certificates signed by your organization's certificate authority or by a public CA, complete this tutorial until {{kib}} is installed (Step 6), and then continue with [Tutorial 2: Customize certificates for a self-managed {{stack}}](tutorial-self-managed-secure.md) before installing {{fleet-server}} and {{agent}}.
If you plan to use certificates signed by your organization's certificate authority or by a public CA, complete this tutorial until {{kib}} is installed (Step 7), and then continue with [Tutorial 2: Customize certificates for a self-managed {{stack}}](tutorial-self-managed-secure.md) before installing {{fleet-server}} and {{agent}}.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this should be in a Tip or Important admonition so that it's more prominent

* The transport interface is bound to the loopback interface (`localhost`), preventing other nodes from joining the cluster, while the HTTP interface listens on all network interfaces (`http.host: 0.0.0.0`).

7. Copy the terminal output from the install command to a local file. In particular, you need the password for the built-in `elastic` superuser account. The output also contains the commands to enable {{es}} to run as a service, which you use in the next step.
1. Copy the terminal output from the install command to a local file. In particular, you need the password for the built-in `elastic` superuser account. The output also contains the commands to enable {{es}} to run as a service, which you use in the next step.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Copy the terminal output from the install command to a local file. In particular, you need the password for the built-in `elastic` superuser account. The output also contains the commands to enable {{es}} to run as a service, which you use in the next step.
1. Copy the terminal output from the install command to a local file. In particular, you need the password for the built-in `elastic` user account. The output also contains the commands to enable {{es}} to run as a service, which you use in the next step.

Not sure if this is correct, but pointing this out since you changed "super user" to "user" in the prereqs

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment for other places on this page where "superuser" is mentioned

Before moving ahead to configure additional {{es}} nodes, you need to update the {{es}} configuration on this first node so that other hosts are able to connect to it. This is done by updating the settings in the `elasticsearch.yml` file. For more details about {{es}} configuration and the most common settings, refer to [Configure {{es}}](/deploy-manage/deploy/self-managed/configure-elasticsearch.md) and [important settings configuration](/deploy-manage/deploy/self-managed/important-settings-configuration.md).

1. In a terminal, run the `ifconfig` command and copy the value shown for the host IP address (for example, `10.128.0.84`). You need this value later.
1. Obtain your host IP address (for example, by running `ifconfig`). You need this value later.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Obtain your host IP address (for example, by running `ifconfig`). You need this value later.
1. Obtain your host IP address (for example, by running `ifconfig`). You will need this value later.

1. Answer the `Do you want to continue with the reconfiguration process` prompt with `yes` (`y`). The new {{es}} node is reconfigured.

13. Open the second {{es}} instance configuration file in a text editor:
1. Obtain your host IP address (for example, by running `ifconfig`). You need this value later.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Obtain your host IP address (for example, by running `ifconfig`). You need this value later.
1. Obtain your host IP address (for example, by running `ifconfig`). You will need this value later.

1. If you want {{kib}} to listen on all available network interfaces, you can use `0.0.0.0` instead.

12. Open the {{kib}} configuration file for editing:
1. Add `xpack.encryptedSavedObjects.encryptionKey` setting with the value returned by the `kibana-encryption-keys generate` command:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Add `xpack.encryptedSavedObjects.encryptionKey` setting with the value returned by the `kibana-encryption-keys generate` command:
1. Add the `xpack.encryptedSavedObjects.encryptionKey` setting with the value returned by the `kibana-encryption-keys generate` command:

* {{agent}} enrolls using that Quick Start flow, which requires the install command to include the `--insecure` flag.

If you plan to use certificates signed by your organization's certificate authority or by a public CA, complete this tutorial until {{kib}} is installed (Step 6), and then continue with [Tutorial 2: Customize certificates for a self-managed {{stack}}](tutorial-self-managed-secure.md) before installing {{fleet-server}} and {{agent}}.
If you plan to use certificates signed by your organization's certificate authority or by a public CA, complete this tutorial until {{kib}} is installed (Step 7), and then continue with [Tutorial 2: Customize certificates for a self-managed {{stack}}](tutorial-self-managed-secure.md) before installing {{fleet-server}} and {{agent}}.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could link to the admonition in step 7 to make it clear exactly where they should stop

::::{note}
This tutorial uses the **Quick Start** installation flow, which generates a self-signed certificate for the {{fleet-server}} by default. For more details about **Quick Start** and **Advanced** setup options, refer to [Deploy on-premises and self-managed {{fleet-server}}](/reference/fleet/add-fleet-server-on-prem.md).

If you want to use custom SSL/TLS certificates, follow the [Tutorial 2: Customize certificates for a self-managed {{stack}}](tutorial-self-managed-secure.md) instead of continuing with these steps.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If you want to use custom SSL/TLS certificates, follow the [Tutorial 2: Customize certificates for a self-managed {{stack}}](tutorial-self-managed-secure.md) instead of continuing with these steps.
If you want to use custom SSL/TLS certificates, follow [Tutorial 2: Customize certificates for a self-managed {{stack}}](tutorial-self-managed-secure.md) instead of continuing with these steps.

```

4. In the terminal, run `ifconfig` and copy the value shown for the host IP address (for example, `10.128.0.84`). You need this value later.
1. Obtain the host IP address for your {{fleet-server}} host (for example, by running `ifconfig`). You need this value later.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Obtain the host IP address for your {{fleet-server}} host (for example, by running `ifconfig`). You need this value later.
1. Obtain the host IP address for your {{fleet-server}} host (for example, by running `ifconfig`). You will need this value later.

1. Obtain the host IP address for your {{fleet-server}} host (for example, by running `ifconfig`). You need this value later.

5. Back to your web browser, open the {{kib}} menu and go to **Management -> Fleet**. {{fleet}} opens with a message that you need to add a {{fleet-server}}.
1. Back to your web browser, open the {{kib}} menu and go to **Management -> Fleet**. {{fleet}} opens with a message that you need to add a {{fleet-server}}.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Back to your web browser, open the {{kib}} menu and go to **Management -> Fleet**. {{fleet}} opens with a message that you need to add a {{fleet-server}}.
1. Return to your web browser. Open the {{kib}} menu and go to **Management -> Fleet**. {{fleet}} opens with a message that you need to add a {{fleet-server}}.

- Download the {{fleet-server}} package from the {{artifact-registry}}
- Unpack the package archive
- Change into the directory containing the install binaries
- Install {{fleet-server}}.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Install {{fleet-server}}.
- Install {{fleet-server}}

If you'd like to learn about the install command options, refer to [`elastic-agent install`](/reference/fleet/agent-command-reference.md#elastic-agent-install-command) in the {{agent}} command reference.

13. At the prompt, enter `Y` to install {{agent}} and run it as a service. Wait for the installation to complete.
1. At the prompt, enter `Y` to install {{agent}} and run it as a service. Wait for the installation to complete.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. At the prompt, enter `Y` to install {{agent}} and run it as a service. Wait for the installation to complete.
1. When prompted, enter `Y` to install {{agent}} and run it as a service. Wait for the installation to complete.

1. Back to your web browser, open the {{kib}} menu and go to **Management -> Fleet**. {{fleet}} opens with a message that you need to add a {{fleet-server}}.

6. Click **Add Fleet Server**. The **Add a Fleet Server** flyout opens.
1. Click **Add Fleet Server**. The **Add a Fleet Server** flyout opens.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Click **Add Fleet Server**. The **Add a Fleet Server** flyout opens.
1. Click **Add Fleet Server**. The **Add a Fleet Server** flyout shows up.

1. Open the **Settings** tab and review the **Fleet Server hosts** and **Outputs** URLs. Ensure the URLs and IP addresses are valid for reaching {{fleet-server}} and the {{es}} cluster, and that they use the HTTPS protocol.

7. Reopen the **Agents** tab and select **Add agent**. The **Add agent** flyout opens.
1. Reopen the **Agents** tab and select **Add agent**. The **Add agent** flyout opens.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Reopen the **Agents** tab and select **Add agent**. The **Add agent** flyout opens.
1. Reopen the **Agents** tab and select **Add agent**. The **Add agent** flyout shows up.

If you want to set up secure communications using custom SSL certificates, refer to [Tutorial 2: Customize certificates for a self-managed {{stack}}](tutorial-self-managed-secure.md).
:::

The result should be like the following:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The result should be like the following:
The result should look like the following:

- Install {{agent}}.

16. At the prompt, enter `Y` to install {{agent}} and run it as a service. Wait for the installation to complete:
1. At the prompt, enter `Y` to install {{agent}} and run it as a service. Wait for the installation to complete:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. At the prompt, enter `Y` to install {{agent}} and run it as a service. Wait for the installation to complete:
1. When prompted, enter `Y` to install {{agent}} and run it as a service. Wait for the installation to complete:


* Do you have data ready to ingest? Learn how to [bring your data to Elastic](/manage-data/ingest.md).
* Use [Elastic {{observability}}](/solutions/observability.md) to unify your logs, infrastructure metrics, uptime, and application performance data.
* Want to protect your endpoints from security threats? Try [{{elastic-sec}}](/solutions/security.md). Adding endpoint protection is just another integration that you add to the agent policy!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Want to protect your endpoints from security threats? Try [{{elastic-sec}}](/solutions/security.md). Adding endpoint protection is just another integration that you add to the agent policy.

@eedugon can you have a look at this last line? I don't know if "just another integration" is correct

Copy link
Contributor

@wajihaparvez wajihaparvez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great @eedugon! ⭐️ Just some minor suggestions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants