Автоматическое обновление Ollama
Имя: Кирилл Решетников Контакты: kiryxa20692@gmail.com Обо мне: Системный инженер, увлекаюсь автоматизацией процессов, микросервисами и оптимизацией высоконагруженных систем. Ссылки:
Приветствую!

Рассмотрим, как настроить автоматическое обновление Ollama на Debian 13 с сохранением кастомных параметров systemd-юнита.

Введение

При стандартной установке Ollama на сервер устанавливается версия, актуальная на момент выполнения скрипта установки. Данный способ установки является официальным, но не предусматривает автоматическое обновление, поэтому эту задачу необходимо реализовать самостоятельно.

ПО, используемое в статье:

ПОВерсия
Debian13.4
Ollama0.32.0

Фиксация изменений в unit-файле

Выполняя установку ollama на физический сервер или виртуальную машину вам с высокой вероятностью потребуется внести изменения в unit-файл ollama.service.

При стандартном сценарии использования обычно задают следующие параметры:

Если отредактировать существующий unit-файл напрямую изменения будут перезаписаны при обновлении Ollama. Поэтому корректировки необходимо зафиксировать через механизм override в systemd.

Откройте unit-файл для редактирования с помощью команды:

BASH
sudo systemctl edit ollama.service
Нажмите, чтобы развернуть и увидеть больше

В области между второй и пятой строками добавьте секцию [Service] и укажите необходимые параметры аналогично основному unit-файлу ollama.service.

В нашем примере это выглядит следующим образом:

INI
### Editing /etc/systemd/system/ollama.service.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file

[Service]
Environment="OLLAMA_MODELS=/opt/ollama/models"
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
Environment="OLLAMA_KEEP_ALIVE=5m0s"

### Edits below this comment will be discarded
Нажмите, чтобы развернуть и увидеть больше

Сохраните изменения и убедитесь, что файл override.conf создан в каталоге /etc/systemd/system/ollama.service.d/.

BASH
sudo cat /etc/systemd/system/ollama.service.d/override.conf
Нажмите, чтобы развернуть и увидеть больше

В результате должен получиться файл с зафиксированными параметрами, которые не будут перезаписаны при обновлении.

BASH
╭─(00:06:32)-(0)-(llm-b01-p)-[~]
╰─[ansible]$ sudo cat /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_MODELS=/opt/ollama/models"
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
Environment="OLLAMA_KEEP_ALIVE=5m0s"
Нажмите, чтобы развернуть и увидеть больше

После фиксации конфигурации unit-файла можно переходить к автоматизации обновлений.

Настройка автоматического обновления

Наиболее простой способ автоматизировать обновление Ollama - использовать скрипт с проверкой версии.

Создайте исполняемый файл, например /usr/local/bin/update-ollama.sh с помощью текстового редактора vim:

BASH
sudo vim /usr/local/bin/update-ollama.sh
Нажмите, чтобы развернуть и увидеть больше

Добавьте в него следующий код:

BASH
#!/usr/bin/env bash
set -euo pipefail

current=$(ollama -v | grep 'version' | awk '{print $NF}')

latest=$(curl -s https://api.github.com/repos/ollama/ollama/releases/latest \
  | grep tag_name | cut -d '"' -f4 | sed 's/^v//')

if [ "$current" != "$latest" ]; then
  curl -fsSL https://ollama.com/install.sh | sh
  systemctl restart ollama
fi
Нажмите, чтобы развернуть и увидеть больше

Логика скрипта:

  1. Определяем текущую версию Ollama на сервере и записываем полученное значение в переменную current;

  2. Проверяем актуальную версию из GitHub-репозитория и записываем в переменную latest;

  3. Далее производится сравнение версий:

    • Если current совпадает с latest, выполнение скрипта завершается;
    • Если обнаружена новая версия, запускается официальный сценарий установки, который обновляет Ollama, после чего сервис перезапускается.

Сохраните изменения в файле и добавьте права на выполнение:

BASH
sudo chmod +x /usr/local/bin/update-ollama.sh
Нажмите, чтобы развернуть и увидеть больше

Далее необходимо настроить расписание его запуска, например, один раз в неделю по четвергам в 02:00.

Вариант 1: cron

Самый простой способ - добавить запись в планировщик cron пользователя root:

BASH
sudo crontab -e
Нажмите, чтобы развернуть и увидеть больше

Добавьте строку вида:

BASH
00 02 * * 4 /usr/local/bin/update-ollama.sh
Нажмите, чтобы развернуть и увидеть больше

Сохраните изменения и выйдите из текстового редактора.

Вариант 2: systemd-таймер

Альтернативный вариант - использование таймера systemd.

Сначала создайте unit-файл сервиса:

BASH
sudo vim /etc/systemd/system/ollama-update.service
Нажмите, чтобы развернуть и увидеть больше

Добавьте в него следующее содержимое:

INI
[Unit]
Description=Update Ollama

[Service]
Type=oneshot
ExecStart=/usr/local/bin/update-ollama.sh
Нажмите, чтобы развернуть и увидеть больше

Затем создайте unit-файл таймера:

BASH
sudo vim /etc/systemd/system/ollama-update.timer
Нажмите, чтобы развернуть и увидеть больше

Добавьте следующее содержимое:

INI
[Unit]
Description=Run Ollama Weekly Updates

[Timer]
OnCalendar=Thu 02:00
Persistent=true

[Install]
WantedBy=timers.target
Нажмите, чтобы развернуть и увидеть больше

После этого перечитайте конфигурацию systemd:

BASH
sudo systemctl daemon-reload
Нажмите, чтобы развернуть и увидеть больше

И добавьте таймер в автозагрузку:

BASH
sudo systemctl enable ollama-update.timer
Нажмите, чтобы развернуть и увидеть больше

Теперь Ollama будет обновляться автоматически каждый четверг в 02:00 независимо от выбранного варианта запуска.

Заключение

В рамках данной статьи мы рассмотрели процесс организации автоматического обновления Ollama на сервере с Debian 13.4. Мы зафиксировали пользовательские изменения в unit-файле через механизм override systemd, что позволяет сохранить вашу конфигурацию при обновлениях. Чтобы предотвратить бессмысленный запуск процесса обновления скрипт использует проверку версий и пересобирает Ollama только при наличии нового релиза.

Отдельное внимание было уделено выбору подхода к автоматизации - через cron или systemd timer. Оба варианта обеспечивают предсказуемый и контролируемый процесс обновления без необходимости ручного вмешательства. Такой подход позволяет поддерживать сервер Ollama в актуальном состоянии, минимизируя риск простоев и обеспечивая получение последних исправлений и улучшений.

Комментарии

Авторские права

Автор: Кирилл Решетников

Ссылка: https://r4ven.me/automation/avtomaticheskoe-obnovlenie-ollama/

Лицензия: CC BY-NC-SA 4.0

Использование материалов блога разрешается при условии: указания авторства/источника, некоммерческого использования и сохранения лицензии.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша