Optional services
Servicios opcionales
Outbound e-mail, PDF documents, location by network address and the artificial intelligence provider. The system starts without them, but each one switches on a part of it.
Correo saliente, documentos en PDF, ubicación por dirección de red y el proveedor de inteligencia artificial. El sistema arranca sin ellos, pero cada uno prende una parte.
Outbound e-mail
Correo saliente
The system sends the verification message of a new organisation, purchase orders, notifications and other messages. APP_MAIL_TRANSPORT chooses how they leave.
El sistema envía el mensaje de verificación de una organización nueva, órdenes de compra, avisos y otros mensajes. APP_MAIL_TRANSPORT elige por dónde salen.
| Value | What it does | What else it needs |
|---|---|---|
| smtp | Sends through a mail server. | SPRING_MAIL_HOST, and usually SPRING_MAIL_PORT, SPRING_MAIL_USERNAME and SPRING_MAIL_PASSWORD; plus APP_MAIL_VERIFICATION_LINK_BASE. |
| graph | Sends through Microsoft 365, as an application registered in your directory with permission to send mail. | AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET and APP_MAIL_GRAPH_SENDER (the mailbox that sends); plus APP_MAIL_VERIFICATION_LINK_BASE. APP_MAIL_FROM has to be that mailbox or one of its aliases. |
| log | Sends nothing. Each message leaves one line in the log with the recipient and the subject. | Nothing. Useful only to start the system before the mail service exists. |
| Valor | Qué hace | Qué más necesita |
|---|---|---|
| smtp | Envía por un servidor de correo. | SPRING_MAIL_HOST, y por lo general SPRING_MAIL_PORT, SPRING_MAIL_USERNAME y SPRING_MAIL_PASSWORD; más APP_MAIL_VERIFICATION_LINK_BASE. |
| graph | Envía por Microsoft 365, como una aplicación registrada en tu directorio con permiso para enviar correo. | AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET y APP_MAIL_GRAPH_SENDER (la casilla que envía); más APP_MAIL_VERIFICATION_LINK_BASE. APP_MAIL_FROM tiene que ser esa casilla o uno de sus alias. |
| log | No envía nada. Cada mensaje deja una línea en el registro con el destinatario y el asunto. | Nada. Sirve solo para arrancar el sistema antes de que exista el servicio de correo. |
Set APP_MAIL_FROM and APP_MAIL_FROM_NAME to the sender your organisations should see.
Poné en APP_MAIL_FROM y APP_MAIL_FROM_NAME el remitente que tienen que ver tus organizaciones.
PDF documents
Documentos en PDF
Documents are turned into PDF by a separate service, Gotenberg, which the Compose files do not include. Add a container of the image gotenberg/gotenberg:8 and set PDF_GOTENBERG_URL to its address, for example http://gotenberg:3000. If you prefer not to run it, set PDF_RENDERER to openhtmltopdf, which produces the documents inside the application; documents designed for a browser may then come out with a different layout.
Los documentos se pasan a PDF con un servicio aparte, Gotenberg, que los archivos Compose no incluyen. Agregá un contenedor de la imagen gotenberg/gotenberg:8 y poné en PDF_GOTENBERG_URL su dirección, por ejemplo http://gotenberg:3000. Si preferís no correrlo, poné PDF_RENDERER en openhtmltopdf, que genera los documentos dentro de la aplicación; los documentos pensados para un navegador pueden salir entonces con otra disposición.
Location by network address
Ubicación por dirección de red
With the MaxMind GeoLite2 database, the registration form proposes the country of the visitor and each session shows where it was opened from. The file is not part of the delivery: you download it with a free MaxMind account.
Con la base MaxMind GeoLite2, el formulario de registro propone el país del visitante y cada sesión muestra desde dónde se abrió. El archivo no viene en la entrega: lo bajás con una cuenta gratuita de MaxMind.
- Get a licence key from your MaxMind account.
- Download the file from the root of the source tree: MAXMIND_LICENSE_KEY=<your-key> kubrik-erp-be/scripts/fetch-geoip-db.sh ./geoip. It leaves GeoLite2-City.mmdb in the folder geoip, next to the Compose file.
- Recreate the application. The Compose files already mount that folder and already set KSERP_GEOIP_MMDB_PATH. The file is read once, at start-up.
- Check the log. A line Loaded MaxMind GeoIP database from confirms it.
- Conseguí una clave de licencia en tu cuenta de MaxMind.
- Bajá el archivo desde la raíz del código fuente: MAXMIND_LICENSE_KEY=<tu-clave> kubrik-erp-be/scripts/fetch-geoip-db.sh ./geoip. Deja GeoLite2-City.mmdb en la carpeta geoip, al lado del archivo Compose.
- Recreá la aplicación. Los archivos Compose ya montan esa carpeta y ya definen KSERP_GEOIP_MMDB_PATH. El archivo se lee una sola vez, al arrancar.
- Revisá el registro. Una línea Loaded MaxMind GeoIP database from lo confirma.
MaxMind updates the database twice a week. Run the script again from time to time and restart the application so it reads the new file. Without the file nothing breaks: sessions carry no location and the registration form proposes no country.
MaxMind actualiza la base dos veces por semana. Corré el script de nuevo cada tanto y reiniciá la aplicación para que lea el archivo nuevo. Sin el archivo no se rompe nada: las sesiones no llevan ubicación y el formulario de registro no propone país.
Artificial intelligence provider
Proveedor de inteligencia artificial
The assistant and the other functions that use a language model work with a key of the provider, Anthropic. The installation has no key of its own: each organisation loads its key in Platform → AI Config. Set KSERP_AI_CREDENTIALS_SOURCE to tenant-key so that only those keys are used. The default value expects a command-line tool of the provider that the image does not include.
El asistente y las demás funciones que usan un modelo de lenguaje trabajan con una clave del proveedor, Anthropic. La instalación no tiene una clave propia: cada organización carga la suya en Plataforma → Configuración de IA. Poné KSERP_AI_CREDENTIALS_SOURCE en tenant-key para que solo se usen esas claves. El valor de fábrica espera una herramienta de línea de comandos del proveedor que la imagen no incluye.
Common issues
Problemas habituales
- "app.mail.transport=… requires app.mail.verification-link-base (set APP_MAIL_VERIFICATION_LINK_BASE)"
- A transport that really sends needs the address of the verification page. Set the variable and start again.
- "app.mail.transport=graph requires …"
- One of the four Microsoft 365 values is empty. The message names it.
- "Mail transport not configured (no spring.mail.host) — skipping email"
- The transport is smtp but the mail server is not set. Set SPRING_MAIL_HOST.
- "MaxMind DB not readable at …"
- The file is not where KSERP_GEOIP_MMDB_PATH says, or the container cannot read it. Check the folder geoip and its permissions.
- "ERROR: MAXMIND_LICENSE_KEY is not set"
- The download script needs the licence key in that variable.
- A document in PDF fails
- The application cannot reach Gotenberg. Check PDF_GOTENBERG_URL and that the container is running.
- «app.mail.transport=… requires app.mail.verification-link-base (set APP_MAIL_VERIFICATION_LINK_BASE)»
- Un transporte que envía de verdad necesita la dirección de la página de verificación. Definí la variable y arrancá de nuevo.
- «app.mail.transport=graph requires …»
- Uno de los cuatro valores de Microsoft 365 está vacío. El mensaje dice cuál.
- «Mail transport not configured (no spring.mail.host) — skipping email»
- El transporte es smtp pero el servidor de correo no está definido. Definí SPRING_MAIL_HOST.
- «MaxMind DB not readable at …»
- El archivo no está donde dice KSERP_GEOIP_MMDB_PATH, o el contenedor no lo puede leer. Revisá la carpeta geoip y sus permisos.
- «ERROR: MAXMIND_LICENSE_KEY is not set»
- El script de descarga necesita la clave de licencia en esa variable.
- Falla un documento en PDF
- La aplicación no llega a Gotenberg. Revisá PDF_GOTENBERG_URL y que el contenedor esté corriendo.