Gérer les secrets et variables d’environnement dans systemd services en 2026.
Voir notre guide systemd.
Variables inline (mauvais)
[Service]
Environment="API_KEY=secret123"Visible dans systemctl show. Évitez pour secrets.
EnvironmentFile (bon)
[Service]
EnvironmentFile=/etc/myapp/secrets.env# /etc/myapp/secrets.env
API_KEY=secret123
DB_PASSWORD=...chmod 600 /etc/myapp/secrets.env
chown myapp:myapp /etc/myapp/secrets.envLoadCredential (meilleur, systemd 250+)
[Service]
LoadCredential=api_key:/etc/myapp/api_key
LoadCredential=db_password:/etc/myapp/db_passwordLes secrets sont disponibles dans $CREDENTIALS_DIRECTORY (tmpfs RAM uniquement, jamais sur disque accessible au service).
# Dans votre app
const apiKey = await fs.readFile(`${process.env.CREDENTIALS_DIRECTORY}/api_key`, "utf8");Avec password manager (encrypted)
Pour secrets plus sensibles, utilisez systemd-creds (chiffré par TPM ou clef hôte) :
echo "secret" | systemd-creds encrypt - /etc/myapp/api_key.cred --name=api_key