ServerAdmin.ru
31K subscribers
569 photos
46 videos
22 files
2.82K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
WAICORE — хостинг, который не подведёт, со скидкой 25%

Для сисадминов, которые ценят:

— AMD Ryzen 9 9950X, а так же EPYC 9454— никаких тормозов
— NVMe-диски
— 5-10 Гбит/c — ширина канала зависит от тарифной линейки
— Надежная Германия — стабильные дата-центры

Преимущества:
- Быстрая поддержка
- Мгновенная активация
- Гибкая оплата. Crypto, СБП, PayPal

👉 Попробовать со скидкой 25%
👉 Написать нам для обратной связи:
@waicore_help
👉 Телеграм
канал @waicore
Подписчик прислал ссылку на очередной проект по мониторингу сайтов и TLS сертификатов к ним - Simple Site Monitor. Название полностью соответствует описанию. Ничего кроме кода ответа веб сервера и проверки содержимого страницы по заданному шаблону он не умеет. Разве что время жизни сертификата ещё проверяет. Больше ничего.

Проект собран в Docker, так что я его очень быстро развернул и попробовал:

# git clone https://github.com/DarthTigerson/Simple-Site-Monitor
# cd Simple-Site-Monitor
# docker compose up -d --build

Можно идти на порт сервера 8000 и проверять. Настраивать мониторинг можно как через файл конфигурации в директории ./data, так и через веб интерфейс. В целом, ничего особенного. Работает и работает. Не знаю, что мотивирует людей писать такие мониторинги. Их уже есть, много, хороших, бесплатных, более функциональных. Тут мне не понравилось то, что уведомления возможны только в Discord и Slack. Хоть и заявлен тип Custom с возможностью указать свой webhook, но с Telegram он не заработал. Пишет, что поддерживает только домены в зоне discord и slack.

Приведу 3 наиболее популярных и функциональных аналогов, которые я сам использовал и писал о них.

📌UptimeRobot - это вообще сервис, но там есть бесплатный тарифный план, которого лично мне хватает. Использую его из-за удобного бесплатного приложения на Android.

📌Uptime Kuma - это наверное лидер среди подобных простых мониторингов, в которых не надо разбираться, а можно развернуть и сразу настроить. На него полно обзоров. Наверное каждый месяц какой-нибудь блогер пишет на него обзор. Можно развернуть у себя и пользоваться.

📌Gatus - этот мониторинг активно использую и по сей день. Писал про него, в том числе про то, как обновляю его конфигурацию с помощью простого пайплайна. Настроил там все интересующие меня проверки. Уведомления шлю в Telegram. Он у меня дублирует основные мониторинги на Zabbix, проверят их самих, плюс точки входа в наблюдаемые инфраструктуры, чтобы быстро узнать, что там всё отвалилось и лежит без внешнего доступа. Ну и по мелочи свои личные ресурсы. Мне он лично нравится за его дашборд-стартовую страницу, которая наглядна и не требует особой настройки. Просто по группам там всё скомпоновал.

А кто не видел, предлагаю свою сборную статью, где я собрал вообще все публикации о бесплатных мониторингах, которые были на обзоре в этом Telegram канале:

Топ бесплатных систем мониторинга

Если кто-то знает ещё интересные и функциональные мониторинги, поделитесь информацией.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#мониторинг
Выгодная инфраструктура с GPU для проектов любого масштаба

Если вы создаете приложения на базе ИИ, занимаетесь анализом данных и сложными вычислениями, вам знакома проблема нехватки ресурсов GPU. С Selectel о ней можно забыть. Здесь есть мощные серверы с видеокартами для решения задач любой сложности всего от 29 ₽/час: https://slc.tl/dy8vz

Почему стоит выбрать аренду серверов с GPU в Selectel:

Широкий выбор видеокарт: Более 20 моделей карт — от GTX 1080 до профессиональных H100 и А100 (40 и 80 ГБ).
Гибкость и масштабируемость: Мгновенное масштабирование под растущие нагрузки, стандартные и индивидуальные конфигурации с нужной видеокартой.
Высокий уровень безопасности: серверы Selectel соответствуют международным и российским стандартам безопасности, включая 152-ФЗ (УЗ-1), PCI DSS, ISO 27001, 27017 и 27018.

Разверните ваш проект на серверах с GPU в Selectel от 29 ₽/час: https://slc.tl/dy8vz

Реклама. АО «Селектел», ИНН 7810962785, ERID: 2Vtzqwxphjb
🔝 ТОП постов за прошедший месяц. Все самые популярные публикации по месяцам можно почитать со соответствующему хэштэгу #топ. Отдельно можно посмотреть ТОП за прошлые года: 2023 и 2024.

Пользуясь случаем, хочу попросить проголосовать за мой канал, так как это открывает некоторые дополнительные возможности по настройке: https://t.me/boost/srv_admin.

📌 Больше всего пересылок:
◽️Статья про кластер на базе Proxmox VE (474)
◽️Набор правил iptables для защиты от небольшого DDOS (390)
◽️Добавление новых дисков в сервер (375)

📌 Больше всего комментариев:
◽️Примеры вранья ИИ (136)
◽️Странные сетевые ошибки на сервере (94)
◽️Подключение к старому железу с Java (90)

📌 Больше всего реакций:
◽️Статья про кластер на базе Proxmox VE (382)
◽️Добавление новых дисков в сервер (237)
◽️Bash-трюк для grep вывода из stderr (231)
◽️Проблемы с сетевухами Realtek в Linux (197)

📌 Больше всего просмотров:
◽️Подборка видео на тему IT (12544)
◽️Набор правил iptables для защиты от небольшого DDOS (11007)
◽️Ограничения на отправку почты в Postfix (10920)

#топ
Уже не первый раз сталкиваюсь с ситуацией, что получаешь арендную VPS, а там по умолчанию уже настроены сетевые интерфейсы и ipv4, и ipv6. Делаешь обновление системы через apt, он подключается по ipv6 и ничего не качает, пишет, что no longer has a Release file. Столкнулся вчера лично с репозиторием от Яндекса:

http://mirror.yandex.ru/debian bookworm main

В рунете он популярен. Я и сам всегда его использую. Не знаю, кто тут виноват, сам провайдер или Яндекс (позже выяснилось, что Яндекс, подробности в конце). Не вижу смысла разбираться и тратить время. В данном случае проще отключить ipv6. Это можно сделать разными способами. Можно конкретно apt заставить работать через ipv4. У него есть параметр для этого:

# apt -o Acquire::ForceIPv4=true upgrade

Постоянно так писать не будешь, можно добавить в конфигурацию, создав файл /etc/apt/apt.conf.d/disable-ipv6 следующего содержания:

Acquire::ForceIPv4 "true";

Я лично поступил проще. Отключил ipv6 на уровне системы. Добавил в /etc/sysctl.conf пару параметров:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

И применил их:

# sysctl -p

Настройки ipv6 на сетевом интерфейсе сразу пропали, apt успешно заработал по ipv4.

Более радикальный способ отключения через GRUB, но тогда придётся обновлять загрузчик, пересобирать initramfs. Плюс, понадобится перезагрузка. Для этого в его конфиг /etc/default/grub, конкретно в параметр GRUB_CMDLINE_LINUX, нужно добавить значение ipv6.disable=1. Если там уже указаны другие значения, то перечислены они должны быть через пробел. Примерно так:

GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet ipv6.disable=1"

После этого нужно обновить загрузчик. В зависимости от системы выглядеть это может по-разному. В Debian можно так:

# dpkg-reconfigure grub-pc

Заметил ещё такую особенность. До того, как отключил ipv6, заметил, что apt работает то по ipv4, то по ipv6. Можно было несколько раз его запустить и получить желаемый результат. Не знаю, с чем это может быть связано. Возможно первый резолв доменного имени идёт на DNS запись AAAA, а если подключение неудачно, то потом на A. Но не уверен, что это так. Просто догадки.

Уже после написания заметки решил повнимательнее разобраться, что реально происходит в apt при обращении по ipv6 и ipv4. Для этого сделал два отдельных запроса по разным протоколам:

# apt -o Debug::Acquire::http=true -o Acquire::ForceIPv4=true update
# apt -o Debug::Acquire::http=true -o Acquire::ForceIPv6=true update

Первый нормально отрабатывает и загружает файл InRelease. А во втором случае репозиторий Яндекса отвечает:

Answer for: http://mirror.yandex.ru/debian/dists/bookworm/InRelease
HTTP/1.1 404 Not Found
Server: nginx/1.24.0 (Ubuntu)
............................................................
Err:2 http://mirror.yandex.ru/debian bookworm Release
 404 Not Found [IP: 2a02:6b8::183 80]

То есть DNS запись для mirror.yandex.ru есть:

# dig +short mirror.yandex.ru AAAA
2a02:6b8::183

Но Nginx, который раздаёт контент, не настроен для работы по ipv6. Не знаю, зачем так сделали. Если не настроили Nginx, зачем настроили ipv6? 🤷‍♂️ Может какие-то временные проблемы.

☝️В целом, с ipv6 такое бывает, поэтому если не используете, лучше сразу отключить.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux #network #ipv6
⭐️🚀 Хотите прокачаться в работе с Linux? Пора проверить, готовы ли вы к следующему шагу!

Пройдите короткое тестирование и узнайте, готовы ли вы к повышению квалификации на курсе «Administrator Linux. Professional». Мы обучаем продвинутым навыкам администрирования Linux: от установки и настройки ОС до оптимизации работы и управления безопасностью.

🎁 Успешное прохождение вступительного теста — это ваш пропуск к записям открытых уроков и скидке на большое обучение.

❗️Доступ к записям откроется для тех кто успешно пройдет тест. Уроки находятся на лендинге курса.

👉 Оцените свой уровень знаний прямо сейчас: https://clck.ru/3MQasb

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Существует известный бесплатный чат сервер Mattermost. Я когда-то давно его устанавливал и администрировал. Написал статью по мотивам. Но с тех пор прошло много времени (8 лет). Решил ещё раз на него посмотреть и оценить.

Разворачивается он просто. Можно быстро в Docker запустить. Сам разработчик рекомендует использовать версию в Docker именно для тестов. Для прода я бы вял Ubuntu и развернул из пакетов. Разработчик рекомендует разворачивать в Kubernetes, если он у вас есть. Он позиционирует свой продукт как полностью готовый для интеграции в современную инфраструктуру разработки и поддержки приложений.

Я взял вот эту инструкцию, подготовил доменное имя и DNS записи для него и всё сделал по шагам:

◽️склонировал репозиторий
◽️получил сертификаты
◽️настроил .env, указав имя домена и путь к сертификатам
◽️запустил docker compose

Всё завелось без проблем и приключений. Работать в Mattermost можно тремя способами:

▪️Браузер
▪️Десктопное приложение
▪️Мобильное приложение

Все три выглядят плюс-минус одинаково, так как по сути являются обёрткой к веб версии. Я хорошо знаком с Rocket.Chat, поэтому дальше буду сравнивать с ним. Вообще на первый взгляд они внешне сильно похожи. Главное окно программы и список сообщений в чатах выглядят схоже.

Mattermost выглядит более аккуратно, перевод на русский язык лучше. Со стороны клиента я вообще не увидел нареканий, а в админке встречались непереведённые настройки.

Для мобильного приложения Android доступны push уведомления, если их включить в админке сервера. Причём я нигде не нашёл информации насчёт ограничений. Указано лишь, что он предоставляется в тестовых целях без гарантии доставки. Не знаю, что у него с надёжностью, но во время моих тестов он работал нормально, все пуши приходили. Также можно поднять свой собственный push сервер. Есть отдельная инструкция для этого. У Rocket.Chat в бесплатной версии есть месячный лимит на push уведомления, но какой он - хз. Раньше был то ли 1000, то ли 10000 пушей. Сейчас все чаты поскрывали сравнения бесплатных версий и точные ограничения, так что трудно сравнивать.

В Mattermost по умолчанию сразу же были настроены звонки между абонентами в том числе с демонстрацией экрана. По крайней мере это заявлено и можно пробовать. Я попробовал. Демонстрация не заработала ни в какой комбинации клиентов. Вроде всё работает, но вместо картинки - чёрный экран. В Rocket.Chat из коробки этого вообще нет. Надо настраивать отдельно Jitsi и интегрировать.

В плане функциональность у Rocket.Chat в бесплатной версии намного больше возможностей. Например, есть поддержка аутентификации с помощью SAML, LDAP, OAuth2, а у MM только email/пароль. Есть какие-то костыли для LDAP, но я не знаю, насколько хорошо они работают. У меня в комментариях к старой статье постоянно просят помочь её настроить.

То же самое с возможностями по управлению пользователями. В MM банально нельзя через админку создать пользователя самому. Надо ему отправить ссылку для регистрации. В Rocket без проблем. Зашёл и сделал учётку. У него же есть полноценный RBAC, можно настраивать какие хочешь роли и распределять права. Можно автоматически раздавать права доступа в каналы. В MM такого нет в бесплатной версии. Но правда там есть удобное разделение на команды с ручным управлением пользователями.

Тут можно много сравнивать. Подведу некоторый итог. В целом мне Mattermost внешне и в плане управления понравился больше. Он какой-то более добротный, целостный, с хорошо структурированной админкой. В Rocket спустя несколько лет я всё равно теряюсь и забываю, где что настраивал. Но при этом в сумме у MM возможностей меньше в бесплатной версии.

Так что если вам хватает возможностей Mattermost, используйте его. А если нужна функциональность Rocket, переходите на него. Но хорошо подумайте. У Rocket поддержка релизов максимум 6 месяцев. Придётся постоянно его обновлять. Иногда бывают проблемы. База у него Mongo против Postgre у MM.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#chat
Для тестирования скорости загрузки сайта существует старый и известный в узких кругах инструмент WebPageTest. Упоминал уже не раз о нём, потому что регулярно пользуюсь, но отдаю себе отчёт, что он не очень популярен. На днях ставил себе с нуля свежую версию и потратил пол дня, пока всё запустил на своей виртуалке. Проект развивается в плане кодовой базы и возможностей, но конкретно Private Instances, которые можно развернуть у себя и использовать без ограничения, ставятся с костылями, так как для них не обновляют документацию и Docker файлы.

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

Проект состоит из серверной части и агентов, которые могут быть развёрнуты в разных локациях. Репозитории:

https://github.com/catchpoint/WebPageTest
https://github.com/catchpoint/WebPageTest.agent

В первом есть docker-compose.yml, который включает в себя php-бэкенд, веб-интерфейс и агент. Контейнеры собираются по месту из представленных докерфайлов в папке docker/local. Если взять этот проект и запустить, то не соберётся wptagent. В нём есть привязки к названию репозитория, где он раньше был, но имя репозитория поменяли, а тут ничего не поправили. Проще собрать агента отдельно, а тут исключить его из сборки. К тому же агент будет запускаться не только на этой машине, так что разнести их не только географически, но и логически - разумно.

Клонируем репозиторий сервера:

# git clone https://github.com/catchpoint/WebPageTest

В docker-compose.yml комментируем всё, что относится к agent. Это в самом конце секция, после web и php. Собранный веб сервер будет много всего писать в директорию www/ в разные вложенные папки. Для простоты назначим ей права 0777:

# chmod -R 0777 www/

После этого собираем. Можно не трогать настройки по умолчанию.

# docker compose up

После сборки запустится серверная часть на 80-м порту. Можно идти браузером по IP адресу сервера. Состояние сервера можно посмотреть так: http://10.20.1.21/install/ Там должно быть всё зелёное. И видно, что есть одна локация Test Locations и нет подключенного агента. Это настройка по умолчанию, она задаётся в файле docker/local/wptconfig/locations.ini. Там только один тестовый location с ключом доступа 123456789. Если будете строить распределённую сеть агентов, то нужно будет добавлять туда новые локации и подключать агентов в соответствии с названиями и ключами.

Идём на машину, где будет запускаться агент. Клонируем репозиторий:

# git clone https://github.com/catchpoint/WebPageTest.agent

В корне лежит Dockerfile. Откройте его и измените следующую строку:

RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - && \
  apt-get install nodejs npm -y

На

RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - && \
  apt-get install nodejs -y

Отдельно npm ставить не надо, он входит в состав nodejs. Сборка будет валиться с ошибкой, если это не исправить. Собираем агента. Я сразу указал ему часовой пояс. Можно и другие параметры задать:

# docker build --tag wptagent --build-arg TIMEZONE=MSK .

Если сборка прошла без ошибок, то можно запускать самого агента:

# modprobe ifb numifbs=1
# docker run -d -e SERVER_URL="http://10.20.1.21/work/" -e LOCATION="Test" -e NAME="Test" -e KEY="123456789" --cap-add=NET_ADMIN --init --name wptagent wptagent

10.20.1.21 - IP адрес сервера. Через пару минут по ссылке http://10.20.1.21/install/ вы должны увидеть, что агент подключился. В логе сервера это будет видно по запросам на /work/getwork.php от IP адреса агента.

Теперь можно выполнять тесты сайтов с помощью этого агента. Мне это нужно было, чтобы протестировать последние изменения в Angie. Авторы указали, что повысили стабильность работы с протоколом HTTP/3. Напомню, что когда я включил в Angie протокол HTTP/3, заметил, что параметр TTFB увеличился. В тестах это стабильно воспроизводилось.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#webpagetest
Открытый практикум Kubernetes by Rebrain: Kubebuilder и Kubernetes-операторы

После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.

👉Регистрация

Время проведения:


11 июня (среда), 20:00 по МСК

Программа практикума:

▪️Зачем вообще нужны Kubernetes-операторы?
▫️ Реальные сценарии их использования
▪️ Создадим простой оператор с нуля

Кто ведёт?

Егор Гришечко — senior software engineer в Uber.

Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!

Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFG1gTyr
В репозиториях Debian живёт полезная утилита debootstrap, с помощью которой можно собрать работающую систему в каталоге в уже запущенной ОС. Либо взять уже готовую. Применений у этой технологии может быть много.

Например, можно создать диск в оперативной памяти, установить туда систему через debootstrap, сделать туда chroot, туда же для надёжности можно установить openssh-server и подключиться напрямую. И уже из этой системы делать с работающей всё, что угодно. Можно полностью очистить жёсткий диск перед окончанием аренды виртуалки. Можно поверх работающей системы установить совершенно другую, которую не поддерживает панель управления хостера.

Покажу на практике, как это работает. Ставим debootstrap и сразу с его помощью скачиваем образ системы Debian 12 в каталог /mnt/debootstrap:

# apt install debootstrap
# mkdir /mnt/debootstrap
# debootstrap bookworm /mnt/debootstrap http://deb.debian.org/debian

Монтируем туда из работающей системы оборудование:

# mount --bind /dev /mnt/debootstrap/dev
# mount --bind /dev/pts /mnt/debootstrap/dev/pts
# mount --bind /proc /mnt/debootstrap/proc
# mount --bind /sys /mnt/debootstrap/sys

И заходим туда:

# chroot /mnt/debootstrap

Мы оказываемся в чистой минимальной системе на базе Debinan 12 Bookworm. Можем делать в ней всё, что угодно. Зададим пароль root, установим некоторый софт:

# passwd
# apt install tmux openssh-server

Разрешим подключаться пользователю root по ssh сразу внутрь изоляции:

# nano /etc/ssh/sshd_config

Port 222
PermitRootLogin yes

Закрываем, сохраняем, перезапускаем openssh сервер:

# /etc/init.d/ssh restart

Выходим из chroot:

# exit

Теперь туда можно подключиться напрямую по SSH, как на любой другой сервер:

$ ssh -p 222 root@10.20.1.9

Вы оказались в вашей новой системе. Можете там делать, что угодно.

Теперь представим, что вам нужно гарантированно очистить содержимое дисков работающей системы. Для этого создаём в оперативной памяти раздел на 2GB. Можно и меньше, если памяти совсем мало, так как минимальный образ для debootstrap меньше 1GB:

# mkdir /mnt/chroot
# mount -t tmpfs -o size=2G tmpfs /mnt/chroot

Копируем туда подготовленную ранее систему:

# cp -R /mnt/debootstrap/* /mnt/chroot

Монтируем оборудование и подключаемся:

# mount --bind /dev /mnt/chroot/dev
# mount --bind /dev/pts /mnt/chroot/dev/pts
# mount --bind /proc /mnt/chroot/proc
# mount --bind /sys /mnt/chroot/sys
# chroot /mnt/chroot

Запускаем ssh-сервер и подключаемся напрямую:

# /etc/init.d/ssh start
# exit

$ ssh -p 222 root@10.20.1.9

Теперь можем делать с системой всё, что угодно. Например, полностью очистить содержимое диска, в том числе корневого раздела основной системы. Смотрим список разделов:

# fdisk -l

У меня один диск и три раздела: sda1, sda2, sda5. Полностью очищаем все из них. После этого восстановить информацию будет невозможно:

# shred -u -z -v /dev/sda{1,2,5}

Всё, систем надёжно убита. Можно так делать после того, как отказались от аренды. Особенно если у вас там какие-то впны были настроены или использовались другие учётные данные, которые могли остаться где-то в системе.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux
Ко мне прилетела задача по обновлению сервера Zabbix 5.0 на Centos 7 на что-то более свежее и поддерживаемое. В идеале на Zabbix 7.0. Напомню, что система Centos 7 уже год как EOL. Zabbix 5 – последняя версия сервера, которую можно было установить на эту систему.

Большой нужды в плане функциональности обновляться нет. Мониторинг работает нормально и каких-то кардинальных изменений в нём не предвидится. Но вечно сидеть на старых версиях нельзя, так что принято решение обновиться.

Я не раз делал такие миграции. Самый надёжный способ – просто перенести вручную с Centos 7 на Debian или любую другую современную систему. Это гарантированно рабочий вариант, но нужно повозиться, ничего не забыть, не потерять, всё перенастроить. Довольно хлопотно.

Решил пойти по более простому в плане организационных моментов, но более сложном в плане технических – сделать обновление системы на Rocky Linux 8, потом на Rocky Linux 9. Сразу скажу, что у меня получилось, хотя не очень верил в успешный результат. Был чисто спортивный интерес попробовать, получится или нет.

Точную инструкцию по обновлению не написать, потому что всё очень индивидуально. Расскажу по шагам, как действовал я.

1️⃣ Для подобного рода обновлений есть один инструмент - leapp. Его и используют все форки Centos и RHEL для обновлений между релизами. Я взял за основу вот эту статью. Буквально несколько первых команд из неё пригодились.

2️⃣ Процедура подготовки к обновлению показала, что мешают обновиться пара драйверов - floppy и pata_acpi. Отключил их, прошёл основные проверки. Было много некритичных замечаний, проигнорировал их.

3️⃣ В процессе обновления было несколько ошибок из-за несовместимости пакетов и зависимостей. В системе подключено много внешних репозиториев в различными версиями php, python, версиями nginx и т.д. Всё отключил. На все ошибки зависимостей в пакетах реагировал просто - удалял проблемные пакеты. Система в итоге обновилась и превратилась в Rocky Linux 8.

4️⃣ В процессе обновления пакеты с Zabbix и MariaDB были удалены. Все данные и конфиги остались. Установил заново СУБД, проблем не возникло, запустилась.

5️⃣ Подключил репозиторий с Zabbix 6, установил необходимые пакеты, вернул старые конфиги. Сервер запустился, выполнил обновление своей базы данных и штатно заработал.

6️⃣ Дальше я вручную проверил все настройки веб сервера, php, поправил где, что нужно было. Запустил все службы. Зашёл в веб интерфейс и убедился, что мониторинг нормально работает.

В целом не сказать, что много времени потерял. Часа за 2 управился. Но это при том, что я хорошо понимаю, как всё это работает. Сразу по месту исправлял все ошибки. Особо не ковырялся и не соображал, как тут что работает. Следующий этап - обновиться на Rocky 9 и Zabbix 7. Спешки особо нет, так как текущие системы пока на поддержке. Можно подождать уже до выхода Zabbix 8. С учётом того, что 7.4 уже готова, дальше будет релиз новой ветки.

Если большого опыта работы с Zabbix Server и веб сервером нет, лучше потратить больше времени, но сделать аккуратную миграцию на новый сервер. Конкретно с Zabbix это выглядит так:

1️⃣ Ставите новую систему, настраиваете. Устанавливаете там ту же самую версию Zabbix Server. Для небольшой экономии времени можно сразу установить на один релиз выше, то есть не 5, как у меня, а сразу 6. Тоже должно сработать, но для надёжности я бы сначала ту же версию установил.

2️⃣ Со старого сервера переносите все конфиги Zabbix, останавливаете его, снимаете дамп базы данных, переносите его на новый сервер, восстанавливаете.

3️⃣ Запускаете Zabbix на новом сервере, убеждаетесь, что он нормально работает. После этого уже штатно обновляете его на новом сервере на следующий релиз. Прыгать через релиз я бы не рекомендовал, хотя видел отзывы, что так тоже получается обновиться.

Обновления форков RHEL с релиза на релиз вполне рабочие. Я не раз такое проворачивал. Хотя и считается, что обновлений между ними нет. На деле обновляются примерно так же, как и Debian с Ubuntu.

#centos #zabbix
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀⭐️ Разберётесь, как работают стандартные потоки в Linux и научитесь управлять вводом, выводом и ошибками в терминале

👉 Приглашаем на вебинар: Управление потоками ввода и вывода в Linux

На вебинаре вы узнаете:
- Что такое стандартные потоки ввода, вывода и ошибок
- Как перенаправлять потоки с помощью >, >>, <, 2>, | и других операторов
- Как использовать пайпы (конвейеры) для обработки данных в командной строке
- Как комбинировать команды, управлять выводом и создавать эффективные цепочки

В результате вебинара вы:
- Научитесь различать и использовать stdin, stdout и stderr
- Сможете перенаправлять потоки и использовать их в сценариях автоматизации
- Попробуете строить пайплайны и обрабатывать данные без создания временных файлов
- Поймёте, как вывод ошибок и данных влияет на поведение скриптов и программ.

🎁 Урок пройдет в преддверие старта курса «Administrator Linux. Basic». Все участники вебинара получат скидку на обучение.

👉 Для участия зарегистрируйтесь: https://clck.ru/3MTbzP

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
▶️ Очередная подборка авторских IT роликов, которые я лично посмотрел и посчитал интересными/полезными. Это видео из моих подписок за последнее время (обычно беру период в 2 недели), что мне понравились.

Kasmweb - потоковая передача рабочих столов
Обзор необычного проекта, который предоставляет как сервис доступ через браузер к рабочим столам систем, конкретных приложений или только браузеров. Для передачи картинки у них своя реализация протокола VNC - KasmVNC. Работает всё на базе Docker. Выглядит необычно, но у бесплатной версии серьёзные ограничения, так что использовать получится только для себя или нескольких человек.

Что должен уметь DevOps Middle — ответы топ-компаний
Полезное информационное видео, если вы хотите понимать, что происходит в отрасли и какие компетенции желательно поддерживать. Показаны прямые записи и ответы представителей компании. То есть это не чьё-то мнение и исследование.

Установка XPEnology на Aoostar WTR Pro
Автор подробно рассказывает про теорию и практику установки XPEnology на примере одного из NAS. Проект классный, я лет 15 уже его использую дома на HP Microserver. Просто и удобно.

ProxMox Cluster + Shared Storage. Центральное хранилище для proxmox кластера и высокая доступность
Наглядный пример добавления общего хранилища в кластер на базе NFS. Это примерно то же самое, что я делал в своей статье по кластеру, только использовал iSCSI, а не NFS. Теоретически по NFS должно работать медленнее чисто из-за архитектуры (по iSCSI виртуалка получает блочное устройство под диск, а при NFS просто использует сетевой диск, чтобы положить туда свой qcow2 или raw образ), но лично я тестов не проводил.

Dual Boot Windows 11 and Fedora 42 - Complete Tutorial
Для меня не особо актуальная информация, но было интересно посмотреть. Автор взял новый неттоп с Windows 11 и одним разделом на весь диск. Отрезал от диска кусок, поставил туда Fedora в параллельную загрузку с Windows. Теперь можно пользоваться любой системой по выбору. Установщик у Fedora крутой. Всё сделал автоматически.

Миграция из Nginx в Angie
Переезд в режиме реального времени с Nginx на Angie.

Директива location в Angie
Хорошая база с теорией и практикой по настройке location в Angie. Там уже есть хоть и небольшие, но отличия от Nginx, так что потихоньку от последнего отвыкаем. У Angie больше возможностей и гибче настройки.

Часть 6. Построение инфраструктуры на ALT Linux 11. Групповые политики.
Продолжение серии роликов про построение инфраструктуры на базе ALT. В видео в том числе идёт речь о создании групповых политик для Windows и Linux.

Tech project management and documentation in Notion
Автор показал, как ведёт свои рабочие и личные заметки в Notion. Там есть некоторые привязки к функциональности именно Notion в виде встраивания и интеграции с некоторыми сервисами. Но в целом информация универсальная. Будет полезна тем, кто тоже заботится о том, чтобы аккуратно всё записывать в структурированную текстовую базу.

Настройка Middlewares в обратном прокси Traefik
Вообще не слышал ранее термин Middlewares в контексте обратных прокси. Было интересно посмотреть и познакомиться. По сути это просто насыщение проходящих запросов новыми данными. Чаще всего это какие-то заголовки.

#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
Перебираю потихоньку дома своё старое хозяйство, так как нахожусь в состоянии переезда из квартиры в дом. Знакомый когда-то давно просто отдал свой компьютер, когда купил себе новый. Мне понравился корпус, так как в нём много мест под диски, поэтому забрал. Вроде обычный системник, но туда штатно устанавливаются без проблем 10 дисков.

Воткнул туда железный контроллер и просто много лет набивал старыми ненужными дисками, а комп использовал для тестов, иногда включая. Там стоял Proxmox. Собирал на нём всякие рейды, причём с очень замысловатыми комбинациями. Например, у меня было 4 диска: 2 по 500 ГБ, и 2 по 1 ТБ. Я делал RAID10 из двух дисков по 500 ГБ и двух половинок дисков по 1 ТБ, и тут же RAID1 из оставшихся половинок дисков от 1 ТБ. И это отлично работало. Было просто любопытно так сделать. Не знал, что такое поддерживают железные контроллеры. Думал, это только софтовые с разделами работают.

Вытащил все эти диски вместе с контроллером. Реально во всём этом уже нет смысла. Для тестового сервера достаточно купить пару SSD дисков или вообще один большой. Собственно, мне и хватало на все мои задачи одного SSD. В новом месте уже всё с нуля будут подбирать, компактное и тихое (когда лишние деньги появятся 😔).

Кстати, у меня недавно была тема про вентиляторы, которую очень живо обсуждали. Она оказалось полезной, я для себя пометочки сделал. Расскажу, как в итоге решил проблему. У меня в системнике работали 5 вентиляторов. Они в целом исправны, но стали более шумными, нежели новые. Я просто взял и выбрал из них 2 самых тихих. Один оставил на вдув спереди снизу, где харды стоят, и один на выдув за кулером процессора. Всё остальное просто вынул и убрал. Стало тихо. И никакого нагрева всё равно нет. На компе только браузером пользуются.

NAS ещё разобрал, там один вентилятор. Его весь почистил, а вентилятор смазал силиконовым маслом. Стало потише. Посмотрим, насколько хватит этого масла. Есть мнение, что это путь в один конец, так как теперь он соберёт ещё больше пыли и в итоге встанет. NAS у меня, кстати, работает на базе HP Proliant N54L Microserver. Очень старенькая машинка, но задачи свои выполняет. Там стоят 5 дисков: 4 в паре зеркал, и один сам по себе.

Вроде и хочется что-то современнее купить, но зачем? Только хлопоты лишние и расход денег. Телевизоры с него отлично видео берут, производительности для гигабитной сети хватает, если что-то копируешь, бэкапишь. Объёмов тоже хватает, там диски по 3 ТБ. Так что прогресс вроде идёт, но для базовых домашних задач вполне хватает железа 10-15 летней давности. Если не играешь в игры, то обновлять компьютеры нет смысла. До сих пор старые платформы можно добить памятью и дисками, и они успешно решают задачи.

#железо #разное
🛠 +1 контроллер домена: зачем он и как внедрить без ошибок?

🔥 9 июня в 20:00 мск приглашаем на бесплатный вебинар «+1 контроллер домена: зачем он?».

Устойчивость инфраструктуры начинается с отказоустойчивости. А для этого в Active Directory часто нужен не один, а несколько контроллеров.

На вебинаре вы узнаете:

– как дополнительный контроллер помогает обеспечить стабильность,

– что важно учесть при его настройке: роли, службы, репликация,

– как избежать типичных ошибок при внедрении,

– как проверить работоспособность и синхронизацию.

📌 Получите практические рекомендации, которые можно применить в работе сразу после вебинара.

👉 Регистрируйтесь по ссылке: https://clck.ru/3MUiPU

Занятие приурочено к старту курса «Администратор Windows», где вы глубоко изучите архитектуру AD, настройку служб, автоматизацию и безопасность инфраструктуры.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Почти всегда, когда надо скопировать файлы с сервера на сервер, использую либо scp, либо rsync. Первый для одиночных файлов, второй для директорий. На прошлой неделе нужно было с одного старого сервера перенести выборочно кучу разрозненных файлов на другой. Вспомнил про возможность Midnight Commander, где одной из панелей с обзором файлов может выступать удалённый сервер. Это очень удобно как раз для моей задачи. Я очень редко этим пользуюсь. Даже не знаю, почему. Нет такой привычки. Хотя объективно это удобнее, чем ходить по каталогам и запускать rsync, вспоминая его ключи, особенно если надо использовать нестандартный порт SSH.

MC поддерживает два разных протокола для передачи - SFTP (SSH File Transfer Protocol) или FISH (Files transferred over Shell protocol). Последний в разделе меню называется как Shell link. По названию не совсем понятно, что это такое. На первый взгляд кажется, что в контексте передачи файлов это одно и то же. Но на деле нет. И я как раз столкнулся лично с различиями.

Сервер, с которого я подключался, был старее того, куда надо было копировать. Там вроде бы Debian 11 стоял, я копировал на 12-й. К сожалению, не могу уточнить, сервер удалён уже, а сразу не было времени подробно разбираться. Сначала использовал sftp и ни в какую не мог подключиться. Постоянно в логе принимающего севера были ошибки в auth.log на тему то ли использовавшихся шифров, то ли формата сертификата. Сразу не записал, только пометил себе сделать об этом заметку.

При этом я спокойно подключался из консоли по ssh к удалённому серверу с тем же сертификатом или паролем. Попробовал в MC подключение по Shell link и сразу подключился. Перекинул файлы и разбираться уже не стал. Позже пробовал с разными серверами использовать разные протоколы - везде работали оба.

В целом, разница понятна, так как протоколы передачи совершенно разные. Лучше использовать более привычный и распространённый sftp, если он разрешён и настроен на принимающем сервере. Это не всегда бывает так. Как и обратная ситуация. Может быть разрешён sftp, но запрещён обычный shell. А подключению по fish как раз нужен хотя бы sh на принимающей стороне. Так что если не подключается один протокол, пробуйте другой.

☝️ Отдельно отмечу такую фишку MC. Вы можете в левой панели открыть один удалённый сервер, а в правой - другой. И не настраивая прямого соединения между этими серверами перекинуть файлы, выступая со своим MC как посредник.

Настраиваются такие подключения так: нажимаем F9 -> Right или Left, то есть выбираем нужную нам панель, потом раздел меню Shell link или SFTP link. Формат подключения типичный для ssh - root@10.20.1.23/mnt/backup. Если аутентификация по ключу настроена, то сразу подключитесь. Если нет - выскочит окно для ввода пароля. Если надо задать пароль или использовать нестандартный порт, то по F1 открывается подсказка, там показаны все варианты.

На подобные заметки постоянно приходят комментаторы и начинают рассказывать, что использовать панельные менеджеры - плохая практика, надо работать в консоли, это быстрее, удобнее и т.д. Давайте воздержимся от этих бессмысленных споров. Пусть каждый работает так, как ему удобно. Мне удобно работать с MC, я к нему привык. И mcedit его люблю.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux #terminal #mc
🔄 Обновления Windows: что должен знать администратор?

🔥 23 июня в 20:00 мск приглашаем на
бесплатный вебинар «Обновления Windows: что должен знать администратор?»

Управление обновлениями — это не только про загрузку новых версий, но и про стабильность инфраструктуры.

Что вас ждёт:


– как устроен механизм обновлений в Windows 10/11 и Server,
– какие средства Windows можно использовать для настройки обновлений,
– как тестировать и откладывать обновления в корпоративной среде,
– какие риски возникают после обновлений и как их минимизировать.

📌 Убедитесь, что обновления работают на пользу инфраструктуре, а не наоборот.

👉 Регистрируйтесь по ссылке: https://clck.ru/3MWits

Занятие приурочено к старту курса «Администратор Windows», где вы получите полные знания для управления инфраструктурой, настройкой обновлений и повышением безопасности рабочих станций и серверов.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Если вам приходится обслуживать сайты, работающие на php, то расскажу про небольшую настройку, которая по умолчанию отключена, но в некоторых случаях её имеет смысл включить. Речь пойдёт про логирование использования функции mail(), с помощью которой можно отправлять email сообщения.

Хорошо, если веб приложение умеет использовать сторонние SMTP сервера для отправки почты, а не прямую отправку через встроенную функцию. Но это не всегда так. Другая сторона медали - если сайт или хостинг взломают, то часто начинают слать спам через php напрямую. Это самое популярное использование взломанного каким-нибудь ботом сайта через публичную уязвимость. Через него либо сразу спам начинают слать, либо ддосить кого-нибудь, реже - майнить. Майнинг сразу видно по возросшей нагрузке. А вот почту можно и не заметить.

Я обычно в таких случаях ставлю для локальной отправки postfix и слежу за его логом. Если вы с почтовыми серверами не особо знакомы, а вам нужен просто список отправленных писем, где одно письмо - одна строчка, то с логированием сдрествами php будет проще всего. К тому же этот лог в том числе покажет, какой конкретно скрипт сделал отправку, что в логе почтового сервера не увидеть, там этой информации в принципе нет.

Идём в настройки php, в файл php.ini и раскомментируем там строку:

mail.log = syslog

Можно направить вывод в какой-то текстовый файл вместо syslog, но могут возникнуть нюансы с доступом, если, к примеру, у вас используется php-fpm и для каждого сайта запускается пул под своим отдельным пользователем. Использовать syslog как единое централизованное хранилище - более универсальное решение. Но тут уже вам решать, как удобнее, в зависимости от ваших настроек. Можно и из syslog сложить все записи в отдельный файл, отфильтровав их по вхождению фразы mail().

Для этого рисуем конфиг для rsyslog в файле /etc/rsyslog.d/php-mail.conf:

:msg, contains, "mail()" /var/log/mail-php.log
& stop

Перезапускаем rsyslog:

# systemctl restart rsyslog

И перезапускаем службу php в зависимости от того, в каком виде она используется. Отдельно отмечу, что, к примеру, в Debian файл php.ini для модуля Apache, для php-fpm, для запуска консольных скриптов через cli свой. Не перепутайте, куда будете вносить правки. Либо вносите сразу во все. Лучше создать отдельный файл, вместо правки общего. То есть для php-fpm кладём настройку примерно сюда: /etc/php/8.2/fpm/conf.d/mail-log.conf.

Принудительно проверить работу можно простейшим скриптом такого содержания:

<?php
$to = "user@example.com";
$subject = "Привет от PHP!";
$message = "Это тестовое письмо, отправленное через PHP скрипт.";
mail($to, $subject, $message);
?>

Запускаем скрипт:

# php mail.php

В файле /var/log/mail-php.log наблюдаем запись:

2025-06-09T00:07:09.607068+03:00 debian12-vm php: mail() on [/root/mail.php:5]: To: user@example.com -- Headers: -- Subject: Привет от PHP!

Видим скрипт /root/mail.php и конкретную строку 5, где сработала функция mail(). Это может очень пригодится при отладке неправомерных отправлений с сервера.

Не забудьте настроить ротацию этого файла, если будете хранить лог в отдельном файле. Добавьте примерно такой конфиг для logrotate в файле /etc/logrotate.d/mail-php:

/var/log/mail-php.log {
rotate 30
daily
missingok
notifempty
compress
olddir /var/log/old
}

Я обычно складываю все старые логи в отдельную директорию. Не забудьте её создать, если скопируете этот конфиг. Если будете логировать не по дням, а по размеру файла, то не забудьте настроить запуск logrotate чаще, чем раз в сутки. И так же туда надо будет добавить вместо daily дополнительные параметры:

size=50M
dateext
dateformat -%Y-%m-%d_%H-%s

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#webserver #php