Рассмотрим, как настроить автоматическое обновление Ollama на Debian 13 с сохранением кастомных параметров systemd-юнита.
🖐️Эй!
Подписывайтесь на наш телеграм @r4ven_me📱, чтобы не пропустить новые публикации на сайте😉. А если есть вопросы или желание пообщаться по тематике - заглядывайте в Вороний чат @r4ven_me_chat🧐. Также в блоге теперь доступно соавторство 🐧🐧🐧.
Введение
При стандартной установке Ollama на сервер устанавливается версия, актуальная на момент выполнения скрипта установки. Данный способ установки является официальным, но не предусматривает автоматическое обновление, поэтому эту задачу необходимо реализовать самостоятельно.
ПО, используемое в статье:
| ПО | Версия |
|---|---|
| Debian | 13.4 |
| Ollama | 0.32.0 |
Фиксация изменений в unit-файле
Выполняя установку ollama на физический сервер или виртуальную машину вам с высокой вероятностью потребуется внести изменения в unit-файл ollama.service.
При стандартном сценарии использования обычно задают следующие параметры:
- пользовательский путь к хранилищу моделей;
- разрешение на прослушивание интерфейса отличного от
localhost; - лимиты на число одновременно загруженных в память моделей;
- таймер, по истечении которого модель будет автоматически выгружена, если нет активных обращений к ней.
Если отредактировать существующий unit-файл напрямую изменения будут перезаписаны при обновлении Ollama. Поэтому корректировки необходимо зафиксировать через механизм override в systemd.
Откройте unit-файл для редактирования с помощью команды:
📝 Примечание
Обратите вниманием, что для выполнения команд потребуются права sudo.
sudo systemctl edit ollama.serviceВ области между второй и пятой строками добавьте секцию [Service] и укажите необходимые параметры аналогично основному unit-файлу ollama.service.
В нашем примере это выглядит следующим образом:
### 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/.
sudo cat /etc/systemd/system/ollama.service.d/override.confВ результате должен получиться файл с зафиксированными параметрами, которые не будут перезаписаны при обновлении.
╭─(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:
sudo vim /usr/local/bin/update-ollama.shДобавьте в него следующий код:
#!/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Логика скрипта:
Определяем текущую версию Ollama на сервере и записываем полученное значение в переменную
current;Проверяем актуальную версию из GitHub-репозитория и записываем в переменную
latest;Далее производится сравнение версий:
- Если
currentсовпадает сlatest, выполнение скрипта завершается; - Если обнаружена новая версия, запускается официальный сценарий установки, который обновляет Ollama, после чего сервис перезапускается.
- Если
Сохраните изменения в файле и добавьте права на выполнение:
sudo chmod +x /usr/local/bin/update-ollama.shДалее необходимо настроить расписание его запуска, например, один раз в неделю по четвергам в 02:00.
Вариант 1: cron
Самый простой способ - добавить запись в планировщик cron пользователя root:
sudo crontab -eДобавьте строку вида:
00 02 * * 4 /usr/local/bin/update-ollama.shСохраните изменения и выйдите из текстового редактора.
Вариант 2: systemd-таймер
Альтернативный вариант - использование таймера systemd.
Сначала создайте unit-файл сервиса:
sudo vim /etc/systemd/system/ollama-update.serviceДобавьте в него следующее содержимое:
[Unit]
Description=Update Ollama
[Service]
Type=oneshot
ExecStart=/usr/local/bin/update-ollama.shЗатем создайте unit-файл таймера:
sudo vim /etc/systemd/system/ollama-update.timerДобавьте следующее содержимое:
[Unit]
Description=Run Ollama Weekly Updates
[Timer]
OnCalendar=Thu 02:00
Persistent=true
[Install]
WantedBy=timers.targetПосле этого перечитайте конфигурацию systemd:
sudo systemctl daemon-reloadИ добавьте таймер в автозагрузку:
sudo systemctl enable ollama-update.timerТеперь Ollama будет обновляться автоматически каждый четверг в 02:00 независимо от выбранного варианта запуска.
Заключение
В рамках данной статьи мы рассмотрели процесс организации автоматического обновления Ollama на сервере с Debian 13.4. Мы зафиксировали пользовательские изменения в unit-файле через механизм override systemd, что позволяет сохранить вашу конфигурацию при обновлениях. Чтобы предотвратить бессмысленный запуск процесса обновления скрипт использует проверку версий и пересобирает Ollama только при наличии нового релиза.
Отдельное внимание было уделено выбору подхода к автоматизации - через cron или systemd timer. Оба варианта обеспечивают предсказуемый и контролируемый процесс обновления без необходимости ручного вмешательства. Такой подход позволяет поддерживать сервер Ollama в актуальном состоянии, минимизируя риск простоев и обеспечивая получение последних исправлений и улучшений.
👨💻Ну и…
Не забывайте про нашу телегу📱и чат 💬
Или может хотите стать соавтором? Тогда клик сюда🔗
Всех благ✌️
That should be it. If not, check the logs 🙂



Комментарии