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
ollamadedicado 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/rendero los drivers no están instalados. - Puerto ocupado: Otro proceso usa
11434. - Directorio de modelos no encontrado:
OLLAMA_MODELSmal configurado o sin permisos. - Override no se carga: Olvidaste ejecutar
systemctl daemon-reload. - Demasiadas solicitudes paralelas: Sistema sobrecargado.
Enlaces e información adicional
- BotServ.de Ollama Performance
- BotServ.de Ollama absichern
- BotServ.de Proxmox LXC vs. VM
- BotServ.de Proxmox Storage
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
- Ollama Docs: https://github.com/ollama/ollama/blob/main/docs/
- Systemd ExecStart: https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html
- journalctl: https://www.freedesktop.org/software/systemd/man/latest/journalctl.html
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.


