Архив рубрики: Компьютерное

Mediawiki, закрываемся от ботов

В последнее время на фоне ИИ-бума прямо нашествие ботов на всех сайтах. Robots.txt стал не особо актуален; отсеивание по User Agent’у — тоже. Паразитный трафик вырос в десятки, а то и сотни раз. Буквально вчера добавлял правила у fail2ban для находящегося на публике RSS Bridge — через него повадились сканировать самые разные ТГ-каналы.

Так что достаточно вовремя я сделал кэширование и отдачу статики на своих вики-проектах, однако на сейчас уже и этого мало. Боты залазят на такие URL, куда живой человек вряд ли догадался бы зайти. Например, за 18 лет JabberWorld’а я практически никогда не пользовался разделом «Информация о странице», сейчас же в логах — тонны запросов с «action=info«. В итоге — да, для «живых людей» отдача статики, конечно, помогает, страничка будет отдаваться моментально, однако из-за хождения ботов по «особым» страницам все равно будет постоянно дергаться PHP, база и все, что с этим связано. Лишние затраты оперативной памяти, которую можно было выделить на что-то более полезное.

Пришлось принимать меры: порезать доступ на ряд страниц для незалогиненных пользователей — в чем-то не особо значимо, а в чем-то пришлось ущемить в возможностях.

Читать далее Mediawiki, закрываемся от ботов

Обновил ESP Home, новые имена сенсоров

«Не было печали — апдейтов накачали» (с).

В последние дни занимался апдейтами ESP Home, Home Assistant и того, что с этим связано. В целом, увлекся docker’ом, поэтому в последнее время вышло пообновлять ряд домашнего софта — и развернуть новый. Если раньше версия Home Assistant у меня «замерла» на 2024-какой-то-там, которую последнюю можно было установить на pyhon-3.11 из Debian 12 (а обновлять систему я немного опасался даже после выхода Debian 13 — как оказалось, зря), а ESP Home из-за него — на 2025.9.3, то сейчас могу свободно переключаться между версиями без привязки к системе. Попутно, кстати, на какой-то комбинации версий получил в логах девайса (впервые!) сообщение «‘Home Assistant 2025.12.5′ using outdated API 1.13, update to 1.14+» (хотя при этом и все работало) — тут хотя бы ясно было, что / с чем / из-за чего не стыкуется, а не молчаливое пропадание сенсоров, как это было в прошлый раз.

Так или иначе, на сейчас у меня последние версии как ESP Home, так и Home Assistant. На части девайсов пообновлял прошивки — и в итоге поотваливались скрипты, которые забирали с них данные через REST API. Как оказалось, сменилось именование сенсоров — если раньше все приводилось в нижний регистр и пробелы заменялись на подчеркивание, то сейчас обращаться надо именно по тому имени, которое указано. Если раньше был URL вида ip/sensor/l2_voltage, то сейчас — ip/sensor/L2%20Voltage. Альтернативно — можно не кодировать пробел, но взять URL в кавычки — "ip/sensor/L2 Voltage".

Веб-интерфейс к архиву «Флибусты»

Короткая заметка по теме локальной библиотеки. Как уже писал в прошлой заметке, сделал интерфейс для работы с ZIM-файлами с архивами Википедии. С архивом «Флибусты» в Linux обычно работал через Myrulib, которая уже больше десятка лет не развивается — уже не помню, вроде были какие-то проблемы со сборкой, но где-то нашел то ли готовую сборку под современные системы, то ли переделанную, которую получилось собрать — в общем, тем и пользовался.

Сейчас захотелось большего. Что было найдено:

Читать далее Веб-интерфейс к архиву «Флибусты»

Открыл для себя проект Kiwix: оффлайн-копия Wikipedia

Собственно, сабж. Архив с fb2-книгами с «Флибусты» я давно у себя на NAS держу, а тут на глаза попался проект Kiwix. Оказалось, держать у себя на диске оффлайн-копии Википедии, Викисловаря и некоторых других сайтов не просто, а очень просто. Есть читалки для самых разных устройств и систем (в том числе в репозитории Debian). Все, что надо — скачать ZIM-файл (к слову, если добавить к нужному файлу расширение .torrent — можно качать через торрент) нужного проекта (либо воспользоваться встроенной библиотекой в некоторых читалках) и под нужный язык и открыть его в этой читалке. И есть kiwix-server, который можно развернуть, например, на NAS и с помощью которого можно через веб-браузер работать с этими оффлайн-копиями:

docker run -d -v /storage/info/zim/:/data -p 8080:8080 --restart unless-stopped --name kiwix-server jamescherti/kiwix-serve *.zim

В этой копии «Википедии» не будет истории правок и всякого такого. Это просто слепок проекта на определенную дату, позволяющий читать его без доступа в Интернет. Поэтому maxi-версия (да, там есть разные варианты, с полным и сокращенным набором статей, с картинками и без) английской «Википедии» весит всего 116 ГБ, еще 39 и 27 займут русская и украинская. В общем, на копеечной флешке сейчас на планшете легко и просто держать огромную базу знаний.

И это круто.

Update: конкретно от Wikimedia можно загрузить ZIM-файлы по этой ссылке.

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 было излишним.