# Variables

> env ls, set, unset, pull, push

Les variables d'environnement d'un service se règlent sans ouvrir un fichier. Sur un
serveur de jeu, ce sont les réglages de l'édition — nombre de joueurs, message
d'accueil, difficulté. Sur une application, c'est sa configuration.

## ark env ls

```bash
ark env ls survie-2026
ark env ls survie-2026 --json
```

```
variable       valeur                     
MAX_PLAYERS    40
SERVER_MOTD    Bienvenue sur la survie
WHITELIST      0
SERVER_PORT    25565                      lecture seule
RCON_PASSWORD  UGjjrvHCbKZsyto7           lecture seule
```

Certaines variables sont **en lecture seule** : le port, le mot de passe RCON, tout ce
qu'Arkya pose lui-même. Les toucher casserait l'installation, donc elles ne se
touchent pas.

## ark env set

```bash
ark env set survie-2026 MAX_PLAYERS=60
ark env set survie-2026 MAX_PLAYERS=60 SERVER_MOTD="Serveur de la bande"
```

```
- 2 variable(s) sur survie-2026
ok variables enregistrées, effet au prochain démarrage
```

<Note>
  Une variable change au **prochain démarrage**, pas tout de suite. Enchaîne avec
  `ark restart` si tu veux l'effet maintenant.
</Note>

## ark env unset

Vide une variable sans la supprimer — elle repart à vide, et l'édition reprend son
défaut si elle en a un.

```bash
ark env unset survie-2026 SERVER_MOTD
ark env unset survie-2026 SERVER_MOTD WHITELIST
```

## ark env pull

Écrit les variables dans un fichier, au format `.env`.

```bash
ark env pull survie-2026
ark env pull survie-2026 --file config/survie.env
```

```
ok 9 variable(s) écrites dans .env
```

<Warning>
  Le fichier contient des secrets — mot de passe RCON, clés. Ne le commite pas.
</Warning>

## ark env push

L'inverse : lit un fichier `.env` et pose son contenu sur le service.

```bash
ark env push survie-2026
ark env push survie-2026 --file config/survie.env
```

```
- 9 variable(s) depuis config/survie.env
ok survie-2026 a pris les variables
```

Le format accepté est celui qu'on attend : une paire par ligne, les lignes vides et
celles qui commencent par `#` ignorées, les guillemets autour d'une valeur retirés.

```bash
# config/survie.env
MAX_PLAYERS=60
SERVER_MOTD="Serveur de la bande"
WHITELIST=1
```

## Recopier la configuration d'un service sur un autre

```bash
ark env pull survie-2026 --file /tmp/survie.env
ark env push survie-test --file /tmp/survie.env
```

Les variables en lecture seule du service d'origine sont refusées par le service de
destination : il garde les siennes, et rien ne casse.
