Как быстро и малыми усилиями попытаться выяснить, почему что-то тормозит в php коде сайта? Расскажу, с чего уместнее всего начать расследование, если вы используете php-fpm. Если нет каких-то особых требований, то лично я всегда исользую именно его.
У него есть две простые настройки, которые можно применить в нужном пуле, когда проводите расследование:
Таймаут выставляете под свои требования. Если сайт в целом тормозной (bitrix, админка wordpress), то 1 секунда слишком малый интервал, но в идеале хочется, чтобы весь код выполнялся быстрее этого времени.
Далее необходимо перезаустить php-fpm и идти смотреть лог:
В логе запросов будет не только информация о скрипте, который долго выполняется, но и его трассировака. Она будет включать в себя все инклюды и функции. То, что было вызвано сначала, будет внизу трейса, последняя функция - в самом верху. Причём верхней функцией будет та, что выполнялась в момент наступления времени, указанного в request_slowlog_timeout. Часто именно она и причина тормозов.
Разобраться во всём этом не такая простая задача, но в целом выполнимая даже админом. Самое главное, что иногда можно сразу получить подсказку, которая ответит на ворос о том, что именно томозит. Бывает не понятно, какой именно запрос приводит к выполнению того или иного скрипта. Нужно сопоставить по времени запрос в access.log веб сервера и slowlog php-fpm.
Очень часто тормозят какие-то заросы к внешним сервисам. Они могут делаться, к примеру, через curl_exec. И вы это сразу увидите в slowlog в самом верху трейса. Нужно будет только пройтись по функуциям и зависимостям, и найти то место, откуда функция с curl вызывается. Также часто в самом верху трейса можно увидеть функцию mysqli_query или что-то в этом роде. Тогда понятно, что тормозят запросы к базе.
По факту это самый простой инструмент, который имеет смысл использовать в самом начале разборов. Зачастую с его помощью можно сразу найти проблему. Ну а если нет, то можно подключать strace и смотреть более детально, что там внутри происходит. Но это уже сложнее, хотя какие-то простые вещи тоже можно сразу отловить. Тот же внешний тормозящий запрос тоже будет виден сразу.
#php #webserver #perfomance
У него есть две простые настройки, которые можно применить в нужном пуле, когда проводите расследование:
slowlog = /var/log/php-fpm/site01.ru.slow.log
request_slowlog_timeout = 1s
Таймаут выставляете под свои требования. Если сайт в целом тормозной (bitrix, админка wordpress), то 1 секунда слишком малый интервал, но в идеале хочется, чтобы весь код выполнялся быстрее этого времени.
Далее необходимо перезаустить php-fpm и идти смотреть лог:
# systemctl restart php8.0-fpm
В логе запросов будет не только информация о скрипте, который долго выполняется, но и его трассировака. Она будет включать в себя все инклюды и функции. То, что было вызвано сначала, будет внизу трейса, последняя функция - в самом верху. Причём верхней функцией будет та, что выполнялась в момент наступления времени, указанного в request_slowlog_timeout. Часто именно она и причина тормозов.
Разобраться во всём этом не такая простая задача, но в целом выполнимая даже админом. Самое главное, что иногда можно сразу получить подсказку, которая ответит на ворос о том, что именно томозит. Бывает не понятно, какой именно запрос приводит к выполнению того или иного скрипта. Нужно сопоставить по времени запрос в access.log веб сервера и slowlog php-fpm.
Очень часто тормозят какие-то заросы к внешним сервисам. Они могут делаться, к примеру, через curl_exec. И вы это сразу увидите в slowlog в самом верху трейса. Нужно будет только пройтись по функуциям и зависимостям, и найти то место, откуда функция с curl вызывается. Также часто в самом верху трейса можно увидеть функцию mysqli_query или что-то в этом роде. Тогда понятно, что тормозят запросы к базе.
По факту это самый простой инструмент, который имеет смысл использовать в самом начале разборов. Зачастую с его помощью можно сразу найти проблему. Ну а если нет, то можно подключать strace и смотреть более детально, что там внутри происходит. Но это уже сложнее, хотя какие-то простые вещи тоже можно сразу отловить. Тот же внешний тормозящий запрос тоже будет виден сразу.
#php #webserver #perfomance
Услышал неожиданную и новую для себя информацию. Нельзя последовательно соединить две и более rj45 розетки для того, чтобы пользоваться только одной из них одновременно. Работать будет только последняя розетка. Спорить не стал, но слегка удивился, так как для меня это неочевидная информация. К тому же я сам у себя в доме электрические розетки собирал и некоторые из них соединялись последовательно. То же самое для температурных датчиков делал, которые соединял последовательно на шине от контроллера. То есть для меня такая схема подключения выглядит вполне привычной. Я бы даже не подумал, что тут есть какой-то нюанс.
Полез в интернет за подробностями и действительно нашёл подтверждение этому. Последовательно соединять ethernet розетки нельзя, даже если будет использоваться только одна. Если подключиться к розетке посередине, то тот конец, что идёт до дальней розетки, будет отражать сигнал. Это будет приводить к помехам в сети, соединение будет либо постоянно обрываться, либо вообще не установится.
Надо либо отдельный кабель кидать к каждой розетке, либо ставить какое-то устройство, которое будет физически отсекать конец кабеля до других розеток, чтобы подключенная была последней в цепи.
❗️Век живи, век учись. Знали об этом? Либо может быть сталкивались с таким соединением?
#железо #network
Полез в интернет за подробностями и действительно нашёл подтверждение этому. Последовательно соединять ethernet розетки нельзя, даже если будет использоваться только одна. Если подключиться к розетке посередине, то тот конец, что идёт до дальней розетки, будет отражать сигнал. Это будет приводить к помехам в сети, соединение будет либо постоянно обрываться, либо вообще не установится.
Надо либо отдельный кабель кидать к каждой розетке, либо ставить какое-то устройство, которое будет физически отсекать конец кабеля до других розеток, чтобы подключенная была последней в цепи.
❗️Век живи, век учись. Знали об этом? Либо может быть сталкивались с таким соединением?
#железо #network
На канале накопилось много полезных материалов по MySQL, которые я использую сам, особенно во время настройки нового сервера. Чтобы упростить себе и вам задачу, решил объединить всё наиболее полезное в одну публикацию для удобной навигации.
📌 Настройка:
▪️ Базовые настройки сервера, которые нужно проконтроллировать при установке
▪️ MySQLTuner - помощник по подбору оптимальных параметров под железо и профиль нагрузки
▪️ Скрипт mysql-stat для упрощения выбора параметров в зависимости от доступной оперативы на сервере
▪️ Рекомендации по безопасности от CIS
▪️ Разбор параметра innodb_temp_data_file_path
▪️ Настройка Audit Plugin для отслеживания действий на сервере
▪️ Настройка репликации
📌 Бэкап:
▪️ Полный и инкрементный backup Mysql с помощью Percona XtraBackup
▪️ Mydumper - многопоточное создание дампов
▪️ SQLBackupAndFTP - приложение под Windows для бэкапа
▪️ Скрипт AutoMySQLBackup для автоматического бэкапа баз
▪️ Восстановление отдельной таблицы из дампа всей базы
📌 Мониторинг:
▪️ Мониторинг MySQL с помощью Zabbix
▪️ Консольный Mytop для мониторинга в режиме реального времени
▪️ Проверка успешности создания дампа
▪️ Мониторинг с помощью Percona Monitoring and Management
📌 Эксплуатация:
▪️ Пошаговый план оптимизации запросов MySQL сервера
▪️ Полезные консольные команды mysql клиента
▪️ Подборка MySQL клиентов для работы с СУБД
▪️ Удаление всех таблиц в базе без удаления самой базы
▪️ ProxySQL для проксирования и кэша SQL запросов
▪️ Краткая информация о том, что такое индексы в MySQL
#mysql #подборка
📌 Настройка:
▪️ Базовые настройки сервера, которые нужно проконтроллировать при установке
▪️ MySQLTuner - помощник по подбору оптимальных параметров под железо и профиль нагрузки
▪️ Скрипт mysql-stat для упрощения выбора параметров в зависимости от доступной оперативы на сервере
▪️ Рекомендации по безопасности от CIS
▪️ Разбор параметра innodb_temp_data_file_path
▪️ Настройка Audit Plugin для отслеживания действий на сервере
▪️ Настройка репликации
📌 Бэкап:
▪️ Полный и инкрементный backup Mysql с помощью Percona XtraBackup
▪️ Mydumper - многопоточное создание дампов
▪️ SQLBackupAndFTP - приложение под Windows для бэкапа
▪️ Скрипт AutoMySQLBackup для автоматического бэкапа баз
▪️ Восстановление отдельной таблицы из дампа всей базы
📌 Мониторинг:
▪️ Мониторинг MySQL с помощью Zabbix
▪️ Консольный Mytop для мониторинга в режиме реального времени
▪️ Проверка успешности создания дампа
▪️ Мониторинг с помощью Percona Monitoring and Management
📌 Эксплуатация:
▪️ Пошаговый план оптимизации запросов MySQL сервера
▪️ Полезные консольные команды mysql клиента
▪️ Подборка MySQL клиентов для работы с СУБД
▪️ Удаление всех таблиц в базе без удаления самой базы
▪️ ProxySQL для проксирования и кэша SQL запросов
▪️ Краткая информация о том, что такое индексы в MySQL
#mysql #подборка
▶️ Очередная подборка авторских IT роликов, которые я лично посмотрел и посчитал интересными/полезными. Как обычно к выходным.
⇨ Best Free Hypervisors in 2024
Обзор существующих бесплатных гипервизоров. Автор рассмотрел Nutanix CE, Proxmox VE, XCP-ng, KubeVirt, Vanilla KVM. Nutanix Community Edition лично я вообще никогда не использовал и не видел в работе.
⇨ Анализатор сети Wireshark
Урок из обновлённого курса по сетям от Созыкина Андрея. Если не знакомы с Wireshark, то этот урок для вас.
⇨ It’s time for a new HomeLab Dashboard // Homepage
Удобная и функциональная штуковина для организации дашборда с различными виджетами. Эти виджеты интегрируются с существующими сервисами и отображают различные метрики и состояния на дашборде. Например, можно настроить интергацию с uptime kuma, portainer, prometheus, proxmox и т.д.
⇨ RetroPie - игровая ретро консоль на Raspberry Pi. Установка и настройка
Превращение Raspberry Pi в игровую консоль со старыми играми и джойстиками. Настраивается всё очень быстро и просто. Получается дешевле и функциональнее отдельных игровых консолей. Тут они все в одной куче поддерживаются: Super nintendo, Sega, Sony Play Station и другие.
⇨ Apache Guacamole доступ к SSH RDP и VNC из веб-клиента с помощью Docker
Краткая настройка Apache Guacamole, установленного в Docker. Дополнительно используется двухфакторная аутентификация с помощью auth-totp. Текстовая версия настройки.
⇨ Complete Ansible Semaphore Tutorial: From Installation to Automation
Установка и настройка веб интерфейса для управления Ansible, Terraform, Bash. Я когда-то давно смотрел эту панель и писал о ней. Кстати, интересная штука. Набрала попуялрность и появилась платная версия. Но open source тоже осталась.
⇨ Расследую инцидент взлома MEERKAT.HTB
Очередной классный разбор задания с HackTheBox от уже известного автора. Тут надо будет не взламывать, а расследовать инцидент. Как обычно, хорошо снято и тема интересная. Рекомендую видео этого автора. Они интересные все.
⇨ Fastest Way To Install Kubernetes Cluster Using Portainer
Разворачивание учебного кластера Kubernetes на базе MikroK8s через Portainer.
#видео
⇨ Best Free Hypervisors in 2024
Обзор существующих бесплатных гипервизоров. Автор рассмотрел Nutanix CE, Proxmox VE, XCP-ng, KubeVirt, Vanilla KVM. Nutanix Community Edition лично я вообще никогда не использовал и не видел в работе.
⇨ Анализатор сети Wireshark
Урок из обновлённого курса по сетям от Созыкина Андрея. Если не знакомы с Wireshark, то этот урок для вас.
⇨ It’s time for a new HomeLab Dashboard // Homepage
Удобная и функциональная штуковина для организации дашборда с различными виджетами. Эти виджеты интегрируются с существующими сервисами и отображают различные метрики и состояния на дашборде. Например, можно настроить интергацию с uptime kuma, portainer, prometheus, proxmox и т.д.
⇨ RetroPie - игровая ретро консоль на Raspberry Pi. Установка и настройка
Превращение Raspberry Pi в игровую консоль со старыми играми и джойстиками. Настраивается всё очень быстро и просто. Получается дешевле и функциональнее отдельных игровых консолей. Тут они все в одной куче поддерживаются: Super nintendo, Sega, Sony Play Station и другие.
⇨ Apache Guacamole доступ к SSH RDP и VNC из веб-клиента с помощью Docker
Краткая настройка Apache Guacamole, установленного в Docker. Дополнительно используется двухфакторная аутентификация с помощью auth-totp. Текстовая версия настройки.
⇨ Complete Ansible Semaphore Tutorial: From Installation to Automation
Установка и настройка веб интерфейса для управления Ansible, Terraform, Bash. Я когда-то давно смотрел эту панель и писал о ней. Кстати, интересная штука. Набрала попуялрность и появилась платная версия. Но open source тоже осталась.
⇨ Расследую инцидент взлома MEERKAT.HTB
Очередной классный разбор задания с HackTheBox от уже известного автора. Тут надо будет не взламывать, а расследовать инцидент. Как обычно, хорошо снято и тема интересная. Рекомендую видео этого автора. Они интересные все.
⇨ Fastest Way To Install Kubernetes Cluster Using Portainer
Разворачивание учебного кластера Kubernetes на базе MikroK8s через Portainer.
#видео
YouTube
Best Free Hypervisors in 2024
As we deal with the death of the VMware ESXi free edition, in this video we look at the best free hypervisor solutions now that VMware ESXi free edition is dead.
Check out the written write up of this video here:
https://www.virtualizationhowto.com/2024/02/best…
Check out the written write up of this video here:
https://www.virtualizationhowto.com/2024/02/best…
🎮 Для тех, у кого есть время на поиграть в компьютерные игры (это не про меня). Недавно вышел 3D симулятор на тему разработки программного обеспечения, где для игры нужно писать код на Python. Судя по отзывам, игра не обучалка, нужен хоть какой-то минимульный уровень. Это больше практика в игровой форме для тех, кто хоть немного может программировать. То есть примерно наш уровень. Админам как раз достатчоно немного знать Python и писать что-то базовое, либо просто понимать код.
Игра называется JOY OF PROGRAMMING - Software Engineering Simulator. В Steam она в раннем доступе. Не знаю, как сейчас с покупкой игр там, но на торрентах, если что, она тоже есть.
Игра смотрится необычно. Отзывы в целом тоже неплохие, так что для коллекции игр на тему IT она вполне подходит. У меня кто-то спрашивал в комментариях к прошлому посту с игрой, какие я ещё тематические игры могу посоветовать. Для тех, кто не так давно читает мой канал, поясню, что тут под тэгом #игра собраны практически все игры, так или иначе связанные с информационными технологиями от простых проходилок из 90-х типа Компьютерщик и Взломщик до современных инди игр от Zachtronics. Соберу как-нибудь всё это в единую заметку для удобства.
Вовзращаясь к упомянутой игре. Немного отзывов из Steam:
Я купил это, чтобы поддержать автора, потому что подобных игр, к сожалению, мало. А тут еще есть решение задач в неделю и рейтинг. Мне понравилось абсолютно все, ведь тут ты решаешь задачи и ищешь подход. Я, например, решил с роботом и дорогой задачу короче, чем автор =)
На самом деле отличная игра. Головоломки, еженедельные задания и песочница могут дать некоторые полезные навыки в реальной жизни, хотя система начисления очков вызывает сомнения.
Удивительно.
Затягивает.
Порой очень сложно.
С помощью этой игры вы научитесь программировать на Python, а также потренируете логическое мышление в попытках решать головоломки с программированием. В ней всё ещё есть баги, но играть в целом можно. Игру рекомендую.
Программистам, думаю, было бы странно играть в подобные игры 😁 А тем, кто хочет к ним приобщиться, наверное, в самый раз.
⇨ Steam / Посмотреть игровой процесс: раз, два
#игра
Игра называется JOY OF PROGRAMMING - Software Engineering Simulator. В Steam она в раннем доступе. Не знаю, как сейчас с покупкой игр там, но на торрентах, если что, она тоже есть.
Игра смотрится необычно. Отзывы в целом тоже неплохие, так что для коллекции игр на тему IT она вполне подходит. У меня кто-то спрашивал в комментариях к прошлому посту с игрой, какие я ещё тематические игры могу посоветовать. Для тех, кто не так давно читает мой канал, поясню, что тут под тэгом #игра собраны практически все игры, так или иначе связанные с информационными технологиями от простых проходилок из 90-х типа Компьютерщик и Взломщик до современных инди игр от Zachtronics. Соберу как-нибудь всё это в единую заметку для удобства.
Вовзращаясь к упомянутой игре. Немного отзывов из Steam:
Я купил это, чтобы поддержать автора, потому что подобных игр, к сожалению, мало. А тут еще есть решение задач в неделю и рейтинг. Мне понравилось абсолютно все, ведь тут ты решаешь задачи и ищешь подход. Я, например, решил с роботом и дорогой задачу короче, чем автор =)
На самом деле отличная игра. Головоломки, еженедельные задания и песочница могут дать некоторые полезные навыки в реальной жизни, хотя система начисления очков вызывает сомнения.
Удивительно.
Затягивает.
Порой очень сложно.
С помощью этой игры вы научитесь программировать на Python, а также потренируете логическое мышление в попытках решать головоломки с программированием. В ней всё ещё есть баги, но играть в целом можно. Игру рекомендую.
Программистам, думаю, было бы странно играть в подобные игры 😁 А тем, кто хочет к ним приобщиться, наверное, в самый раз.
⇨ Steam / Посмотреть игровой процесс: раз, два
#игра
Познакомлю вас интересной VPN системой на базе Wireguard, которую недавно посоветовали в комментариях - DefGuard. Это open source проект с очень привлекательными возможностями, который можно развернуть полностью у себя. Это аналог таких продуктов, как firezone, pritunl, netbird.
📌 Что в первую очередь привлекает внимание:
▪️ многофакторная (MFA) или двухфакторная (2FA) аутентификация на базе TOTP/Email и pre-shared keys;
▪️ интеграция с OpenID
▪️ возможность объединения нескольких VPN шлюзов с разными настройками в едином веб интерфейсе;
▪️ возможность подтягивать пользователей из LDAP;
▪️ система прав доступа к туннелям на базе пользователей и паролей;
▪️ свой десктопный клиент для реализации MFA;
Набор возможностей для бесплатного self-hosted продукта внушительный. При этом по стурктуре он не очень сложный. Я почитал описание, документацию, развернул у себя и в целом разобрался с его концепцией. Но сразу скажу, что быстро настроить и всё попробовать не получилось. Где-то часа два провозился, часть возможностей настроил, но не всё. MFA не сделал. Попробовал только создание пользователей, заведение VPN шлюза, подключение клиента.
Расскажу оснвную идею, как это работает. DefGuard упакован в Docker. Развернуть монжо как вручную через docker compose, так и автоматически через bash скрипт. Вся информация в репозитории и документации.
Далее вы идёте в веб интерфейс, добавляете новый Location. Это сущность, которая представялет из себя настроенный сервер Wireguard. Он может быть установлен как локально вместе с веб интерфейсом, так и вынесен куда-то в другое место. Таких Location может быть много. У каждого свои настройки, маршруты, которые он обслуживает, группы пользователей, которым можно к нему подключаться.
Далее создаёте пользователя со своими параметрами. Можно настроить сервер так, что после создания пользователя, он будет отправлять email со всеми ссылками и паролями. Пользователь может зайти в веб интерфейс под своей учёткой, посмотреть свои настройки, WG туннели, которые ему доступны, статистику подключений. Может скачать настройки отдельных туннелей, чтобы использовать их в любых других клиентах WireGuard, если у него не включена MFA.
Родное приложение позволяет реализовать возмжоность MFA при подключении к серверам DefGuard, а так же использовать его как обычный WG клиент для подключения к любым другим VPN туннелям. У меня не получилось настроить MFA. Либо что-то не допонял по последовательности действий, либо где-то ошибся. Думаю, что там всё работает нормально, так как в Issues не заметил каких-то вопросов по этой теме. Думаю, надо просто больше времени потратить на настройку.
Помимо всего описанного, DefGuard поддерживает YubiKeys. У меня, кстати, есть такой. Любопытная штука, но я так и не стал им пользоваться. Также реализованы Webhooks на некоторые действия с пользователями: создание, удаление, смена пароля, добавление YubiKey. В осноном это для того, чтобы настроить те или иные введомления для пользователя.
Благодаря интеграции с OpenID, можно настроить сквозную аутентификацию через DefGuard в друиге сервисы, которые тоже его поддерживают. Например, Proxmox. Пример, как это выглядит, показан в документации. Там же есть примеры интеграции с Portainer, Grafana, MinIO, Vault, Django, Matrix.
В целом, продукт очень привлеактельный. Из бесплатных self-hosted аналогов не много. Netbird.io разве что. Расскажу про него на днях отдельно.
⇨ Сайт / Исходники
#vpn #wireguard
📌 Что в первую очередь привлекает внимание:
▪️ многофакторная (MFA) или двухфакторная (2FA) аутентификация на базе TOTP/Email и pre-shared keys;
▪️ интеграция с OpenID
▪️ возможность объединения нескольких VPN шлюзов с разными настройками в едином веб интерфейсе;
▪️ возможность подтягивать пользователей из LDAP;
▪️ система прав доступа к туннелям на базе пользователей и паролей;
▪️ свой десктопный клиент для реализации MFA;
Набор возможностей для бесплатного self-hosted продукта внушительный. При этом по стурктуре он не очень сложный. Я почитал описание, документацию, развернул у себя и в целом разобрался с его концепцией. Но сразу скажу, что быстро настроить и всё попробовать не получилось. Где-то часа два провозился, часть возможностей настроил, но не всё. MFA не сделал. Попробовал только создание пользователей, заведение VPN шлюза, подключение клиента.
Расскажу оснвную идею, как это работает. DefGuard упакован в Docker. Развернуть монжо как вручную через docker compose, так и автоматически через bash скрипт. Вся информация в репозитории и документации.
Далее вы идёте в веб интерфейс, добавляете новый Location. Это сущность, которая представялет из себя настроенный сервер Wireguard. Он может быть установлен как локально вместе с веб интерфейсом, так и вынесен куда-то в другое место. Таких Location может быть много. У каждого свои настройки, маршруты, которые он обслуживает, группы пользователей, которым можно к нему подключаться.
Далее создаёте пользователя со своими параметрами. Можно настроить сервер так, что после создания пользователя, он будет отправлять email со всеми ссылками и паролями. Пользователь может зайти в веб интерфейс под своей учёткой, посмотреть свои настройки, WG туннели, которые ему доступны, статистику подключений. Может скачать настройки отдельных туннелей, чтобы использовать их в любых других клиентах WireGuard, если у него не включена MFA.
Родное приложение позволяет реализовать возмжоность MFA при подключении к серверам DefGuard, а так же использовать его как обычный WG клиент для подключения к любым другим VPN туннелям. У меня не получилось настроить MFA. Либо что-то не допонял по последовательности действий, либо где-то ошибся. Думаю, что там всё работает нормально, так как в Issues не заметил каких-то вопросов по этой теме. Думаю, надо просто больше времени потратить на настройку.
Помимо всего описанного, DefGuard поддерживает YubiKeys. У меня, кстати, есть такой. Любопытная штука, но я так и не стал им пользоваться. Также реализованы Webhooks на некоторые действия с пользователями: создание, удаление, смена пароля, добавление YubiKey. В осноном это для того, чтобы настроить те или иные введомления для пользователя.
Благодаря интеграции с OpenID, можно настроить сквозную аутентификацию через DefGuard в друиге сервисы, которые тоже его поддерживают. Например, Proxmox. Пример, как это выглядит, показан в документации. Там же есть примеры интеграции с Portainer, Grafana, MinIO, Vault, Django, Matrix.
В целом, продукт очень привлеактельный. Из бесплатных self-hosted аналогов не много. Netbird.io разве что. Расскажу про него на днях отдельно.
⇨ Сайт / Исходники
#vpn #wireguard
На прошлой неделе купил себе для работы монитор 27" с разрешением 2K, 2560x1440, 165 Гц. Хочу поделиться впечатлением и предостеречь тех, кто планирует себе что-то подобное.
Прошлый мой монитор был 23" FullHD. Причём у меня уже была попытка поменять его на новый 27" FullHD, но мне не понравилось за ним работать. Слишком всё крупное. Отдал его сыну, сам вернулся на 23". Он начал подглючивать и самопроизвольно выключаться на несколько секунд, что предвещает полный выход из строя. Не стал этого ждать и решил поменять монитор.
Я не люблю сильно ковыряться в железе, кропотливо выбирать, читать отзывы и т.д. Особо нет на это времени, да и интереса. Поэтому быстро прикинул, что неплохо было бы попробовать что-то современное. Сейчас все повально берут 2K или 4К мониторы, поэтому решил попробовать что-то такое. 4К сразу отбросил, так как дорого, большая диагональ, да и для работы не вижу большого смысла в таком разрешении. Так что остановился на 2К. Подумал немного насчёт вогнутого экрана, но тоже решил не экспериментировать. Для выбранной диагонали это не сильно актуально.
Сначала хотел взять 2К в диагонали 23"-24", помятуя о том, как не понравился здоровый 27". Но, судя по отзывам, 23" для 2К слишком мал, поэтому не стал рисковать и купил в итоге 27". Поработал за ним несколько дней и могу сказать, что лично мне не очень нравится для работы такое разрешение.
Самая большая проблема - браузер и приложения зачастую плохо выглядят на таком большом экране. Большая часть сайтов показывает картинку посередине, а по краям огромные белые полосы. При этом интерфейс управления размазывается по всей ширине. Приходится открывать в окне, что размывает фокус внимания, так как на заднем плане остаётся рабочий стол с ярлыками и обоями, и окна других приложений. В итоге тратишь время на расположение этих окон по экрану, чтобы не мешали друг другу. Большого смысла в этом нет.
Консоль, RDP подключения тоже на весь экран открывать неудобно. Приходится в окна сворачивать. На полном экране удобно работать только с тексом или таблицами, 1С. Но это меньшая часть моей деятельности.
Когда у тебя всё открыто в окнах, неудобно потом переходить на экран ноутбука, когда работаешь где-то на выезде без монитора. Все окна надо развернуть на весь экран, а когда возвращаешься домой, обратно в окна их сворачиваешь и гоняешь по экрану.
В общем, мне как-то вообще не зашло. Попробую ещё поработать. Если не привыкну, отдам кому-то из домашних, а сам опять на 23" FullHD пересяду. Мне кажется, для работы это оптимальный размер. Всё открыто развёрнутым на весь экран, головой крутить по сторонам не надо, плюс все сайты и приложения оптимизированы в основном под это разрешение.
Так что если планируете поменять монитор, рекомендую где-то сначала всё же попробовать, по возможности, новый формат. Мне некритично, так как железо всегда есть куда отдать, если мне не подойдёт, поэтому я не сильно парюсь.
У меня, кстати, по бокам от основного тоже мониторы, но я ими не пользуюсь. В основном они выключены. Иногда их подключаю к тестовым сервакам, которые по бокам под столом стоят. Мне привычнее работать за одним и переключатсья между приложениями, нежели выносить их на разные мониторы. Ниже картинка с моим рабочим местом дома. Справа под моником ноутбук в докстанции. На основном экране можно оценить, как выглядит страница поиска Яндекса. Узенькая полоска текста и белый экран.
#железо #разное
Прошлый мой монитор был 23" FullHD. Причём у меня уже была попытка поменять его на новый 27" FullHD, но мне не понравилось за ним работать. Слишком всё крупное. Отдал его сыну, сам вернулся на 23". Он начал подглючивать и самопроизвольно выключаться на несколько секунд, что предвещает полный выход из строя. Не стал этого ждать и решил поменять монитор.
Я не люблю сильно ковыряться в железе, кропотливо выбирать, читать отзывы и т.д. Особо нет на это времени, да и интереса. Поэтому быстро прикинул, что неплохо было бы попробовать что-то современное. Сейчас все повально берут 2K или 4К мониторы, поэтому решил попробовать что-то такое. 4К сразу отбросил, так как дорого, большая диагональ, да и для работы не вижу большого смысла в таком разрешении. Так что остановился на 2К. Подумал немного насчёт вогнутого экрана, но тоже решил не экспериментировать. Для выбранной диагонали это не сильно актуально.
Сначала хотел взять 2К в диагонали 23"-24", помятуя о том, как не понравился здоровый 27". Но, судя по отзывам, 23" для 2К слишком мал, поэтому не стал рисковать и купил в итоге 27". Поработал за ним несколько дней и могу сказать, что лично мне не очень нравится для работы такое разрешение.
Самая большая проблема - браузер и приложения зачастую плохо выглядят на таком большом экране. Большая часть сайтов показывает картинку посередине, а по краям огромные белые полосы. При этом интерфейс управления размазывается по всей ширине. Приходится открывать в окне, что размывает фокус внимания, так как на заднем плане остаётся рабочий стол с ярлыками и обоями, и окна других приложений. В итоге тратишь время на расположение этих окон по экрану, чтобы не мешали друг другу. Большого смысла в этом нет.
Консоль, RDP подключения тоже на весь экран открывать неудобно. Приходится в окна сворачивать. На полном экране удобно работать только с тексом или таблицами, 1С. Но это меньшая часть моей деятельности.
Когда у тебя всё открыто в окнах, неудобно потом переходить на экран ноутбука, когда работаешь где-то на выезде без монитора. Все окна надо развернуть на весь экран, а когда возвращаешься домой, обратно в окна их сворачиваешь и гоняешь по экрану.
В общем, мне как-то вообще не зашло. Попробую ещё поработать. Если не привыкну, отдам кому-то из домашних, а сам опять на 23" FullHD пересяду. Мне кажется, для работы это оптимальный размер. Всё открыто развёрнутым на весь экран, головой крутить по сторонам не надо, плюс все сайты и приложения оптимизированы в основном под это разрешение.
Так что если планируете поменять монитор, рекомендую где-то сначала всё же попробовать, по возможности, новый формат. Мне некритично, так как железо всегда есть куда отдать, если мне не подойдёт, поэтому я не сильно парюсь.
У меня, кстати, по бокам от основного тоже мониторы, но я ими не пользуюсь. В основном они выключены. Иногда их подключаю к тестовым сервакам, которые по бокам под столом стоят. Мне привычнее работать за одним и переключатсья между приложениями, нежели выносить их на разные мониторы. Ниже картинка с моим рабочим местом дома. Справа под моником ноутбук в докстанции. На основном экране можно оценить, как выглядит страница поиска Яндекса. Узенькая полоска текста и белый экран.
#железо #разное
Когда у вас появляется несколько сервисов, остро встаёт вопрос с управлением пользователями. Хочется всё это делать в одном месте, а не ходить по разным системам и актуализировать там учётные данные. Решений этой задачи не так много. Чаще всего используют тот или иной LDAP каталог и настраивают софт на работу с ним. Либо второй вариант - настраивают сервис SSO (single sign-on, технология единого входа). В качестве бэкенда для хранения учётных данных может выступать тот же LDAP, внутренняя база SSO либо что-то другое.
Организация SSO более сложный, но в то же время более гибкий, функциональный вариант, нежели просто какой-то каталог. Схема там примерно такая получается. У вас есть некий сервис SSO, который интегрируется с рабочими службами, типа админки сайта, системы мониторинга, почты, VPN и т.д. Этот же сервис в качестве источника информации о пользователях использует какой-то бэкенд, например, тот же LDAP каталог или свою внутреннюю базу. Пользователь заходит в админку сайта. Ему предлагается пройти аутентификацию. Он это делает, админка связывается с SSO, та проверяет введённую учётку. Если всё ОК, то возвращает админке информацию о том, что аутентификация прошла успешно, а так же набор прав для этой учётки.
Есть относительно новый open source продукт в качестве SSO - Keycloak. Он в последние года 3-4 стал прям очень популярен. В основном из-за двух причин. Во-первых, бесплатных продуктов такого класса в целом не так много. Во-вторых, он относительно просто и быстро настраивается.
У Keycloak есть неплохая документация, по которой развернуть продукт очень просто. Далее всё управление через веб интерфейс, что тоже сильно упрощает настройку. То есть бувально:
И идёте в веб интерфейс разбираться. Далее, к примеру, открываете руководство Grafana и настраиваете аутентификацию в ней через Keycloak. Алгоритм интеграции будет примерно такой:
1️⃣ Создаёте в Keycloak realm с нужными правами, которые поддерживает сервис. Например, с правами Admin, Viewer и Editor.
2️⃣ Далее создаёте отдельного клиента для Grafana с маппингом прав.
3️⃣ Создаёте пользователей в Keycloak с разными правами.
4️⃣ Добавляете в конфигурацию Grafana параметры из документации с учётом своих урлов и секрета клиента.
5️⃣ Пробуете зайти в Grafana, выбрав Sign in with Keycloak, и свою учётку в Keycloak.
Похожим образом настраивается интеграция с другими продуктами. Если они поддерживают такую интеграцию, то процесс будет максимально простым и быстрым. Достаточно будет создать реалм с нужными правами, клиента с маппингом прав, получить его секрет и использовать для интеграции.
В англоязычном интернете много статей с конкретными примерами интеграции различных сервисов и Keycloak. Всё современное и популярное его сейчас поддерживает, настраивается легко. С более старыми продуктами, типа postfix, dovecot будет посложнее, но в целом тоже решаемо. У postfix не видел поддержки, а у dovecot есть. Можно использовать его в качестве SASL (Simple Authentication and Security Layer). Проще ситуация, если используется веб интерфейс. Тот же Roundcube поддерживает Keycloak.
Так что если сейчас планируете построение каких-то информационных систем, сразу внедряйте SSO, чтобы потом не делать это уже по ходу дела.
#sso
Организация SSO более сложный, но в то же время более гибкий, функциональный вариант, нежели просто какой-то каталог. Схема там примерно такая получается. У вас есть некий сервис SSO, который интегрируется с рабочими службами, типа админки сайта, системы мониторинга, почты, VPN и т.д. Этот же сервис в качестве источника информации о пользователях использует какой-то бэкенд, например, тот же LDAP каталог или свою внутреннюю базу. Пользователь заходит в админку сайта. Ему предлагается пройти аутентификацию. Он это делает, админка связывается с SSO, та проверяет введённую учётку. Если всё ОК, то возвращает админке информацию о том, что аутентификация прошла успешно, а так же набор прав для этой учётки.
Есть относительно новый open source продукт в качестве SSO - Keycloak. Он в последние года 3-4 стал прям очень популярен. В основном из-за двух причин. Во-первых, бесплатных продуктов такого класса в целом не так много. Во-вторых, он относительно просто и быстро настраивается.
У Keycloak есть неплохая документация, по которой развернуть продукт очень просто. Далее всё управление через веб интерфейс, что тоже сильно упрощает настройку. То есть бувально:
# docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:24.0.2 start-dev
И идёте в веб интерфейс разбираться. Далее, к примеру, открываете руководство Grafana и настраиваете аутентификацию в ней через Keycloak. Алгоритм интеграции будет примерно такой:
1️⃣ Создаёте в Keycloak realm с нужными правами, которые поддерживает сервис. Например, с правами Admin, Viewer и Editor.
2️⃣ Далее создаёте отдельного клиента для Grafana с маппингом прав.
3️⃣ Создаёте пользователей в Keycloak с разными правами.
4️⃣ Добавляете в конфигурацию Grafana параметры из документации с учётом своих урлов и секрета клиента.
5️⃣ Пробуете зайти в Grafana, выбрав Sign in with Keycloak, и свою учётку в Keycloak.
Похожим образом настраивается интеграция с другими продуктами. Если они поддерживают такую интеграцию, то процесс будет максимально простым и быстрым. Достаточно будет создать реалм с нужными правами, клиента с маппингом прав, получить его секрет и использовать для интеграции.
В англоязычном интернете много статей с конкретными примерами интеграции различных сервисов и Keycloak. Всё современное и популярное его сейчас поддерживает, настраивается легко. С более старыми продуктами, типа postfix, dovecot будет посложнее, но в целом тоже решаемо. У postfix не видел поддержки, а у dovecot есть. Можно использовать его в качестве SASL (Simple Authentication and Security Layer). Проще ситуация, если используется веб интерфейс. Тот же Roundcube поддерживает Keycloak.
Так что если сейчас планируете построение каких-то информационных систем, сразу внедряйте SSO, чтобы потом не делать это уже по ходу дела.
#sso
У сайтов на Bitrix существует одна особенность. Специально выделил жирным, потому что это такая особенность, что всем особенностям особенность. В админке можно править исходники сайта прямо наживую, в том числе и служебные файлы .htaccess. Любой, кто имеет доступ к админке, может грохнуть сайт. И это время от времени случается.
Вчера грохнули сайт по похожей схеме. Сеошник добавлял редиректы правкой .htaccess через админку. Редиректов там сотни. Сайт очень старый. Его развивали и поддерживали за последние лет 10 несколько разных компаний и программистов. Правку файлов тоже на постоянной основе делают несколько человек - как минимум сеошник и контент менеджер.
Из-за ошибки в .htaccess апач на каждый запрос отдавал 500-ю ошибку. Это я уже потом узнал. Сначала зашёл на сервер, сразу посмотрел изменения за последние сутки:
Когда увидел в списке файлов .htaccess сразу на него подумал. Сходил на бэкап сервер, забрал оттуда предыдущую версию файла. Он очень большой, так что глазами разницу не видно. Сравнил так:
Увидел много изменений. Сразу вернул прошлую версию файла. Сайт ожил. Я посмотрел на внесённые изменения. Сходил, проверил синтаксис через публичный сервис:
⇨ http://www.htaccesscheck.com (полезный, стоит сохранить)
Забавное вступительное слово у сервиса:
"Sick of one silly typo in a .htaccess file causing your entire site to be broken?" - "Устали, что банальная опечатка в .htaccess, роняет весь сайт?"
Это такая фишка Апача. И плюс, и минус одновременно.
Сервис показал ошибку. Один url, куда был направлен 301 редирект, был некорректный по формату. Из-за этого Apache на все запросы возвращал 500-ю ошибку. Я удивился от этого. Не припоминаю, что сталкивался с этим раньше. Как-то нелогично. Одно дело давать ошибку на конкретный редирект, а другое руинить всю свою работу из-за него.
В общем, файл починил, сеошнику отправил ссылку на сервис, чтобы проверял свои редиректы, прежде чем добавлять их в .htaccess. Как защититься от этого, не знаю. Это уже не первый раз, когда прямой правкой сайта через админку ломают его работу. Теоретически, я конечно знаю, как это можно исправить. Но для масштаба текущего бизнеса это будет неоправданно большой бюджет. Простой даже в несколько часов некритичен и проблем не создаёт. Напрягает это только меня, что приходится вручную решать проблемы. Но, собственно, я для этого туда и нанят.
#bitrix #webserver #apache
Вчера грохнули сайт по похожей схеме. Сеошник добавлял редиректы правкой .htaccess через админку. Редиректов там сотни. Сайт очень старый. Его развивали и поддерживали за последние лет 10 несколько разных компаний и программистов. Правку файлов тоже на постоянной основе делают несколько человек - как минимум сеошник и контент менеджер.
Из-за ошибки в .htaccess апач на каждый запрос отдавал 500-ю ошибку. Это я уже потом узнал. Сначала зашёл на сервер, сразу посмотрел изменения за последние сутки:
# find /home/bitrix/ext_www/site01 -mtime -1 -ls
Когда увидел в списке файлов .htaccess сразу на него подумал. Сходил на бэкап сервер, забрал оттуда предыдущую версию файла. Он очень большой, так что глазами разницу не видно. Сравнил так:
# sdiff /root/restored/.htaccess /home/bitrix/ext_www/site01/.htaccess
Увидел много изменений. Сразу вернул прошлую версию файла. Сайт ожил. Я посмотрел на внесённые изменения. Сходил, проверил синтаксис через публичный сервис:
⇨ http://www.htaccesscheck.com (полезный, стоит сохранить)
Забавное вступительное слово у сервиса:
"Sick of one silly typo in a .htaccess file causing your entire site to be broken?" - "Устали, что банальная опечатка в .htaccess, роняет весь сайт?"
Это такая фишка Апача. И плюс, и минус одновременно.
Сервис показал ошибку. Один url, куда был направлен 301 редирект, был некорректный по формату. Из-за этого Apache на все запросы возвращал 500-ю ошибку. Я удивился от этого. Не припоминаю, что сталкивался с этим раньше. Как-то нелогично. Одно дело давать ошибку на конкретный редирект, а другое руинить всю свою работу из-за него.
В общем, файл починил, сеошнику отправил ссылку на сервис, чтобы проверял свои редиректы, прежде чем добавлять их в .htaccess. Как защититься от этого, не знаю. Это уже не первый раз, когда прямой правкой сайта через админку ломают его работу. Теоретически, я конечно знаю, как это можно исправить. Но для масштаба текущего бизнеса это будет неоправданно большой бюджет. Простой даже в несколько часов некритичен и проблем не создаёт. Напрягает это только меня, что приходится вручную решать проблемы. Но, собственно, я для этого туда и нанят.
#bitrix #webserver #apache
Htaccesscheck
.htaccess check - Syntax checker for Apache .htaccess files
Я недавно рассказывал про namespaces в Linux. На основе этой изоляции работает множество софта. Далее будет пример одного из них, который использует network namespaces для записи дампа трафика конкретного приложения.
Речь пойдёт про nsntrace. Это относительно простое приложение, которое, как я уже сказал, может собрать дамп трафика отдельного приложения. Для этого оно делает следующие вещи:
1️⃣ Создаёт отдельный network namespace для исследуемого приложения.
2️⃣ Для того, чтобы там был доступ в интернет, создаются виртуальные сетевые интерфейсы. Один в новом namespace, другой в основном. В новом используется шлюз из основного namespace. Из-за этой схемы у запускаемого приложения будет IP адрес виртуальной сети.
3️⃣ Средствами iptables трафик натится из виртуальной сети в реальную.
4️⃣ Запускает приложение в новом namespace и собирает его трафик с помощью libpcap. Результат сохраняет в обычный pcap файл.
Nsntrace есть в базовых репах Debian:
Самый банальный пример, чтобы проверить работу:
На выходе получаем nsntrace.pcap, который можно посмотреть тут же, если у вас есть tshark:
Можно и в режиме реального времени наблюдать:
Помимо обычных приложений, снимать трафик можно и со скриптов:
Проверим на простом python скрипте:
Запускаем анализ сетевой активности:
Смотрим:
Можно передать .pcap на другую машину и посмотреть в Wireshark.
Удобный инструмент. Нужен не часто, но конкретно для скриптов мне реализация понравилась. Обычно это нетривиальная задача, посмотреть, куда он стучится и что делает. Нужно вычленять именно его запросы из общего трафика, а это не всегда просто. Либо трассировку работы делать, что тоже сложнее, чем просто воспользоваться nsntrace.
#network #perfomance
Речь пойдёт про nsntrace. Это относительно простое приложение, которое, как я уже сказал, может собрать дамп трафика отдельного приложения. Для этого оно делает следующие вещи:
1️⃣ Создаёт отдельный network namespace для исследуемого приложения.
2️⃣ Для того, чтобы там был доступ в интернет, создаются виртуальные сетевые интерфейсы. Один в новом namespace, другой в основном. В новом используется шлюз из основного namespace. Из-за этой схемы у запускаемого приложения будет IP адрес виртуальной сети.
3️⃣ Средствами iptables трафик натится из виртуальной сети в реальную.
4️⃣ Запускает приложение в новом namespace и собирает его трафик с помощью libpcap. Результат сохраняет в обычный pcap файл.
Nsntrace есть в базовых репах Debian:
# apt install nsntrace
Самый банальный пример, чтобы проверить работу:
# nsntrace wget google.com
На выходе получаем nsntrace.pcap, который можно посмотреть тут же, если у вас есть tshark:
# tshark -r nsntrace.pcap
Можно и в режиме реального времени наблюдать:
# nsntrace -o - wget google.com 2> /dev/null | tshark -r -
Помимо обычных приложений, снимать трафик можно и со скриптов:
# nsntrace php script.php
# nsntrace python script.py
Проверим на простом python скрипте:
import requests
res = requests.get('https://ya.ru')
Запускаем анализ сетевой активности:
# nsntrace python3 script.py
Starting network trace of 'python3' on interface eth0.
Your IP address in this trace is 172.16.42.255.
Use ctrl-c to end at any time.
Finished capturing 57 packets.
Смотрим:
# tshark -r nsntrace.pcap
Можно передать .pcap на другую машину и посмотреть в Wireshark.
Удобный инструмент. Нужен не часто, но конкретно для скриптов мне реализация понравилась. Обычно это нетривиальная задача, посмотреть, куда он стучится и что делает. Нужно вычленять именно его запросы из общего трафика, а это не всегда просто. Либо трассировку работы делать, что тоже сложнее, чем просто воспользоваться nsntrace.
#network #perfomance
Недавно рассказывал про один из самых популярных бесплатных сервисов SSO - Keycloak. Думаю, не сильно ошибусь, если вторым по популярности поставлю Authentik. В общем и целом они выполняют схожие функции, так что в лоб их трудно сравнить. Keycloak более старый продукт под крылом RedHat. Можно считать его более основательным, как с точки зрения решения запросов enterprise сегмента, так и безопасности. С другой стороны у Authentik немного больше возможностей.
Например, Authentik может выступать сам в роли LDAP каталога или сервиса RADIUS. Это удобно, если у вас есть приложения, которые поддерживают только их. Не нужны сторонние каталоги. Также в Authentik есть возможность настроить так называемый Application Proxy для приложений, которые не поддерживают SSO. Вот пример для Nginx, или для любого веб приложения, которое поддерживает только Basic Auth, которая реализуется через Authentik.
Запустить в работу Authentik так же просто, как и Keycloak. Есть готовый Docker Compose и набор контейнеров. Весь процесс описан в документации. Там же подробное видео. Отдельно отмечу совсем свежее (21 мар. 2024 г.) видео по этой теме:
▶️ Secure authentication for EVERYTHING! // Authentik
Автор подробно описывает, как запустить Authentik в прод и показывает пару примеров интеграции своих сервисов с этим SSO: Portainer и Proxmox VE. Видео интересное и информативное. Рекомендую посмотреть хотя бы для того, чтобы увидеть рабочую среду этого инженера.
Все интеграции Authentik собраны в отдельный раздел на сайте. По каждому продукту подробная пошаговая инструкция. Так что настроить по ней будет не сложно. В списке есть такие популярные продукты как Zabbix, Grafana, Uptime Kuma, Gitlab, OnlyOffice, Nextcloud, Rocket.chat, Roundcube, Proxmox VE, Apache Guacamole, pfSense, MinIO, ProFTPD, Home Assistant и т.д. Список большой.
В целом, Authentik выглядит немного проще по настройке и внедрению, так что для старта и небольших проектов он скорее всего будет более предпочтителен, нежели Keycloak. К тому же в явный плюс идёт встроенный каталог LDAP. В Keycloak нужно будет какой-то внешний каталог использовать. Но это чисто мои умозрительные заключения.
⇨ Сайт / Исходники / Видеоинструкция
#sso
Например, Authentik может выступать сам в роли LDAP каталога или сервиса RADIUS. Это удобно, если у вас есть приложения, которые поддерживают только их. Не нужны сторонние каталоги. Также в Authentik есть возможность настроить так называемый Application Proxy для приложений, которые не поддерживают SSO. Вот пример для Nginx, или для любого веб приложения, которое поддерживает только Basic Auth, которая реализуется через Authentik.
Запустить в работу Authentik так же просто, как и Keycloak. Есть готовый Docker Compose и набор контейнеров. Весь процесс описан в документации. Там же подробное видео. Отдельно отмечу совсем свежее (21 мар. 2024 г.) видео по этой теме:
▶️ Secure authentication for EVERYTHING! // Authentik
Автор подробно описывает, как запустить Authentik в прод и показывает пару примеров интеграции своих сервисов с этим SSO: Portainer и Proxmox VE. Видео интересное и информативное. Рекомендую посмотреть хотя бы для того, чтобы увидеть рабочую среду этого инженера.
Все интеграции Authentik собраны в отдельный раздел на сайте. По каждому продукту подробная пошаговая инструкция. Так что настроить по ней будет не сложно. В списке есть такие популярные продукты как Zabbix, Grafana, Uptime Kuma, Gitlab, OnlyOffice, Nextcloud, Rocket.chat, Roundcube, Proxmox VE, Apache Guacamole, pfSense, MinIO, ProFTPD, Home Assistant и т.д. Список большой.
В целом, Authentik выглядит немного проще по настройке и внедрению, так что для старта и небольших проектов он скорее всего будет более предпочтителен, нежели Keycloak. К тому же в явный плюс идёт встроенный каталог LDAP. В Keycloak нужно будет какой-то внешний каталог использовать. Но это чисто мои умозрительные заключения.
⇨ Сайт / Исходники / Видеоинструкция
#sso
Примерно 3 года назад я рассказывал про хороший инструмент для бэкапа - Kopia. Это бесплатная кросс-платформенная система для бэкапов с управлением через веб интерфейс. С тех пор вышло много обновлений, продукт активно развивается и обрастает возможностями. Решил написать о нём ещё раз, чтобы напомнить и рассказать тем, кто не знаком с ним.
📌 Кратко перечислю основные возможности Kopia:
▪️ Кросс-платформенная система как на уровне агентов, так и сервера. Вы можете развернуть сервер с веб интерфейсом как на Linux, так и Windows или macOS. И бэкапить туда все поддерживаемые системы.
▪️ Поддержка различных бэкендов для организации архива с бэкапами. Даже если чего-то не хватает, то в качестве транспорта может выступать rclone, который поддерживает вообще всё, что только можно.
▪️ Есть в том числе поддержка CLI (консольного интерфейса), что позволяет очень гибко с помощью ключей задавать преднастройки для процесса архивирования.
▪️ Очень гибкая система хранения и управления бэкапами с помощью политик.
▪️ Веб интерфейс для настройки бэкапов и доступа к данным. При желании, можно всё делать через него. В консоль ходить не обязательно. Но при этом все настройки, сделанные в веб интерфейсе можно экспортировать в json конфиги и консольные ключи.
🔥 Поддержка инкрементных бэкапов, дедупликации, сжатия.
▪️ Есть возможность проводить регулярные проверки бэкапов на целостность.
▪️ В последний релиз завезли поддержку Volume Shadow Copy Service (VSS) под Windows.
▪️ Всё это написано на GO и работает быстро.
❗️Сразу отмечу, что Kopia делает бэкапы только на уровне файлов и каталогов. Сделать образ диска или бэкап всей системы разом с ней не получится.
У Kopia немного необычная архитектура и принцип работы. Сейчас кратко расскажу, как там всё устроено. Клиент и сервер по сути одно и то же. Это всё один бинарник. Поставить в Debian можно так:
Далее вы можете все конфиги подготовить заранее и запустить бинарник с нужными параметрами. Но так как мы используем этот продукт впервые, то запустим веб интерфейс и всё настроим там. А потом уже заберём готовые конфиги для других серверов.
Запустили kopia в режиме веб интерфейса. Идём на http://10.20.1.36:51515 и логинимся под указанной учёткой. Сразу добавляем репозиторий для хранения бэкапов. Например, локальную директорию
После того, как мы настроили репозиторий и параметры бэкапа, его конфиг сохранился в
Будет создан очередной снэпшот директории. Посмотреть его можно будет в том числе через веб интерфейс.
Теперь мы можем установить kopia на любую другую машину. Если мы захотим складывать её бэкапы на тот же сервер, где мы ранее настроили репозиторий, то на него они будут попадать уже по sftp. Для этого можно так же запустить на новой машине веб интерфейс и добавить репозиторий уже не локальный, а sftp и указать параметры подключения по ssh. И далее так же делать снепшоты либо через веб интерфейс, либо локальной командой, которую можно запускать через cron или systemd.
При описанной схеме, все клиенты имеют полный доступ к репозиторию с бэкапами. Это самая простая настройка. Чтобы доступ ограничивать через acl, можно поднять Repository Server и подключаться через него.
⇨ Сайт / Исходники
#backup
📌 Кратко перечислю основные возможности Kopia:
▪️ Кросс-платформенная система как на уровне агентов, так и сервера. Вы можете развернуть сервер с веб интерфейсом как на Linux, так и Windows или macOS. И бэкапить туда все поддерживаемые системы.
▪️ Поддержка различных бэкендов для организации архива с бэкапами. Даже если чего-то не хватает, то в качестве транспорта может выступать rclone, который поддерживает вообще всё, что только можно.
▪️ Есть в том числе поддержка CLI (консольного интерфейса), что позволяет очень гибко с помощью ключей задавать преднастройки для процесса архивирования.
▪️ Очень гибкая система хранения и управления бэкапами с помощью политик.
▪️ Веб интерфейс для настройки бэкапов и доступа к данным. При желании, можно всё делать через него. В консоль ходить не обязательно. Но при этом все настройки, сделанные в веб интерфейсе можно экспортировать в json конфиги и консольные ключи.
🔥 Поддержка инкрементных бэкапов, дедупликации, сжатия.
▪️ Есть возможность проводить регулярные проверки бэкапов на целостность.
▪️ В последний релиз завезли поддержку Volume Shadow Copy Service (VSS) под Windows.
▪️ Всё это написано на GO и работает быстро.
❗️Сразу отмечу, что Kopia делает бэкапы только на уровне файлов и каталогов. Сделать образ диска или бэкап всей системы разом с ней не получится.
У Kopia немного необычная архитектура и принцип работы. Сейчас кратко расскажу, как там всё устроено. Клиент и сервер по сути одно и то же. Это всё один бинарник. Поставить в Debian можно так:
# curl -s https://kopia.io/signing-key \
| gpg --dearmor -o /etc/apt/keyrings/kopia-keyring.gpg
# echo "deb [signed-by=/etc/apt/keyrings/kopia-keyring.gpg] \ http://packages.kopia.io/apt/ stable main" \
| tee /etc/apt/sources.list.d/kopia.list
# apt update
# apt install kopia
Далее вы можете все конфиги подготовить заранее и запустить бинарник с нужными параметрами. Но так как мы используем этот продукт впервые, то запустим веб интерфейс и всё настроим там. А потом уже заберём готовые конфиги для других серверов.
# kopia server start --insecure --address="http://10.20.1.36:51515" \
--server-username="kopia" --server-password=kopia
Запустили kopia в режиме веб интерфейса. Идём на http://10.20.1.36:51515 и логинимся под указанной учёткой. Сразу добавляем репозиторий для хранения бэкапов. Например, локальную директорию
/mnt/backup
. После этого в разделе Snapshots мы можем добавить любой локальный каталог в качестве источника бэкапа. И там же через веб интерфейс настроить параметры бэкапа и политики хранения. Они сохранятся в репозитории. После того, как мы настроили репозиторий и параметры бэкапа, его конфиг сохранился в
/root/.config/kopia/repository.config
. Теперь мы можем просто запускать команду для бэкапа в консоли. Примерно так для директории /var/log
:# kopia snapshot create /var/log
Будет создан очередной снэпшот директории. Посмотреть его можно будет в том числе через веб интерфейс.
Теперь мы можем установить kopia на любую другую машину. Если мы захотим складывать её бэкапы на тот же сервер, где мы ранее настроили репозиторий, то на него они будут попадать уже по sftp. Для этого можно так же запустить на новой машине веб интерфейс и добавить репозиторий уже не локальный, а sftp и указать параметры подключения по ssh. И далее так же делать снепшоты либо через веб интерфейс, либо локальной командой, которую можно запускать через cron или systemd.
При описанной схеме, все клиенты имеют полный доступ к репозиторию с бэкапами. Это самая простая настройка. Чтобы доступ ограничивать через acl, можно поднять Repository Server и подключаться через него.
⇨ Сайт / Исходники
#backup
Озадачился вопросом GUI клиента для S3 под Windows. Обычно у всех сервисов есть веб интерфейс, так что для разовых задач можно и им воспользоваться. Но локальным клиентом всё равно удобнее.
Быстро посмотрел в поиске и практически сразу же увидел, что WinSCP оказывается поддерживает S3. Я этой программой пользуюсь с незапамятных времён для подключений по SFTP, другие протоколы даже не смотрел. Для FTP привык к Total Commander, так что у меня эта связка очень давно. Посмотрел на свою портированную версию WinSCP, она от 2020 года. Обновил до свежей и попробовал.
WinSCP реально поддерживает S3 совместимые хранилища, хоть в настройках и указано, что протокол Amazon S3. Я подключился к хранилищу Selectel, просто указав s3.ru-1.storage.selcloud.ru и access key, secret key от сервисного пользователя с соответствующим доступом. Единственный нюанс был - надо включить Virtual-Hosted адресацию в конфигурации контейнера. Без этого хоть и подключался, но не мог в контейнеры заходить.
Других провайдеров не пробовал, но видел, что WinSCP с Яндекс облаком тоже без проблем работает. Думаю, что и со всеми остальными всё в порядке будет.
#s3
Быстро посмотрел в поиске и практически сразу же увидел, что WinSCP оказывается поддерживает S3. Я этой программой пользуюсь с незапамятных времён для подключений по SFTP, другие протоколы даже не смотрел. Для FTP привык к Total Commander, так что у меня эта связка очень давно. Посмотрел на свою портированную версию WinSCP, она от 2020 года. Обновил до свежей и попробовал.
WinSCP реально поддерживает S3 совместимые хранилища, хоть в настройках и указано, что протокол Amazon S3. Я подключился к хранилищу Selectel, просто указав s3.ru-1.storage.selcloud.ru и access key, secret key от сервисного пользователя с соответствующим доступом. Единственный нюанс был - надо включить Virtual-Hosted адресацию в конфигурации контейнера. Без этого хоть и подключался, но не мог в контейнеры заходить.
Других провайдеров не пробовал, но видел, что WinSCP с Яндекс облаком тоже без проблем работает. Думаю, что и со всеми остальными всё в порядке будет.
#s3
На базе Wireguard есть очень крутая, частично бесплатная, open source платформа для построения VPN сетей - netbird.io. Это платный SaaS сервис, который имеет бесплатный тарифный план, а так же бесплатную self-hosted версию. Расскажу кратко своими словами, что она из себя представляет и как работает.
Вы разворачиваете у себя серверную часть из пакетов или готового docker compose файла. Далее на любую популярную десктопную или мобильную систему устанавливаете агента. Причём установка максимально простая. Достаточно при установке указать url сервера и специальный ключ. Установленный агент появляется в панели управления сервером.
Теперь все настройки выполняются через веб интерфейс на сервере. Вы можете пользователей и подключенные сервера объединять в различные группы и настраивать политики доступа на уровне файрвола и маршрутов. Можно, к примеру, создать группу пользователей и группу тестовых серверов. И разрешить этим пользователям пинговать, подключаться по SSH и HTTP к этим серверам. И больше ничего. Настройки очень гибкие.
Если есть какое-то оборудование, куда нельзя установить агент netbird, но хочется управлять доступом к нему, можно для существующих клиентов VPN сети указать какой-то узел сети в качестве шлюза, через который они будут подключаться к целевой машине. А уже на ней настроить в файрволе конкретные разрешения для указанного шлюза. Для разных пользователей могут использоваться разные шлюзы и, соответственно, правила на файрволе.
Таким образом, с помощью netbird можно покрыть всю существующую инфраструктуру и централизованно управлять доступом. Причём политики доступа могут быть очень гибкие. Например, можно запретить подключаться клиентам с какой-то определённой версией системы. Например, Windows 7 или iOS, если у ваших сотрудников их нет вообще. То же самое можно делать по географическому признаку - запретить подключаться из каких-то стран.
Подключения между агентами устанавливаются напрямую, если это возможно. Если нет - используется технология STUN и TURN. Пиры VPN сети связаны между собой на базе Wireguard. Для тех, кто будет писать, что WG блокируют, сразу скажу, что это не инструмент для обхода блокировок. Не надо его пытаться использовать в этом ключе. Это система для построения mesh сети разнородных узлов с централизованным управлением доступа.
У Netbird нет собственной системы хранения учётных записей. Используется внешний IdP (identity provider). Это может быть Authentik, Keycloak или Zitadel. Для self-hosted установки есть готовый docker compose, где автоматически разворачивается Netbird в связке с Zitadel. Есть готовый bash скрипт для установки этой связки. Необходимо подготовить VPS с внешним IP и настроенной DNS записью. Далее просто запускаем:
Подробно подобная установка и управление этой связкой описано в соответствующем разделе документации.
По возможностям Netbird очень сильно похож на Tailscale, только у последнего нет официального self-hosted сервера с подобной функциональностью. Тут мне что-то подсказывает, что со временем тоже не будет. Слишком хорош он в подобной редакции. Скорее всего по мере роста популярности, возможности self-hosted версии будут уменьшаться. Так же его можно сравнить с Netmaker или Nebula, но по возможностям и удобству он их превосходит.
Подробный обзор установки и использования Netbird можно посмотреть в свежем видео:
▶️ Install a self-hosted VPN platform // Netbird
Я ничего похожего по возможностям и забесплатно не знаю. Выглядит всё очень удобно и функционально для объединения и инфраструктуры, и внешних пользователей для работы с ними. Попробовать всё это можно на бесплатном тарифном плане в облаке. Ограничение там - 5 пользователей и 100 устройств.
⇨ Сайт / Исходники
#vpn #wireguard
Вы разворачиваете у себя серверную часть из пакетов или готового docker compose файла. Далее на любую популярную десктопную или мобильную систему устанавливаете агента. Причём установка максимально простая. Достаточно при установке указать url сервера и специальный ключ. Установленный агент появляется в панели управления сервером.
Теперь все настройки выполняются через веб интерфейс на сервере. Вы можете пользователей и подключенные сервера объединять в различные группы и настраивать политики доступа на уровне файрвола и маршрутов. Можно, к примеру, создать группу пользователей и группу тестовых серверов. И разрешить этим пользователям пинговать, подключаться по SSH и HTTP к этим серверам. И больше ничего. Настройки очень гибкие.
Если есть какое-то оборудование, куда нельзя установить агент netbird, но хочется управлять доступом к нему, можно для существующих клиентов VPN сети указать какой-то узел сети в качестве шлюза, через который они будут подключаться к целевой машине. А уже на ней настроить в файрволе конкретные разрешения для указанного шлюза. Для разных пользователей могут использоваться разные шлюзы и, соответственно, правила на файрволе.
Таким образом, с помощью netbird можно покрыть всю существующую инфраструктуру и централизованно управлять доступом. Причём политики доступа могут быть очень гибкие. Например, можно запретить подключаться клиентам с какой-то определённой версией системы. Например, Windows 7 или iOS, если у ваших сотрудников их нет вообще. То же самое можно делать по географическому признаку - запретить подключаться из каких-то стран.
Подключения между агентами устанавливаются напрямую, если это возможно. Если нет - используется технология STUN и TURN. Пиры VPN сети связаны между собой на базе Wireguard. Для тех, кто будет писать, что WG блокируют, сразу скажу, что это не инструмент для обхода блокировок. Не надо его пытаться использовать в этом ключе. Это система для построения mesh сети разнородных узлов с централизованным управлением доступа.
У Netbird нет собственной системы хранения учётных записей. Используется внешний IdP (identity provider). Это может быть Authentik, Keycloak или Zitadel. Для self-hosted установки есть готовый docker compose, где автоматически разворачивается Netbird в связке с Zitadel. Есть готовый bash скрипт для установки этой связки. Необходимо подготовить VPS с внешним IP и настроенной DNS записью. Далее просто запускаем:
# export NETBIRD_DOMAIN=netbird.example.com; curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started-with-zitadel.sh | bash
Подробно подобная установка и управление этой связкой описано в соответствующем разделе документации.
По возможностям Netbird очень сильно похож на Tailscale, только у последнего нет официального self-hosted сервера с подобной функциональностью. Тут мне что-то подсказывает, что со временем тоже не будет. Слишком хорош он в подобной редакции. Скорее всего по мере роста популярности, возможности self-hosted версии будут уменьшаться. Так же его можно сравнить с Netmaker или Nebula, но по возможностям и удобству он их превосходит.
Подробный обзор установки и использования Netbird можно посмотреть в свежем видео:
▶️ Install a self-hosted VPN platform // Netbird
Я ничего похожего по возможностям и забесплатно не знаю. Выглядит всё очень удобно и функционально для объединения и инфраструктуры, и внешних пользователей для работы с ними. Попробовать всё это можно на бесплатном тарифном плане в облаке. Ограничение там - 5 пользователей и 100 устройств.
⇨ Сайт / Исходники
#vpn #wireguard
▶️ Очень ностальгическая и откликающаяся песня, хоть и написана программистом для программистов из 90-х. Я только чуть-чуть захватил это время ещё школьником. У меня даже компа тогда не было, но были у друзей, у мамы на работе. Играл там в Wolfenstein под MS-DOS. Друг к ФИДО был подключен, иногда слушал его рассказы оттуда, не особо понимая, что это и зачем.
В школе информатика была на 286-х. Писали программы под Basic. До сих пор помню задания в духе дышащий летающий шарик. А чтобы он быстрее пролетел по экрану, нужно было жать кнопку Turbo на системнике.
В универе изучал и даже что-то писал на Ассемблере. Вообще, я по образованию математик-программист. И много всякого программирования изучал (С++ под Windows и Linux, Java, UML, что-то ещё). Диплом на php писал. Но что-то не зашло. Заинтересовал курс системного администрирования в университете, в итоге стал администратором.
Гимн программистов
⇨ https://www.youtube.com/watch?v=76wzB8-GB98
#юмор #музыка
В школе информатика была на 286-х. Писали программы под Basic. До сих пор помню задания в духе дышащий летающий шарик. А чтобы он быстрее пролетел по экрану, нужно было жать кнопку Turbo на системнике.
В универе изучал и даже что-то писал на Ассемблере. Вообще, я по образованию математик-программист. И много всякого программирования изучал (С++ под Windows и Linux, Java, UML, что-то ещё). Диплом на php писал. Но что-то не зашло. Заинтересовал курс системного администрирования в университете, в итоге стал администратором.
Гимн программистов
⇨ https://www.youtube.com/watch?v=76wzB8-GB98
#юмор #музыка
YouTube
Гимн программистов
Подпишись на новый канал! https://www.youtube.com/channel/UC54mdTbd1EE9Qzw7E3A4Vjg
Меня попросили сделать клип. Сделал, но захотелось выложить на ютюб!
Вступайте в группу ВК - http://vk.com/radioandelectronics
Меня попросили сделать клип. Сделал, но захотелось выложить на ютюб!
Вступайте в группу ВК - http://vk.com/radioandelectronics
🎮 Решил разобрать игры с этого канала по категориям. Не ожидал, что игр окажется так много. Мне кажется, получился самый большой сборник тематических игр, который я где-либо видел по теме IT.
📌 Старые игры по типу Тамагочи:
Компьютерщик – развитие от дворника до программиста-хакера.
Взломщик – игра в том же стиле, что и Компьютерщик, но от другого автора.
Компьютерная эволюция – серия игр похожей тематики, только с уклоном в прокачку железа.
📌 Игры Zachtronics:
SHENZHEN I/O – головоломка-симулятор программирования микроконтроллеров.
Opus Magnum – игра, где в качестве инженера-алхимика предстоит конструировать трансмутации.
SpaceChem – симулятор программиста на тему химии. Вам предстоит разрабатывать химический синтезатор для защиты колонии.
TIS-100 – условный симулятор программирования на ассемблере.
EXAPUNKS – в игре нужно будет учиться программировать, писать вирусы, взламывать системы.
Last Call BBS – игра эпохи начала 90-х, когда владельцы ПК звонили на BBS и таким образом обменивались контентом.
📌 Хакерская тематика:
Uplink – одна из лучших атмосферных игрушек из 2000-х на тему хакеров.
Hacknet – ещё один старенький симулятор хакера с реальным Unix терминалом.
Orwell: Keeping an Eye On You – в роли исследователя-безопасника нужно будет собирать информацию и разбираться в инцидентах.
ThreatGEN: Red vs. Blue – игра про хакинг в стиле пошаговой стратегии, есть онлайн режим с другими игроками.
Hack_me – игра про жизнь обычного хакера.
Grey Hack – многопользовательский симулятор хакера, игра в открытом мире с другими игроками.
Hack 'n' Slash – приключенческая пазл-игра о хакерстве, перепрограммировании свойств объектов, взломе глобальных переменных, настройке поведения существ.
Fate – очень реалистичный симулятор хакера с настоящим терминалом Unix.
Hack RUN – очередной симулятор хакера в духе Fate и Uplink.
Midnight Protocol – современный симулятор хакера в стиле пошаговой стратегии.
Mu Complex – игра в виде головоломки с реальной консолью Linux, надо взламывать системы, искать подсказки.
Hacktag – необычная игрушка на шпионскую и хакерскую тематику, которую надо проходить вдвоём.
Hackmud – многопользовательская игра, в которой сервера защищают различными логическими замками.
Hacker Simulator – современная 3D игра на тему хакера и его деятельности.
📌 Игры Luden.io:
while True: learn() – головоломка-симулятор на тему машинного обучения.
Learning Factory – выстраивание автоматизированной системы процессов на фабрике с применением машинного обучения, чтобы понять, чего хотят котики.
Craftomation 101 – программирование роботов на решение прикладных задач по колонизации планеты.
📌 Игры Wargames на основе взлома реальных систем:
Bandit – игра на тему взлома реальных сервисов в Linux.
Natas – взлом реального веб сайта и системы, на которой он работает.
Leviathan – простая и короткая игра в реальной консоли Linux.
📌 Обучающие:
Oh My Git! – open source игра для изучения GIT.
Vim Adventures – обучающая игра для работы в Vim.
📌 Программирование:
Else Heart.Break() – относительно современная атмосферная игра про программирование. Для игры не обязательно быть программистом.
Elevator Saga – программирование работы лифтов на JavaScript.
JOY OF PROGRAMMING – 3D симулятор на тему разработки программного обеспечения, где для игры нужно писать код на Python.
MHRD – игра про программирование железок в роли инженера.
Human Resource Machine – игра про программирование офисных сотрудников на решение различных задач.
7 Billion Humans – продолжение программирования офисных сотрудников.
Screeps: World – многопользовательская real-time стратегия про программирование искусственного интеллекта юнитов на JavaScript.
Robocode – интеллектуальная игра для программистов, в которой нужно писать на Java или .NET.
Colobot – игра, где нужно создавать программы, в соответствии с которыми действуют роботы.
📌 Разное:
Factorio – симулятор автоматизации и построения конвейеров.
Startup Panic – симулятор IT бизнесмена-стартапера, который начинает путь с программирования в спальне своего нового продукта.
Подборка консольных игр в Linux
#игра #подборка
📌 Старые игры по типу Тамагочи:
Компьютерщик – развитие от дворника до программиста-хакера.
Взломщик – игра в том же стиле, что и Компьютерщик, но от другого автора.
Компьютерная эволюция – серия игр похожей тематики, только с уклоном в прокачку железа.
📌 Игры Zachtronics:
SHENZHEN I/O – головоломка-симулятор программирования микроконтроллеров.
Opus Magnum – игра, где в качестве инженера-алхимика предстоит конструировать трансмутации.
SpaceChem – симулятор программиста на тему химии. Вам предстоит разрабатывать химический синтезатор для защиты колонии.
TIS-100 – условный симулятор программирования на ассемблере.
EXAPUNKS – в игре нужно будет учиться программировать, писать вирусы, взламывать системы.
Last Call BBS – игра эпохи начала 90-х, когда владельцы ПК звонили на BBS и таким образом обменивались контентом.
📌 Хакерская тематика:
Uplink – одна из лучших атмосферных игрушек из 2000-х на тему хакеров.
Hacknet – ещё один старенький симулятор хакера с реальным Unix терминалом.
Orwell: Keeping an Eye On You – в роли исследователя-безопасника нужно будет собирать информацию и разбираться в инцидентах.
ThreatGEN: Red vs. Blue – игра про хакинг в стиле пошаговой стратегии, есть онлайн режим с другими игроками.
Hack_me – игра про жизнь обычного хакера.
Grey Hack – многопользовательский симулятор хакера, игра в открытом мире с другими игроками.
Hack 'n' Slash – приключенческая пазл-игра о хакерстве, перепрограммировании свойств объектов, взломе глобальных переменных, настройке поведения существ.
Fate – очень реалистичный симулятор хакера с настоящим терминалом Unix.
Hack RUN – очередной симулятор хакера в духе Fate и Uplink.
Midnight Protocol – современный симулятор хакера в стиле пошаговой стратегии.
Mu Complex – игра в виде головоломки с реальной консолью Linux, надо взламывать системы, искать подсказки.
Hacktag – необычная игрушка на шпионскую и хакерскую тематику, которую надо проходить вдвоём.
Hackmud – многопользовательская игра, в которой сервера защищают различными логическими замками.
Hacker Simulator – современная 3D игра на тему хакера и его деятельности.
📌 Игры Luden.io:
while True: learn() – головоломка-симулятор на тему машинного обучения.
Learning Factory – выстраивание автоматизированной системы процессов на фабрике с применением машинного обучения, чтобы понять, чего хотят котики.
Craftomation 101 – программирование роботов на решение прикладных задач по колонизации планеты.
📌 Игры Wargames на основе взлома реальных систем:
Bandit – игра на тему взлома реальных сервисов в Linux.
Natas – взлом реального веб сайта и системы, на которой он работает.
Leviathan – простая и короткая игра в реальной консоли Linux.
📌 Обучающие:
Oh My Git! – open source игра для изучения GIT.
Vim Adventures – обучающая игра для работы в Vim.
📌 Программирование:
Else Heart.Break() – относительно современная атмосферная игра про программирование. Для игры не обязательно быть программистом.
Elevator Saga – программирование работы лифтов на JavaScript.
JOY OF PROGRAMMING – 3D симулятор на тему разработки программного обеспечения, где для игры нужно писать код на Python.
MHRD – игра про программирование железок в роли инженера.
Human Resource Machine – игра про программирование офисных сотрудников на решение различных задач.
7 Billion Humans – продолжение программирования офисных сотрудников.
Screeps: World – многопользовательская real-time стратегия про программирование искусственного интеллекта юнитов на JavaScript.
Robocode – интеллектуальная игра для программистов, в которой нужно писать на Java или .NET.
Colobot – игра, где нужно создавать программы, в соответствии с которыми действуют роботы.
📌 Разное:
Factorio – симулятор автоматизации и построения конвейеров.
Startup Panic – симулятор IT бизнесмена-стартапера, который начинает путь с программирования в спальне своего нового продукта.
Подборка консольных игр в Linux
#игра #подборка
Если вам нужно измерять температуру в помещении, где есть компьютер и передавать на него данные, то могу порекомендовать самый простой и дешёвый вариант. В продаже есть usb термометры. Искать по ключевым словам "TEMPer USB" или "Temper2 thermometer usb".
Есть как в магазинах в РФ, так и на Aliexpress. Самые дешёвые варианты - обычные USB устройства без выносных датчиков и без железного корпуса с креплением. Можно подключать их через небольшие USB удлинители до 5-ти метров для измерения температуры воздуха. Есть варианты с выносными датчиками, которые в том числе можно помещать в жидкость. Либо крепить к трубам отопления, чтобы снимать температуру теплоносителя. Бюджетный вариант, если у вас нет никакой внешней автоматики на котле.
Каких-то особых настроек делать надо. Если использовать систему Windows, то достаточно воткнуть такой термометр в USB и запустить программу для снятия метрики. Например, бесплатную ThermoHID. Даже драйвера ставить не надо. Она сразу определяет термометр.
С Linux история сложнее, не намного Можно либо собрать вот эту прогу - TEMPered. Как всё это настроить и скрестить с Zabbix есть статья на хабре. Либо воспользоваться вот этим скриптом на Python. Для Prometheus есть temper-exporter.
Если знаете и использовали какие-то другие варианты, поделитесь в комментариях. Я первый раз такие термометры увидел в небольшой серверной. Потом себе купил один из них и использовал (на картинке сверху). Вчера перебирал свой ящик с различными девайсами и увидел его. Решил написать.
#железо
Есть как в магазинах в РФ, так и на Aliexpress. Самые дешёвые варианты - обычные USB устройства без выносных датчиков и без железного корпуса с креплением. Можно подключать их через небольшие USB удлинители до 5-ти метров для измерения температуры воздуха. Есть варианты с выносными датчиками, которые в том числе можно помещать в жидкость. Либо крепить к трубам отопления, чтобы снимать температуру теплоносителя. Бюджетный вариант, если у вас нет никакой внешней автоматики на котле.
Каких-то особых настроек делать надо. Если использовать систему Windows, то достаточно воткнуть такой термометр в USB и запустить программу для снятия метрики. Например, бесплатную ThermoHID. Даже драйвера ставить не надо. Она сразу определяет термометр.
С Linux история сложнее, не намного Можно либо собрать вот эту прогу - TEMPered. Как всё это настроить и скрестить с Zabbix есть статья на хабре. Либо воспользоваться вот этим скриптом на Python. Для Prometheus есть temper-exporter.
Если знаете и использовали какие-то другие варианты, поделитесь в комментариях. Я первый раз такие термометры увидел в небольшой серверной. Потом себе купил один из них и использовал (на картинке сверху). Вчера перебирал свой ящик с различными девайсами и увидел его. Решил написать.
#железо
Один подписчик поделился со мной информацией о необычном и полезном программном продукте. Изначально он обратился ко мне с просьбой подсказать, какой веб сервер под Windows можно использовать для быстрого запуска локально с флешки размещённого там небольшого проекта. Первое, что мне пришло в голову - Caddy. Это максимально простой веб сервер, состоящий из одного бинарника на Go, который всю конфигурацию хранит в едином конфиге. Версия под Windows тоже есть.
Он в итоге нашёл для себя вариант ещё проще и лучше - Small HTTP server. Пошёл, посмотрел, что это такое. Очень заинтересовала программа. Раньше про неё не слышал. Она из далёкого прошлого. Написана изначально была под Windows 95 и NT, но развивается до сих пор. Свежий релиз от 24.03.24. Код, как я понял, написан на С++ и очень хорошо оптимизирован. Установщик занимает примерно 1 мегабайт (❗️). При этом программа имеет следующие возможности:
◽HTTP сервер. Поддерживает CGI и FastCGI интерфейсы для скриптов (запуск исполняемых файлов; Perl, PHP, и других внешних интерпретаторов), ISAPI (Internet Server API — API для веб-сервера IIS) интерфейс, виртуальные хосты и каталоги.
◽Почтовый сервер POP3 и SMTP. Анти-спам фильтры. Белый, чёрный, и серый списки общие для всех и персональные для каждого пользователя. Переотправка и возможности запускать скрипты для входящих сообщений. Запуск внешнего антивируса.
◽FTP сервер с виртуальными каталогами.
◽HTTP proxy сервер. Поддерживаются HTTP, FTP, HTTPS запросы
Сохранение большого объема трафика, быстрый доступ. Внутренняя докачка при разрывах соединения. Сервер может запрашивать сжатый контент и распаковывать ответ на лету (с использованием внешней Zlib библиотеке).
◽DNS сервер. 🔥Опция динамической проверки сервиса на удаленном хосту и если сервис не работает, автоматическая замена одного IP адреса на другой во всех запросах. Рекурсивный поиск имен от корневых DNS серверов или от DNS серверов провайдера. Кеширование. Опция автоматического ответа на запросы IPv6 адреса. (для сетей, не использующих Internet по IPv6). DNSBL сервер (работает совместно с SMTP). DNS через HTTP(S) известный как DoH (RFC8484).
◽DHCP сервер.
◽HTTP TLS VPN сервер и клиент! Используется OpenVPN Windows TAP драйвер. Описание, как это работает и для чего.
Всё это собрано под Windows и Linux, в том числе ARM. Для Debian есть готовый пакет. Хорошее решение для маломощных одноплатников.
По работе всех служб есть статистика в веб интерфейсе. Я попробовал работу на Windows. Всё работает чётко, запустил без каких-либо проблем. Конфигурация хранится в текстовом файле. Управлять можно как в нём, так и через интерфейс программы. Для запуска достаточно запустить экзешник. По умолчанию веб сервер работает в режиме листинга файлов директории, которая указана, как корень веб сервера. Можно настроить работу как служба.
У программы, несмотря на видимую простоту, очень много настроек и возможностей. Они все перечислены в виде параметров в интерфейсе программы, так что можно быстро их оценить.
Предлагаю автору накидать звёздочек в github и подписаться на Telegram канал. Думаю, ему будет приятно. Программа реально интересная и необычная. Не знаю, что за мотивация у человека столько лет её развивать и поддерживать.
Мне кажется, сейчас программистов С++ уже можно по профильным школам и вузам водить, как ветеранов, и рассказывать от их лица, что программы могут быть маленькими, оптимизированными и работать быстро. А то скоро все вообще забудут, что такое в принципе может быть.
⇨ Сайт / Исходники / TG канал
#webserver #dns #dhcp #ftp
Он в итоге нашёл для себя вариант ещё проще и лучше - Small HTTP server. Пошёл, посмотрел, что это такое. Очень заинтересовала программа. Раньше про неё не слышал. Она из далёкого прошлого. Написана изначально была под Windows 95 и NT, но развивается до сих пор. Свежий релиз от 24.03.24. Код, как я понял, написан на С++ и очень хорошо оптимизирован. Установщик занимает примерно 1 мегабайт (❗️). При этом программа имеет следующие возможности:
◽HTTP сервер. Поддерживает CGI и FastCGI интерфейсы для скриптов (запуск исполняемых файлов; Perl, PHP, и других внешних интерпретаторов), ISAPI (Internet Server API — API для веб-сервера IIS) интерфейс, виртуальные хосты и каталоги.
◽Почтовый сервер POP3 и SMTP. Анти-спам фильтры. Белый, чёрный, и серый списки общие для всех и персональные для каждого пользователя. Переотправка и возможности запускать скрипты для входящих сообщений. Запуск внешнего антивируса.
◽FTP сервер с виртуальными каталогами.
◽HTTP proxy сервер. Поддерживаются HTTP, FTP, HTTPS запросы
Сохранение большого объема трафика, быстрый доступ. Внутренняя докачка при разрывах соединения. Сервер может запрашивать сжатый контент и распаковывать ответ на лету (с использованием внешней Zlib библиотеке).
◽DNS сервер. 🔥Опция динамической проверки сервиса на удаленном хосту и если сервис не работает, автоматическая замена одного IP адреса на другой во всех запросах. Рекурсивный поиск имен от корневых DNS серверов или от DNS серверов провайдера. Кеширование. Опция автоматического ответа на запросы IPv6 адреса. (для сетей, не использующих Internet по IPv6). DNSBL сервер (работает совместно с SMTP). DNS через HTTP(S) известный как DoH (RFC8484).
◽DHCP сервер.
◽HTTP TLS VPN сервер и клиент! Используется OpenVPN Windows TAP драйвер. Описание, как это работает и для чего.
Всё это собрано под Windows и Linux, в том числе ARM. Для Debian есть готовый пакет. Хорошее решение для маломощных одноплатников.
По работе всех служб есть статистика в веб интерфейсе. Я попробовал работу на Windows. Всё работает чётко, запустил без каких-либо проблем. Конфигурация хранится в текстовом файле. Управлять можно как в нём, так и через интерфейс программы. Для запуска достаточно запустить экзешник. По умолчанию веб сервер работает в режиме листинга файлов директории, которая указана, как корень веб сервера. Можно настроить работу как служба.
У программы, несмотря на видимую простоту, очень много настроек и возможностей. Они все перечислены в виде параметров в интерфейсе программы, так что можно быстро их оценить.
Предлагаю автору накидать звёздочек в github и подписаться на Telegram канал. Думаю, ему будет приятно. Программа реально интересная и необычная. Не знаю, что за мотивация у человека столько лет её развивать и поддерживать.
Мне кажется, сейчас программистов С++ уже можно по профильным школам и вузам водить, как ветеранов, и рассказывать от их лица, что программы могут быть маленькими, оптимизированными и работать быстро. А то скоро все вообще забудут, что такое в принципе может быть.
⇨ Сайт / Исходники / TG канал
#webserver #dns #dhcp #ftp
Запуская СУБД PostgreSQL в работу, необходимо в обязательном порядке выполнить хотя бы базовую начальную настройку, которая будет соответствовать количеству ядер и оперативной памяти сервера, а также профилю нагрузки. Это нетривиальная задача, так как там очень много нюансов, а тюнингом баз данных обычно занимаются отдельные специалисты - DBA (Database administrator).
Если у вас такого специалиста нет, а сами вы не особо разбираетесь в этой теме, то можно воспользоваться готовым конфигуратором, который в целом выдаст адекватную настройку для типового использования. Я знаю два таких конфигуратора:
⇨ https://pgconfigurator.cybertec.at
⇨ https://www.pgconfig.org
Первый предлагает немного больше настроек, но во втором есть подробное описание каждой. В целом, у них плюс-минус похожие конфигурации получаются. Можно использовать оба сайта. Если не разбираетесь в настройках, лучше воспользоваться ими.
Отдельно отмечу, что если вы устанавливаете сборку СУБД PostgreSQL для 1C от компании PostgresPro, то там базовые оптимизации уже выполнены. Вы можете увидеть их в самом конце файла
Например, для 1С в сборках PostgresPro неизменно установлен параметр:
Я это проверил и на старом сервере 13-й версии и на более свежем 15-й. В общем случае в 0 его ставить не рекомендуется. Он и дефолтный не 0, и все оптимизаторы его не ставят в 0. Но для 1С рекомендуется именно 0. Я не знаю, в чём тут нюанс, а параметр это важный. Так что для 1С надо быть аккуратным при настройке PostgreSQL. Я из-за этого всегда использую сборки от PostgresPro. Там умные люди уже подумали над оптимизацией.
#postgresql
Если у вас такого специалиста нет, а сами вы не особо разбираетесь в этой теме, то можно воспользоваться готовым конфигуратором, который в целом выдаст адекватную настройку для типового использования. Я знаю два таких конфигуратора:
⇨ https://pgconfigurator.cybertec.at
⇨ https://www.pgconfig.org
Первый предлагает немного больше настроек, но во втором есть подробное описание каждой. В целом, у них плюс-минус похожие конфигурации получаются. Можно использовать оба сайта. Если не разбираетесь в настройках, лучше воспользоваться ими.
Отдельно отмечу, что если вы устанавливаете сборку СУБД PostgreSQL для 1C от компании PostgresPro, то там базовые оптимизации уже выполнены. Вы можете увидеть их в самом конце файла
postgresql.conf
. Там более 30-ти изменённых параметров. В этом случае использовать какие-то сторонние конфигураторы не стоит, так как настройки могут отличаться принципиально. Например, для 1С в сборках PostgresPro неизменно установлен параметр:
max_parallel_workers_per_gather = 0
Я это проверил и на старом сервере 13-й версии и на более свежем 15-й. В общем случае в 0 его ставить не рекомендуется. Он и дефолтный не 0, и все оптимизаторы его не ставят в 0. Но для 1С рекомендуется именно 0. Я не знаю, в чём тут нюанс, а параметр это важный. Так что для 1С надо быть аккуратным при настройке PostgreSQL. Я из-за этого всегда использую сборки от PostgresPro. Там умные люди уже подумали над оптимизацией.
#postgresql
Существует известный сервис для поиска уязвимостей vulners.com. Он платный и относительно дорогой, но при этом есть как бесплатные закрытые сервисы, так и open source продукты, которые вы можете использовать у себя. Покажу несколько примеров бесплатного использования.
1️⃣ Допустим, вы хотите выполнить разовый аудит системы, чтобы быстро понять, какие есть уязвимости в установленных пакетах. Для этого идёте на страницу https://vulners.com/scanner/audit, выбираете слева в меню Manual Audit. Указываете свою версию системы и получаете команду для выгрузки информации о пакетах. Для Debian она будет такая:
Копируете консольный вывод и вставляете в форму на сайте. Получаете результат и удивляетесь, как на свежеобновлённой системе может быть столько уязвимостей. Но если посмотреть внимательно, то почти все они некритические и обновлений для них нет и не будет, либо планируются только в будущем релизе.
Я удивился 10-ти бальной уязвимости по CVSS у tar от 2005 года (CVE-2005-2541). Суть её в том, что tar не информирует пользователя о том, что при извлечении файла у него могут стоять такие setuid и setgid, что сделает возможным запуск файлов с правами суперпользователя, если извлечение было выполнено из под него. На что в security-tracker дебиана разработчики дистрибутива ответили, что это его штатная возможность, в конце концов он же архиватор и поступает так, как ему указывают, ведь надо явно указать ключ
2️⃣ Есть вариант проверять систему на уязвимости автоматически с помощью Agent Scanner. Для этого надо зарегистрироваться в системе и получить API для агента. Бесплатный тарифный план позволяет использовать до 10-ти агентов. Не знаю, насколько сейчас это актуально в рамках всевозможных санкций и блокировок. Я бы ставить не стал.
3️⃣ У vulners.com есть open source скрипт для nmap, который автоматически показывает уязвимости у обнаруженных служб. Вот это реально полезная штука, которая бесплатна, и её удобно использовать. Делается это так. Ставим nmap и клонируем себе репозиторий:
В директорию
Можно сканировать хосты с использованием базы данных vulners:
Результат работы на картинке снизу.
4️⃣ У этого сервиса есть интеграция с Zabbix. Описание и все скрипты есть в отдельном репозитории. Эта штука когда-то работала. Я её пробовал. Некоторый лимит запросов есть через бесплатную учётку. Но работает всё так себе. Поддержки почти нет, с новыми версиями Zabbix сервера, где поменялся API, уже не работает. Когда обновят и будут ли - неизвестно. Так что не тратьте своё время, если вдруг надумаете посмотреть. Идея в целом неплохая, но поддерживать всё это хлопотно в том виде, как оно сделано.
#security #nmap
1️⃣ Допустим, вы хотите выполнить разовый аудит системы, чтобы быстро понять, какие есть уязвимости в установленных пакетах. Для этого идёте на страницу https://vulners.com/scanner/audit, выбираете слева в меню Manual Audit. Указываете свою версию системы и получаете команду для выгрузки информации о пакетах. Для Debian она будет такая:
# dpkg-query -W -f='${Status} ${Package} ${Version} ${Architecture}\n'|awk '($1 == "install") && ($2 == "ok") {print $4" "$5" "$6}'
Копируете консольный вывод и вставляете в форму на сайте. Получаете результат и удивляетесь, как на свежеобновлённой системе может быть столько уязвимостей. Но если посмотреть внимательно, то почти все они некритические и обновлений для них нет и не будет, либо планируются только в будущем релизе.
Я удивился 10-ти бальной уязвимости по CVSS у tar от 2005 года (CVE-2005-2541). Суть её в том, что tar не информирует пользователя о том, что при извлечении файла у него могут стоять такие setuid и setgid, что сделает возможным запуск файлов с правами суперпользователя, если извлечение было выполнено из под него. На что в security-tracker дебиана разработчики дистрибутива ответили, что это его штатная возможность, в конце концов он же архиватор и поступает так, как ему указывают, ведь надо явно указать ключ
-p
.2️⃣ Есть вариант проверять систему на уязвимости автоматически с помощью Agent Scanner. Для этого надо зарегистрироваться в системе и получить API для агента. Бесплатный тарифный план позволяет использовать до 10-ти агентов. Не знаю, насколько сейчас это актуально в рамках всевозможных санкций и блокировок. Я бы ставить не стал.
3️⃣ У vulners.com есть open source скрипт для nmap, который автоматически показывает уязвимости у обнаруженных служб. Вот это реально полезная штука, которая бесплатна, и её удобно использовать. Делается это так. Ставим nmap и клонируем себе репозиторий:
# apt install nmap
# git clone https://github.com/vulnersCom/nmap-vulners
В директорию
~/.nmap/scripts
(если нет, создайте) скопируйте файл из репозитория vulners.nse
. Теперь обновите базу данных:# nmap --script-updatedb
Можно сканировать хосты с использованием базы данных vulners:
# nmap -sV --script vulners 192.168.13.15/32
Результат работы на картинке снизу.
4️⃣ У этого сервиса есть интеграция с Zabbix. Описание и все скрипты есть в отдельном репозитории. Эта штука когда-то работала. Я её пробовал. Некоторый лимит запросов есть через бесплатную учётку. Но работает всё так себе. Поддержки почти нет, с новыми версиями Zabbix сервера, где поменялся API, уже не работает. Когда обновят и будут ли - неизвестно. Так что не тратьте своё время, если вдруг надумаете посмотреть. Идея в целом неплохая, но поддерживать всё это хлопотно в том виде, как оно сделано.
#security #nmap