Technical manualManual técnico › Installation › Installing › Configuration referenceInstalación › Instalación › Referencia de configuración
Configuration reference
Referencia de configuración
Every setting of the application that an operator can change. All of them are environment variables of the backend service; none is edited inside the image.
Todos los ajustes de la aplicación que puede cambiar un operador. Todos son variables de entorno del servicio backend; ninguno se edita dentro de la imagen.
👤 Who: System administrator📍 Where:environment block of backend · .env
👤 Quién: Administrador de sistemas📍 Dónde: Bloque environment de backend · .env
How settings are read
Cómo se leen los ajustes
The application reads its settings once, when it starts. To change one, edit the Compose file or .env and recreate the container with docker compose -f docker-compose.<edition>.yml up -d. The tables below describe an application started with SPRING_PROFILES_ACTIVE=prod,<edition>. In that mode a required variable with no value stops the start-up and the log names it.
La aplicación lee sus ajustes una sola vez, al arrancar. Para cambiar uno, editá el archivo Compose o .env y recreá el contenedor con docker compose -f docker-compose.<edición>.yml up -d. Las tablas de abajo describen una aplicación arrancada con SPRING_PROFILES_ACTIVE=prod,<edición>. En ese modo, una variable obligatoria sin valor detiene el arranque y el registro la nombra.
Start-up mode
Modo de arranque
Variable
What it does
Default
Required
SPRING_PROFILES_ACTIVE
Selects the set of settings. Use prod plus the edition, separated by a comma.
The edition of the image, alone.
Yes
JAVA_OPTS
Options passed to Java, for example the memory limits.
Empty
No
PMS_GATING_ENABLED
With true, the application refuses the calls to a module that is off for the organisation. See Editions.
false
No
Variable
Qué hace
Valor de fábrica
Obligatoria
SPRING_PROFILES_ACTIVE
Elige el juego de ajustes. Usá prod más la edición, separados por una coma.
La edición de la imagen, sola.
Sí
JAVA_OPTS
Opciones que se le pasan a Java, por ejemplo los límites de memoria.
Vacío
No
PMS_GATING_ENABLED
Con true, la aplicación rechaza las llamadas a un módulo apagado para la organización. Mirá Ediciones.
false
No
Database
Base de datos
Variable
What it does
Default
Required
SPRING_R2DBC_URL
Address the application uses for its daily work, in the form r2dbc:postgresql://<host>:<port>/<database>.
None
Yes
SPRING_R2DBC_USERNAME · SPRING_R2DBC_PASSWORD
User and password for the daily work.
None
Yes
SPRING_FLYWAY_URL
Address used to run the migrations at start-up, in the form jdbc:postgresql://<host>:<port>/<database>. The same database as above.
None
Yes
SPRING_FLYWAY_USER · SPRING_FLYWAY_PASSWORD
User and password for the migrations. It must be the owner of the database, because it creates and alters tables.
None
Yes
Variable
Qué hace
Valor de fábrica
Obligatoria
SPRING_R2DBC_URL
Dirección que usa la aplicación para el trabajo diario, con la forma r2dbc:postgresql://<host>:<puerto>/<base>.
Ninguno
Sí
SPRING_R2DBC_USERNAME · SPRING_R2DBC_PASSWORD
Usuario y contraseña para el trabajo diario.
Ninguno
Sí
SPRING_FLYWAY_URL
Dirección con la que se corren las migraciones al arrancar, con la forma jdbc:postgresql://<host>:<puerto>/<base>. La misma base de arriba.
Ninguno
Sí
SPRING_FLYWAY_USER · SPRING_FLYWAY_PASSWORD
Usuario y contraseña para las migraciones. Tiene que ser el dueño de la base, porque crea y modifica tablas.
Ninguno
Sí
The application keeps up to 60 connections to the database open. Leave room for them in the connection limit of PostgreSQL, which is 100 unless you change it.
La aplicación mantiene abiertas hasta 60 conexiones a la base de datos. Dejales lugar en el límite de conexiones de PostgreSQL, que es 100 si no lo cambiás.
💡
A separate user for the daily work. The migrations create a second database user, ks_erp_app, with fewer privileges and no password. With it, the database itself keeps each organisation's rows apart. To use it, give it a password once with ALTER ROLE ks_erp_app LOGIN PASSWORD '<your-password>'; after the first start, then set SPRING_R2DBC_USERNAME to ks_erp_app and SPRING_R2DBC_PASSWORD to that password, and leave the migration user as it is. The Compose files use the owner for both.Un usuario aparte para el trabajo diario. Las migraciones crean un segundo usuario de base de datos, ks_erp_app, con menos privilegios y sin contraseña. Con él, la propia base de datos mantiene separadas las filas de cada organización. Para usarlo, dale una contraseña una sola vez con ALTER ROLE ks_erp_app LOGIN PASSWORD '<tu-contraseña>'; después del primer arranque, después poné SPRING_R2DBC_USERNAME en ks_erp_app y SPRING_R2DBC_PASSWORD en esa contraseña, y dejá el usuario de migraciones como está. Los archivos Compose usan al dueño para las dos cosas.
Cache
Caché
Variable
What it does
Default
Required
SPRING_DATA_REDIS_HOST
Host of the Redis server.
None
Yes
SPRING_DATA_REDIS_PORT
Port of the Redis server.
6379
No
SPRING_DATA_REDIS_PASSWORD
Password, when the server asks for one.
Empty
No
Variable
Qué hace
Valor de fábrica
Obligatoria
SPRING_DATA_REDIS_HOST
Host del servidor Redis.
Ninguno
Sí
SPRING_DATA_REDIS_PORT
Puerto del servidor Redis.
6379
No
SPRING_DATA_REDIS_PASSWORD
Contraseña, cuando el servidor la pide.
Vacío
No
File store
Almacén de archivos
Variable
What it does
Default
Required
MINIO_S3_PROVIDER
minio for a MinIO server, s3 for Amazon S3. Any other value leaves the application without a file store and it does not start.
None
Yes
MINIO_S3_ENDPOINT
Address of the MinIO server. It is also the address written in the download links. With s3 it is not used, but it still needs a value.
None
Yes
MINIO_S3_BUCKET
Bucket where files are kept. With minio, it is created at start-up when it does not exist. With s3, create it beforehand.
None
Yes
MINIO_S3_REGION
Region of the bucket.
None
Yes
MINIO_S3_INDEX_LOG_BUCKET
A second bucket name. No function of this version writes to it; it only needs a value.
None
Yes
STORAGE_ACCESS_KEY · STORAGE_SECRET_KEY
User and password of the file store. With s3 you may leave both out, and the application takes the identity that the platform gives to the container.
None
With minio
Variable
Qué hace
Valor de fábrica
Obligatoria
MINIO_S3_PROVIDER
minio para un servidor MinIO, s3 para Amazon S3. Cualquier otro valor deja a la aplicación sin almacén y no arranca.
Ninguno
Sí
MINIO_S3_ENDPOINT
Dirección del servidor MinIO. Es también la dirección que queda escrita en los enlaces de descarga. Con s3 no se usa, pero igual necesita un valor.
Ninguno
Sí
MINIO_S3_BUCKET
Bucket donde se guardan los archivos. Con minio, se crea al arrancar cuando no existe. Con s3, crealo antes.
Ninguno
Sí
MINIO_S3_REGION
Región del bucket.
Ninguno
Sí
MINIO_S3_INDEX_LOG_BUCKET
Un segundo nombre de bucket. Ninguna función de esta versión escribe en él; solo necesita un valor.
Ninguno
Sí
STORAGE_ACCESS_KEY · STORAGE_SECRET_KEY
Usuario y contraseña del almacén. Con s3 podés no ponerlos, y la aplicación toma la identidad que la plataforma le da al contenedor.
Ninguno
Con minio
Secret keys
Claves secretas
Variable
What it protects
Rule
Required
PMS_SECURITY_JWT_SECRET
The sessions of every user.
At least 32 characters. Generate it with openssl rand -base64 64.
Yes
PMS_SECURITY_TOTP_ENCRYPTION_KEY
The two-step verification data of every user.
32 characters. Generate it with openssl rand -base64 32 | cut -c1-32.
Yes
KSERP_MASTER_KEY_V1
The access data of external services that organisations save in the system.
Exactly 32 bytes written in Base64: openssl rand -base64 32.
Yes
KSERP_CREDENTIALS_CURRENT_KEY_VERSION
Which master key encrypts new data.
Default 1.
No
KUBRIK_WORKFLOW_SECRET_KEY
The access data that workflows use to call other systems.
Exactly 32 bytes written in Base64: openssl rand -base64 32.
Yes
KUBRIK_WORKFLOW_SECRET_KEY_ID
A name for that key, recorded with everything it encrypts.
Default k1. It cannot be empty.
No
Variable
Qué protege
Regla
Obligatoria
PMS_SECURITY_JWT_SECRET
Las sesiones de todos los usuarios.
Al menos 32 caracteres. Generala con openssl rand -base64 64.
Sí
PMS_SECURITY_TOTP_ENCRYPTION_KEY
Los datos de la verificación en dos pasos de cada usuario.
32 caracteres. Generala con openssl rand -base64 32 | cut -c1-32.
Sí
KSERP_MASTER_KEY_V1
Los datos de acceso de servicios externos que las organizaciones guardan en el sistema.
Exactamente 32 bytes escritos en Base64: openssl rand -base64 32.
Sí
KSERP_CREDENTIALS_CURRENT_KEY_VERSION
Con cuál clave maestra se cifran los datos nuevos.
De fábrica 1.
No
KUBRIK_WORKFLOW_SECRET_KEY
Los datos de acceso con los que los flujos de trabajo llaman a otros sistemas.
Exactamente 32 bytes escritos en Base64: openssl rand -base64 32.
Sí
KUBRIK_WORKFLOW_SECRET_KEY_ID
Un nombre para esa clave, que queda anotado junto a todo lo que cifra.
De fábrica k1. No puede quedar vacío.
No
⛔
Generate every key yourself and never change one lightly. The application refuses to start with a missing key, a key that is too short or one of the sample values of the source tree. Changing PMS_SECURITY_JWT_SECRET only makes everybody sign in again. Changing or losing any of the other three makes the data it protects unreadable.Generá vos cada clave y no cambies ninguna a la ligera. La aplicación se niega a arrancar si falta una clave, si es demasiado corta o si es uno de los valores de ejemplo del código fuente. Cambiar PMS_SECURITY_JWT_SECRET solo hace que todos vuelvan a ingresar. Cambiar o perder cualquiera de las otras tres vuelve ilegibles los datos que protege.
Addresses of your site
Direcciones de tu sitio
Variable
What it does
Default
Required
APP_CORS_ALLOWED_ORIGINS
The web addresses allowed to call the application from a browser, separated by commas. Put the address of the administration app and, if you publish it, of the storefront.
None
Yes
APP_BASE_URL
The public address of the application. It is written in the links that share a document.
None
Yes
KUBRIK_FRONTEND_BASE_URL
The public address of the administration app, for the links in the notification e-mails of workflows.
Taken from the verification address below.
No
APP_MAIL_VERIFICATION_LINK_BASE
The page that the verification e-mail links to: the address of the administration app followed by /verify-email.
An address of Kubrik's own site: always replace it.
In practice, yes
Variable
Qué hace
Valor de fábrica
Obligatoria
APP_CORS_ALLOWED_ORIGINS
Las direcciones web que pueden llamar a la aplicación desde un navegador, separadas por comas. Poné la de la aplicación de administración y, si la publicás, la de la tienda.
Ninguno
Sí
APP_BASE_URL
La dirección pública de la aplicación. Queda escrita en los enlaces para compartir un documento.
Ninguno
Sí
KUBRIK_FRONTEND_BASE_URL
La dirección pública de la aplicación de administración, para los enlaces de los correos de aviso de los flujos de trabajo.
Se toma de la dirección de verificación de abajo.
No
APP_MAIL_VERIFICATION_LINK_BASE
La página a la que lleva el correo de verificación: la dirección de la aplicación de administración seguida de /verify-email.
Una dirección del sitio de Kubrik: reemplazala siempre.
En la práctica, sí
E-mail, documents, location and assistant
Correo, documentos, ubicación y asistente
Variable
What it does
Default
APP_MAIL_TRANSPORT
How e-mail leaves: smtp, graph (Microsoft 365) or log (nothing is sent).
graph
APP_MAIL_FROM · APP_MAIL_FROM_NAME
Address and name shown as the sender.
An address of Kubrik and the name Kubrik ERP: replace both.
The interactive API documentation pages. To turn them on, set SPRINGDOC_API_DOCS_ENABLED and SPRINGDOC_SWAGGER_UI_ENABLED to true.
The screen that runs free database queries from the administration app.
The message queue (Kafka). The system does not need it.
Las páginas interactivas de documentación de la API. Para prenderlas, poné SPRINGDOC_API_DOCS_ENABLED y SPRINGDOC_SWAGGER_UI_ENABLED en true.
La pantalla que corre consultas libres a la base de datos desde la aplicación de administración.
La cola de mensajes (Kafka). El sistema no la necesita.
Common issues
Problemas habituales
"Could not resolve placeholder" followed by a name
A required variable has no value. The name in the message, in capitals and with underscores, is the variable to set.
I changed a variable and nothing happened
Settings are read at start-up. Recreate the container with docker compose -f docker-compose.<edition>.yml up -d; restarting it is not enough when the change is in the Compose file or in .env.
The browser reports a CORS error
The address in the browser is not in APP_CORS_ALLOWED_ORIGINS. Write it exactly as it appears, with https:// and without a final slash.
«Could not resolve placeholder» seguido de un nombre
Una variable obligatoria no tiene valor. El nombre del mensaje, en mayúsculas y con guiones bajos, es la variable que falta.
Cambié una variable y no pasó nada
Los ajustes se leen al arrancar. Recreá el contenedor con docker compose -f docker-compose.<edición>.yml up -d; reiniciarlo no alcanza cuando el cambio está en el archivo Compose o en .env.
El navegador informa un error de CORS
La dirección del navegador no está en APP_CORS_ALLOWED_ORIGINS. Escribila exactamente como aparece, con https:// y sin barra final.