Архив рубрики: Системное администрирование

Multips в Munin

Решил тут сделать стату в Munin для каждого PHP-FPM-пула в отдельности, на глаза попался (ок, гуглоИИ подсказал) плагин multips. Плагин в итоге не подошел (толку мне с простого числа процессов, я хочу подробную стату, как в proc), но суть не в том. В процессе разбора того, как заставить эту хрень работать — дошел до основного кода за неизвестным авторством:

for name in $names; do
***
PGREP=$(command -v pgrep)
if [ -n "$PGREP" ] && [ -x "$PGREP" ]; then
"$PGREP" -f -l "$name" | grep "$REGEX" | wc -l
***
else
ps auxwww | grep "$REGEX" | grep -v grep | wc -l
fi
done

Т.е., если у нас в системе есть pgrep — значит, имя в конфиге должно строго соответствовать процессу, который ищешь. А если нет — ты волен называть сущность в конфиге как хочешь.

В итоге конфиг вида:

[multips]
env.names jw_wiki
env.jw_wiki php-fpm.*jabberworld.info

не работал прежде всего из-за наличия pgrep.

А всего-то надо было сделать что-то в стиле "$PGREP" -a -c -f -l "$REGEX"

Ollama 0.30+ и CUDA на Debian 13

Только что игрался с апдейтами ollama на своем ИИ-хосте — выяснилось, что свежие версии перестали использовать CUDA и работают только на CPU.

Если заглянуть в journalctl:

msg="NVIDIA driver too old" device="NVIDIA GeForce GTX 1080 Ti" compute=6.1 driver=550 required_driver="570 or newer"

И, собственно, да, в репозитории Debian stable есть только 550-й драйвер. В бэкпортах чего-то более нового не вижу. Так что или ставить драйвер вручную, или пока что сидеть на старой ollama. Последняя «рабочая» версия — 0.24. Поставить определенную версию можно так:

curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.24.0 sh

Обновил вики JW. Кэширование статики

Прошлая попытка обновления Mediawiki-движков на JabberWorld.info и linuxoid.in закончилась без особого успеха. Сейчас снова вернулся к теме — и то ли в конфиге сервера что-то поменялось, то ли из-за обновления через консоль, но все же удалось успешно обновиться сначала до 1.39, а потом и до текущего (1.43) LTS. Чуть поменялся конфиг: потребовалось убрать инклуд DefaultSettings.php, а также старое определение минимальной длины пароля.

Читать далее Обновил вики JW. Кэширование статики

Debian, Xen и большой initrd

Заметка между делом.

Столкнулся с тем, что на домашних серверах (на данный момент один обновил до Debian 13) стало мало места в /boot/efi. initrd занимал 47 МБ, что как-то неприлично много, особенно с учетом MODULES=dep в /etc/initramfs-tools/initramfs.conf.

Оказалось, что у xen-tools свое мнение на этот счет в /etc/initramfs-tools/conf.d/xen-tools: «To make the Dom0’s initramfs working inside DomUs, too, most modules need to be included». В моем случае initrd из dom0 никак не использовался для domU, поэтому копировать все доступные модули в образ для dom0 было излишним.

Экспорт переписки пользователя из MAM в ejabberd

В MySQL / MariaDB:

SELECT timestamp, created_at, peer, txt FROM archive WHERE username = 'USER' and txt != '' INTO OUTFILE '/tmp/USER.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"';

Далее режем на отдельные файлы:

awk 'BEGIN {FS="\",\"";RS="\"\n"} {peer=$3; gsub(/\/.*|\+/, "", peer); gsub(/"/, "", $1); gsub(/\\\n/, "\n", $4); print $1, $2, $4 >> peer}' /tmp/USER.csv

Debian 13, Ollama + OpenwebUI и Fluux Agent: заводим персональный AI в Jabber

Первый раз щупаю эту тему.

В целом, не так давно на слуху появился jabber-клиент Fluux Messenger — примечателен тем, что от Process One, разработчиков одного из самых популярных jabber-серверов. Как минимум, находится среди их репозиториев.

А еще там появился Fluux Agent. Роадмап многообещающий: на сейчас он уже может выступать интерфейсом к Ollama или работать с «облачными» сервисами; может работать 1 на 1 или через конференцию; выступать в качестве бота или компонента сервера. А в будущем планируется возможность сделать общение между такими ботами — федеративную AI-сеть.

Идеей заинтересовался; возможностью попробовать запустить локального AI-агента и посмотреть, на что оно вообще годно — тоже. Подсобрал по разным уголкам дома железо и решил развернуть все на нем. В ход пошла старая основа от NAS’а — Athlon 740 и 32 ГБ оперативки с той же материнкой, на которой все было установлено. А в качестве GPU-основы для вычислений — пара видеокарт от майнинг-ригов. Самыми мощными у меня в хозяйстве были Nvidia 1080TI с 11 ГБ памяти, пару из них и задействовал.

Читать далее Debian 13, Ollama + OpenwebUI и Fluux Agent: заводим персональный AI в Jabber

Nextcloud и отправка почты

Наконец-то спустя долгое время наткнулся на решение проблемы отправки почты через простенький локальный почтовик. Что-то «сломали» или переделали несколько версий назад, с тех пор попытка отправки тестового письма в веб-интерфейсе выдавала ошибку. Полез в логи — при настройке None/StartTLS NC таки ломится на почтовик со StartTLS, после чего обламывается.

Закидываем в config/config.php такое:

  'mail_smtpstreamoptions' =>
  array (
    'ssl' =>
    array (
      'allow_self_signed' => true,
      'verify_peer' => false,
      'verify_peer_name' => false,
    ),
  ),

Update 2026-06-11: нашел альтернативу. В config/config.php меняем такие опции:

'mail_smtpmode' => 'sendmail',
'mail_sendmailmode' => 'pipe',

В таком случае оно хотя бы начинает использовать отправку через консольную утилиту без оглядки на сертификаты — но нет, не через то, что указано в sendmail_path в PHP, а старательно выискивает бинарник sendmail на диске и если не находит — использует захардкоженный путь.

ejabberd и инвайты

Тема Easy Onboarding вполне активно развивается и в последних версиях ejabberd (26.01/26.02) появилось создание учетных записей по приглашениям: добавлен mod_invites, а в штатной поставке сделана landing-страница, с помощью которой новички могут выбрать себе клиент и перейти к регистрации.

Общий смысл в том, что более опытный — имеющий учетную запись — пользователь берет на себя придумывание Jabber ID и разрешает регистрироваться другу на том сервере, которым пользуется сам. Пароль обычно в опробованных клиентах генерируется. Т.е., вся регистрация у новичка сводится к паре кликов «далее».

У себя поделал красивости в стиле субдоменов «Join ${DOMAIN}» (например, https://join.jabber.name), куда идут ссылки приглашений — а также туда смотрит и штатная веб-форма регистрации, которую на сейчас не использую.

Пока остается один нерешенный момент: у меня в mod_register использовался параметр redirect_url, чтобы любая попытка регистрации из клиента вела на веб-форму. С инвайтами вылез косяк — редирект блокирует завершение регистрации. Тикет уже заведен — надеюсь, в следующей версии ejabberd поправят.

Debian 13, lighttpd и симлинки

Просто заметка. После обновления Debian с 12 до 13 на одном из хостов отвалилась работа lighttpd — индексы отдает, а картинок нет. Картинки в подкаталогах, сделанных симлинками. server.follow-symlink = "enable" должно быть и дефолтно включено, и руками добавлял. Не помогает. Сервер просто перестал ходить по симлинкам, отдавая 404. Откат версии веб-сервера (при том же конфиге) решил проблему. Где-то по пути поломалось:

lighttpd:
  Установлен: 1.4.69-1
  Кандидат: 1.4.79-2

Update 2026-04-08: добил проблему. Не «поломалось», а в свежих версиях используются более строгие ограничения. В моем случае используется размещение генерируемых картинок и HTML-файлов в /tmp (не страшно, так как собирать скриптами данные и отдавать контент через веб-сервер — единственная активная функция сервера). /tmp — за пределами дефолтного каталога контента и на другой ФС (tmpfs). В общем, открываем systemctl edit lighttpd и добавляем:

[Service]
PrivateTmp=no
ReadOnlyPaths=/tmp

Причесываем систему на HP 6930p

Обновил как-то систему на своем старом HP 6930p до Debian 13, начались странности — не стартует графика. В lsmod 2 модуля для графики — radeon и amdgpu. Ок, заблеклистил amdgpu. Не особо помогает. Сейчас решил чуть больше покопать, плюс поделать оптимизации.

Читать далее Причесываем систему на HP 6930p