Retrouver et changer les mots de passe générés (fichiers .env)
Où Mon serveur range les mots de passe de vos applications, comment les lire, lesquels on peut changer sans risque, et le piège du mot de passe de base de données.
Le script de Mon serveur crée des mots de passe aléatoires sur votre serveur, pendant l’installation. Ils ne passent jamais par le site. Ce guide explique où ils sont, et surtout lesquels on peut changer.
Où sont-ils ?
Dans un fichier .env à côté du compose.yml de chaque application qui en a besoin :
ls /opt/stacks/*/.env # les applications qui ont des mots de passe
sudo cat /opt/stacks/paperless/.env # les lire
# Mots de passe générés à l'installation. Ne partagez jamais ce fichier.
DB_PASSWORD=Xk3q…
PAPERLESS_SECRET_KEY=9f2c…
ADMIN_PASSWORD=Lm8v…
Ces fichiers ne sont lisibles que par root (chmod 600) : d’où le sudo.
Les trois sortes de secrets
| Nom | À quoi il sert | Peut-on le changer ? |
|---|---|---|
ADMIN_PASSWORD |
Mot de passe du premier compte administrateur | Oui, dans l’application (voir plus bas) |
DB_PASSWORD |
Mot de passe entre l’application et sa base de données | Rarement utile, et piégeux |
…_SECRET_KEY, APP_KEY, JWT_… |
Clé de chiffrement des sessions et données | Non : perte de sessions, voire de données |
Le mot de passe administrateur
Pour Nextcloud, Paperless ou Planka, le compte admin est créé au premier démarrage avec ADMIN_PASSWORD. Le script
l’affiche à la fin de l’installation.
Changez-le dans l’application (profil ou paramètres), pas dans le .env : la valeur du .env n’est lue qu’à la
toute première création du compte. La modifier ensuite ne change rien.
Le piège du mot de passe de base de données
DB_PASSWORD est utilisé deux fois : par la base de données à sa création, et par l’application à chaque
connexion. Mais la base ne relit jamais le .env après sa création. Si vous changez DB_PASSWORD dans le .env,
l’application envoie le nouveau mot de passe, la base attend l’ancien, et plus rien ne marche :
FATAL: password authentication failed for user "paperless"
(cette erreur dans le décodeur)
Si vous devez vraiment le changer (fichier .env qui a fuité, par exemple), changez-le aux deux endroits :
cd /opt/stacks/paperless
sudo docker compose exec db psql -U paperless -c "ALTER USER paperless PASSWORD 'NOUVEAU';"
sudo nano .env # mettez le même NOUVEAU dans DB_PASSWORD
sudo docker compose up -d
Le nom d’utilisateur de la base est dans le compose.yml (POSTGRES_USER).
Générer un bon mot de passe sur le serveur
La même méthode que le script :
openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32; echo
Évitez les caractères $ dans un .env : Docker les prend pour des variables
(l’erreur que ça provoque).
Le .env survit à la relance du script
Quand vous relancez le script pour ajouter une application, il affiche
« .env existant conservé » : vos mots de passe ne changent pas. Si vous supprimez un .env par erreur, le script en
recréera un nouveau, différent, ce qui provoquera le piège ci-dessus. Restaurez-le plutôt depuis
la sauvegarde : il est dans l’archive de l’application.
Les règles d’or
- Ne partagez jamais un
.env, ne le mettez jamais sur GitHub. - Ne collez pas son contenu dans un forum ou un chat d’aide : masquez les valeurs.
- Rangez les mots de passe administrateur dans votre gestionnaire de mots de passe (Vaultwarden, par exemple).
Une commande qui ne marche pas, une explication pas claire ? Signaler une erreur dans cette page.