8.3 KiB
OpenClaw con servidor local
Guía para ejecutar OpenClaw usando el modelo local administrado por Ollama y expuesto mediante LiteLLM.
El video de referencia es Aprende OpenClaw Ahora! curso completo desde cero para programadores. Esta guía adapta el flujo de configuración a este servidor local y no depende de un proveedor cloud.
Arquitectura
OpenClaw Gateway
|
| OpenAI-compatible: http://127.0.0.1:8000/v1
v
LiteLLM Proxy
|
| Ollama native API: http://127.0.0.1:11434
v
Ollama -> qwen2.5-coder:14b -> NVIDIA GPU
Cuando OpenClaw y el servidor LLM están en la misma máquina, usa 127.0.0.1.
Si OpenClaw corre en otro equipo, reemplaza esa dirección por la IP privada del
servidor, por ejemplo http://192.168.1.50:8000/v1.
Requisitos
En el servidor LLM:
- Ubuntu 22.04 o 24.04.
- Node.js 24.16 o superior para OpenClaw.
- GPU NVIDIA con controladores funcionales.
- 16 GB de RAM como mínimo y espacio para el modelo.
sudo,curl,git, Python 3 y conexión a Internet.
En el cliente remoto solo necesitas Node.js compatible con OpenClaw y acceso de
red al puerto 8000 del servidor.
1. Preparar el servidor LLM
Clona este repositorio y ejecuta el instalador principal:
git clone https://gitea.oemspot.com.ar/carlostellocba/llm-server-setup.git
cd llm-server-setup
chmod +x setup_llm_server.sh
sudo ./setup_llm_server.sh
El script instala y configura:
- controladores NVIDIA y un límite de potencia de 300 W;
- 8 GB de swap;
- Ollama como servicio systemd en
0.0.0.0:11434; - el modelo
qwen2.5-coder:14b; - LiteLLM en
/opt/litellm-env; - LiteLLM como
litellm.serviceen0.0.0.0:8000; - reglas UFW para SSH y LiteLLM.
Si se instalaron nuevos controladores, reinicia antes de continuar:
sudo reboot
2. Verificar Ollama y LiteLLM
Ejecuta estas comprobaciones en el servidor:
systemctl is-active ollama
systemctl is-active litellm
nvidia-smi
curl http://127.0.0.1:11434/api/tags
curl http://127.0.0.1:8000/health/liveliness
Confirma que el modelo existe:
ollama list
La configuración generada por setup_llm_server.sh está en:
~/litellm_config.yaml
El servicio LiteLLM debe ejecutarse con esa configuración y escuchar en el
puerto 8000. Para revisar errores:
sudo journalctl -u ollama -n 100 --no-pager
sudo journalctl -u litellm -n 100 --no-pager
3. Probar el endpoint OpenAI-compatible
Antes de instalar OpenClaw, prueba LiteLLM directamente:
curl http://127.0.0.1:8000/v1/models
Después envía una consulta usando una clave local de prueba. El proxy de este
repositorio no configura autenticación, pero OpenClaw espera un valor de API
key para el proveedor LiteLLM; local sirve como valor de configuración local:
curl http://127.0.0.1:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer local' \
-d '{
"model": "qwen2.5-coder:14b",
"messages": [{"role": "user", "content": "Responde exactamente: OK"}],
"temperature": 0
}'
La respuesta debe contener OK y no un error de conexión o de modelo.
4. Instalar OpenClaw
En el servidor o en el equipo donde se ejecutará el Gateway:
bash install_openclaw.sh
El script instala OpenClaw sin iniciar el asistente. También puedes ejecutar el instalador oficial directamente:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard
Comprueba Node.js y OpenClaw:
node --version
openclaw --version
5. Configurar OpenClaw con LiteLLM local
La configuración de OpenClaw se guarda en:
~/.openclaw/openclaw.json
Crea o edita ese archivo como JSON5:
{
models: {
providers: {
litellm: {
baseUrl: "http://127.0.0.1:8000/v1",
apiKey: "local",
api: "openai-completions",
models: [
{
id: "qwen2.5-coder:14b",
name: "Qwen 2.5 Coder 14B local",
reasoning: false,
input: ["text"],
contextWindow: 32768,
maxTokens: 32768
}
]
}
}
},
agents: {
defaults: {
model: {
primary: "litellm/qwen2.5-coder:14b"
}
}
}
}
Puntos importantes:
- En
baseUrlincluye/v1porque OpenClaw usa la API compatible con OpenAI de LiteLLM. - No uses
http://127.0.0.1:11434/v1directamente con el proveedor LiteLLM. - Para Ollama nativo, OpenClaw usa otra configuración y no debe mezclarse con esta ruta.
apiKey: "local"coincide con el valor usado en las pruebas. No es una credencial real porque el servicio actual no habilita autenticación.
Valida la configuración:
openclaw doctor
openclaw models list --provider litellm --refresh --json
6. Configurar con el asistente
Como alternativa a editar JSON5, ejecuta el onboarding indicando LiteLLM:
openclaw onboard --auth-choice litellm-api-key
Cuando solicite la URL del proxy, usa:
http://127.0.0.1:8000/v1
Y como API key local:
local
Si el asistente permite modo no interactivo en tu versión instalada:
export LITELLM_API_KEY=local
openclaw onboard --non-interactive --accept-risk --skip-health \
--auth-choice litellm-api-key \
--litellm-api-key "$LITELLM_API_KEY" \
--custom-base-url "http://127.0.0.1:8000/v1"
Después revisa el modelo primario con:
openclaw config get agents.defaults.model.primary
Debe devolver litellm/qwen2.5-coder:14b.
7. Instalar y verificar el Gateway
Instala el servicio de usuario de OpenClaw:
openclaw gateway install
openclaw gateway status
El Gateway normalmente escucha en el puerto 18789. Abre el dashboard:
openclaw dashboard
También puedes verificarlo desde el navegador en:
http://127.0.0.1:18789
Prueba un mensaje desde el dashboard. En otra terminal puedes observar los logs del Gateway:
openclaw logs --follow
8. Usar OpenClaw desde otro equipo
Si el Gateway corre en otro equipo distinto al servidor LLM, cambia únicamente
baseUrl en ~/.openclaw/openclaw.json:
{
models: {
providers: {
litellm: {
baseUrl: "http://192.168.1.50:8000/v1",
apiKey: "local",
api: "openai-completions",
models: [
{
id: "qwen2.5-coder:14b",
name: "Qwen 2.5 Coder 14B local",
input: ["text"],
contextWindow: 32768,
maxTokens: 32768
}
]
}
}
},
agents: {
defaults: {
model: { primary: "litellm/qwen2.5-coder:14b" }
}
}
}
En el servidor, permite el acceso solo desde la red privada. Por ejemplo, reemplaza la regla abierta actual de UFW por una regla limitada a tu subred:
sudo ufw delete allow 8000/tcp
sudo ufw allow from 192.168.1.0/24 to any port 8000 proto tcp
sudo ufw status verbose
No expongas el puerto 8000 directamente a Internet: el proxy actual no tiene
una API key real ni TLS.
Solución de problemas
Connection refused en el puerto 8000
sudo systemctl restart ollama litellm
sudo systemctl status ollama litellm
sudo journalctl -u litellm -n 100 --no-pager
LiteLLM no encuentra el modelo
ollama list
ollama pull qwen2.5-coder:14b
curl http://127.0.0.1:8000/v1/models
El nombre debe coincidir exactamente en los tres lugares:
qwen2.5-coder:14b
OpenClaw muestra respuestas de herramientas como texto
Comprueba que OpenClaw usa LiteLLM con /v1 y no la URL equivocada de Ollama:
openclaw config get models.providers.litellm.baseUrl
Debe devolver:
http://127.0.0.1:8000/v1
El modelo se queda sin memoria
Reduce contextWindow y maxTokens en la configuración de OpenClaw y revisa
la VRAM disponible:
nvidia-smi
La configuración no es válida
openclaw doctor
openclaw doctor --fix
OpenClaw valida estrictamente openclaw.json; un campo desconocido o un tipo
incorrecto puede impedir que el Gateway arranque.