Ir al contenido principal

Entradas

Mostrando entradas de noviembre, 2025

Deploy de Quarkus + SQLite en Producción (Ubuntu Server)

Guía práctica para instalar y ejecutar una aplicación Quarkus en un servidor Linux usando SQLite. 1. Ir al directorio de instalación cd /opt 2. Clonar el repositorio git clone https://github.com/hugomrj/jkude cd jkude Esto copia el proyecto en /opt/jkude . 3. Instalar Gradle sudo snap install gradle --classic Verificar instalación: gradle -v 4. Compilar el proyecto Quarkus sudo ./gradlew build El archivo ejecutable quedará en: /opt/jkude/build/quarkus-app/ 5. Preparar la base de datos SQLite Crear carpeta data en el build sudo mkdir /opt/jkude/build/quarkus-app/data Copiar la base de datos sudo cp /opt/jkude/data/jkude.db /opt/jkude/build/quarkus-app/data/ Esto respeta la configuración: jdbc:sqlite:./data/jkude.db 6. Ejecutar la aplicación cd /opt/jkude/build/quarkus-app sudo java -jar quarkus-run.jar Si todo está bien, verás el mensaje de arranque y el puerto: http://0.0.0.0:8001 7. Habilitar Swagger UI en pro...

Cómo generar reportes JasperReports (JRXML) desde Quarkus con Gradle

En este tutorial aprenderás a ejecutar un reporte JasperReports (JRXML) desde una API REST creada con Quarkus . También veremos cómo generar un PDF dinámico a partir de parámetros. 1. Crear proyecto Quarkus con Gradle quarkus create app com.demo:jkude --gradle cd jkude 2. Agregar dependencias necesarias Editar el archivo build.gradle : dependencies { implementation "net.sf.jasperreports:jasperreports:6.20.6" implementation "com.lowagie:itext:2.1.7" // Soluciona la dependencia faltante que Jasper busca por defecto implementation "com.github.librepdf:openpdf:1.3.30" } repositories { mavenCentral() } Estas versiones funcionan sin errores y son completamente compatibles con JasperReports 6.20.x. 3. Crear un reporte JRXML básico Crear: src/main/resources/reports/report.jrxml Contenido del archivo: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jasperReport PUBLIC "-...

Guía: Configurar Servidor de Modelos GGUF con Docker

Guía: Configurar Servidor de Modelos GGUF con Docker Esta guía muestra cómo configurar un servidor de modelos GGUF en Docker usando modelos locales existentes en /opt/llama-app/models . Estructura de Directorios Tienes los modelos en /opt/llama-app/models : /opt/llama-app/models/ ├── granite-4.0-h-tiny-Q5_K_M.gguf ├── granite-4.0-h-tiny-Q6_K.gguf └── llama-3.2-3b-instruct-q4_0.gguf Configuración Docker Compose Crea el directorio para la configuración del servidor: mkdir -p /opt/llama-server cd /opt/llama-server Crea el archivo docker-compose.yml : services: llm-server: image: ghcr.io/ggml-org/llama.cpp:server container_name: llm-server ports: - "8600:8600" volumes: - /opt/llama-app/models:/models command: > -m /models/granite-4.0-h-tiny-Q5_K_M.gguf --host 0.0.0.0 --port 8600 --ctx-size 4096 --threads 4 --n-gpu-l...

Instalar n8n, Supabase, Evolution API y Portainer

Cómo instalar n8n, Supabase, Evolution API y Portainer en contenedores Docker separados con red compartida En este tutorial aprenderás a desplegar n8n , Supabase , Evolution API y Portainer en contenedores independientes, todos conectados entre sí mediante una red Docker común. Este enfoque mantiene cada servicio modular y fácil de administrar, sin perder comunicación interna entre ellos. 1. Objetivo del entorno El objetivo es contar con los siguientes servicios corriendo en el mismo servidor: n8n – Automatización de flujos. Supabase – Base de datos PostgreSQL utilizada por n8n. Evolution API – API para integrar modelos de IA o bots. Portainer – Panel web para administración de contenedores Docker. Todos se comunicarán dentro de la red local mi_red_local , sin necesidad de exponer internamente las bases de datos o servicios entre sí. 2. Crear la red compartida Ejecuta este comando una sola vez. La red servirá para q...