# Tutoriel: Installation ElasticSearch

**URL:** <https://www.debian-fr.org/t/tutoriel-installation-elasticsearch/91953>\
**Category:** Trucs et Astuces\
**Tags:** tutoriel, installation, elasticsearch\
**Created:** [Janvier 17, 2026, 3:26 UTC](https://www.debian-fr.org/t/tutoriel-installation-elasticsearch/91953 "2026-01-17T15:26:35Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Janvier 17, 2026, 3:26 UTC](https://www.debian-fr.org/t/tutoriel-installation-elasticsearch/91953/1 "2026-01-17T15:26:35Z")

</div>

# Introduction

voici un tutoriel d’installation ElasticSearch. En suivant la doc ElasticSearch [ici](https://www.elastic.co/docs/deploy-manage/deploy/self-managed/install-elasticsearch-with-debian-package), vous devriez y arriver tout aussi bien.  
Dans ce document, je m’attache à présenter une installation avec une partition dédiée pour ElasticSearch, ainsi qu’avec certain critère particulier. On peut trouver les réponses dans les docs en ligne, mais ce n’est pas toujours simple de s’y retrouver.  
Ce texte n’a pas pour vocation à être exhaustif.  
Pour mon installation, j 'utilise une machine physique dont un disque nvme est dédié au système, et un disque pour les données (quelles soient de bases de données, d’indexer comme ElasticSearch, etc…). Je ne parle pas ici des données de /home qui ne sert que pour les utilisateur identifié connecté.  
J’ai un partitionnement non standard:

- les disques sont chiffrés
- J’utilise bien sur LVM
- Le partitionnement est conçu pour sécuriser les points de montages avec les options nodev, nosuid et noexec.

```auto
nvme0n1 259:0 0 476,9G 0 disk  
├─nvme0n1p1 259:1 0 953M 0 part /boot/efi
└─nvme0n1p2 259:2 0 476G 0 part  
  └─nvme0n1p2_crypt 254:0 0 476G 0 crypt 
    ├─vg103-swap 254:1 0 47,8G 0 lvm [SWAP]
    ├─vg103-boot 254:2 0 952M 0 lvm /boot
    ├─vg103-root 254:3 0 14G 0 lvm /
    ├─vg103-home 254:4 0 23,3G 0 lvm /home
    ├─vg103-var 254:5 0 14G 0 lvm /var
    ├─vg103-var_log 254:6 0 4,7G 0 lvm /var/log
    ├─vg103-var_log_audit 254:7 0 4,7G 0 lvm /var/log/audit
    ├─vg103-var_tmp 254:8 0 3,7G 0 lvm /var/tmp
    └─vg103-tmp 254:9 0 3,7G 0 lvm /tmp

```

# Préparation

## Installation du paquet

Tout d’abord il va falloir configurer apt pour accéder au dépôt ElasticSearch.

### Télécharger la clef du dépot:

```auto
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

```

La source apt est donnée par elastic search avec:

```auto
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/9.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-9.x.list

```

### Convertir en **DEB822** dans le fichier `/etc/apt/sources.list.d/elastic-9.x.sources`:

```auto
Types: deb
URIs: https://artifacts.elastic.co/packages/9.x/apt
Suites: stable
Components: main
Signed-By: /usr/share/keyrings/elasticsearch-keyring.gpg

```

Sur un système susceptible d’utiliser plusieurs architectures, ajouter à la fin du fichier:  
`Architectures: amd64`

### Installer

Mettre à jour la base apt:  
`apt update`

Pour installer elasticsearch:  
`apt-get install elasticsearch`

**ATTENTION:** Prêter la plus grande attention au message suivant:  
--------------------------- Security autoconfiguration information ------------------------------

Authentication and authorization are enabled.  
TLS for the transport and HTTP layers is enabled and configured.

The generated password for the elastic built-in superuser is : qmsldjfmlkqjsmfkljqsmlkjdfmsqkjlfmkldjfmql

If this node should join an existing cluster, you can reconfigure this with  
‹&nbsp;/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token &nbsp;›  
after creating an enrollment token on your existing cluster.

You can complete the following actions at any time:

Reset the password of the elastic built-in superuser with  
‹&nbsp;/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic&nbsp;›.

Generate an enrollment token for Kibana instances with  
‹&nbsp;/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana&nbsp;›.

Generate an enrollment token for Elasticsearch nodes with  
‹&nbsp;/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node&nbsp;›.

* * *

C’est votre mot de passe.

# Dossier chiffré dédié

## Introduction

J’ai décidé dans mon architecture que le dossier `/var/lib/elasticsearch` serait sur une partition chiffrée dédiée.  
C’est un choix personnel que vous n’êtes pas obligé de faire.  
_Si vous voulez rester avec le répertoire standard, passer ce chapitre._

## Création de la partition chiffrée et montage

Pour cela j’ai utilisé l’intégralité d’un disque dur. j’ai créé manuellement la partition ainsi:

```auto
cryptsetup luksFormat --label ELK --cipher=serpent-xts-plain64 --hash=SHA512 --pbkdf=argon2id /dev/sda

```

Ouvrir la partition chiffrée ELK\_crypt à partir de /dev/sda:

```auto
cryptsetup luksOpen /dev/sda ELK_crypt

```

Ajouter celle-ci comme volume physique LVM:

```auto
pvcreate /dev/mapper/ELK_crypt

```

Créer un nouveau groupe de volumes LVM:

```auto
vgcreate vgelk /dev/mapper/ELK_crypt

```

Dans lequel j’ai créé un volume logique LVM de 300G pour commencer:

```auto
lvcreate -L 300G --name var_lib_elasticsearch vgelk

```

Comme j’aime bien avoir des labels:  
Pour le volume logique:

```auto
e2label /dev/mapper/vgelk-var_lib_elasticsearch ELASTIC

```

Sachez que pour un LUKS la commande de changement d’un label c’est

```auto
cryptsetup config <mon device> --label <mon label>

```

Pour être sûr du déchiffrement au démarrage (obligatoire, car sinon le montage ne pourra pas se faire, et le système sera en échec au démarrage), il faut ajouter le disque dans `/etc/crypttab`:

```auto
echo "ELK_crypt UUID=<le UUID de la partition> none luks,discard,x-initrd.attach,initramfs" >> /etc/crypttab

```

Et bien sur mettre à jour l’initramfs:

```auto
update-initramfs -k all -u

```

Maintenant il faut créer le montage dans fstab. Le répertoire créer par l’installation du paquet a été créé ainsi:

```auto
drwxr-s--- 2 elasticsearch elasticsearch 4096 8 janv. 23:14 elasticsearch

```

Soit:

```auto
~# stat /var/lib/elasticsearch
  Fichier : /var/lib/elasticsearch
   Taille : 4096 Blocs : 8 Blocs d'E/S : 4096 directory
Périphérique : 254/5	Inœud : 143482 Liens : 2
Accès : (2750/drwxr-s---) UID : ( 110/elasticsearch) GID : ( 116/elasticsearch)

```

Il faut donc créer le montage dans `/etc/fstab` pour qu’il soit absolument identique:  
On utilisera les éléments suivants:

- Pour s’assurer que le user et le groupe propriétaire soit les bon, nous utiliserons X-mount.owner pour le user, et X-mount.group, en utilisant les ID correspondant
- Pour s’assurer que les permissions seront les bonne, y compris le sticky bit, nous utiliserons X-mount.mode avec l’accè\_s tel que montré par la commande stat.  
Ce qui donne l’entrée suivante:

```auto
/dev/mapper/vgelk-var_lib_elasticsearch	/var/lib/elasticsearch	ext4	relatime,nodev,nosuid,X-mount.owner=110,X-mount.group=116,X-mount.mode=2750	0	2

```

Ne pas oublier de faire la commande suivante pour cette modification soit prise en compte:

```auto
systemctl daemon-reload

```

Et on peut monter le répertoire:

```auto
mount /var/lib/elasticsearch

```

## Le répertoire temporaire

### Introduction

Autre point, Elasticsearch utilise par défaut le répertoire /tmp avec des droits `exec`. Si vous êtes comme moi et que /tmp est monté en mode `noexec`, le démarrage d’elastic sera en échec car les accès au répertoire temporaire de gestion JNA ne marchera pas.  
Il faut soit enlever le `noexec` de /tmp (mauvaise idée car c’est là pour une bonne raison, la sécurité), soit définir un autre répertoire temporaire.

### Création du répertoire temporaire

Personnellement, j’utiliserais `/var/lib/elasticsearch/tmp`, en le créant ainsi:

```auto
mkdir /var/lib/elasticsearch/tmp

```

puis en modifiant l’utilisateur et le groupe propriétaire:

```auto
chown elasticsearch:elasticsearch /var/lib/elasticsearch/tmp

```

Puis en modifiant les permissions:

```auto
chmod 2750 /var/lib/elasticsearch/tmp

```

Et on a:

```auto
drwxr-s--- 2 elasticsearch elasticsearch 4096 17 janv. 16:01 tmp

```

Soit:

```auto
~# stat /var/lib/elasticsearch/tmp
  Fichier : /var/lib/elasticsearch/tmp
   Taille : 4096 Blocs : 8 Blocs d'E/S : 4096 directory
Périphérique : 254/11	Inœud : 9699329 Liens : 2
Accès : (2750/drwxr-s---) UID : ( 110/elasticsearch) GID : ( 116/elasticsearch)

```

Pour que ce soit pris en compte, il faut modifier systemd pour lui dire d’utiliser l’environnement temporaire ainsi créé:

```auto
systemctl edit elasticsearch

```

Et entrer dans l’espace autorisé:

```auto
[Service]
Environment=ES_TMPDIR=/var/lib/elasticsearch/tmp

```

Le fichier d’override a ainsi été créé: /`etc/systemd/system/elasticsearch.service.d/override.conf`  
N’oubliez par de recharger la configuration systemd:

```auto
systemctl daemon-reload

```

Ne reste plus qu’à faire la configuration de base d’elasticsearch dans `/etc/elasticsearch/elasticsearch.yml`

# Configuration ElasticSearch

## Introduction

La configuration ici présentée est une configuration de base, elle n’a pas pour vocation d’être une configuration de production (il y aurait des éléments de configuration de sécurisation à faire et d’autres aussi pour les performances.

## Configuration

le cluster:

```auto
cluster.name: my-application

```

Le node:

```auto
node.name: node-1

```

Le réseau (pour le moment j’autorise toutes les interfaces):

```auto
network.host: 0.0.0.0

```

Le port HTTP:

```auto
http.port: 9200

```

Les connections API:

```auto
http.host: 0.0.0.0

```

Le transport:

```auto
transport.host: 0.0.0.0

```

Si tout est bon, vous pouvez démarrer le service elasticsearch:

```auto
systemctl start elasticsearch

```

Pour qu’il soit démarré à chaque démarrage du système:

```auto
systemctl enable elasticsearch

```

Et voilà, vous avez un elasticsearch fonctionnel.

```auto
~# systemctl status elasticsearch.service 
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; preset: enabled)
    Drop-In: /etc/systemd/system/elasticsearch.service.d
             └─override.conf
     Active: active (running) since Sat 2026-01-17 16:16:13 CET; 38s ago
 Invocation: 1a4fadc5ae524b36a397ff2922eea21c
       Docs: https://www.elastic.co
   Main PID: 12958 (java)
      Tasks: 98 (limit: 18942)
     Memory: 8.4G (peak: 8.4G)
        CPU: 1min 11.206s
     CGroup: /system.slice/elasticsearch.service
             ├─12958 /usr/share/elasticsearch/jdk/bin/java -Xms4m -Xmx64m -XX:+UseSerialGC -Dcli.name=server -Dcli.script=/usr/share/elasticsearch/bin/elasticsearch -Dcli.libs=lib>
             ├─13026 /usr/share/elasticsearch/jdk/bin/java -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headles>
             └─13059 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

janv. 17 16:15:23 asmodee systemd[1]: Starting elasticsearch.service - Elasticsearch...
janv. 17 16:16:13 asmodee systemd[1]: Started elasticsearch.service - Elasticsearch.

```

Et pour tester

```auto
~# curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:_qq9Y30M20MNqQ*GnC+b https://localhost:9200 | jq .
  % Total % Received % Xferd Average Speed Time Time Time Current
                                 Dload Upload Total Spent Left Speed
100 531 100 531 0 0 1902 0 --:--:-- --:--:-- --:--:-- 1903
{
  "name": "ENED001",
  "cluster_name": "Enedwaith.Org",
  "cluster_uuid": "DlTJsaH0RNGLjlsANIx8gw",
  "version": {
    "number": "9.2.4",
    "build_flavor": "default",
    "build_type": "deb",
    "build_hash": "dfc5c38614c29a598e132c035b66160d3d350894",
    "build_date": "2026-01-08T22:07:25.170027027Z",
    "build_snapshot": false,
    "lucene_version": "10.3.2",
    "minimum_wire_compatibility_version": "8.19.0",
    "minimum_index_compatibility_version": "8.0.0"
  },
  "tagline": "You Know, for Search"
}

```

# Conclusion

Il n’y a rien de compliqué, mais il faut bien établir les étapes de l’installation pour s’assurer d’avoir une configuration fiable et stable; sans bidouille en somme ;).  
L’étape suivant sera de sécuriser l’installation (utiliser des certificat qui ne soit pas des certificat auto-générés) et de faire l’installation et la configuration de Kibana.
