ServerAdmin.ru
28.9K subscribers
305 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Забавная история случилась с моим репозиторием для ELK Stack. Специально расположил его на VPS, арендованном в USA, чтобы было удобнее скачивать новые пакеты и обновлять репозитории. И вот на днях решил в очередной раз его обновить и очень удивился, когда не смог ничего скачать по свежим ссылкам. Получал ERROR 403: Forbidden. Проверил на другом иностранном сервере, скачал без проблем. То есть мой VPS забанили. Не понятно, в рамках чего это было сделано. Кто-то стуканул или какая-то другая причина. Обновлял я в ручном режиме и запросами не спамил. IP (188.227.57.126) по всем базам сшашный.

Пришлось через другой сервер качать и обновлять репозиторий. Теперь его можно и в Россию вернуть. Один фиг качать через прокладки придётся. Я там всю структуру переделал, добавив сразу Debian 11 и 12, чтобы удобнее было. Настроил всё с помощью aptly, так что сразу кратко все команды приведу, а то постоянно забываю и приходится каждый раз в документацию лезть, когда с ним работаешь.

Ставим:
# apt install aptly

Конфиг /etc/aptly.conf:
{
 "rootDir": "/mnt/aptly",
 "downloadConcurrency": 4,
 "downloadSpeedLimit": 0,
 "architectures": [],
 "dependencyFollowSuggests": false,
 "dependencyFollowRecommends": false,
 "dependencyFollowAllVariants": false,
 "dependencyFollowSource": false,
 "dependencyVerboseResolve": false,
 "gpgDisableSign": false,
 "gpgDisableVerify": false,
 "gpgProvider": "gpg",
 "downloadSourcePackages": false,
 "skipLegacyPool": true,
 "ppaDistributorID": "elastic",
 "ppaCodename": "",
 "FileSystemPublishEndpoints": {
 "elastic": {
  "rootDir": "/mnt/aptly",
  "linkMethod": "symlink",
  "verifyMethod": "md5"
 }
 },
 "enableMetricsEndpoint": false
}

Под репы выделил каталог /mnt/aptly. Создаём 2 репозитория:
# aptly repo create -comment="Elastic repo" -component="main" \
-distribution="bullseye" -architectures="amd64" elastic-bullseye
# aptly repo create -comment="Elastic repo" -component="main" \
-distribution="bookworm" -architectures="amd64" elastic-bookworm

Добавляем туда пакеты:
# aptly repo add elastic-bullseye elasticsearch-8.9.2-amd64.deb
.......

# aptly repo add elastic-bookworm elasticsearch-8.9.2-amd64.deb
.......

Создаю gpg ключ для репозиториев:
# gpg --default-new-key-algo rsa4096 --gen-key --keyring pubring

Публикую репозитории:
# aptly publish repo elastic-bullseye
# aptly publish repo elastic-bookworm

В директории /mnt/aptly появляются две директории: db, public. Ту, что public, надо опубликовать через web сервер. Вот мой конфиг nginx:

server {
  listen 80 default_server;
  server_name elasticrepo.serveradmin.ru;
  root /mnt/aptly/public/;
  access_log /var/log/nginx/aptly-access.log main;
  error_log /var/log/nginx/aptly-error.log;

  location / {
   autoindex on;
  }
}

Осталось положить ключ в публичную директорию:
# gpg --export --armor > /mnt/repo/public/elastic.asc

На этом всё. Запускаем веб сервер и подключаем репозитории к системам:
# echo "deb http://elasticrepo.serveradmin.ru bullseye main" \
| tee /etc/apt/sources.list.d/elasticrepo.list

# echo "deb http://elasticrepo.serveradmin.ru bookworm main" \
| tee /etc/apt/sources.list.d/elasticrepo.list

Устанавливаем ключ:
# wget -qO - http://elasticrepo.serveradmin.ru/elastic.asc | apt-key add -

На Debian 12 увидите предупреждение, что apt-key is deprecated, но это не критично. Теперь можно обновлять репозитории и устанавливать из них пакеты.

Если нужно добавить пакеты, то делаем так:
# aptly repo add elastic-bullseye elasticsearch-9.0.0-amd64.deb
# aptly publish update bullseye

Если надо удалить пакет:
# aptly repo remove elastic-bullseye elasticsearch_8.5.2_amd64
# aptly publish update bullseye

Ещё полезные команды aptly:
# aptly repo list
# aptly package search logstash
# aptly repo show -with-packages elastic-bullseye

#debian #elk #aptly
​​Если у вас есть желание максимально быстро и без лишних телодвижений проанализировать логи веб сервера, то можно воспользоваться типичной windows way программой http Logs Viewer. Скачиваете, устанавливаете, открываете в ней свой лог.

Программа платная, но базовые возможности доступны в бесплатной версии. После открытия лога она автоматом парсит значения из него в виде типовых полей: url, код ответа, IP адрес и т.д. Для IP адреса сразу же определяет страну. Можно тут же сделать сортировку по странам, кодам ответа, урлу и прочим записям в логе.

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

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

Сайт

#webserver #logs
​​Перенос VM с Hyper-V на Proxmox

На днях стояла задача перенести виртуальные машины Linux (Debian 11) с Hyper-V на KVM (Proxmox). Помучался изрядно, но в итоге всё получилось. Если VM первого поколения без EFI раздела, то проблем вообще никаких. Просто переносим диск виртуальной машины, конвертируем и подключаем к VM. Вообще ничего перенастраивать не надо, все имена дисков и сетевых адаптеров будут те же, что и на Hyper-V. А вот если машины второго поколения с загрузкой по EFI, то начинаются танцы с бубном. Причём у каждого свои, судя по информации из интернета.

Рассказываю, как в итоге сделал я, чтобы всё заработало. Перенос делал следующим образом:

1️⃣ Завершаю работу VM на Hyper-V.

2️⃣ Копирую файл диска vhdx на хост Proxmox.

3️⃣ Создаю в Proxmox новую виртуальную машину и обязательно указываю Bios: OVMF (UEFI), SCSI Controller: VirtIO SCSI. Остальное не принципиально. Диски можно никакие не добавлять. Но при этом у вас будет автоматически подключен EFI Disk, с какими-то своими параметрами, из которых я выбрал только формат - qcow2.

4️⃣ В консоли Proxmox конвертируем vhdx диск в диск виртуальной машины:
# qm importdisk 102 /mnt/500G/Debian11.vhdx local-500G
Формат команды следующий:
# qm importdisk <vmid> <source> <storage>

5️⃣ После импорта диск цепляется к VM в отключенном виде. Подключаем его как SCSI и настраиваем с него загрузку.

6️⃣ Загружаем VM с этого диска. Тут по многим руководствам из инета виртуалка уже запускается и нормально работает. Но не у меня. Я проваливался в uefi interactive shell v2.2 proxmox.

7️⃣ Заходим в bios этой виртуалки и отключаем там Secure Boot. Делается это в разделе Device Manager ⇨ Secure Boot Configuration. После этого у некоторых VM начинает загружаться, но опять не у меня.

8️⃣ Опять иду в bios, в раздел Boot Maintenance Manager ⇨ Boot Options ⇨ Add Boot Option. Выбираю импортированный диск VM. Там кроме него будет только CD-ROM, так что легко понять, что надо выбрать. Открывается обзор файловой системы EFI раздела от нашей системы. Перемещаемся там по директориям /EFI/debian, выбираем файл grubx64.efi. То есть мы создаём новый вариант загрузки системы, выбрав этот файл. Там же пишем какое-то название для этой загрузки, чтобы отличить от остальных вариантов. Далее идём в раздел Boot Maintenance Manager ⇨ Boot Options ⇨ Change Boot Order и назначаем первым номером только что созданный вариант для загрузки. Сохраняем изменения и загружаемся. Теперь всё ОК, система загрузилась.

А я сначала пробовал разные настройки VM, загружался с LiveCD и проверял разделы диска, загрузчик. Там всё ОК, данные нормально переезжают. Проблема именно в настройке загрузки через EFI раздел. Почему-то автоматом он не подхватывался. Может это была особенность Debian 11. Я переносил именно их.

❗️Сразу добавлю полезную информацию по поводу Centos 7. Может это будет актуально и для каких-то других система. Когда я переносил виртуалки с этой системой между гипервизорами, они не загружались, пока не пересоберёшь initramfs под конкретным гипервизором. Если просто перенести, то загрузка не ехала дальше из-за проблем с определением дисков на этапе загрузки. Пересборка initramfs решала эту проблему.

❗️И ещё один нюанс с переездами между гипервизорами, с которым сталкивался. Иногда система не грузится, потому что в fstab были прописаны имена дисков, которые на новом гипервизоре получили другие названия. Тогда грузимся с LiveCD и меняем диски в fstab и возможно в grub.

Тема переезда между разными типами гипервизоров непростая. Иногда проще воспользоваться какой-то системой, типа Veeam Agent For Linux или Rescuezilla. Так как я более ли менее теорию понимаю по этой теме, то переношу обычно вручную.

#linux #hyperv #виртуализация
​​Мой первый настроенный мониторинг в роли системного администратора Linux был на базе rrd графиков, которые рисовались с помощью rrdtool и скриптов, которые забирали информацию с сенсоров и записывали в rrd базу. Было это ещё на Freebsd примерно в 2007-2008 году. Потом переехал на Zabbix версии 1.6 или 1.8, не помню точно.

Сейчас rrd графики выглядят старомодно, хотя лично мне их стилистика нравится. Я к чему обо всём этом. Есть неплохой и вполне современный мониторинг LPAR2RRD, у которого все графики rrd. Это старый open source продукт, который монетизируется платной поддержкой этого и ещё одного своего продукта - STOR2RRD.

Отличает lpar2rrd простота установки и настройки. У него есть как свой агент, так и интеграция с популярными программными продуктами. Например, он умеет через API мониторить Proxmox. Просто делаете для lpar2rrd учётку с доступом на чтение к API и он автоматом забирает все необходимые метрики с определённой периодичностью. Другой пример интеграции - PostgreSQL. Тут то же самое. Делаете учётку с доступом на чтение, lpar2rrd забирает всю информацию вплоть до отдельной базы и рисует мониторинг.

Причём поддерживает lpar2rrd всех крупных современных вендоров, коммерческие и open source продукты, облачных провайдеров:
IBM Power Systems, VMware, Oracle Solaris, RHV, oVirt, XenServer, Citrix, Hyper-V
PostgreSQL, MSSQL, Oracle Database
Docker, Kubernetes, OpenShift
AWS, Google Cloud, Azure

Ну и обычные агенты под ОС Linux. Выше список не полный. Поддержка Windows тоже есть, но специфичная. Ставится агент на какую-то одну ОС, и он по WMI опрашивает все необходимые машины.

Посмотреть, как всё это выглядит, можно в публичном Demo, где очень удобно представлены все наиболее популярные системы. Можно увидеть в каком виде все метрики будут организованы в мониторинге. Если кто не знает, то временные интервалы задаются мышкой прям на самом графике. Сразу добавлю, что rrd ещё удобен тем, что из него легко картинки графиков автоматом забирать.

Мониторинг, конечно, выглядит простовато по сегодняшним меркам. Пригодится он может в основном тем, кому нужно что-то простое и обзорное, чтобы поставил и не морочился с настройкой и внедрением. И на этот вопрос он реально отвечает. Дал доступ к кластеру Proxmox и получил автоматом мониторинг вплоть до загрузки сетевого интерфейса отдельного lxc контейнера. А так как всё хранится в локальной rrd базе, ему даже полноценная СУБД не нужна.

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

Сайт / Demo / Установка

#мониторинг
Обратил внимание, что большинство прокомментировавших вчерашнюю заметку про перенос VM не уловили суть проблем, с которыми можно столкнуться при любом переносе системы на другое "железо". А смена типа гипервизора это по сути смена железа.

Причём система Windows, на удивление, гораздо лучше переживает переезд, чем Linux. Многие вещи она умеет делать автоматически при проблемах с загрузкой. Вообще не припоминаю с ней проблем, кроме установки драйверов virtio при переезде на KVM. А вот с Linux проблемы как раз бывают.

Всем спасибо за содержательные комментарии. В них упоминали несколько инструментов по конвертации дисков:
Starwind V2V
qemu-img convert
virt-p2v

Они все делают примерно одинаковые вещи - конвертируют формат дисков между форматами разных гипервизоров, либо из физической машины делают образ диска для виртуальной. Это только часть задачи по переносу VM и зачастую самая простая.

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

Приведу самый простой пример подготовки. Я в своё время переносил много систем с гипервизора Xen, и там диски имели имена /dev/vdX, а при переезде на KVM - /dev/sdX. Если просто скопировать систему, то на новом гипервизоре она не запускалась. Надо было поправить grub и fstab. Можно было это делать предварительно, перед снятием образа системы, либо потом с помощью LiveCD на перенесённой системе.

Другой пример - Initramfs. Это файловая система, содержащая файлы, необходимые для загрузки системы Linux. Она запускается перед загрузкой основной системы. С её помощью, к примеру, монтируются разделы диска с основной системой. Соответственно, если Initramfs создавалась под одно железо, а потом переехала на другое, она может не определить, к примеру, диски, и основная система не загрузится. Это наиболее частая проблема при переезде.

Есть бесплатный Veeam Agent For Linux Free. Вот он как раз не просто делает образ диска для переноса, но и готовит загрузочный диск со списком оборудования вашей системы, чтобы в процессе восстановления на основании этого списка попытаться гарантированно запустить вашу систему. И чаще всего у него это получается.

То же самое делает Rear, я о ней писал и тестировал.

Сходу не могу припомнить ещё какие-то программы такого же класса, как Veeam Agent For Linux или Rear, которые не просто переносят данные, но и подготавливают системы. Если вы такие знаете, то поделитесь информацией.

Отдельным пунктом идут проблемы, связанные с EFI. Там тоже много своих нюансов. В итоге переезд виртуальных машин может выглядеть очень непростой задачей, но всегда решаемой. По крайней мере я ни разу не сталкивался с тем, что нельзя было перенести какую-то виртуалку. Если понимаешь теорию, то починить загрузку почти всегда получается. Надо идти последовательно по пути:

EFI (в том числе настройки VM в гипервизоре) ⇨ GRUB INITRAMFSНастройки системы.

Ещё момент. Лично я до конца не понимаю, зачем виртулакам EFI. Он усложняет эксплуатацию, а какую проблему решает - не знаю, если только вы не используете для загрузки диск более 2ТБ, что для виртуалок нетипично. Если у вас повышенные требования к безопасности и используется Secure Boot, тогда понятно. Хотя опять же, при работе в виртуальной машине не факт, что эта защита эффективна. Во всех остальных случаях не вижу смысла его (EFI) использовать. Возможно, я ошибаюсь.

#виртуализация
​​Я периодически пользуюсь сайтом virustotal.com, чтобы проверить незнакомые файлы. Никогда не обращал внимания, что он умеет проверять ещё и сайты, хотя на главной есть возможность выбрать url, а не файл.

Оказывается, этот сервис не только на вирусы по базам пробивает сайт, но и выводит всю историю IP адресов сайта, плюс все засветившиеся поддомены и IP адреса к ним. Проверил свой домен. Он показывает даже краткосрочные изменения IP адреса в А записи. Летом менял на 12 часов адрес, он там тоже засветился. Не знаю, как технически отслеживают такие вещи. Кто-то эти базы ведёт?

Сделано удобно и информативно. Я знал и раньше, что подобные базы есть, но особо не пользовался. Только на поддомены проверял. Они светятся в том числе выпуском TLS сертификатов на них. А как A записи поддоменов отслеживают, хз. Они разве где-то в базе чьей-то хранятся?

❗️Проверьте свои поддомены на предмет того, не забыли ли вы что-то закрыть, что не должно быть в общем доступе.

В целом, полезная штука на базе известного сервиса. Можно пользоваться. Кстати, быстро проверять файлы можно с помощью бота. Я когда-то давно уже упоминал его, но отключил, потому что он периодически шлёт рекламу. Но если вы часто проверяете файлы, то может быть удобно: @VirusTotalAV_bot Он ещё просит подписываться на какие-то каналы. Можно этого не делать. Работает и так.

#сервис
​​Столкнулся с тем, что один IP адрес засветился в некоторых списках различных блокировок. Проверить удобно тут:

http://mail-blacklist-checker.online-domain-tools.com

Более полный список нигде не видел (советую в закладки забрать).

Суть в чём. Сам адрес неповинен. Его заблокировали кучей вместе с проштрафившейся подсеткой. Какой-то один адрес нагадил. Причём некоторые сервисы тупо просят заплатить, чтобы гарантированно не попасть в свой список на 24 месяца.

Я к чему это. Не используйте эти списки никогда в своих сервисах. Это полное днище. А говённый spamhaus до сих пор некоторые админы почтовых серверов используют. Да и не только они. Антивирусы тоже накидывают лишних баллов по этим спискам.

Как по мне, так все статические списки в наши дни должны быть ликвидированы. И тем более нельзя делать блокировки сразу подсетям.

У меня как-то раз адрес сайта залетел в один из таких списков и его некоторые антивирусы начали блокировать. Причём тоже не я был виноват, а заблокировали всю подсеть. В другой раз попал в список за то, что на сайте был выложен RDP Wrapper, который вирусом не является. Пришлось убрать. Это я уже сильно потом узнал и исправил. А до этого просто не мог понять, за что сижу в списках. Перепроверил всё по 10 раз. Ни взломов, ни спама с сайта не было.

#сервис
Я тут словил реальное удивление, разочарование и радость одновременно. Как обычно просматривал сабреддит Sysadminhumor и увидел вот эту картинку.

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

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

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

#мем
​​🎓 У компании RedHat есть большое количество бесплатного обучающего материала в том числе в виде интерактивных уроков, где они воспроизводят полностью рабочую среду разработчика или devops инженера. Живёт всё это тут:

https://developers.redhat.com/learn

Интерактивные уроки в самом низу страницы (All interactive lessons). Для прохождения достаточно обычной учётной записи. Я, вроде бы, как developer зарегистрирован. Уже не помню точно, давно дело было. Никаких санкций и ограничений RedHat не вводил. У меня и учётка жива, хотя там указано, что я живу в Москве, и все бесплатные лицензии, что они дают, активны.

Напомню, что они всем выдают 16 лицензий на RHEL. Я одну систему погонял на тесте и удалил за ненадобностью. Очевидно, что пользоваться сейчас этой лицензией плохая идея. Но если вам хочется посмотреть, что это за система, у которой столько форков, то никаких проблем. Регистрируйтесь, получайте лицензии, устанавливайте и смотрите. Единственное, что особенно понравилось - там красивое брендирование оболочки, если будете её ставить. Стильно выглядит окружение.

Я прошёл один из уроков под названием DevOps and CI/CD with automation controller. Сделано прикольно. Для вас готовят отдельный стенд в браузере, где в виде отдельных вкладок реализован интерфейс VSCode, Jenkins, Gitea, Ansible Automation controller. И вам по шагам предлагают выполнить деплой условного приложения, работая в этих системах.

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

Уроков там много, разбиты на категории (Devops, Linux, GitOps и т.д.) Вот пример некоторых уроков по Devops:
DevOps and CI/CD with automation controller
Build applications into container images
Installing Software using Package Managers
Linux commands for beginners
Run your first Ansible Playbook
Deploy containers with Podman
и т.д.

#обучение #бесплатно
Хочу ещё раз вернуться к теме здоровья и удобного рабочего места. Наткнулся на очень интересный и качественный канал одного разработчика. Обратил внимание, что давно не было свежих выпусков. Потом понял причину, когда посмотрел один из последних его роликов:

Чего не стоит делать ПРОГРАММИСТУ?! Как надо ПРАВИЛЬНО!

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

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

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

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

Единственное, на что особенно обращу внимание. Не слушайте ни чьих конкретных советов и рекомендаций по поводу решения своих проблем, если они уже есть. Типа идти в качалку или на плавание. Кому-то это пойдёт на пользу, а кому-то нет. Это всё очень индивидуально. Если где-то в спине заболело, то нельзя начинать хаотично что-то пробовать. Делаем сразу МРТ всего позвоночника. Ищем специалиста и идём к нему на приём. Если специалист смотрит только описание снимков и что-то рекомендует, то уходим от него и ищем следующего. Адекватное лечение сможет назначить только тот, кто лично посмотрит ваши снимки и оценит ваше состояние. По описанию это делать нельзя, так как там могут быть ошибки, неточности и т.д. Хороший специалист всегда сам посмотрит ваши снимки.

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

Сейчас в целом в стабильном состоянии, потому что знаю, что надо делать, чтобы было всё ОК. Мне необходимо 2-3 раза в неделю заниматься специально подобранным комплексом упражнений. Если не ленишься, то в целом нормально живёшь и не особо обращаешь внимание на проблемы.

В конце автор даёт хороший посыл, обращая внимание на то, что человек чувствует себя счастливым, когда у него всё хорошо в трёх сферах жизни: здоровье, семья, деньги. Если где-то просадка, то качество жизни падает. Я согласен с ним на 100%. Причём здоровье на первом месте, а деньги на последнем.

#разное #здоровье
​​Я много раз видел упоминание сервиса Netmaker, который служит для организации overlay сетей с помощью Wireguard. Это open source продукт, который можно развернуть у себя, либо воспользоваться облачным сервисом по подписке. Сразу скажу на кого он похож, чтобы было понятно о чём пойдёт речь: Nebula, Tailscale, ZeroTier.

Netmaker среди этих продуктов едва ли не самый популярный. Я последнее время много о нём слышал упоминаний. Его можно использовать и как для построения Site-to-Site соединений, так и для Mesh сетей.

Попробовать его можно в рамках бесплатного тарифного плана в SaaS сервисе. Там дают возможность добавить одну сеть и соединить с её помощью до 30-ти устройств. А если понравится, можно и у себя развернуть. Ставится автоматически с помощью готового bash скрипта.

Netmaker представляет из себя веб интерфейс, где вы добавляете хосты, формируете для них ключи, с помощью которых они объединяются в VPN сети. Настройками хостов и сетями управляете там же, в веб интерфейсе. Сервис полностью управляется через него. В консоль нужно будет лазить только на хостах, когда их будете подключать.

Перечислю несколько задач, которые можно будет решить с помощью Netmaker:

🔹У вас есть закрытая сеть с ограниченным доступом из интернета. На один из хостов ставится клиент Netmaker. С помощью настроек вы открываете доступ к закрытой сети через этот хост для какого-то набора остальных клиентов.

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

🔹С помощью Netmaker организуется Mesh VPN, где клиенты взаимодействуют друг с другом напрямую, а не через управляющий сервер, как, к примеру, в классическом openvpn.

🔹Если два хоста по какой-то причине не могут напрямую взаимодействовать друг с другом, можно назначить третий, через который будет осуществляться связь.

Помимо этих примеров, в Netmaker есть следующая функциональность:
Мониторинг состояния сетей и хостов
Списки доступа к хостам и сетям
Управление пользователями и их правами на основе модели RBAC

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

Сайт / Исходники

#vpn
​​У меня давно в рекомендациях записан сервис для заметок yonote.ru. Я откладывал знакомство с ним, как и с другими подобными сервисами, потому что надоело пытаться найти что-то новое. Это занимает много времени, а когда для тебя это инструмент не так уж критичен, тратить это время не хочется.

На текущий момент я для заметок использую локальный Joplin, для календаря связку Trello+Planyway, для дел сервис Todoist. Мне не нравится, что во-первых, всё это разные инструменты, во-вторых, последние два могут заблокировать. В идеале, хотелось бы получить одну программу, где всё это будет в одном месте. Но пока такую не нашёл.

В этом плане Yonote мне понравился. Это российский сервис. Разработчики прямо заявляют, что позиционируют свой продукт как замену Notion. Собственно, он на него сильно похож. Есть бесплатный тарифный план, которого для одиночного использования будет достаточно, если не хранить медиафайлы в сервисе.

Я вчера потратил вечер, чтобы попробовать его. Внешне вопросов никаких нет. Выглядит всё аккуратно, плюс-минус, как у всех подобных сервисов. Мне понравилось, как в Yonote можно организовать информацию с помощью таблиц и календарей. Думаю, что календарь Planyway смогу им заменить. К тому же Trello давно обещает заблокировать пользователей из РФ. Так что лучше до блокировки подобрать какую-то замену.

А в Yonote календарь неплохо реализован: есть разноцветные метки, чекбоксы, общий вид сразу на месяц, настраиваемые статусы для событий. Удобные и наглядные календари мало где есть. Я пробовал сервис календарей от Яндекса и очень сильно пытался переехать на локальный календарь Thunderbird. В итоге не понравилось ни то, ни другое.

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

В целом от Yonote у меня хорошие впечатления. Вполне состоявшийся и зрелый продукт. Есть API, импорт данных, интеграция с кучей сервисов (в том числе telegram и вебхуки), хорошая функциональность, командная работа. Если подбираете себе с нуля что-то или планируете переезд с иностранных сервисов, то посмотрите. В базовых возможностях ничем не хуже остальных, а более продвинутые я не проверял.

#заметки #отечественное
​​Предлагаю вашему вниманию любопытную утилиту, которую мне давно посоветовали посмотреть в контексте обсуждения темы Port knocking. На практике она может пригодиться в очень широком диапазоне костылей.

Речь пойдёт про программу updater. Она слушает запросы на специальный url и выполняет заданные действия, если запрос легитимный. То есть курлом можно дёрнуть какой-то урл и на сервере выполнится определённое действие. Например, iptables создаст разрешающее правила для подключения по ssh. Урлы можно выбирать любые, в том числе те, что не поддаются подбору. А также наличие аутентификации через токен, делают этот инструмент замаскированным и относительно безопасным. Можно посадить его за прокси, чтобы совсем спрятать.

У автора в репозитории примеры сразу в составе с docker-compose с использованием reproxy в качестве reversed proxy. Если хотите просто погонять утилиту и посмотреть, как работает, может приспособить для своих простых задач, то можете просто запустить в одиночном контейнере:

# docker run -p 8080:8080 -e LISTEN=0.0.0.0:8080 \
-e KEY=super-secret-password \
-e CONF=/srv/etc/updater.yml \
--name=updater -v ./etc:/srv/etc \
ghcr.io/umputun/updater:master

Создаёте директорию etc там, откуда будете запускать команду. В неё положите конфиг updater.yml для простейшего задания с echo:

tasks:

 - name: echo-test
  command: |
   echo "Test updater work"

Формат yaml, так что будьте аккуратны с пробелами. Теперь проверяем, как работает:

# curl 172.17.196.25:8080/update/echo-test/super-secret-password
{"task":"echo-test","updated":"ok"}

Думаю, принцип понятен. Автор пишет, что написал этот софт для использования в CI/CD без необходимости работы по SSH, а следовательно передачи паролей или ключей. По его задумке с помощью updater можно выполнять обновление и перезапуск docker контейнеров. Для этого в составе его контейнера есть docker client и туда пробрасывается docker.sock.

Кстати, его идею я сразу понял, так как в простых случаях я именно так и костылил в Teamcity. Заходил по SSH, обновлял и перезапускал контейнер консольными командами. В целом, это не очень хорошая практика, но задачу решает быстро и в лоб. Для небольших проектов нормальная тема. До этого разработчики руками это делали. Потом попросили настроить что-нибудь для автоматизации. Я воткнул бесплатный Teamcity и автоматизировал в лоб все их действия. Они были довольны.

Для работы на хосте updater нужно вытащить из контейнера и запустить напрямую. Это не трудно сделать, так как updater обычное приложение на GO, состоящее из одного бинарника. Ключи описаны автором в репозитории.

# docker cp f41a990d84c0:/srv/updater updater

Теперь можно запускать локально. Полезная небольшая утилита. Рекомендую запомнить её. Напомню, что есть похожая программа, про которую я пару раз писал и использую сам - labean.

Исходники

#security #cicd #devops
​​Сегодня вышло крупное обновление веб сервера Angie 1.3.0. Кто не читал, посмотрите две мои предыдущие заметки про него (1, 2). Изменения затронули open source версию, так что попробовать и оценить их сможет каждый.

Перечислю наиболее заметные нововведения.

1️⃣ В конфигурации location теперь можно использовать одновременно несколько шаблонов uri. Это упрощает конфигурацию location с одинаковыми настройками. То есть можно сделать примерно вот так:

location =~/.git
~*^/(\.ht|xmlrpc\.php)$
{
return 404;
}

Сейчас у меня то же самое записано вот так:

location ~ /.git {
return 404;
}

location ~* ^/(\.ht|xmlrpc\.php)$ {
return 404;
}

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

2️⃣ Angie научился самостоятельно экспортировать свою статистику в формате Prometheus, что явно упростит настройку мониторинга. Не нужен отдельный exporter для этих целей. Было бы неплохо сразу и шаблон для Zabbix сделать, не дожидаясь, пока кто-то из энтузиастов это реализует. Достаточно распарсить вывод для Prometheus.

3️⃣ Отдельной настройкой можно включить возможность экспорта содержимого конфигурационных файлов запущенной версии веб сервера через API.

Остальные изменения:
детальная информация и метрики по группам проксируемых stream-серверов в интерфейсе статистики, предоставляемом директивой "api"
опция "resolve" директивы "server" в блоке "upstream" модуля "stream", позволяющая отслеживать изменения списка IP-адресов, соответствующего доменному имени, и автоматически обновлять его без перезагрузки конфигурации
опция "service" директивы "server" в блоке "upstream" модуля "stream", позволяющая получать списки адресов из DNS-записей SRV, с базовой поддержкой приоритета
отображение номера поколения конфигурации в именах процессов, что позволяет с помощью утилиты "ps" отслеживать успех перезагрузок конфигурации и количество поколений рабочих процессов с предыдущими версиями конфигурации.

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

#webserver #angie
В Telegram огромное количество всевозможных ботов в том числе IT тематики. Я мало их знаю и использую, но кое-что есть. Поделюсь с вами тем, что использую сам, а также очень рассчитываю на то, что кто-то поделится чем-то полезным, что использует он. Тогда можно будет составить более полный список.

📌 Два качественных бота от @kiriharu:
@unicheckbot - пинговалка ip адресов, сайтов, whois, а также проверялка TCP портов.
@boxtoolbot - полный набор всевозможных проверок: информация об IP адресе, информация о технологиях, используемых на сайте, информация по MAC адресу и многое другое, в том числе не относящееся к IT.

📌 @SiteKnockerBot - мониторинг доступности сайтов. Долго им пользовался как одним из резервных мониторингов, но в какой-то момент было много ложных срабатываний, отключил.

📌 @VirusTotalAV_bot - проверяет файлы на вирусы через virustotal. Надоедает рекламой, поэтому постоянно пользоваться на основном аккаунте невозможно, но лучше вариант не нашёл.

📌 @DrWebBot - проверка на вирусы от DrWeb. Тут никакой рекламы и спама.

📌 @SaveYoutubeBot - этот бот качает видео с ютуба. Привык им пользоваться вместо vanced, который умер. С аналогами не захотелось связываться. С ботом в целом удобно скачать и слушать в фоне. Бот показывает много рекламы, так что на основном акке пользоваться не получится, задолбает.

📌 @creationdatebot - бот показывает дату создания аккакунта в Telegram. Иногда бывает полезно посмотреть, с кем общаешься.

📌 @GmailBot - очень давно пользуюсь для второстепенных ящиков. Это самый простой способ получить уведомления от мониторинга в Telegram. Настраиваем его на почтовый ящик и подключаем бота.

Это то, что я знаю сам и хоть немного использовал. Пользовался одно время удобным ботом для временной почты, но он помер. Замена не попадалась на глаза, специально не искал.

Кстати, написание бота — отличный способ начать изучение Python. Я одно время занимался этим, даже бота в итоге написал, который работал. Но всё забросил, потому что нет времени осваивать ещё одно направление. Для изучения программирования нужно прилично погружаться в тематику. Но в целом, там ничего сложно. С помощью небольшого бесплатного курса я оказался в состоянии сам программировать простейшие вещи. А дальше уже дело техники, главное начать и увлечься. У Python порог входа очень низкий.

#подборка #tg_bots
▶️ Посмотрел на днях видео, которое меня привлекло в первую очередь своим названием:

Голосовое управление оборудованием Mikrotik: от фантазий к реальности

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

А подвинулись они до такой степени, что сейчас практически любой, кто умеет работать с Linux, может настроить распознавание голосовых команд и выполнять какие-то действия. Это в случае использования чьих-то наработок. Если строить свою логику, то придётся немного программировать на одном из популярных языков программирования. Bash тоже сойдёт, если что.

В выступлении автор рассказывает, как он с помощью колонки Алиса, сервиса Яндекса (если я правильно понял, то он бесплатен, если у тебя колонка) настроил выполнение некоторых команд на домашнем Mikrotik: включение гостевой wifi сети, отключение интернета детям и другие штуки.

В данном случае Микротик здесь постольку-поскольку, потому что реально выполняется подключение по SSH и выполняется заскриптованная команда. То есть это универсальный вариант запуска любых команд по SSH.

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

С использованием описанной технологии Яндекса вы умный дом можете себе настроить самостоятельно. Причём довольно просто. Берём колонку, некий контроллер, который можно дёргать удалёнными командами и реализуем свои фантазии. Главное, не забыть продублировать всё физически, чтобы при отсутствии интернета дом не превратился в тыкву.

#видео #mikrotik
​​На одном из почтовых серверов попросили увеличить лимит на размер вложений. Сказали, что 10 Мб им не хватает. Немного удивился, потому что по умолчанию ставлю лимит на размер письма 20 Мб. Считаю это универсальным размером. Разрешение пересылки больших файлов без квот на почтовые ящики очень быстро приводит к разрастанию почтовой базы. Особенно, когда кто-то начинает макеты, презентации и прочие большие файлы по почте ежедневно гонять.

Сходил, проверил. Ограничение действительно стояло 20 Мб. Смысл тут в том, что итоговый размер письма может быть существенно больше, чем объём вложения. Всё дело в кодировании вложений для пересылки в письме. Они передаются как часть письма в виде печатных символов стандартной кодовой таблицы ASCII.

Для кодирования вложений в электронной почте обычно используют методы base64 и quoted-printable, описанные в стандарте MIME. Их там больше представлено, но насколько я знаю, в современной почте используют именно эти два. При кодировании по методу base64, а чаще всего используется именно он, получается в среднем увеличение размера вложения в 1,3 раза. Но бывает и значительно больше. Это зависит от особенностей исходного файла и метода кодирования. При использовании quoted-printable увеличение размера может доходить до 3-х раз.

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

Mime-Version: 1.0
Content-Type: application/pdf; name="file_credit50198.pdf"
Content-Transfer-Encoding: Base64
Content-Disposition: attachment; filename="file_credit50198.pdf"

Это кодированный pdf файл, который в исходном тексте письма представлен в виде ASCII символов.

Так что когда ставите ограничение на размер письма, имейте ввиду, что этот размер может существенно отличаться от итогового размера вложения, которое сможет пролезть в этот лимит.

#mailserver
​​Один подписчик поделился полезным сервисом, про который я ранее не слышал:

https://cmdgenerator.phphe.com.

С его помощью можно подготовить итоговую команду для популярных утилит командной строки Linux с набором параметров. Сделано добротно и удобно. Это такая продвинутая замена man, которая позволяет быстрее сформировать нужные параметры. Единственное, заметил, что некоторые ключи не совпадают с ключами этой утилиты в том же Debian. Не понятно, для какой версии они актуальны. Стоило бы указать.

Что-то похожее я как будто уже видел, но сходу не могу вспомнить. На ум приходит другой сервис, который действует наоборот. Длинную консольную команду разбирает на отдельные части и поясняет, что каждая из них делает:

https://explainshell.com

Похожие на первый сервисы есть для отдельных утилит. Например, я знаю для find удобную штуку:

find-command-generator

Он тоже неплохо сделан и может существенно помочь. У find куча параметров, которые невозможно запомнить. Надо либо готовые команды записывать, либо открывать man и искать нужное. Этот помощник может сэкономить время. Для cron ещё полно похожих сервисов.

#bash #terminal
​​Для бэкапа баз PostgreSQL существует много различных подходов и решений. Я вам хочу предложить ещё одно, отметив его особенности и преимущества. Да и в целом это одна из самых известных программ для этих целей. А в конце приведу список того, чем ещё можно бэкапить PostgreSQL.

Сейчас речь пойдёт об open source продукте pgBackRest. Сразу перечислю основные возможности:
умеет бэкапить как локально, так и удалённо, подключаясь по SSH
умеет параллелить свою работу и сжимать на ходу с помощью lz4 и zstd, что обеспечивает максимальное быстродействие
умеет полные, инкрементные, разностные бэкапы
поддерживает локальное и удалённое (в том числе S3) размещение архивов с разными политиками хранения
умеет проверять консистентность данных
может докачивать бэкапы на том месте, где остановился, а не начинать заново при разрывах связи

Несмотря на то, что продукт довольно старый (написан на C и Perl), он активно поддерживается и обновляется. Плохо только то, что в репозитории нет ни бинарников, ни пакетов. Только исходники, которые предлагается собрать самостоятельно. В целом, это не проблема, так как в Debian и Ubuntu есть уже собранные пакеты в репозиториях, но не самых свежих версий. Свежие придётся самим собирать.

# apt install pgbackrest

Дальше настройка стандартная для подобных приложений. Рисуете конфиг, где описываете хранилища, указываете объекты для бэкапа, параметры бэкапа и куда складывать логи. Они информативные, можно анализировать при желании.

Подробное описание работы pgBackRest, а так же подходы к созданию резервных копий PostgreSQL и их проверке подробно описаны в ▶️ выступлении Дэвид Стили на PGConf.Online.

Чем ещё можно бэкапить PostgreSQL?

🔹pg_dump - встроенная утилита для создания логической копии базы. Подходит только для небольших малонагруженных баз

🔹pg_basebackup - встроенная утилита для создания бинарных бэкапов на уровне файлов всего сервера или кластера. Нельзя делать выборочный бэкап отдельных баз или таблиц.

🔹Barman - наиболее известный продукт для бэкапа PostgreSQL. Тут я могу ошибаться, но по моим представлениям это большой продукт для крупных компаний и нагруженных серверов. Barman размещают на отдельное железо и бэкапаят весь парк своих кластеров. Его часто сравнивают с pgBackrest и выбирают, что лучше.

🔹WAL-G - более молодой продукт по сравнению с Barman и pgBackrest. Написан на GO и поддерживает в том числе MySQL/MariaDB и MS SQL Server. Возможности сопоставимы с первыми двумя, но есть и свои особенности.

Если перед вами стоит задача по бэкапу PostgreSQL, а вы не знаете с чего начать, так как для вас это новая тема, посмотрите выступление с HighLoad++:
▶️ Инструменты создания бэкапов PostgreSQL / Андрей Сальников (Data Egret)

#backup #postgresql
Вспомнился старый мем с колонками. Дело в том, что у меня примерно такие же работают до сих пор. Даже не знаю, сколько им лет. 20 примерно, работают исправно.

И вот в какой-то момент они начали трещать. У меня прям флешбэки из прошлого пошли. Не хватало только треска модема. Долго не мог понять, почему колонки снова стали трещать. А потом нашёл объяснение.

Сыну купил часы-браслет с возможностью звонить через них, чтобы он в школе был на связи без смартфона. А браслет этот работает только через 2G. Пришлось купить симку не Tele2, которым вся семья пользуется, так как он в Москве не поддерживает 2G.

Если положить этот браслет рядом, начинают трещать колонки в момент обмена информацией с базовыми станциями. Современные сотовые телефоны на 4G такого эффекта не дают.

Кстати, браслет - удобная шутка. Хороший вариант для младшеклассников оставаться на связи без смартфона, который им в школе не нужен.

#мем
​​Давно не затрагивал игровые или детские темы. Решил немного посмотреть, не появилось ли чего-то нового. А оно появилось. Я уже рассказывал про компанию Luden.io, у которой очень классные игры для детей на русском языке с уклоном в обучение программированию. Да и не только для детей. Игры реально классные, красочные, увлекательные. Прочитайте мою заметку, там много информации.

У них появилась новая игра Craftomation 101. Она ещё не полностью доделана, но вполне играбельна. Можно бесплатно скачать и поиграть. По ссылке в конце дистрибутив под Windows, Linux, Mac. На винду установка не требуется. Просто скачиваете и играете. Можно выбрать русский язык в настройках. Перевод качественный, так как создатели русскоязычные.

Я немного поиграл, примерно час. Дошёл до появления роботов и их программирования. Запрограммировал их на выполнения некоторых действий. Игра реально красивая и увлекательная. Интересно и самому поиграть. Показал сыну (9 лет), сразу заинтересовался. Поиграл немного, научился роботов программировать. Сразу всех задействовал, автоматизировал рутину. В общем, ничего так игра, рекомендую.

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

#игра #обучение #дети