179 lines
4.8 KiB
Markdown
179 lines
4.8 KiB
Markdown
# LLM Server
|
|
|
|
Despliegue automatizado de un servidor LLM local con Ollama, LiteLLM y
|
|
OpenClaw sobre Ubuntu 22.04/24.04.
|
|
|
|
## Requisitos
|
|
|
|
- Ubuntu 22.04 o 24.04
|
|
- CPU de 4 núcleos o superior
|
|
- 16 GB de RAM como mínimo
|
|
- GPU NVIDIA compatible con sus controladores Linux
|
|
- Acceso `sudo` y conexión a Internet
|
|
|
|
La configuración está orientada a una NVIDIA RTX 3090 de 24 GB, pero el
|
|
script puede utilizarse con otras GPU compatibles ajustando el modelo si es
|
|
necesario.
|
|
|
|
## Instalación
|
|
|
|
Clona el repositorio en el servidor:
|
|
|
|
```bash
|
|
git clone https://gitea.oemspot.com.ar/carlostellocba/llm-server-setup.git
|
|
cd llm-server-setup
|
|
```
|
|
|
|
Ejecuta el instalador principal como `root` o mediante `sudo`:
|
|
|
|
```bash
|
|
chmod +x setup_llm_server.sh
|
|
sudo ./setup_llm_server.sh
|
|
```
|
|
|
|
El instalador:
|
|
|
|
- actualiza los paquetes del sistema e instala dependencias;
|
|
- configura un archivo de swap de 8 GB;
|
|
- instala los controladores NVIDIA si no están disponibles;
|
|
- instala y configura Ollama en `0.0.0.0:11434`;
|
|
- crea un entorno virtual de LiteLLM en `/opt/litellm-env`;
|
|
- descarga `qwen2.5-coder:14b`;
|
|
- crea el servicio `litellm.service` en el puerto `8000`;
|
|
- permite SSH y LiteLLM mediante UFW.
|
|
|
|
El proceso puede tardar varios minutos y requiere espacio suficiente para el
|
|
modelo. Si se instalan controladores NVIDIA nuevos, reinicia el servidor:
|
|
|
|
```bash
|
|
sudo reboot
|
|
```
|
|
|
|
## Verificación
|
|
|
|
Después de la instalación, comprueba los servicios:
|
|
|
|
```bash
|
|
systemctl status ollama
|
|
systemctl status litellm
|
|
nvidia-smi
|
|
curl http://127.0.0.1:11434/api/tags
|
|
curl http://127.0.0.1:8000/health/liveliness
|
|
```
|
|
|
|
La configuración de LiteLLM se genera en el directorio personal del usuario
|
|
que ejecuta `sudo` y queda guardada como `~/litellm_config.yaml`.
|
|
|
|
## Instalación de OpenClaw
|
|
|
|
Para la configuración completa de OpenClaw con el servidor local, consulta
|
|
[OPENCLAW_LOCAL_SERVER.md](OPENCLAW_LOCAL_SERVER.md).
|
|
|
|
El script `install_openclaw.sh` utiliza el instalador oficial de OpenClaw y
|
|
está pensado para Linux y WSL2. Para instalarlo sin abrir el asistente inicial:
|
|
|
|
```bash
|
|
bash install_openclaw.sh
|
|
```
|
|
|
|
Para instalarlo y ejecutar el asistente inmediatamente:
|
|
|
|
```bash
|
|
bash install_openclaw.sh --onboard
|
|
```
|
|
|
|
Si la instalación se hizo sin asistente, puedes iniciarlo después y configurar
|
|
el servicio de Gateway:
|
|
|
|
```bash
|
|
openclaw onboard --install-daemon
|
|
```
|
|
|
|
Comprueba la instalación con:
|
|
|
|
```bash
|
|
openclaw --version
|
|
openclaw doctor
|
|
openclaw gateway status
|
|
```
|
|
|
|
## Respaldo y recuperación
|
|
|
|
Para guardar la configuración del servidor antes de realizar cambios, ejecuta
|
|
el script como `root`:
|
|
|
|
```bash
|
|
chmod +x backup_ubuntu_config.sh restore_ubuntu_config.sh
|
|
sudo ./backup_ubuntu_config.sh
|
|
```
|
|
|
|
El respaldo se guarda por defecto en `/var/backups` e incluye inventario de
|
|
hardware, paquetes, servicios, red, UFW, systemd, NVIDIA, Ollama, LiteLLM,
|
|
OpenClaw y configuraciones de usuario. No incluye modelos Ollama, el entorno
|
|
virtual de LiteLLM, bases de datos ni logs completos.
|
|
|
|
Las claves SSH, certificados privados y credenciales de OpenClaw quedan fuera
|
|
por defecto. Para incluirlos explícitamente, protege el archivo resultante:
|
|
|
|
```bash
|
|
sudo ./backup_ubuntu_config.sh --include-secrets
|
|
sudo chmod 600 /var/backups/ubuntu-config-*.tar.gz
|
|
```
|
|
|
|
En una instalación Ubuntu nueva, instala primero el sistema base y crea los
|
|
usuarios necesarios. Después copia el archivo de respaldo y usa el restaurador
|
|
en modo vista previa:
|
|
|
|
```bash
|
|
sudo ./restore_ubuntu_config.sh /ruta/al/respaldo.tar.gz
|
|
```
|
|
|
|
Para aplicar la configuración:
|
|
|
|
```bash
|
|
sudo ./restore_ubuntu_config.sh /ruta/al/respaldo.tar.gz --yes
|
|
```
|
|
|
|
Puedes reinstalar los paquetes APT y arrancar los servicios habilitados de la
|
|
máquina original de forma explícita:
|
|
|
|
```bash
|
|
sudo ./restore_ubuntu_config.sh /ruta/al/respaldo.tar.gz \
|
|
--yes --install-packages --start-services
|
|
```
|
|
|
|
Revisa siempre los servicios y el firewall después de restaurar:
|
|
|
|
```bash
|
|
systemctl --failed
|
|
systemctl status ollama litellm
|
|
sudo ufw status verbose
|
|
nvidia-smi
|
|
```
|
|
|
|
## Tool calling y rutas de Windows
|
|
|
|
Cuando un modelo envía rutas de Windows dentro de argumentos JSON, las barras
|
|
invertidas deben estar escapadas. Por ejemplo:
|
|
|
|
```json
|
|
{
|
|
"path": "C:\\Users\\name\\file.txt"
|
|
}
|
|
```
|
|
|
|
Si las barras no están escapadas, el parser JSON puede fallar antes de que la
|
|
herramienta llegue a ejecutarse.
|
|
|
|
## Archivos principales
|
|
|
|
- `setup_llm_server.sh`: instala y configura Ollama, LiteLLM, NVIDIA y UFW.
|
|
- `install_openclaw.sh`: instala OpenClaw mediante el instalador oficial.
|
|
- `litellm_config.yaml`: configuración local opcional para LiteLLM.
|
|
- `tool_call_demo.py`: ejemplo local de manejo de llamadas a herramientas.
|
|
|
|
## Seguridad
|
|
|
|
El instalador expone Ollama en todas las interfaces y abre el puerto `8000`
|
|
en UFW. En un servidor conectado a Internet, limita esos puertos a la red
|
|
privada o protégelos detrás de un proxy con autenticación y HTTPS. |