ServerAdmin.ru – Telegram
ServerAdmin.ru
31.6K subscribers
900 photos
57 videos
24 files
3.03K links
Авторская информация о системном администрировании.

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

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

Ресурс включён в перечень Роскомнадзора
Download Telegram
Рассказываю, как выполнить важную базовую настройку, которую я обычно делаю на всех серверах. Речь пойдёт про отправку системной почты пользователя root через внешний почтовый сервер. Для этого можно использовать любой smtp клиент, например ssmtp или msmtp.

Я обычно использую в этой роли Postfix, потому что хорошо его знаю, плюс он позволяет в случае необходимости делать расширенные настройки, которые иногда нужны. Например, заменять заголовки, использовать разные сервера для отправки, блокировать отправку по разным направлениям, разрешая только одно и т.д.

Если Postfix не установлен, то надо поставить:

# apt install postfix

Сохраняем на всякий случай стандартную конфигурацию и заменяем своей:

# cp main.cf main.cf.orig

Содержимое main.cf:

relayhost = mail.zeroxzed.ru:465
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_tls_CAfile = /etc/ssl/certs/Entrust_Root_Certification_Authority.pem
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_tls_session_cache
smtp_tls_session_cache_timeout = 3600s
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_generic_maps = hash:/etc/postfix/generic

Здесь достаточно поменять адрес сервера и порт mail.zeroxzed.ru:465 на свои. Создаём файл sasl_passwd, где будут храниться данные для аутентификации. Формат такой:

mail.zeroxzed.ru servers@zeroxzed.ru:password123

◽️mail.zeroxzed.ru - имя почтового сервера, такое же как в параметре relayhost
◽️servers@zeroxzed.ru:password123 - почтовый ящик и пароль от него

Файл generic имеет следующий формат:

root servers@zeroxzed.ru

Здесь мы указываем, что в письмах отправителя root меняем на servers@zeroxzed.ru. Это нужно для того, чтобы не было проблем с доставкой. Если у вас имя сервера имеет вид srv.local, то без этой замены отправитель будет root@srv.local. С таким отправителем вашу почту большинство серверов не примут, ответив что-то в духе: "Sender address rejected: Domain not found". А почтовая служба Яндекса в обязательном порядке требует, чтобы имя пользователя для аутентификации совпадало с адресом отправителя, иначе письмо не будет отправлено.

Вы можете для каждого сервера делать отдельный почтовый ящик, либо использовать один и тот же. Я обычно использую один и тот же, чтобы не плодить лишние сущности. Но с разными ящиками более гибкие настройки могут быть. Я различаю сервера по имени сервера в теме письма, а отправитель везде один.

Формируем на основе текстовых файлов локальные базы данных, с которыми будет работать Postfix, и перезапускаем его:

# postmap /etc/postfix/generic /etc/postfix/sasl_passwd
# systemctl restart postfix

Проверяем отправку:

# echo "Test body message." | mail -s "$(hostname)" zeroxzed@gmail.com

Письмо нормально улетело в Gmail. В теме письма - имя сервера, в отправителе - root <servers@zeroxzed.ru>.

Теперь сделаем так, чтобы локальная почта, адресованная пользователю root, отправлялась куда-то на внешний ящик. Для этого добавляем в /etc/aliases:

root: root@zeroxzed.ru

И обновляем базу алиасов:

newaliases

Проверяем:

# echo "Test body message." | mail -s "$(hostname)" root

В ящик root@zeroxzed.ru должно прийти письмо от root <servers@zeroxzed.ru>.

Теперь все системные уведомления для root будут отправляться в этот ящик. Проверим на каком-нибудь задании crontab с ошибкой. Для этого создадим такое ошибочное задание на выполнение несуществующей команды:

# crontab -e

Добавляем задачу:

* * * * * /usr/bin/command-not-found

Сохраняем и ждём минуту. Получаем на почту ошибку выполнения задания cron. Тема письма будет примерно такая: "Cron <root@srv-web01> /usr/bin/command-not-found". По имени сервера srv-web01 можно сделать правило фильтрации.

С такими настройками, к примеру, кроны с rsync и ключами -v или --progress шлют вывод rsync на почту. Удобно бегло посмотреть, что там куда копируется, или увидеть ошибки, если есть.

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX

#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍153👎2
🎥 Вебинар по Linux: Docker в продакшене: сборка образов, безопасность и CI/CD
От локальных контейнеров — к стабильным, безопасным и воспроизводимым сборкам в продакшене.

На вебинаре вы узнаете:
- Как писать эффективные Dockerfile и собирать собственные образы.
- Как минимизировать размер образов и управлять слоями.
- Как работать с приватными реестрами и хранить секреты.
- Как интегрировать Docker в CI/CD и управлять версиями приложений.

В результате вебинара вы:
- Освоите сборку и оптимизацию Docker-образов.
- Сможете создавать безопасные и воспроизводимые контейнеры.
- Поймёте, как интегрировать Docker в процесс деплоя.
- Получите уверенность в работе с контейнерами в продакшене.

🎁 Все участники вебинара получат специальные условия на полное обучение курса "Administrator Linux. Professional"

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

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍7👎4
Сисадминская баллада
tbgazeta
Подписчик поделился песней про сисадмина, которую я ранее не слышал. Мне понравилась. Такая лёгкая, чиловая песенка с простеньким текстом, поэтому решил поделиться. Чижа мне напомнила.

Такие сейчас можно создавать с помощью нейросетей. Главное текст написать, а всё остальное и в разных вариациях можно оформить автоматически. Я уже слышал такие самодельные песни от знакомых. Да что там песни, сейчас уже и полноценные клипы можно снимать на свои стихи. Интересные времена нас ждут.

Для тех, кто не знает, напомню, что у меня есть отдельный канал с тематической музыкой и некоторыми шутками. Я его специально не веду, а использую просто как хранилище материала. Музыку оттуда регулярно слушаю сам. Много хороших песен, а в Telegram их удобно слушать. Достаточно просто музыку в группу отправлять, она автоматом в общий плейлист группы попадает.

https://news.1rj.ru/str/srv_admin_humor

Если знаете что-то прикольное по этой теме, поделитесь в комментариях. Пополню коллекцию. Давно уже ничего нового не добавлял, потому что и так собрал всё самое популярное.

#музыка
👍34👎8
Как обычно в выходной решил затронуть смежную тематику, которая тем не менее касается каждого из нас. Не стал ждать для этого подходящего дня, а то может стать уже неактуальным в связи со скоростью последних лет в плане принятия ограничений и запретов, решил написать сегодня. Запретов с каждым днём все больше, как и налогов, всевозможных сборов.

Россиянам запретят выходить в интернет с самостоятельно собранных компьютеров

Самостоятельно собранные компьютеры вскоре лишатся права выхода во всемирную информационно-телекоммуникационную сеть «Интернет» – соответствующее постановление готовят в Минцифры. По мнению чиновников, подобные «самодельные» ПК не имеют необходимой сертификации, а следовательно, могут быть опасными как для своих владельцев, так и для других пользователей сети.
....
«Аналогия очень простая – точно так же, как нельзя выпускать на дороги самодельные автомобили, нельзя и выпускать в интернет самодельные компьютеры. Потому что подобные системные блоки – это всегда вирусы, отсутствие контроля и прочие опасности, – поясняет источник в рабочей группе. – Любой компьютерный специалист, который хоть раз работал с такими самособранными блоками, подтвердит, что их даже открывать без респиратора нельзя, такое там внутри творится... Это вопрос общей безопасности».


Что-то упомянутые компьютерные специалисты немного оторваны от жизни. Я тоже как-то писал, что лучше готовый системник, чем самосбор, но аргументация у меня была другая. А тут наверное рекомендованные бренды подготовят и им выдадут все разрешения.

Что думаете по этому поводу? Дойдём до такой жизни?

#юмор
👍57👎31
📣 18 декабря в 11:00 МСК приглашаем на вебинар

«От ИТ до судебных процессов и работы со штрафами: как девелопер “ЦДС” выстраивает сервисы на базе ITSM 365»
На примере клиентского кейса расскажем, как создать единый контур автоматизации без многомесячных доработок и перевести сложные процессы в измеримый и предсказуемый формат.
На встрече узнаете, как:
— Быстро переехать с разрозненных инструментов в единую систему
— Настроить и вести работу с претензиями, судебными делами и исполнительными производствами, контролировать оплату штрафов ФССП и ГИБДД
— Управлять выдачей цифровых ключей безопасности с помощью конструктора бизнес-процессов
— Повышать продуктивность команд и сокращать время обработки заявок до 30%, пользуясь метриками и отчетами

Регистрируйтесь по ссылке, ждем вас! 🔗

#вебинар Реклама, ООО «Смартнат», ОГРН 1116658022425.
👎10👍7
Давно задумал переделать систему видеонаблюдения в доме. Не думал, что это будет какой-то проблемой. Сейчас есть много бесплатного софта, думал, быстро всё решу, но на деле это оказалось не так просто. Лично настроил и попробовал несколько систем, о чём сейчас и расскажу.

У меня 5 камер HiWatch: DS-I456, 2xDS-I456Z и 2xDS-I450M. Работало всё это на базе старого компа с Windows 10 и стандартного, но очень старого бесплатного софта от вендора: iVMS-4200 + Storage Server 3.2. Рассказывал об этом в отдельной заметке. Проблем всё это не доставляло, работало нормально. Идея была избавиться от системника и перенести всё в виртуалку на Proxmox, который и так постоянно работает.

Хотелось поставить что-то под Linux с доступом через браузер. Неудобно работать с камерами по RDP или в какой-то программе удалённого доступа. Интерфейс подтормаживает, когда поток с камеры попадает на экран. Лучше всего удалённый доступ работал в Parsec, но всё равно не очень комфортно.

В камерах есть свой датчик движения. В идеале хотелось бы писать в архив только поток с движением, как это реализовано в iVMS-4200, а не всё подряд. И при этом не обрабатывая потоки ресурсами компьютера. Забегая вперёд скажу, что нигде не удалось это реализовать. Вообще не понял, как настраивается эта интеграция в другом софте. В iVMS это работает из коробки, достаточно в настройках камеры указать, что запись идёт по движению.

🔹Insentry. Начал с бесплатной версии этой программы, где ограничение в 16 камер. Мне их за глаза. Устанавливается через Docker, развернул за 5 минут. Программа написана на Java, так что прожорлива. Сначала 4 ГБ памяти съела, потом и все 8. Больше добавлять не стал.

По настройке самая простая. Указал IP камер, логин, пароль. Сама нашла все потоки, начала писать, архив работает. Интерфейс приятный, удобный. Пользоваться комфортно. Но в бесплатной версии я нигде не увидел настроек записи по движению. В сравнении версий это есть, но в интерфейсе нет. Перепроверил раз 10 все настройки. Их там очень мало, так что пропустить не мог. Думаю, убрали это из бесплатной версии, а табличку забыли поправить.

Минус - надо запрашивать и регулярно продлевать бесплатную лицензию.

🔹Yucca. По настройкам очень похожа на Insentry. Тоже запускается в Docker за 5 минут. Тоже приятный, лёгкий и понятный веб интерфейс. Только вместо камеры надо добавлять ссылку на конкретный rtsp поток. Настроек в бесплатной версии минимум. Запись по движению тоже не заработала. Писала всё подряд.

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

🔹SecurOS Lite. Большие надежды возлагал на эту программу. Ранее её тестировал, писал про неё. Но сейчас сказать нечего. На сайте в разделе с этой программой висит объявление:

с 17 июня 2025 года дистрибутив SecurOS Lite временно не распространяется.


Можно поискать старые версии, но я не увидел в этом смысла.

🔹Frigate. Тоже программа под Linux и запускается в Docker. Практически полностью бесплатная. С настройкой надо попотеть. Интерфейс неинтуитивный и не очень удобный, но по функциональности из бесплатного ничего лучше нет.

Я повозился с этой программой и настроил. Запись по движению, к сожалению, работает на базе анализа потока с камеры ресурсами CPU. Как вы понимаете, это очень нагружает железо, особенно с современными камерами и их разрешениями.

У меня программа сейчас настроена, работает. Вечером сделаю про неё подробную заметку.

🔹iVMS. Взял виртуалку с Win7x32, и 3 ГБ памяти, развернул тот же стек, что и на старом компе. Всё настроил, работает отлично, ресурсы не жрёт, пишет по движению. Смотреть камеры и архив можно со своего ноута, установив на него клиента. Пока оставил параллельно с Frigate. Буду решать, что в итоге оставить на постоянку.

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX

#видеонаблюдение
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍122👎3
🫡 Хостинг, которому можно доверять

Если ищете стабильный хостинг, который не бросит в трудную минуту — обратите внимание на ИХЦ. Это проверенный провайдер, с которым спокойно: всё работает, поддержка отвечает быстро, а услуги подходят под любые задачи — от простых сайтов до сложных проектов.

У нас есть:

🟡надёжный виртуальный хостинг с установкой CMS в пару кликов;
🟡VPS в России и Европе;
🟡выделенные сервера с гибкой конфигурацией;
🟡DDoS-защита без дополнительных платежей;
🟡помощь 24/7, если что-то пошло не так.

А совсем скоро появятся и серверы с GPU — для тех, кто работает с ML, нейросетями или нуждается в высокой вычислительной мощности⚡️

👉 Посмотреть тарифы и попробовать ihc.ru 👍

Реклама, ООО «Интернет-Хостинг», ИНН 7701838266, erid: 2SDnje5qkvT
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍95👎4
Утром рассказал про системы видеонаблюдения, которые тестировал недавно у себя дома. Сейчас подробнее остановлюсь на Frigate, которую настроил и пока оставил в работе. Немного накопился опыт взаимодействия с этой системой. В целом она мне понравилась с некоторыми важными оговорками.

📌 Плюсы Frigate:

Быстрая установка в Linux с помощью Docker Compose.
Полностью бесплатный продукт. За деньги есть подключение к обученной AI модели, ориентированной на быстрое распознавание объектов.
Автоматическая нарезка событий с камеры в небольшие ролики с возможностью просмотра в отдельном разделе. Например, ваша камера над входом будет фиксировать все входы и выходы и на их основе формировать небольшие ролики. Вы можете открыть раздел и быстро посмотреть, кто в течении дня входил и выходил. Это удобнее, чем обычный просмотр архива с индикацией движения на временной шкале. Тут уже готовая нарезка.
Семантический поиск на основе текстового описания, картинки, в том числе лиц, в видеопотоках с помощью локального AI. Ресурсов надо много для этого. Я не тестировал, не на чем.
Распознавание движения. Это нормально работает на ресурсах CPU.
У себя проверял, проблем особых не увидел.
Расширенные настройки распознавания движения. Можно настраивать чувствительность, зоны контроля или наоборот исключения. Примерно как в платных продуктах.
Удобный режим отладки различных распознаваний с учётом всех настроек.
Многопользовательских режим доступа к системе.
Умеет отправлять уведомления о событиях на камерах по email или push, если установить приложение на смартфон в виде PWA.
Есть интеграция с Home Assistant.
Есть HTTP API
Экспорт метрик для мониторинга в формате Prometheus.

📌 Минусы Frigate:

Неочевидная настройка. Придётся разбираться. Например, камеры можно добавить через файл конфигурации и перезапуск сервиса. Через веб интерфейс этого сделать не получится.
Обнаружение движения работает на локальных ресурсах. Как связать систему с датчиками на камере я не нашёл ни в самой программе, ни в документации.
Веб интерфейс неинтуитивен. Например, нет такого раздела, как Просмотр архива, но есть разделы Обзор событий и Поиск событий. Постоянно путаюсь между ними. Нельзя вручную быстро выбрать разные раскладки камер. Раскладка формируется вручную растягиванием картинок с камер. Поиск по архиву тоже какой-то неудобный.
Любые распознавания очень требовательны к ресурсам. Если хотите получить навороченную систему распознавания, то готовьте современное, мощное железо.

В целом, система понравилась. Но, как я уже сказал, настраивать хлопотно. С одной камеры не пишет поток, хоть и анализирует его в режиме реального времени. А на запись ругается ошибкой Invalid data found when processing input. Пока не разобрался, в чём дело.

Запустил Frigate я через Compose. Ниже следующим сообщением прикладываю мой рабочий docker-compose.yaml и мою конфигурацию config.yml на примере 3-х камер. Пока 3 добавил для тестов, чтобы не нагружать сильно систему. Надо ещё будет потестировать с потоками и распознаванием. Особо нет времени плотно этим заниматься. Целый день потратил на установку и тестирование различных система и на настройку Frigate.

Из всех бесплатных программ, что я ранее видел на тему локального видеонаблюдения, Frigate - самая функциональная и навороченная. Если есть железо, можно всё настроить на уровне хороших коммерческих продуктов.

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX

#видеонаблюдение
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍59👎2
config.yml
2.2 KB
docker-compose.yaml и config.yml для Frigate на примере трёх камер. С каждой камеры берутся 2 потока. Первый максимального разрешения для архива, второй среднего для анализа содержимого. И отдельно указано, что для live экрана тоже брать первые потоки максимального качества. Для двух камер включена запись по движению, для третьей - писать всё, анализ активности отключён.

Два файла нельзя прикрепить к одному сообщению с текстом, поэтому compose выкладываю так:

services:
frigate:
container_name: frigate
privileged: true
restart: unless-stopped
stop_grace_period: 30s
image: ghcr.io/blakeblackshear/frigate:stable
shm_size: "512mb"
volumes:
- /etc/localtime:/etc/localtime:ro
- ./config:/config
- /mnt/video/frigate:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "8971:8971"
- "8554:8554"
- "8555:8555/tcp"
- "8555:8555/udp"
environment:
FRIGATE_RTSP_PASSWORD: "password"

/mnt/video/frigate - раздел для хранения видеоархива.

#видеонаблюдение
👍61👎1
В современных системах хранения есть проблема частичного повреждения данных при длительном хранении. Это когда на носитель записан бит 1 или 0, а со временем по разным причинам он поменял своё значение. Называют это Bit Rot или битовым гниением.

На работе я никогда не сталкивался с этим, потому что никогда не приходилось работать с данными, которые хранятся много лет и потом используются. Обычно все всё хранят на всякий случай, но потом данные 10+ лет мало кому нужны. Но даже если и нужны, то изменения нескольких бит не всегда приводят к каким-то фатальным последствиям, так что проблем можно и не заметить, кроме каких-то частных случаев с неизменяемыми архивами.

Дома замечал на очень старых фотках (15+ лет), что некоторые с искажениями или часть изображения не грузится. Не могу сказать на 100%, что это проблема с bitrot, но похоже.

Бороться с этим можно разными способами:

◽️Использование файловых систем с автоматическим контролем данных: ZFS, Btrfs, ReiserFS, Ceph. Хранилища на их основе должны быть собраны с избыточностью. То есть каждый файл должен храниться как минимум в двух или более копиях, чтобы было откуда восстанавливать повреждённый.

◽️Использование механизма Linux DM-integrity или аналогов. С его помощью можно любое блочное устройство превратить в устройство с контролем целостности. А поверх развернуть любую файловую систему. Если на устройстве с DM-integrity использовать Mdadm или LVM с избыточностью, то они тоже будут пытаться автоматически восстанавливать повреждённые файлы.

◽️Условно ручная периодическая проверка хэшей файлов с помощью тех или иных инструментов и восстановление повреждённых из других копий. Сами файлы могут храниться где угодно.

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

Для личных архивов холодных данных тоже на мой взгляд третий вариант проще и надёжнее. Даже если использовать ZFS, то должно быть несколько копий данных. А они уже сами по себе защищают вас от bitrot, главное узнать об этом вовремя. Достаточно иметь 2-3 копии в разных местах и периодически (не очень часто) проверять хэши фалов. Сделать это можно, к примеру, с помощью скрипта bitrot.

Скрипт рекурсивно сканирует директорию, из которой запущен, проверяет хэши SHA1 файлов, записывает результаты в SQLite базу, которую кладёт сюда же в директорию. Если хэш изменится, а дата изменения файла - нет, значит файл повреждён. Утилита об этом сообщит. Будет показан текущий хэш, прошлый и дата, когда он был сделан. Нужно будет повреждённый файл восстановить из бэкапа (который так же проверяется).

Покажу, как это работает. Копируем себе скрипт bitrot.py из репозитория, кладём в директорию с данными и запускаем:

# ./bitrot.py

Изменим один из файлов, сохранив его метку времени, чтобы потом восстановить:

# MTIME=$(stat -c %y file.bin)

Редактируем файл, если он текстовый, либо снимаем дамп хекс редактором и заливаем обратно. Примерно так:

# xxd file.bin > file.hex

Меняем файл file.hex текстовым редактором, заливаем обратно изменённый дамп:

# xxd -r file.hex file.bin

Восстанавливаем метку времени:

# touch -d "$MTIME" file.bin

Снова запускаем bitrot.py:

# ./bitrot.py
Checking bitrot.db integrity... ok.
error: SHA1 mismatch for ./file.bin: expected 615063b57508bf491223b5, got 95061866745edc76c75aebbe4. Last good hash checked on 2025-12-15 20:29:19+0000.

Видим расхождение в хэшах при неизменной mtime, что говорит о повреждении файла. Его надо восстановить.

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

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX

#backup
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍56👎1
Закрыли все задачи в Jira в 2025 году?
Пора получать инфраструктурные бусты от Selectel 🧑‍🎄

Selectel приготовил подарки для IT-специалистов и их проектов. C 15 по 23 декабря забирайте скидки и кешбэк до 100% на IT-инфраструктуру.

🎁 Первое окошко адвент-календаря откроется 15 декабря в 12:00 мск.
Каждая из девяти ячеек доступна ровно сутки. Имейте в виду: количество подарков ограничено, лучше не затягивать!

Разворачивайте инфраструктуру Selectel вместе с подарками в адвенте. Получите напоминание об открытии первого окошка раньше других 👉

Реклама. АО "Селектел". erid:2W5zFHR9VwN
👍4👎2