[id='server-getting-started']
:context: server-getting-started
= Getting started with {brandname} Server

Install the server distribution, create a user, and start your first {brandname} cluster.

//Community
ifdef::community[]
image:https://infinispan.org/assets/images/documentation/icon-get-started.png[Get started icon,height=32]
link:https://infinispan.org/get-started/[Start running {brandname} in 4 easy steps]
endif::community[]

[discrete]
== Ansible collection

Automate installation of {brandname} clusters with our Ansible collection that optionally includes Keycloak caches and cross-site replication configuration.
The Ansible collection also lets you inject {brandname} caches into the static configuration for each server instance during installation.

//Community content
ifdef::community[]
The link:https://github.com/ansible-middleware/infinispan[Ansible collection for {brandname}] is available from Ansible Galaxy.
endif::community[]
//Downstream content
ifdef::downstream[]
The link:https://github.com/ansible-middleware/infinispan[Ansible collection for {brandname}] is available from the Red Hat **Automation Hub**.
endif::downstream[]


include::{topics}/ref_server_requirements.adoc[leveloffset=+1]
include::{topics}/proc_downloading_server.adoc[leveloffset=+1]
include::{topics}/proc_installing_server.adoc[leveloffset=+1]
include::{topics}/con_jvm-settings-for-server.adoc[leveloffset=+1]
include::{topics}/proc_starting_server.adoc[leveloffset=+1]
include::{topics}/proc_passing_server_configuration.adoc[leveloffset=+1]
include::{topics}/proc_cli_user_create.adoc[leveloffset=+1]
include::{topics}/proc_cli_user_grant_roles.adoc[leveloffset=+2]
include::{topics}/proc_cli_user_groups.adoc[leveloffset=+2]
include::{topics}/ref_default_user_roles.adoc[leveloffset=+2]
include::{topics}/proc_forming_clusters.adoc[leveloffset=+1]
include::{topics}/proc_shutting_down_servers.adoc[leveloffset=+1]
include::{topics}/con_restarting_clusters.adoc[leveloffset=+2]
include::{topics}/con_server_directory_structure.adoc[leveloffset=+1]

// Restore the parent context.
ifdef::parent-context[:context: {parent-context}]
ifndef::parent-context[:!context:]
