Curso de servidores linux

PARTE 1 — Preparar el servidor Linux

Comprobar memoria disponible

1free -h

Con 2GB debería mostrar algo como:

Mem: 1.9Gi

Si tienes menos de 1.5GB libres → activa swap (opcional pero recomendado):

1sudo fallocate -l 2G /swapfile
2sudo chmod 600 /swapfile
3sudo mkswap /swapfile
4sudo swapon /swapfile

Instalar Ollama

1curl -fsSL https://ollama.com/install.sh | sh

Comprobar que está instalado:

1ollama --version

PARTE 2 — Descargar y probar el modelo

Descargar Qwen 0.5B

1ollama pull qwen2.5:0.5b

Probar que funciona

1ollama run qwen2.5:0.5b

Escribe algo como:

Explica qué es Linux en una frase.

Si responde → perfecto ✅ Ya sabes que tu servidor lo soporta.

Sal con:

/bye

PARTE 3 — Configurarlo como servicio accesible desde el exterior

Por defecto, Ollama escucha solo en localhost. Debemos hacer que escuche en red.


Editar el servicio systemd

1sudo systemctl edit ollama

Se abrirá un editor. Añade:

1[Service]
2Environment="OLLAMA_HOST=0.0.0.0:11434"

Guarda y sal.


Reiniciar el servicio

1sudo systemctl daemon-reexec
2sudo systemctl restart ollama

Comprobar que está activo:

1sudo systemctl status ollama

Debe decir:

active (running)

PARTE 4 — Abrir el puerto en el firewall

Si usas UFW:

1sudo ufw allow 11434/tcp

Verificar:

1sudo ufw status

Debe aparecer:

11434/tcp ALLOW

PARTE 5 — Probar desde el propio servidor

1curl http://localhost:11434/api/tags

Debe devolver algo como:

1{
2  "models": [
3    { "name": "qwen2.5:0.5b" }
4  ]
5}

PARTE 6 — Probar desde Windows (otro equipo)

Ahora necesitas la IP del servidor:

1ip a

Busca algo como:

192.168.1.50

En Windows (PowerShell)

1curl http://192.168.1.50:11434/api/generate `
2  -Method POST `
3  -ContentType "application/json" `
4  -Body '{
5    "model": "qwen2.5:0.5b",
6    "prompt": "Explica qué es Docker en una frase"
7  }'

Si devuelve texto → 🎉 ya estás usando tu modelo remoto.


PARTE 7 — Usarlo desde código (ejemplo práctico)

1fetch("http://192.168.1.50:11434/api/generate", {
2  method: "POST",
3  headers: { "Content-Type": "application/json" },
4  body: JSON.stringify({
5    model: "qwen2.5:0.5b",
6    prompt: "Resume qué es una base de datos"
7  })
8})
9.then(res => res.json())
10.then(data => console.log(data.response));

PARTE 9 — Optimización para 2GB RAM

Puedes limitar memoria reduciendo contexto:

En las llamadas API añade:

1"options": {
2  "num_ctx": 256
3}

Ejemplo completo:

1{
2  "model": "qwen2.5:0.5b",
3  "prompt": "Explica Linux",
4  "options": {
5    "num_ctx": 256
6  }
7}

Menos contexto → menos RAM.