Puedes servir el frontend compilado usando PM2 y el servidor estático integrado:
- Compila el frontend:
cd frontend
npm run build- Sirve el frontend en modo SPA (Single Page Application) en el puerto 4173 (o el que definas):
npm run pm2- El sitio estará disponible en http://localhost:4173
Puedes cambiar el puerto modificando el script en frontend/package.json si lo necesitas.
Puedes usar PM2 para ejecutar el servidor Node.js en segundo plano y mantenerlo activo incluso tras reinicios.
sudo npm install -g pm2- Asegúrate de tener configurado el puerto en tu archivo
.env:
PORT=3000 # O el puerto que prefieras
- Compila el proyecto:
npm run build:api- Inicia el servidor con PM2:
npm run pm2- Verifica el estado:
pm2 status- Para reiniciar o detener:
pm2 restart ollama-api
pm2 stop ollama-api- Para que PM2 arranque tras reinicio del sistema:
pm2 startup
pm2 saveEsta API permite consumir OLLAMA usando un modelo y URL configurados en .env. Expone un endpoint /ollama para enviar prompts y recibir respuestas en texto o imagen.
-
Edita el archivo
.env:OLLAMA_URL=http://localhost:11434 OLLAMA_MODEL=llama2
-
Inicia el servidor:
npx tsc --project tsconfig.api.json node dist/server.js
curl -X POST http://localhost:3000/ollama \
-H "Content-Type: application/json" \
-d '{"prompt": "¿Cuál es la capital de Francia?"}'Respuesta:
{
"type": "text",
"content": "La capital de Francia es París."
}const response = await fetch('http://localhost:3000/ollama', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt: 'Dibuja un gato' })
});
const data = await response.json();
if (data.type === 'image') {
// data.content es base64
document.getElementById('img').src = 'data:image/png;base64,' + data.content;
} else {
console.log(data.content);
}- El endpoint
/ollamaacepta solo POST y requiere el campoprompt. - La respuesta puede ser texto (
type: text) o imagen en base64 (type: image). - Modifica el modelo y la URL en
.envsegún tu instancia local de OLLAMA.