Skip to content
BotServBotServ
OllamaSystemdServiceLinuxAutostart

Ollama como servicio Systemd

Inicia, supervisa y gestiona Ollama automáticamente. Servicio Systemd, variables de entorno y solución de problemas.

S

schutzgeist

3 min read
Ollama como servicio Systemd

Ollama como servicio Systemd

Qué cubre este artículo

  • Cómo ejecutar Ollama con Systemd como servicio.
  • Cómo configurar variables de entorno y opciones.
  • Cómo verificar el estado, reiniciar y diagnosticar problemas.
  • Cómo mantener Ollama funcionando de forma segura y estable en segundo plano.

Introducción: Ollama como servicio Systemd

Si usas Ollama regularmente en un servidor o en un contenedor Proxmox LXC, no querrás iniciar manualmente el programa cada vez que reinicies. Systemd es el gestor estándar de servicios en la mayoría de distribuciones Linux y funciona perfectamente para iniciar Ollama automáticamente, supervisarlo y reiniciarlo si se cuelga.

Este artículo te muestra cómo configurar, personalizar y mantener el servicio Systemd de Ollama.

Conceptos clave

  • Systemd: Sistema init y gestor de servicios en Linux.
  • Service: Configuración para un proceso persistente.
  • Unit-file: Archivo que describe el servicio.
  • Environment: Variable de entorno para el servicio.
  • Override: Configuración complementaria que extiende la configuración principal.
  • Restart-Policy: Comportamiento ante fallos.
  • Journal: Registro del sistema para servicios.

Instalación estándar

Cuando instalas Ollama con el script oficial, generalmente crea una unidad Systemd. Verifica:

systemctl status ollama

Si el servicio existe, probablemente ya está activado y ejecutándose en segundo plano.

Archivo de servicio manual

Si no existe ninguna unidad, puedes crearla manualmente:

sudo tee /etc/systemd/system/ollama.service <<EOF
[Unit]
Description=Ollama Service
After=network.target

[Service]
Type=simple
User=ollama
Group=ollama
WorkingDirectory=/home/ollama
ExecStart=/usr/local/bin/ollama serve
Restart=on-failure
RestartSec=10
Environment="HOME=/home/ollama"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

[Install]
WantedBy=multi-user.target
EOF

Luego:

sudo systemctl daemon-reload
sudo systemctl enable --now ollama

Configurar variables de entorno

No debes modificar las variables de entorno directamente en el archivo de servicio principal. En su lugar, usa un archivo override:

sudo systemctl edit ollama

Se abrirá un editor. Ejemplo:

[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
Environment="CUDA_VISIBLE_DEVICES=0"

Luego:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Variables de entorno importantes

  • OLLAMA_HOST: Dirección y puerto de escucha.
  • OLLAMA_NUM_PARALLEL: Solicitudes ejecutándose en paralelo.
  • OLLAMA_MAX_LOADED_MODELS: Número máximo de modelos cargados simultáneamente.
  • OLLAMA_MODELS: Ruta alternativa para archivos de modelos.
  • CUDA_VISIBLE_DEVICES: Selecciona una GPU Nvidia específica.
  • HIP_VISIBLE_DEVICES: Selecciona una GPU AMD específica.

Verificar el estado

systemctl status ollama
systemctl is-active ollama
systemctl is-enabled ollama

Ver logs

journalctl -u ollama -f
journalctl -u ollama --since "1 hour ago"

Reiniciar, detener e iniciar

sudo systemctl restart ollama
sudo systemctl stop ollama
sudo systemctl start ollama

Verificar el uso de GPU

ollama ps
nvidia-smi

Cuando Ollama se ejecuta en el contexto de Systemd, el usuario del servicio necesita acceso a la GPU. Por ejemplo, el usuario del servicio debe pertenecer al grupo video o render.

Seguridad

  • No ejecutar como root: Un usuario ollama dedicado es más seguro.
  • Limitar OLLAMA_HOST: El estándar es 127.0.0.1, solo vincula a la red si es necesario.
  • No guardar secretos en la unit: No almacenes claves API o contraseñas directamente.
  • Permisos de archivos: El directorio de modelos debe ser propiedad del usuario ollama.

Múltiples instancias de Ollama

Puedes definir varios servicios para modelos o usuarios separados, por ejemplo ollama-8b.service y ollama-70b.service, escuchando en puertos diferentes. Sin embargo, esto solo tiene sentido en casos especiales, ya que múltiples instancias pueden duplicar memoria.

Problemas comunes

  • El servicio no inicia: Usuario o ruta incorrectos.
  • GPU no detectada: El usuario no está en video/render o los drivers no están instalados.
  • Puerto ocupado: Otro proceso usa 11434.
  • Directorio de modelos no encontrado: OLLAMA_MODELS mal configurado o sin permisos.
  • Override no se carga: Olvidaste ejecutar systemctl daemon-reload.
  • Demasiadas solicitudes paralelas: Sistema sobrecargado.

Enlaces e información adicional

FAQ: Ollama como servicio Systemd

¿Se inicia Ollama automáticamente? Sí, si activaste el servicio con systemctl enable.

¿Dónde encuentro los logs de Ollama? Con journalctl -u ollama.

¿Cómo configuro variables de entorno? A través de systemctl edit ollama en un archivo override.

¿Puedo ejecutar Ollama como root? Técnicamente sí, pero no se recomienda por razones de seguridad.

¿Qué hago si Ollama no inicia al arrancar? Verifica systemctl status ollama y journalctl -u ollama.

Fuentes y lecturas adicionales

Resumen: Ollama como servicio Systemd

Ollama funciona cómodamente como servicio Systemd para iniciarse automáticamente y ser supervisado. Mediante archivos override puedes ajustar variables de entorno como host, puerto, paralelismo y ruta de modelos de forma segura sin modificar el archivo de servicio principal. Lo importante es usar un usuario dedicado, permisos correctos para GPU y directorio de modelos, y revisar regularmente los logs con journalctl. Si utilizas Systemd correctamente, tendrás un servidor Ollama estable para tu configuración local de inteligencia artificial.

Volver al blog
Share:

Entradas relacionadas