Есть довольно известная программа в Linux (в Windows тоже работает) для хранения и управления историей - atuin. Видел много про неё заметок в различных тематических каналах. Но в основном там были общие слова, либо пересказ описания. Программа мало того, что сама по себе довольно удобная и полезная, но таких немало, так у неё есть ещё одна особенность, которая меня заинтересовала. Она поддерживает централизованное хранение истории со всех хостов в одном месте с возможностью смотреть или искать глобально по всей истории.
Я развернул всё это хозяйство у себя на постоянку, настроил, чтобы было удобно пользоваться и хочу поделиться своим опытом. Сразу скажу, что я не уверен, что подобное стоит устанавливать в прод. Я бы не стал, если прям сильно не нужна эта функциональность. Развернул всё на своих личных машинах, которых у меня немало и которым тоже требуется централизованное управление.
📌 Перечислю основные возможности atuin:
▪️Замена основного поиска по истории через CTRL + R. Работает удобно, мне лично очень понравилось.
▪️Централизованный сбор истории со всех хостов. Хранение либо в SQLite, либо в PostgreSQL. Это одновременно и удобный поиск по всей истории, и её бэкап.
▪️На сервере может показывать глобальную историю, историю всего хоста, текущей сессии или конкретной папки.
▪️Помимо непосредственно выполненной команды сохраняет код выхода, время исполнения, в какой директории была запущена.
▪️Стандартную историю в ~/.bash_history не заменяет и не перезаписывает.
▪️Работает со всеми популярными оболочками, в том числе powershell.
▪️В bash работает с помощью хуков preexec и precmd через расширение bash-preexec.sh, в других оболочках не проверял.
▪️ Всё это open source.
Не буду подробно останавливаться на установке клиентов, так как в документации всё это есть. Для сервера я взял готовый docker-compose.yml, убрал оттуда postgres и заменил на локальную sqlite, просто указав:
Соответственно, бэкап всей истории - это бэкап файла atuin.db. Теперь после установки клиентов на хостах достаточно добавить адрес своего сервера для хранения там истории.
Приведу пример настроенного мной клиента в
-
Мой локальный адрес сервера истории
-
Сразу после записи команды отправлять её на сервер
-
По умолчанию в поиске по CTRL+R открывается история хоста
-
Формат хранения истории, по умолчанию не сохраняет имя сервера, добавил
-
Всегда отображать полный интерфейс
По умолчанию autin запускается по CTRL+R или по стрелке вверх. Последнее мне не нужно, я сразу отключил. Для этого в ~/.bashrc добавил ключ к запуску:
После настройки первого клиента, регистрируем учётную запись на сервере:
Далее записываем в atuin уже существующую историю и синхронизируем её с сервера:
На следующих серверах достаточно будет сделать:
И зайти под уже созданной учёткой. Теперь при нажатии CTRL+R у вас откроется поиск по текущей истории хоста. Дальнейшее нажатие комбинации CTRL+R переключает область поиска: сессия, директория, глобальный поиск.
Для того, чтобы статично вывести глобальную историю, а не искать по ней, можно использовать команду:
Можно её грепать, а можно прямо тут написать строку для поиска. Например, смотрим на все перезагрузки:
В целом, удобное решение для централизованного хранения истории. Тут тебе и сама история хоста и по сути глобальный аудит. Не хватает веб интерфейса для просмотра.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX 😩
#linux
Я развернул всё это хозяйство у себя на постоянку, настроил, чтобы было удобно пользоваться и хочу поделиться своим опытом. Сразу скажу, что я не уверен, что подобное стоит устанавливать в прод. Я бы не стал, если прям сильно не нужна эта функциональность. Развернул всё на своих личных машинах, которых у меня немало и которым тоже требуется централизованное управление.
📌 Перечислю основные возможности atuin:
▪️Замена основного поиска по истории через CTRL + R. Работает удобно, мне лично очень понравилось.
▪️Централизованный сбор истории со всех хостов. Хранение либо в SQLite, либо в PostgreSQL. Это одновременно и удобный поиск по всей истории, и её бэкап.
▪️На сервере может показывать глобальную историю, историю всего хоста, текущей сессии или конкретной папки.
▪️Помимо непосредственно выполненной команды сохраняет код выхода, время исполнения, в какой директории была запущена.
▪️Стандартную историю в ~/.bash_history не заменяет и не перезаписывает.
▪️Работает со всеми популярными оболочками, в том числе powershell.
▪️В bash работает с помощью хуков preexec и precmd через расширение bash-preexec.sh, в других оболочках не проверял.
▪️ Всё это open source.
Не буду подробно останавливаться на установке клиентов, так как в документации всё это есть. Для сервера я взял готовый docker-compose.yml, убрал оттуда postgres и заменил на локальную sqlite, просто указав:
ATUIN_DB_URI: sqlite:///config/atuin.dbСоответственно, бэкап всей истории - это бэкап файла atuin.db. Теперь после установки клиентов на хостах достаточно добавить адрес своего сервера для хранения там истории.
Приведу пример настроенного мной клиента в
~/.config/atuin/config.toml. Отражу только те параметры, что изменил по сравнению со стандартом:-
sync_address = "http://192.168.137.57:8888"Мой локальный адрес сервера истории
-
sync_frequency = "0"Сразу после записи команды отправлять её на сервер
-
filter_mode = "host"По умолчанию в поиске по CTRL+R открывается история хоста
-
history_format = "{time} {host} {user} - {directory} | {command}"Формат хранения истории, по умолчанию не сохраняет имя сервера, добавил
-
style = "full"Всегда отображать полный интерфейс
По умолчанию autin запускается по CTRL+R или по стрелке вверх. Последнее мне не нужно, я сразу отключил. Для этого в ~/.bashrc добавил ключ к запуску:
eval "$(atuin init bash --disable-up-arrow)"После настройки первого клиента, регистрируем учётную запись на сервере:
# atuin registerДалее записываем в atuin уже существующую историю и синхронизируем её с сервера:
# atuin import auto# atuin syncНа следующих серверах достаточно будет сделать:
# atuin loginИ зайти под уже созданной учёткой. Теперь при нажатии CTRL+R у вас откроется поиск по текущей истории хоста. Дальнейшее нажатие комбинации CTRL+R переключает область поиска: сессия, директория, глобальный поиск.
Для того, чтобы статично вывести глобальную историю, а не искать по ней, можно использовать команду:
# atuin search --filter-mode globalМожно её грепать, а можно прямо тут написать строку для поиска. Например, смотрим на все перезагрузки:
# atuin search --filter-mode global rebootВ целом, удобное решение для централизованного хранения истории. Тут тебе и сама история хоста и по сути глобальный аудит. Не хватает веб интерфейса для просмотра.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍70👎4
Ingress-nginx уходит в прошлое. С марта 2026 поддержка прекратилась. А что вместо него? Предлагаем посмотреть на Gateway API, новый стандарт Kubernetes SIG.
23 июля в 17:00 старший SRE-инженер MWS Cloud Евгений Макеев на практике покажет:
⚫️ чем маршрутизация Gateway API отличается от Ingress
⚫️ как выбрать контроллер
⚫️ как установить Gateway API в Managed Kubernetes
⚫️ как настроить безопасное подключение через TLS-сертификат
Будет полезно для DevOps, платформенным инженерам и разработчикам.
Регистрируйтесь по ссылке
23 июля в 17:00 старший SRE-инженер MWS Cloud Евгений Макеев на практике покажет:
Будет полезно для DevOps, платформенным инженерам и разработчикам.
Регистрируйтесь по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👎4
Середина лета, такое затишье. Ощущение, что все по отпускам разъехались и никто не работает. В мессенджерах почти никто не пишет, не звонит на телефон. Красота. Развлеку вас немного.
Недавно ездил в Калугу. Был там в музее космонавтики. Это, кстати, самый большой музей в Европе по данной теме. Больше только в США. Там построили современное, многоярусное здание, оформили прилегающую территорию. Получился интересный современный музей. На улице можно увидеть оригинал ракеты-носитель «Восток». Рекомендую посетить.
В старом корпусе, где не только космонавтика, обнаружил необычный экспонат - Робот секретарь "APC". Он привлёк моё внимание, потому что тема персонального помощника в связи с развитием ИИ сейчас на волне, да и робототехника тоже. Вот что умел этот робот, созданный в 60-е годы прошлого века:
1️⃣ Будить хозяина в указанное время, включать на магнитофоне запись утренней гимнастики, напоминать о планах на день.
2️⃣ После ухода хозяина отвечать на звонки по телефону и записывать сообщения от звонящих, до 30 телефонных сообщений по 2 минуты.
3️⃣ В случае кратковременного отсутствия хозяина, просить звонящего подождать у телефона или сообщить через какое время вернется хозяин и можно будет перезвонить.
4️⃣ Приносить телефонный аппарат хозяину:
- в случае телефонного вызова,
- при желании хозяина позвонить.
Если вызываемый абонент занят, то АРС начинает процесс дозвона набором номера через каждые 3 минуты. Как только удается дозвониться - передает трубку хозяину.
5️⃣ Самостоятельно набрать номер на телефоне: для передачи сообщения в заданное время, для наведения справки в справочном бюро, для вызова аварийных служб (пожарная, скорая и т.д.) при срабатывании соответствующих датчиков.
6️⃣ Включать хозяину в заданное время приемник, телевизор или магнитофон. Записать на магнитофон передачу с приемника, телевизора или трансляционной сети.
7️⃣ Включать и выключать освещение в доме, поддерживать заданную температуру в квартире путем регулировки кранов на батареях отопления.
8️⃣ Реагировать на стук или звонок в дверь:
- сообщить, что хозяина нет дома, и через сколько будет;
- если хозяин дома, то открыть дверь гостям.
9️⃣ Приветствовать гостей поднятием руки и произнесением заранее записанного приветствия, проводить гостей в гостиную, включить им телевизор или магнитофон, предложить гостям выпить и разлить напиток в бокалы и подать на специальном столике.
Весил этот железный друг около 100 кг, рост - 170 см. Робот реально функционировал. Это не макет. Создал его по сути один человек-энтузиаст - Борис Николаевич Гришин, преподаватель Калужского техникума железнодорожного транспорта. Он же и передал его потом в музей.
Я впервые услышал о таком роботе, поэтому заинтересовался и решил поделиться с вами. Меня лично он впечатлил как разработка такого далёкого прошлого, да ещё и сделанная одним человеком. Представьте, что могли бы сделать 10-15 таких человек при должной ресурсной поддержке?
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX 😩
#железо
Недавно ездил в Калугу. Был там в музее космонавтики. Это, кстати, самый большой музей в Европе по данной теме. Больше только в США. Там построили современное, многоярусное здание, оформили прилегающую территорию. Получился интересный современный музей. На улице можно увидеть оригинал ракеты-носитель «Восток». Рекомендую посетить.
В старом корпусе, где не только космонавтика, обнаружил необычный экспонат - Робот секретарь "APC". Он привлёк моё внимание, потому что тема персонального помощника в связи с развитием ИИ сейчас на волне, да и робототехника тоже. Вот что умел этот робот, созданный в 60-е годы прошлого века:
- в случае телефонного вызова,
- при желании хозяина позвонить.
Если вызываемый абонент занят, то АРС начинает процесс дозвона набором номера через каждые 3 минуты. Как только удается дозвониться - передает трубку хозяину.
- сообщить, что хозяина нет дома, и через сколько будет;
- если хозяин дома, то открыть дверь гостям.
Весил этот железный друг около 100 кг, рост - 170 см. Робот реально функционировал. Это не макет. Создал его по сути один человек-энтузиаст - Борис Николаевич Гришин, преподаватель Калужского техникума железнодорожного транспорта. Он же и передал его потом в музей.
Я впервые услышал о таком роботе, поэтому заинтересовался и решил поделиться с вами. Меня лично он впечатлил как разработка такого далёкого прошлого, да ещё и сделанная одним человеком. Представьте, что могли бы сделать 10-15 таких человек при должной ресурсной поддержке?
———
ServerAdmin:
#железо
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143👎1
У меня есть задача, которую я себе поставил, когда стал на практике разбирать работу с ИИ не в формате чата и выполнения простых агентских задач. Хочу получить возможность локально работать со своими документами, коих у меня немало - документы по моему ИП, различные квитанции по оплате, документация по стройке и дому, мои текстовые заметки по различным темам и некоторые другие. Отправлять всё это на постоянной основе в облачные сервисы не хочется. Эта же задача может быть актуальна практически для любого современного бизнеса. Так что разобраться в ней полезно.
Недавно я увидел программу AnythingLLM, которая показалась готовым решением, где описанную задачу можно решить максимально просто. На практике там очень много нюансов и лично мне не удалось получить удовлетворительный вариант. Расскажу обо всём по порядку.
В Anythingllm есть два варианта работы с локальными файлами:
1️⃣ Вы создаёте рабочее пространство и вручную загружаете в него файлы по теме. Они обрабатываются, составляется векторное представление (embedding) и записывается в векторную базу данных. Вы получаете полноценную RAG-систему. Теперь при ответах LLM может учитывать информацию из RAG.
В Anythingllm удобно то, что по умолчанию в каком-то виде всё это уже настроено и работает, не нужно разбираться в нюансах - выбирать базу данных, embedder. Для каких-то совсем простых ситуаций этого будет достаточно. Но если нужна полноценная работа, то со всем этим нужно детально разбираться. Там очень много нюансов. Первое, с чего начать - заменить embedding модель с английской на мультиязычную.
2️⃣ Можно настроить агентский skill, который умеет работать с файлами - искать, открывать, изменять и т.д. Доступы и ограничения гибко настраиваются. Сделано удобно, работает нормально. Но опять же, со своими нюансами.
В ютубе много роликов на тему Anythingllm, но все они очень поверхностны. Скачали, запустили, закинули вручную 10-20 файлов и что-то ищем в них, редактируем. Это сразу заработает.
Я тестировал на ~1500 файлах, связанных с деятельностью моего ИП - договоры, акты, соглашения и т.д. Подключил локальную LLM через LM Studio. Пробовал разные модели. Более-менее нормальный результат можно получить только с нейронкой от qwen3.5-9b и выше. Но даже её мне не хватало. Для глобального поиска по всей базе не хватает контекста даже в 128к токенов. Моя RTX 5060 и его не тянет. Саму Anythingllm я запускал отдельно на другой машине. Ей тоже нужны ресурсы, но в основном разово, при обработке новых документов.
Тестировал на следующих запросах:
◽️составь таблицу всех контрагентов и отсортируй их по количеству договоров
◽️найди самую низкую оплату по договору и самую высокую
◽️составь список наиболее популярных услуг в договорах и т.д.
Хотел получить какую-то простую и быструю аналитику без необходимости вытаскивать её из бухгалтерской программы. Хотя очевидно, что подобную задачу логичнее выполнять именно в ней.
В процессе тестов выяснилось, что если вы подключаете директорию через skill, то она никак не обрабатывается. Файлы из неё не попадают в RAG. LLM может с ней работать напрямую, что требует огромного контекста, если там много файлов. Для того, чтобы что-то найти, надо всё прочитать и загрузить в контекст, либо явно указывать, с каким конкретно файлом мы работаем. Фактически это бессмысленный для меня в таком виде вариант.
По умолчанию в RAG документы добавляются только вручную. Чтобы это автоматизировать, надо использовать API и писать логику. В этом ничего особо сложного нет, но нужно заниматься. Получается уже не такое простое и удобное решение.
Как я понял, простого решения задачи в лоб нет. В таком виде с сырыми файлами работать не получится. Надо всё это обрабатывать, загонять в базу данных и работать с ней. Я себе представлял, что RAG позволит без этого обойтись, но как показала практика, нужен очень большой контекст.
В целом, Anythingllm мне понравилась. Простой и функциональный инструмент. Думаю, что буду его использовать дальше в рамках его возможностей.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX 😩
#ai
Недавно я увидел программу AnythingLLM, которая показалась готовым решением, где описанную задачу можно решить максимально просто. На практике там очень много нюансов и лично мне не удалось получить удовлетворительный вариант. Расскажу обо всём по порядку.
В Anythingllm есть два варианта работы с локальными файлами:
В Anythingllm удобно то, что по умолчанию в каком-то виде всё это уже настроено и работает, не нужно разбираться в нюансах - выбирать базу данных, embedder. Для каких-то совсем простых ситуаций этого будет достаточно. Но если нужна полноценная работа, то со всем этим нужно детально разбираться. Там очень много нюансов. Первое, с чего начать - заменить embedding модель с английской на мультиязычную.
В ютубе много роликов на тему Anythingllm, но все они очень поверхностны. Скачали, запустили, закинули вручную 10-20 файлов и что-то ищем в них, редактируем. Это сразу заработает.
Я тестировал на ~1500 файлах, связанных с деятельностью моего ИП - договоры, акты, соглашения и т.д. Подключил локальную LLM через LM Studio. Пробовал разные модели. Более-менее нормальный результат можно получить только с нейронкой от qwen3.5-9b и выше. Но даже её мне не хватало. Для глобального поиска по всей базе не хватает контекста даже в 128к токенов. Моя RTX 5060 и его не тянет. Саму Anythingllm я запускал отдельно на другой машине. Ей тоже нужны ресурсы, но в основном разово, при обработке новых документов.
Тестировал на следующих запросах:
◽️составь таблицу всех контрагентов и отсортируй их по количеству договоров
◽️найди самую низкую оплату по договору и самую высокую
◽️составь список наиболее популярных услуг в договорах и т.д.
Хотел получить какую-то простую и быструю аналитику без необходимости вытаскивать её из бухгалтерской программы. Хотя очевидно, что подобную задачу логичнее выполнять именно в ней.
В процессе тестов выяснилось, что если вы подключаете директорию через skill, то она никак не обрабатывается. Файлы из неё не попадают в RAG. LLM может с ней работать напрямую, что требует огромного контекста, если там много файлов. Для того, чтобы что-то найти, надо всё прочитать и загрузить в контекст, либо явно указывать, с каким конкретно файлом мы работаем. Фактически это бессмысленный для меня в таком виде вариант.
По умолчанию в RAG документы добавляются только вручную. Чтобы это автоматизировать, надо использовать API и писать логику. В этом ничего особо сложного нет, но нужно заниматься. Получается уже не такое простое и удобное решение.
Как я понял, простого решения задачи в лоб нет. В таком виде с сырыми файлами работать не получится. Надо всё это обрабатывать, загонять в базу данных и работать с ней. Я себе представлял, что RAG позволит без этого обойтись, но как показала практика, нужен очень большой контекст.
В целом, Anythingllm мне понравилась. Простой и функциональный инструмент. Думаю, что буду его использовать дальше в рамках его возможностей.
———
ServerAdmin:
#ai
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46👎4
This media is not supported in your browser
VIEW IN TELEGRAM
Просматривал старые видео с приколами, где в том числе было вот это:
▶️ Разыгрываем коллег с помощью компьютера
Шутки так себе, мне не особо понравились. Самое интересное тут - обаяние ведущей. Ролик всего 3,5 минуты, можете глянуть. Он погрузит вас в далёкий 2011 год, когда в компьютерах ещё были сидиромы. Можно было придумать шутку с их участием. Показан типичный офис того времени. Я примерно в таком и работал обычным сисадмином и техподдержкой - 2 в 1.
Потом зашёл на канал, где размещён этот ролик. А он весь из той эпохи. Пару лет публиковал видео, а потом закрылся. Вся атмосфера того времени там сохранилась. Ролики все короткие, смотрятся быстро. Снято интересно и с душой. Приятные ведущие. Посмотрел последние ролики, мне понравилось, поэтому решил поделиться с вами.
Вот прикольные:
▶️ Как ускорить wi-fi при помощи банки пива
Ускоряют Wi-Fi на легендарном Linksys WRT54GL. Я свой, смахнув ностальгическую слезу, выкинул в итоге.
▶️ У Yandex и Google появился конкурент?
Невероятные хаки системы Windows 7 для встраивания поиска в проводник. Для тех, кто до сих пор считает Windows 7 лучшей системой всех времён и народов будет актуально.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX 😩
#юмор
Шутки так себе, мне не особо понравились. Самое интересное тут - обаяние ведущей. Ролик всего 3,5 минуты, можете глянуть. Он погрузит вас в далёкий 2011 год, когда в компьютерах ещё были сидиромы. Можно было придумать шутку с их участием. Показан типичный офис того времени. Я примерно в таком и работал обычным сисадмином и техподдержкой - 2 в 1.
Потом зашёл на канал, где размещён этот ролик. А он весь из той эпохи. Пару лет публиковал видео, а потом закрылся. Вся атмосфера того времени там сохранилась. Ролики все короткие, смотрятся быстро. Снято интересно и с душой. Приятные ведущие. Посмотрел последние ролики, мне понравилось, поэтому решил поделиться с вами.
Вот прикольные:
Ускоряют Wi-Fi на легендарном Linksys WRT54GL. Я свой, смахнув ностальгическую слезу, выкинул в итоге.
Невероятные хаки системы Windows 7 для встраивания поиска в проводник. Для тех, кто до сих пор считает Windows 7 лучшей системой всех времён и народов будет актуально.
———
ServerAdmin:
#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37👎2
Виртуализация: just for fun
Поднимаете, настраиваете или
чините системы виртуализации? Любите смотреть, что под капотом технологий?
Тогда ждём вас на инженерной вечеринке «Виртуализация: just for fun».
В программе:
🔹Прикладные доклады и инженерные кейсы;
🔹Квиз по айтишным темам;
🔹Турнир по администрированию VMware «Admin Jam»;
🔹Открытый микрофон без корпоративной цензуры;
🔹Профессиональное и дружеское общение в
неформальной обстановке (пенного хватит на всех!)
Хотите хорошо провести время, а
заодно пообщаться на профессиональную тему?
Тогда регистрируйтесь и
забивайте слот в календаре:
📅Дата и время: 6 августа (четверг), 16:00−23:00
🗣 Формат: только офлайн
📍Место: Москва, ул. Мясницкая, 13, стр. 20 (м. Тургеневская)
Количество мест ограничено.
Поднимаете, настраиваете или
чините системы виртуализации? Любите смотреть, что под капотом технологий?
Тогда ждём вас на инженерной вечеринке «Виртуализация: just for fun».
В программе:
🔹Прикладные доклады и инженерные кейсы;
🔹Квиз по айтишным темам;
🔹Турнир по администрированию VMware «Admin Jam»;
🔹Открытый микрофон без корпоративной цензуры;
🔹Профессиональное и дружеское общение в
неформальной обстановке (пенного хватит на всех!)
Хотите хорошо провести время, а
заодно пообщаться на профессиональную тему?
Тогда регистрируйтесь и
забивайте слот в календаре:
📅Дата и время: 6 августа (четверг), 16:00−23:00
🗣 Формат: только офлайн
📍Место: Москва, ул. Мясницкая, 13, стр. 20 (м. Тургеневская)
Количество мест ограничено.
👍14👎4
В последнее время видел много упоминаний на тему загрузки на старом ядре Linux, если после обновления на новом возникают проблемы. Это стало особенно актуально после перехода PVE на новое ядро 7-й версии. На некотором железе с ним возникают проблемы. Я сам с этим столкнулся на одном из серверов. Хотя чаще всего всё в порядке.
На эту тему я вспомнил свою старую историю на этот счёт, когда пришлось откатиться на старое ядро, чтобы восстановить работоспособность сервера. История редкая, я не слышал, чтобы кто-нибудь о подобном рассказывал, но я столкнулся лично.
Была у меня одна виртуалка с веб сервером, которая начала глючить из-за нехватки памяти. Периодически приходил OOM Killer и выключал Mysql. У неё был большой аптайм, так что решил её на всякий случай перезагрузить, прежде чем разбираться с тем, почему перестало хватать памяти. Ну и чтобы не приседать два раза, решил сразу и обновления свежие поставить.
Во время обновления пакетный менеджер ругнулся на нехватку памяти и не закончил нормально свою работу. Думаю, ладно, перезагружу, как есть, без обновлений. Перезагружаю, а система не стартует. В консоли ошибка:
Не буду рассказывать, как я её решал, чтобы не тратить понапрасну ваше время. Перехожу сразу к сути. Пакетный менеджер установил все обновления, в том числе ядра. В момент пересборки initramfs с новым ядром, процесс с
Решилось это выбором старой версии ядра для загрузки системы. Для него initramfs был собран нормально. Загрузился на старом ядре, ещё раз нормально провёл обновление и убедился, что всё в порядке. От подобной ошибки, кстати, частично страхует наличие swap, хоть и не на 100%. У меня обычно везде есть swap, но тут он не помог.
Всё это было ещё в те времена, когда LLM не работали как доступные публично персональные помощники, к которым можно было обратиться с вопросом. Пришлось разбираться самому. Не знаю, насколько сейчас всё это актуально, но если вы не знаете, что такое initramfs и как загружается система Linux, посмотрите мою заметку на этот счёт. Думаю, что на собеседованиях эта тема по-прежнему может быть актуальной. Да и просто, когда знаком с базой, решение ошибок сильно упрощается.
p.s. Картинка снизу не моя, нашёл в инете для наглядности. Она примерно так и выглядит. Когда первый раз видишь подобное, становится не по себе, так как выглядит страшно и не понятно, как решать. Сразу о бэкапах начинаешь думать и хаотично вспоминать, точно ли с ними всё в порядке.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX 😩
#linux #ошибка
На эту тему я вспомнил свою старую историю на этот счёт, когда пришлось откатиться на старое ядро, чтобы восстановить работоспособность сервера. История редкая, я не слышал, чтобы кто-нибудь о подобном рассказывал, но я столкнулся лично.
Была у меня одна виртуалка с веб сервером, которая начала глючить из-за нехватки памяти. Периодически приходил OOM Killer и выключал Mysql. У неё был большой аптайм, так что решил её на всякий случай перезагрузить, прежде чем разбираться с тем, почему перестало хватать памяти. Ну и чтобы не приседать два раза, решил сразу и обновления свежие поставить.
Во время обновления пакетный менеджер ругнулся на нехватку памяти и не закончил нормально свою работу. Думаю, ладно, перезагружу, как есть, без обновлений. Перезагружаю, а система не стартует. В консоли ошибка:
Kernel panic not syncing: VFS: Unable to mount root fsНе буду рассказывать, как я её решал, чтобы не тратить понапрасну ваше время. Перехожу сразу к сути. Пакетный менеджер установил все обновления, в том числе ядра. В момент пересборки initramfs с новым ядром, процесс с
update-initramfs упал из-за нехватки памяти и начальный загрузчик не собрался. Но в Grub по умолчанию было назначено новое ядро. В итоге система не стартовала.Решилось это выбором старой версии ядра для загрузки системы. Для него initramfs был собран нормально. Загрузился на старом ядре, ещё раз нормально провёл обновление и убедился, что всё в порядке. От подобной ошибки, кстати, частично страхует наличие swap, хоть и не на 100%. У меня обычно везде есть swap, но тут он не помог.
Всё это было ещё в те времена, когда LLM не работали как доступные публично персональные помощники, к которым можно было обратиться с вопросом. Пришлось разбираться самому. Не знаю, насколько сейчас всё это актуально, но если вы не знаете, что такое initramfs и как загружается система Linux, посмотрите мою заметку на этот счёт. Думаю, что на собеседованиях эта тема по-прежнему может быть актуальной. Да и просто, когда знаком с базой, решение ошибок сильно упрощается.
p.s. Картинка снизу не моя, нашёл в инете для наглядности. Она примерно так и выглядит. Когда первый раз видишь подобное, становится не по себе, так как выглядит страшно и не понятно, как решать. Сразу о бэкапах начинаешь думать и хаотично вспоминать, точно ли с ними всё в порядке.
———
ServerAdmin:
#linux #ошибка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍48
LLM со всеми их огромными возможностями стремительно и плотно входят в нашу жизнь, так что игнорировать их категорически противопоказанно, если вы хотите оставаться востребованным специалистом. Даже если вам кажется, что на текущий момент они вам ничем не помогут, скорее всего вам кажется. Пробуйте, изучайте, находите применение.
Покажу на примере, как можно взаимодействовать с Proxmox VE с помощью LLM и Proxmox MCP Server. Думаю, на этой фразе у многих возникает вопрос, как можно ИИ дать доступ к своему кластеру. Вдруг поломает что-нибудь. С этим нет особых проблем, так как доступ будет через токен, которому можно добавить права PVEAuditor и кроме как читать информацию, он больше ничего не сможет сделать. А если вы поверите в ИИ и себя, то можно и расширить.
Показываю сразу бесплатную рабочую конструкцию, которую вы можете повторить у себя и попробовать. Я буду использовать консольного агента opencode и одну из его бесплатных моделей. Если у вас есть своя, можете подключить её. Всё выполняю в тестовом окружении. В прод уже сами подумаете, как вам лучше всё это развернуть.
1️⃣ Устанавливаете opencode.
2️⃣ Создаёте директорию для проекта, например, PVE.
3️⃣ Клонируем себе MCP Server:
4️⃣ MCP написан на python, поэтому нужно установить uv со всеми зависимостями для запуска. Если не хотите этого делать, то можно запустить mcp в docker.
5️⃣ Проверяем запуск:
Нe должно быть ошибок. Закрываем по Ctrl+C.
6️⃣ Создаём в Proxmox токен, привязываем к пользователю, назначаем права.
7️⃣ Добавляем MCP в конфигурацию opencode в файле
8️⃣ Проверяем, подключился ли сервер:
8. Переходим в папку проекта и запускаем opencode:
Выбираем доступную модель. Если не подключали свою, то можете выбрать одну из бесплатных. Они помечены меткой Free.
Теперь запросы к PVE кластеру можно делать человекоподобным языком. Приведу полезный практический пример:
Можно не указывать конкретную ноду, а сначала сделать запрос к кластеру и попросить показать все ноды. В ответ на запрос агент выведет какой-то список. Возможно он вам будет неудобен. Через несколько уточнений вы можете получить удобную таблицу. Чтобы каждый раз не получать разные таблицы, можно тут же попросить агента запомнить формат.
Агент в папке проекта создаст файл
На картинке снизу таблица, которую я собрал на тестовом сервере, где есть машины с Kubernetes и Docker. Добавил туда все интересующие интерфейсы и исключил те, что не нужны. Получилось очень наглядно. Если кластер большой, то такой простой запрос может быть очень полезен, когда надо быстро что-то найти или разобраться.
Описанный MCP может очень много всего делать. Если у вас тестовый кластер, то можете обкатать автоматизацию по созданию, удалению окружений с полными настройками хранилищ, сетей и т.д. И не забывайте, если что-то не понятно, не получается, не знаешь, как делать, спрашивай того же агента. Он всё расскажет, если разрешить, то и настроит. Но с последним аккуратно. А то он такого может настроить.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX 😩
#proxmox #ai #opencode
Покажу на примере, как можно взаимодействовать с Proxmox VE с помощью LLM и Proxmox MCP Server. Думаю, на этой фразе у многих возникает вопрос, как можно ИИ дать доступ к своему кластеру. Вдруг поломает что-нибудь. С этим нет особых проблем, так как доступ будет через токен, которому можно добавить права PVEAuditor и кроме как читать информацию, он больше ничего не сможет сделать. А если вы поверите в ИИ и себя, то можно и расширить.
Показываю сразу бесплатную рабочую конструкцию, которую вы можете повторить у себя и попробовать. Я буду использовать консольного агента opencode и одну из его бесплатных моделей. Если у вас есть своя, можете подключить её. Всё выполняю в тестовом окружении. В прод уже сами подумаете, как вам лучше всё это развернуть.
# mkdir ~/PVE# git clone https://github.com/GethosTheWalrus/proxmox-mcp# curl-LsSf https://astral.sh/uv/install.sh | sh# cd proxmox-mcp# uv sync# uv run proxmox-mcp-serverНe должно быть ошибок. Закрываем по Ctrl+C.
~/.config/opencode/opencode.json: "mcp": {
"proxmox": {
"type": "local",
"enabled": true,
"command": [ "uv","--directory", "/root/proxmox-mcp", "run", "proxmox-mcp-server" ],
"environment": {
"PROXMOX_HOST": "192.168.177.101",
"PROXMOX_PORT": "8006",
"PROXMOX_USER": "root@pam",
"PROXMOX_TOKEN_NAME": "mcp",
"PROXMOX_TOKEN_VALUE": "d5dk27-2ced-96a1cdd",
"PROXMOX_VERIFY_SSL": "0"
}
}
}#opencode mcp listn┌ MCP Servers│● ✓ proxmox connected│ uv --directory /root/proxmox-mcp run proxmox-mcp-server│└ 1 server(s)8. Переходим в папку проекта и запускаем opencode:
# cd ~/PVE# opencodeВыбираем доступную модель. Если не подключали свою, то можете выбрать одну из бесплатных. Они помечены меткой Free.
Теперь запросы к PVE кластеру можно делать человекоподобным языком. Приведу полезный практический пример:
Выведи IP адреса виртуальных машин на ноде Proxmox srv-admin.
Можно не указывать конкретную ноду, а сначала сделать запрос к кластеру и попросить показать все ноды. В ответ на запрос агент выведет какой-то список. Возможно он вам будет неудобен. Через несколько уточнений вы можете получить удобную таблицу. Чтобы каждый раз не получать разные таблицы, можно тут же попросить агента запомнить формат.
Агент в папке проекта создаст файл
AGENTS.md и опишет структуру таблицы. Последующие похожие запросы IP адресов будут сразу иметь удобный формат.На картинке снизу таблица, которую я собрал на тестовом сервере, где есть машины с Kubernetes и Docker. Добавил туда все интересующие интерфейсы и исключил те, что не нужны. Получилось очень наглядно. Если кластер большой, то такой простой запрос может быть очень полезен, когда надо быстро что-то найти или разобраться.
Описанный MCP может очень много всего делать. Если у вас тестовый кластер, то можете обкатать автоматизацию по созданию, удалению окружений с полными настройками хранилищ, сетей и т.д. И не забывайте, если что-то не понятно, не получается, не знаешь, как делать, спрашивай того же агента. Он всё расскажет, если разрешить, то и настроит. Но с последним аккуратно. А то он такого может настроить.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#proxmox #ai #opencode
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍90