Variables de entorno y secretos
Cómo dar configuración a tu app, guardar claves y contraseñas como secretos cifrados que nunca se vuelven a mostrar, y conectar bases de datos y almacenes sin copiar credenciales.
Las variables de entorno son la configuración de tu app: el nombre de la tienda, la clave de una API de pagos, el modo de depuración. En Dilohost se guardan por app, los secretos van cifrados y la app se reinicia sola para leerlas.
Poner variables
En la app web de la tienda, pon APP_NAME="Tienda Ana" y APP_ENV=production.
El agente usa config.set con un objeto {"NOMBRE": "valor"}. La app se reinicia con los valores nuevos en unos segundos; no hace falta volver a publicar.
Secretos
Las contraseñas, claves y tokens se guardan como secretos:
Guarda como secreto la clave de Stripe de la tienda: STRIPE_SECRET=…
El agente usa config.set con secret=true. Un secreto:
- se guarda cifrado;
- nunca se vuelve a mostrar por el agente: al listar las variables sale como
•••••• (secreto); - si lo pierdes, no se puede recuperar: se cambia por uno nuevo.
Importante
Lo que escribas en la conversación lo ve tu agente, así que lo más seguro es que un secreto no pase por ella. Para bases de datos y almacenes de ficheros no hace falta: Dilohost escribe las credenciales directamente en la app con
inject_into(ver abajo). Las claves de servicios externos (pagos, correo, APIs) sí tienen que llegar por la conversación una vez; desde ese momento quedan cifradas y no se vuelven a mostrar.
Ver y quitar variables
¿Qué variables tiene la app web de la tienda?
config.list enseña los nombres y los valores, salvo los secretos, que salen ocultos.
Quita la variable DEBUG de la tienda.
config.unset borra las variables que le digas. Pide confirmación, porque si la app las necesita dejará de funcionar. La app se reinicia sin ellas.
Conectar bases de datos y almacenes sin copiar credenciales
En lugar de copiar usuarios y contraseñas, pide que Dilohost los inyecte en la app:
Conecta la base de datos «datos» a la app web de la tienda.
database.connectionconinject_into="<app>"guarda como secretosDATABASE_URL,DB_*y la configuración de TLS. Ver Bases de datos.storage.connectionconinject_into="<app>"guarda como secretos las variablesAWS_*del almacén. Ver Almacenamiento de ficheros.
La contraseña no aparece en ningún momento en la conversación.
Reglas
| Regla | Valor |
|---|---|
| Nombre | Letras, números y guion bajo, empezando por letra o guion bajo (por ejemplo APP_URL). |
| Valor | Texto, hasta 32 KB. |
| Cuántas | Hasta 50 por petición y 150 por app. |
| Reservadas | PORT, HOME, PATH y HOSTNAME las pone Dilohost y no se pueden cambiar. PORT vale 8080. |
Los workers y tareas programadas usan las variables de la app de la que salen.
Nota
Los ficheros
.envcon secretos que lleguen en un zip se descartan al subirlo, para que no acaben en el repositorio. Pon la configuración en variables.