Меня периодически просят рассказать, как я веду свои дела, с чем работаю, где нахожу заказчиков. Последнее наиболее актуально для вопрошающих. На все эти вопросы я в разное время так или иначе отвечал, поэтому и писать что-то новое не хочется и не имеет смысла.
Я очень консервативен в плане взаимоотношений с людьми и редко меняю что-то, если меня всё устраивает. Редко менял работу (всего две постоянных было, пока я не стал ИП), со всеми заказчиками работаю уже много лет. Последний новый заказчик появился 2 года назад. Так что изменений в этой сфере почти нет.
Вместо этого могу посоветовать свою старую статью про то, как я открыл ИП, для тех, кто её не видел. В конкретных деталях она устарела, так как с Adsense я уже не работаю, бухгалтерию веду не в Эльбе, порядок открытия в налоговой скорее всего поменялся и возможно стал ещё проще и быстрее. Полностью актуальны остались разделы Где брать клиентов и Заключение. Ну и коды ОКВЭД скорее всего не изменились.
Отдельно отмечу комментарии, где мне задали много вопросов, на которые я очень подробно ответил. Также некоторые люди написали интересные содержательные комментарии по данной теме.
❓Вот примерный список вопросов, на которые ответил я:
- Как Вы определяете цену за свою работу?
- Попадались ли ситуации, когда заказчик кидал с оплатой?
- Оформляются ли документы с заказчиком (договоры, ТЗ и пр.)?
- Как обстоят дела с лицензиями?
- Как Вы думаете, почему после собеседования тебя, как ИП, потом часто отказывают в сотрудничестве?
- Можешь вспомнить своего первого клиента после ухода с работы?
- Владимир, а ты работаешь один или у тебя есть сотрудники?
Ну и другие мелкие вопросы. Здесь не стал оформлять всё в отдельную публикацию, потому что по объёму будет превышение и влезет всего 2-3 вопроса с ответами. В комментариях на сайте удобнее будет всю переписку прочитать.
Если у кого-то будут вопросы, то лучше тоже там в комментариях задать. Я по возможности подробно отвечу, когда время будет. Всё это там лучше сохранится, а здесь в переписке затеряется. Для написания комментов не нужна регистрация.
⇨ https://serveradmin.ru/kak-sistemnomu-administratoru-otkryit-ip
#разное
Я очень консервативен в плане взаимоотношений с людьми и редко меняю что-то, если меня всё устраивает. Редко менял работу (всего две постоянных было, пока я не стал ИП), со всеми заказчиками работаю уже много лет. Последний новый заказчик появился 2 года назад. Так что изменений в этой сфере почти нет.
Вместо этого могу посоветовать свою старую статью про то, как я открыл ИП, для тех, кто её не видел. В конкретных деталях она устарела, так как с Adsense я уже не работаю, бухгалтерию веду не в Эльбе, порядок открытия в налоговой скорее всего поменялся и возможно стал ещё проще и быстрее. Полностью актуальны остались разделы Где брать клиентов и Заключение. Ну и коды ОКВЭД скорее всего не изменились.
Отдельно отмечу комментарии, где мне задали много вопросов, на которые я очень подробно ответил. Также некоторые люди написали интересные содержательные комментарии по данной теме.
❓Вот примерный список вопросов, на которые ответил я:
- Как Вы определяете цену за свою работу?
- Попадались ли ситуации, когда заказчик кидал с оплатой?
- Оформляются ли документы с заказчиком (договоры, ТЗ и пр.)?
- Как обстоят дела с лицензиями?
- Как Вы думаете, почему после собеседования тебя, как ИП, потом часто отказывают в сотрудничестве?
- Можешь вспомнить своего первого клиента после ухода с работы?
- Владимир, а ты работаешь один или у тебя есть сотрудники?
Ну и другие мелкие вопросы. Здесь не стал оформлять всё в отдельную публикацию, потому что по объёму будет превышение и влезет всего 2-3 вопроса с ответами. В комментариях на сайте удобнее будет всю переписку прочитать.
Если у кого-то будут вопросы, то лучше тоже там в комментариях задать. Я по возможности подробно отвечу, когда время будет. Всё это там лучше сохранится, а здесь в переписке затеряется. Для написания комментов не нужна регистрация.
⇨ https://serveradmin.ru/kak-sistemnomu-administratoru-otkryit-ip
#разное
Server Admin
Открытие ИП системным администратором
Подробная пошаговая инструкция для открытия и работы в качестве ИП системному администратору. Личный опыт автора.
👍69👎2
▶️ Я уже рассказывал про классный мониторинг Uptime Kuma, который можно развернуть у себя. Он умеет мониторить сайты и всё, что с ними связано, а также делать простые icmp проверки, проверки tcp портов и Docker контейнеров.
На канале realmanual, автора которого вы часто можете видеть в комментариях к моим заметкам, вышло подробное видео на тему этого мониторинга. Там он рассказывает не только про установку и настройку, которые просты, но и углубляется в автоматизацию. С помощью API он настроил добавление и удаление мониторов.
Если не знакомы с Uptime Kuma, рекомендую обратить внимание. Очень приятный и удобный мониторинг доступности хостов и сервисов. Активно поддерживается и развивается. В видео подробно про него рассказано на примере уже настроенного большого мониторинга.
⇨ https://www.youtube.com/watch?v=7gN9_Ph-9Z4
#мониторинг #видео
На канале realmanual, автора которого вы часто можете видеть в комментариях к моим заметкам, вышло подробное видео на тему этого мониторинга. Там он рассказывает не только про установку и настройку, которые просты, но и углубляется в автоматизацию. С помощью API он настроил добавление и удаление мониторов.
Если не знакомы с Uptime Kuma, рекомендую обратить внимание. Очень приятный и удобный мониторинг доступности хостов и сервисов. Активно поддерживается и развивается. В видео подробно про него рассказано на примере уже настроенного большого мониторинга.
⇨ https://www.youtube.com/watch?v=7gN9_Ph-9Z4
#мониторинг #видео
👍53👎2
▶️ В интернете масса статей и видео по настройке одного из самых популярных веб серверов Nginx. Разработчики в какой-то момент озаботились тем, чтобы самим выпустить канонические руководства, по которым стоит настраивать их веб сервер. Эти руководства они поддерживают и по мере необходимости обновляют.
Если вы отдаёте предпочтение информации от вендора, то для поиска инструкций разумнее обратиться на его официальный канал. К тому же все основные темы они вынесли в отдельный плейлист:
⇨ https://youtube.com/playlist?list=PLGz_X9w9raXf748bzuGOV6XJv7q3wLxhZ
🎓 Список тем из него:
◽How to define and publish APIs using NGINX Controller
◽How to Set Quotas with NGINX Plus
◽How to Set Up SSL with NGINX
◽How to Serve Static Content
◽How to Install NGINX on Debian and Ubuntu
◽How to create an API Dev Portal using NGINX Controller
◽Key Files, Commands, and Directories with NGINX
◽How to Install NGINX on CentOS and Red Hat
◽How to Install NGINX Amplify on Linux
◽NGINX Unit: From Zero to Lift Off
◽Dynamic SSL Key Management with NGINX
◽Getting Started with NGINX Service Mesh
◽NGINX as an API Gateway
◽How to Configure NGINX Plus as a WAF Using NGINX App Protect
◽NGINX App Protect Denial of Service (DoS) Overview
◽Configure NGINX as a Reverse Proxy
◽How to Streamline API Operations with API Connectivity Manager
Все видео на английском. Если не знаете его, можно спокойно всё понять через переводчик в режиме реального времени от Яндекса, или с английскими субтитрами. Часть тем актуальна для только версии Plus.
#nginx #видео #обучение
Если вы отдаёте предпочтение информации от вендора, то для поиска инструкций разумнее обратиться на его официальный канал. К тому же все основные темы они вынесли в отдельный плейлист:
⇨ https://youtube.com/playlist?list=PLGz_X9w9raXf748bzuGOV6XJv7q3wLxhZ
🎓 Список тем из него:
◽How to define and publish APIs using NGINX Controller
◽How to Set Quotas with NGINX Plus
◽How to Set Up SSL with NGINX
◽How to Serve Static Content
◽How to Install NGINX on Debian and Ubuntu
◽How to create an API Dev Portal using NGINX Controller
◽Key Files, Commands, and Directories with NGINX
◽How to Install NGINX on CentOS and Red Hat
◽How to Install NGINX Amplify on Linux
◽NGINX Unit: From Zero to Lift Off
◽Dynamic SSL Key Management with NGINX
◽Getting Started with NGINX Service Mesh
◽NGINX as an API Gateway
◽How to Configure NGINX Plus as a WAF Using NGINX App Protect
◽NGINX App Protect Denial of Service (DoS) Overview
◽Configure NGINX as a Reverse Proxy
◽How to Streamline API Operations with API Connectivity Manager
Все видео на английском. Если не знаете его, можно спокойно всё понять через переводчик в режиме реального времени от Яндекса, или с английскими субтитрами. Часть тем актуальна для только версии Plus.
#nginx #видео #обучение
👍73👎2
Сколько вы знаете способов увидеть, под каким пользователем работаете в ОС на базе Linux? На практике эта информация нужна не так часто, если ты работаешь в консоли. Обычно и так знаешь, под каким пользователем подключаешься. Также его видно в строке ввода терминала в bash. Исключения бывают, когда приходится работать под отдельным пользователем для настройки какого-то софта. Например, postgresql. Удобнее зайти под пользователем postgres и работать в его окружении.
Традиционные способы через утилиты:
К примеру, если запустить whoami и id под sudo, вы увидите пользователя root, а в logname — пользователя, под которым вы запускаете sudo. Это может быть полезно, если выполняете какой-то скрипт под sudo, и вам нужно сделать проверку пользователя, который его запускает. Например, разрешить запуск скрипта только если он запущен конкретным пользователем (script_allow_user).
Отдельно стоит упомянуть утилиту из состава systemd —
#bash #script
Традиционные способы через утилиты:
whoami, id , logname, w и т. д. Можно посмотреть через переменные окружения: echo $LOGNAME и echo $USER. Все эти способы вроде бы похожи друг на друга, но на самом деле есть некоторые принципиальные отличия. К примеру, если запустить whoami и id под sudo, вы увидите пользователя root, а в logname — пользователя, под которым вы запускаете sudo. Это может быть полезно, если выполняете какой-то скрипт под sudo, и вам нужно сделать проверку пользователя, который его запускает. Например, разрешить запуск скрипта только если он запущен конкретным пользователем (script_allow_user).
if [[ "$(logname)" = 'script_allow_user' ]]then echo "Start script execution..." ...............................................else echo "This user is not allowed to run the script"fiОтдельно стоит упомянуть утилиту из состава systemd —
loginctl. С её помощью можно узнать массу всего не только об активном пользователе, но и о сессиях, и даже управлять ими.# loginctl user-status#bash #script
👍67👎2
Небольшой полезный сервис, с помощью которого вы можете очень быстро настроить доступ к локальному сервису через интернет. Речь пойдёт про pinggy.io. Покажу сразу на конкретном примере, что это такое.
Допустим, вы запускаете http сервер на локальном сервере, чтобы получить доступ к файлам в директории:
Теперь по адресу http://172.25.228.79:8000/ вы сможете увидеть содержимое директории /var/log. Если вы хотите получить доступ к этой директории через интернет, то воспользуйтесь указанным сервисом:
Эта команда выполнит переадресацию локального порта 8000 по ssh на сервер pinggy.io, который выдаст вам временное доменное имя и настроит доступ к вашему сервису через интернет. Ссылка будет вида https://ranfgxbznvwfo.a.pinggy.io. Пройдя по ней, вы попадёте на свой локальный веб сервер. Статистику по действиям пользователей увидите прямо в консоли сервера.
Всё устроено довольно просто. То же самое вы сможете сделать и со своим сервером, у которого настроен ssh и есть публичный IP адрес. Но с помощью pinggy.io это сделать намного быстрее, так как тут автоматом создаётся и настраивается поддомен.
Сервис платный, но есть бесплатный тарифный план, который доступен без регистрации и каких-то дополнительных действий. Достаточно выполнить команду в консоли с ssh соединением. Основное ограничение бесплатного тарифа — через 60 минут бездействия туннель отключается.
В заметке использовался веб сервер python и переадресация портов ssh. Веб сервер был взят для примера. Настроить доступ через интернет можно к любому локальному сервису.
#сервис #бесплатно
Допустим, вы запускаете http сервер на локальном сервере, чтобы получить доступ к файлам в директории:
# cd /var/log# python3 -m http.serverТеперь по адресу http://172.25.228.79:8000/ вы сможете увидеть содержимое директории /var/log. Если вы хотите получить доступ к этой директории через интернет, то воспользуйтесь указанным сервисом:
# ssh -p 443 -R0:localhost:8000 -L4300:localhost:4300 a.pinggy.ioЭта команда выполнит переадресацию локального порта 8000 по ssh на сервер pinggy.io, который выдаст вам временное доменное имя и настроит доступ к вашему сервису через интернет. Ссылка будет вида https://ranfgxbznvwfo.a.pinggy.io. Пройдя по ней, вы попадёте на свой локальный веб сервер. Статистику по действиям пользователей увидите прямо в консоли сервера.
Всё устроено довольно просто. То же самое вы сможете сделать и со своим сервером, у которого настроен ssh и есть публичный IP адрес. Но с помощью pinggy.io это сделать намного быстрее, так как тут автоматом создаётся и настраивается поддомен.
Сервис платный, но есть бесплатный тарифный план, который доступен без регистрации и каких-то дополнительных действий. Достаточно выполнить команду в консоли с ssh соединением. Основное ограничение бесплатного тарифа — через 60 минут бездействия туннель отключается.
В заметке использовался веб сервер python и переадресация портов ssh. Веб сервер был взят для примера. Настроить доступ через интернет можно к любому локальному сервису.
#сервис #бесплатно
👍45👎2
Давно не было заметок о Zabbix, хотя я с ним регулярно работаю. В основном привычные настройки делал. Из последнего — настраивал мониторинг сайтов, docker контейнеров, бэкапов. Стандартный шаблон для Docker очень нравится. Полезные метрики, оповещения, всё на автообнаружении сделано. Ручной работы нет. Статьи в целом актуальны по смыслу и идеям реализации, но где-то в деталях и картинках устарели. Планирую после релиза 7.0 весь раздел по Zabbix на сайте актуализировать.
От команды Zabbix последнее время не было каких-то значимых новостей, заметок в блоге или на ютуб канале. Я за всем этим слежу. Из более ли менее интересных событий отмечу следующие:
▪ Появился шаблон оповещений для интеграции с новой технологией Event-Driven Ansible.
▪ На днях в блоге вышла очень хорошая статья, описывающая принципы создания новых метрик с использованием различных преобразований. Для примера там взяли типовой шаблон для Nginx и показали, как к базовым метрикам добавить новые. Например, показать динамику изменения числа запросов к веб серверу и вывести метрику на дашборд. Таких примеров там много, статья большая. Рекоvендую, если осваиваете Zabbix.
▪ Ещё одна интересная статья про добавление в Zabbix метеокарты. К сожалению, статья слишком поверхностная и у меня быстро не получилось повторить настройку. Более детально разбираться не было времени. Хотел для личного использования настроить.
▪ В Zabbix 6.4 появилась возможность выгружать события из Zabbix в режиме реального времени в другие системы. В статье описан пример реализации этой функциональности.
▪ Цикл видео про настройку мониторинга Kubernetes с помощью Zabbix (1, 2, 3 части)
▪ 25 мая будет вебинар на русском языке — Обзор системы мониторинга Zabbix.
💡Релиз Zabbix 7.0 LTS обещают к концу этого года. Думаю, перенесут на начало 2024, как это обычно бывает. Там много полезного обещают завести. Например, сбор метрик из сторонних TSDB, наконец-то обновление раздела Inventory. Я думал, они его в конце концов уберут. Обновление мониторинга сайтов обещают, но пока даже не начали разработку. Скорее всего отложат.
#zabbix
От команды Zabbix последнее время не было каких-то значимых новостей, заметок в блоге или на ютуб канале. Я за всем этим слежу. Из более ли менее интересных событий отмечу следующие:
▪ Появился шаблон оповещений для интеграции с новой технологией Event-Driven Ansible.
▪ На днях в блоге вышла очень хорошая статья, описывающая принципы создания новых метрик с использованием различных преобразований. Для примера там взяли типовой шаблон для Nginx и показали, как к базовым метрикам добавить новые. Например, показать динамику изменения числа запросов к веб серверу и вывести метрику на дашборд. Таких примеров там много, статья большая. Рекоvендую, если осваиваете Zabbix.
▪ Ещё одна интересная статья про добавление в Zabbix метеокарты. К сожалению, статья слишком поверхностная и у меня быстро не получилось повторить настройку. Более детально разбираться не было времени. Хотел для личного использования настроить.
▪ В Zabbix 6.4 появилась возможность выгружать события из Zabbix в режиме реального времени в другие системы. В статье описан пример реализации этой функциональности.
▪ Цикл видео про настройку мониторинга Kubernetes с помощью Zabbix (1, 2, 3 части)
▪ 25 мая будет вебинар на русском языке — Обзор системы мониторинга Zabbix.
💡Релиз Zabbix 7.0 LTS обещают к концу этого года. Думаю, перенесут на начало 2024, как это обычно бывает. Там много полезного обещают завести. Например, сбор метрик из сторонних TSDB, наконец-то обновление раздела Inventory. Я думал, они его в конце концов уберут. Обновление мониторинга сайтов обещают, но пока даже не начали разработку. Скорее всего отложат.
#zabbix
👍41👎2
Пользуюсь утилитой screen почти столько же лет, сколько использую Linux. В основном для того, чтобы не завершалась ssh сессия после разрыва соединения. И только на днях один подписчик написал, что её можно использовать для доступа другого пользователя к своей сессии или наоборот. Не знал об это и никогда не видел. Делал когда-то заметки про бесплатные сервисы, которые позволяют шарить консоль, по типу того, как это происходит в teamviewer или anydesk, только для консоли.
Если подключились под одной учётной записью к серверу, то любому из подключившихся достаточно создать сессию screen:
И обоим подключиться к ней:
Теперь у обоих одна консоль на двоих. Все команды отображаются у обоих подключившихся.
Для разных пользователей действия другие. Для начала необходимо установить suid бит, чтобы screen всегда запускался с привилегиями суперпользователя:
Теперь запускаем, к примеру, сессию у root и открываем доступ для пользователя zerox:
Зайдя в сессию от root, разрешаем подключиться пользователю zerox. Для этого в терминале нажимаем комбинацию Ctrl-a и вводим команду:
Потом снова Ctrl-a и команду:
Подключаемся пользователем zerox и оказываемся в одной сессии с root:
Постороннему пользователю можно выдать как полные права, так и только на чтение. По умолчанию даются полные. Чтобы дать только на чтение, нужно добавить команду в сессии через Ctrl-a:
Немного погуглил эту тему и нашёл статью о том, как человек подглядывал за тех. поддержкой одного продукта, которая не хотела делиться инструкцией по настройке. В итоге он скриптом со screen подменил оболочку этому сотруднику и следил за ним через общую сессию screen.
#linux #screen
Если подключились под одной учётной записью к серверу, то любому из подключившихся достаточно создать сессию screen:
# screen -d -m -S sharedИ обоим подключиться к ней:
# screen -x sharedТеперь у обоих одна консоль на двоих. Все команды отображаются у обоих подключившихся.
Для разных пользователей действия другие. Для начала необходимо установить suid бит, чтобы screen всегда запускался с привилегиями суперпользователя:
# chmod u+s $(which screen)# chmod 755 /var/run/screen# rm -fr /var/run/screen/*Теперь запускаем, к примеру, сессию у root и открываем доступ для пользователя zerox:
# screen -d -m -S shared# screen -r sharedЗайдя в сессию от root, разрешаем подключиться пользователю zerox. Для этого в терминале нажимаем комбинацию Ctrl-a и вводим команду:
:multiuser onПотом снова Ctrl-a и команду:
Ctrl-a :acladd zeroxПодключаемся пользователем zerox и оказываемся в одной сессии с root:
# screen -x root/sharedПостороннему пользователю можно выдать как полные права, так и только на чтение. По умолчанию даются полные. Чтобы дать только на чтение, нужно добавить команду в сессии через Ctrl-a:
:writelock onНемного погуглил эту тему и нашёл статью о том, как человек подглядывал за тех. поддержкой одного продукта, которая не хотела делиться инструкцией по настройке. В итоге он скриптом со screen подменил оболочку этому сотруднику и следил за ним через общую сессию screen.
#linux #screen
👍146👎4
Мне подсказали интересную программу для управления сетевыми устройствами — Mupsbox. Вышла она в 2019 году и изначально поддерживала только микротики. Сейчас поддерживает помимо него остальных популярных вендоров (Cisco, HP, Dlink, Huawei и т.д.). Привлекла она меня в первую очередь тем, что бесплатная версия имеет хорошую функциональность, которая позволяет полноценно использовать программу.
🟢 Основные возможности Mupsbox:
◽Управление сетевыми устройствами.
◽Бэкап, восстановление, сравнение архивов и конфигураций.
◽Подсчёт трафика.
◽Syslog сервер для сбора логов.
◽Функциональность HotSpot для доступа в сеть.
Mupsbox представляет из себя приложение под Windows с типовым установщиком. База локальная, хранится в firebird. Выглядит немного непривычно, потому что какого-то стандарта для такого рода приложений нет, но я довольно быстро установил и разобрался, немного подсмотрев инструкцию.
🔴 Ограничения бесплатной версии:
◽Добавление устройств и управление без ограничений.
◽Бэкап только 10 устройств.
◽Подсчёт трафика только для 3-х устройств, хранение статистики — неделя.
◽Syslog сервер только для 1 устройства, хранение лога — неделя.
◽Hotspot для одного устройства и только 5 аутентификаций в сутки.
Программа состоит из основного приложения и набора служб Windows, которые настраиваются и запускаются по необходимости. Отдельная служба ftp, sftp, tftp для сбора логов, отдельная для syslog сервера, отдельная для web интерфейса и т.д. Программа умеет отправлять оповещения по email или telegram.
Стоимость платных лицензий невысока. Разработчики из России, и тут есть компания, которая готова их продавать. Все цены и контакты есть на сайте. Даже бесплатная версия позволяет добавлять устройства без ограничений, что само по себе уже удобно, если нет никаких других программ для этих целей. Будет всё в одном списке с возможностью посмотреть основную информацию и быстро подключиться к устройству. Туда можно и любые Linux серверы добавлять по SSH, но я не совсем понял, для чего это может быть нужно.
Сначала подумал, что проект заброшен. Сайт выглядит каким-то недоделанным. Но судя по новостям, не так давно вышла очередная новая версия с множеством изменений и доработок.
⇨ Сайт / Обзор / Telegram группа
#network #mikrotik #backup
🟢 Основные возможности Mupsbox:
◽Управление сетевыми устройствами.
◽Бэкап, восстановление, сравнение архивов и конфигураций.
◽Подсчёт трафика.
◽Syslog сервер для сбора логов.
◽Функциональность HotSpot для доступа в сеть.
Mupsbox представляет из себя приложение под Windows с типовым установщиком. База локальная, хранится в firebird. Выглядит немного непривычно, потому что какого-то стандарта для такого рода приложений нет, но я довольно быстро установил и разобрался, немного подсмотрев инструкцию.
🔴 Ограничения бесплатной версии:
◽Добавление устройств и управление без ограничений.
◽Бэкап только 10 устройств.
◽Подсчёт трафика только для 3-х устройств, хранение статистики — неделя.
◽Syslog сервер только для 1 устройства, хранение лога — неделя.
◽Hotspot для одного устройства и только 5 аутентификаций в сутки.
Программа состоит из основного приложения и набора служб Windows, которые настраиваются и запускаются по необходимости. Отдельная служба ftp, sftp, tftp для сбора логов, отдельная для syslog сервера, отдельная для web интерфейса и т.д. Программа умеет отправлять оповещения по email или telegram.
Стоимость платных лицензий невысока. Разработчики из России, и тут есть компания, которая готова их продавать. Все цены и контакты есть на сайте. Даже бесплатная версия позволяет добавлять устройства без ограничений, что само по себе уже удобно, если нет никаких других программ для этих целей. Будет всё в одном списке с возможностью посмотреть основную информацию и быстро подключиться к устройству. Туда можно и любые Linux серверы добавлять по SSH, но я не совсем понял, для чего это может быть нужно.
Сначала подумал, что проект заброшен. Сайт выглядит каким-то недоделанным. Но судя по новостям, не так давно вышла очередная новая версия с множеством изменений и доработок.
⇨ Сайт / Обзор / Telegram группа
#network #mikrotik #backup
👍59👎4
Думаю, многие из вас помнят приятную халяву от Oracle, когда можно было получить несколько бесплатных виртуалок навсегда. У меня была парочка, которая успешно работала длительное время, пока не случился февраль 2022. После этого все учётные записи пользователей из РФ были заблокированы. Я особо сильно не расстроился, так как очевидно, что подобную халяву можно использовать только для каких-то тестов. У меня там личные VPN жили.
Недавно увидел видео на ютубе на одном из каналов, которые регулярно смотрю — БЕСПЛАТНЫЕ СЕРВЕРА ORACLE. ТЕПЕРЬ БЕЗ КАРТЫ!. Информация заинтересовала, решил проверить. Сразу скажу итог — то, что описано, больше не работает в том виде, как там показано. Пишу эту заметку для того, чтобы вы не тратили время и лишний раз не расстраивались.
На момент записи видео тема была рабочая. Видно было по комментариям, что у некоторых всё получилось. Там смысл в том, что после записи на тематический вебинар можно было получить приглашение на регистрацию аккаунта с бесплатными ресурсами без подтверждения платежа. С карточками РФ подтвердить платёж невозможно, так что это был выход. Главное не спалиться, что ты из РФ.
У меня для всякой санкционки есть отдельная виртуалка с чистым браузером и автоматическим подключением после загрузки к VPN серверу в США. С её помощью я без проблем и лишних заморочек обхожу различные ограничения. Так что попробовать эту методу у меня не составило труда. Всё сделал, как описано, но при регистрации всё равно попросили платёжную карту предоставить. Судя по свежим отзывам в комментариях, это у всех так теперь.
Написал заметку, чтобы вы не тратили время на этот способ, если где-то его увидите. Ну и если вдруг у кого-то всё же получилось зарегистрировать учётку в Oracle Cloud и получить виртуальные сервера бесплатно, то расскажите, как вы это сделали.
Недавно увидел видео на ютубе на одном из каналов, которые регулярно смотрю — БЕСПЛАТНЫЕ СЕРВЕРА ORACLE. ТЕПЕРЬ БЕЗ КАРТЫ!. Информация заинтересовала, решил проверить. Сразу скажу итог — то, что описано, больше не работает в том виде, как там показано. Пишу эту заметку для того, чтобы вы не тратили время и лишний раз не расстраивались.
На момент записи видео тема была рабочая. Видно было по комментариям, что у некоторых всё получилось. Там смысл в том, что после записи на тематический вебинар можно было получить приглашение на регистрацию аккаунта с бесплатными ресурсами без подтверждения платежа. С карточками РФ подтвердить платёж невозможно, так что это был выход. Главное не спалиться, что ты из РФ.
У меня для всякой санкционки есть отдельная виртуалка с чистым браузером и автоматическим подключением после загрузки к VPN серверу в США. С её помощью я без проблем и лишних заморочек обхожу различные ограничения. Так что попробовать эту методу у меня не составило труда. Всё сделал, как описано, но при регистрации всё равно попросили платёжную карту предоставить. Судя по свежим отзывам в комментариях, это у всех так теперь.
Написал заметку, чтобы вы не тратили время на этот способ, если где-то его увидите. Ну и если вдруг у кого-то всё же получилось зарегистрировать учётку в Oracle Cloud и получить виртуальные сервера бесплатно, то расскажите, как вы это сделали.
YouTube
БЕСПЛАТНЫЕ СЕРВЕРА ORACLE. ТЕПЕРЬ БЕЗ КАРТЫ!
Oracle раздает бесплатные сервера теперь вообще не требуя карт! Регистрация возможна с любых IP адресов тех стран, где нет санкций, то есть воспользуемся обычным VPN.
==============================
Я В ТЕЛЕГРАМ https://xn--r1a.website/worldranger
ТЕЛЕГРАМ КАНАЛ ht…
==============================
Я В ТЕЛЕГРАМ https://xn--r1a.website/worldranger
ТЕЛЕГРАМ КАНАЛ ht…
1👍69👎3
Веб сервер Nginx уже давно умеет писать логи в json формате. В настройке по умолчанию используются текстовые логи. Да и почти везде, где мне приходится видеть логи веб сервера, они в текстовом формате. Если ещё не используете json формат для логов, то предлагаю вам пересмотреть свои привычки и использовать. Это удобно и для ручного просмотра логов, и для парсинга в тех или иных системах.
Настроить json логи очень просто. Вот пример для привычного формата combined, только в json. Добавляем в основной конфиг в раздел http { }.
И дальше либо в общую настройку, либо в настройку логов виртуального хоста добавляем:
Теперь, если отправить логи в ELK или Zabbix, их обработка будет упрощена, так как для json формата там есть готовые обработчики. А в консоли логи удобно смотреть с помощью jq. Смотрим весь лог:
Смотрим только список урлов, к которым были обращения:
Выводим полные записи логов, где только 404 коды ответов:
Теперь то же самое, только выводим не полные строки, а урл, где код ответа был 404:
Добавим сюда же информацию о времени запроса:
Думаю, идею вы поняли. Json смотреть проще, быстрее и гибче, нежели грепать или обрабатывать утилитами типа sed, awk и т.д. Надо только немного изучить синтаксис jq. Если хотите получить значения без кавычек " ", то добавьте к jq ключ -r:
Все переменные, которые вы можете использовать в логе, перечислены в документации к модулю ngx_http_core_module. Я обычно добавляю некоторые переменные к стандартным, а именно:
◽$request_length, $upstream_addr,
◽$upstream_status,
◽$upstream_response_time,
◽$upstream_connect_time,
◽$upstream_header_time,
◽$server_name,
◽$ssl_protocol,
◽$ssl_cipher.
#nginx #jq
Настроить json логи очень просто. Вот пример для привычного формата combined, только в json. Добавляем в основной конфиг в раздел http { }.
log_format json_combined escape=json '{' '"time_local":"$time_local",' '"remote_addr":"$remote_addr",' '"remote_user":"$remote_user",' '"request":"$request",' '"status": "$status",' '"body_bytes_sent":"$body_bytes_sent",' '"request_time":"$request_time",' '"http_referrer":"$http_referer",' '"http_user_agent":"$http_user_agent"' '}';И дальше либо в общую настройку, либо в настройку логов виртуального хоста добавляем:
access_log /var/log/nginx/access.log json_combined;Теперь, если отправить логи в ELK или Zabbix, их обработка будет упрощена, так как для json формата там есть готовые обработчики. А в консоли логи удобно смотреть с помощью jq. Смотрим весь лог:
# jq '.' access.logСмотрим только список урлов, к которым были обращения:
# jq '.request' access.logВыводим полные записи логов, где только 404 коды ответов:
# jq '. | select(.status=="404")' access.logТеперь то же самое, только выводим не полные строки, а урл, где код ответа был 404:
# jq '. | select(.status=="404") | .request' access.logДобавим сюда же информацию о времени запроса:
# jq '. | select(.status=="404") | .time_local,.request' access.logДумаю, идею вы поняли. Json смотреть проще, быстрее и гибче, нежели грепать или обрабатывать утилитами типа sed, awk и т.д. Надо только немного изучить синтаксис jq. Если хотите получить значения без кавычек " ", то добавьте к jq ключ -r:
# jq -r '.request' access.logВсе переменные, которые вы можете использовать в логе, перечислены в документации к модулю ngx_http_core_module. Я обычно добавляю некоторые переменные к стандартным, а именно:
◽$request_length, $upstream_addr,
◽$upstream_status,
◽$upstream_response_time,
◽$upstream_connect_time,
◽$upstream_header_time,
◽$server_name,
◽$ssl_protocol,
◽$ssl_cipher.
#nginx #jq
👍110👎3
Ранее я пробовал и рассказывал, как настроить VDI (Virtual Desktop Infrastructure) на базе Proxmox. Для этого нужно немного поднастроить гипервизор и использовать PVE-VDIClient для подключения к рабочим местам. Читайте, кому интересно, отдельную заметку по этому поводу.
С тех времён у меня в закладках осталась система Ravada VDI, которую я хотел попробовать, но так руки и не дошли. Нужен железный сервер, но он так и не подвернулся под руку. Поэтому рассказываю как есть по информации с их сайта.
Ravada — open source проект для организации VDI на базе гипервизора KVM. Разворачивается на типовых дистрибутивах: Debian, Ubuntu или Fedora. Для установки есть собранные deb и rpm пакеты, так что установка очень простая — скачиваем и устанавливаем пакет. Пример установки на Debian. Для хранения информации необходим MariaDB сервер. В комплекте с Ravada идёт веб сервер. Всё управление системой выполняется через браузер.
Судя по документации, настройка простая и быстрая. С помощью Ravada можно организовать рабочие места как на Linux, так и Windows. Для подключения к виртуальным машинам можно использовать virt-viewer. Подключение работает по протоколу SPICE. Есть интеграция с LDAP сервером. Пользователей можно брать оттуда.
Проект мне показался интересным и полезным. Бесплатных продуктов по данной тематике почти нет. Это удел крупных корпоративных систем за много денег. А для какого-нибудь учебного класса система, подобная Ravada, будет в самый раз. К тому же она активно развивается. Регулярно выходят новые релизы.
⇨ Сайт / Исходники
С тех времён у меня в закладках осталась система Ravada VDI, которую я хотел попробовать, но так руки и не дошли. Нужен железный сервер, но он так и не подвернулся под руку. Поэтому рассказываю как есть по информации с их сайта.
Ravada — open source проект для организации VDI на базе гипервизора KVM. Разворачивается на типовых дистрибутивах: Debian, Ubuntu или Fedora. Для установки есть собранные deb и rpm пакеты, так что установка очень простая — скачиваем и устанавливаем пакет. Пример установки на Debian. Для хранения информации необходим MariaDB сервер. В комплекте с Ravada идёт веб сервер. Всё управление системой выполняется через браузер.
Судя по документации, настройка простая и быстрая. С помощью Ravada можно организовать рабочие места как на Linux, так и Windows. Для подключения к виртуальным машинам можно использовать virt-viewer. Подключение работает по протоколу SPICE. Есть интеграция с LDAP сервером. Пользователей можно брать оттуда.
Проект мне показался интересным и полезным. Бесплатных продуктов по данной тематике почти нет. Это удел крупных корпоративных систем за много денег. А для какого-нибудь учебного класса система, подобная Ravada, будет в самый раз. К тому же она активно развивается. Регулярно выходят новые релизы.
⇨ Сайт / Исходники
👍71👎2
Тема тюнинга сетевого стека очень узкая и сложная. В сети в основном все перепечатывают статьи друг у друга. Когда изучал тему, сразу это бросилось в глаза. За основу имеет смысл взять вот эти материалы, которые мне понравились больше всего:
⇨ Описание некоторых sysctl переменных ядра Linux
⇨ Настройка ядра Linux для тяжелых проектов и защиты от DDOS
⇨ Настройка Linux для HL и защиты от DDoS
⇨ Когда TCP-сокеты отказываются умирать
Многое устарело, либо не соответствует текущим настройкам по умолчанию. Какие-то механизмы и так в современных ядрах включены. Ниже моя компиляция того, что показалось актуальным на текущий момент. В основном это то, что касается таймаутов и потребления памяти. Её сейчас много и она дешёвая.
📌 Увеличиваем значение tcp_max_orphans, которое отвечает за максимальное число осиротевших (не связанных ни с одним процессом) сокетов TCP. Каждый такой сокет съедает примерно 64 Кб памяти. Так что параметр нужно сопоставлять с доступной памятью на сервере.
📌 Уменьшаем tcp_fin_timeout (по умолчанию 60). Параметр отвечает за максимальное время пребывания сокета в состоянии FIN-WAIT-2. Это состояние используется в тех случаях, когда другая сторона не закрыла соединение. Каждый сокет занимает порядка 1.5 Кб памяти, что может подъедать её, когда их очень много.
📌 Параметры, отвечающие за проверку TCP соединений в статусе SO_KEEPALIVE: keepalive_time определяет время, через которое начнутся проверки после последней активности соединения, keepalive_intvl определяет интервал проверки, а keepalive_probes количество этих проверок.
📌 Стоит обратить внимание на параметры
📌 Отключаем (по умолчанию включено) передачу syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета.
📌 Отдельное внимание алгоритму, который используется для контроля перегрузки в TCP сетях. Их много (cubic, htcp, bic, westwood и т.д.) и однозначно сказать, что лучше использовать, трудно. В разных схемах нагрузки алгоритмы показывают разные результаты. Управляет этим параметр ядра tcp_congestion_control:
📌 При большом количестве исходящих соединений сервера может не хватать локальных портов для них. По умолчанию используется диапазон 32768 - 60999. Его можно расширить:
📌 Включаем защиту от TIME_WAIT атак. По умолчанию она отключена.
📌 Максимальное число открытых сокетов, ждущих соединения, по умолчанию имеет довольно низкое значение. В ядрах до 5.3 это 128, в 5.4 увеличили до 4096. На нагруженных и мощных серверах имеет смысл увеличить:
📌 На мощных и нагруженных серверах можно увеличить стандартные значения размера буфера приёма и передачи для всех соединений. Параметр измеряется в байтах. По умолчанию это 212992 или 208 КБ.
📌 Отключаем локальные перенаправления ICMP пакетов. Делать это стоит только в том случае, если ваш сервер не выполняет роль маршрутизатора, то есть у вас обычный веб сервер.
Дополнительно можно вообще отключить ответ на ICMP запросы на уровне ядра. Я сам так не делаю обычно, но видел компанию, где вообще все сервера не отвечали на пинги.
#linux #sysctl #network
⇨ Описание некоторых sysctl переменных ядра Linux
⇨ Настройка ядра Linux для тяжелых проектов и защиты от DDOS
⇨ Настройка Linux для HL и защиты от DDoS
⇨ Когда TCP-сокеты отказываются умирать
Многое устарело, либо не соответствует текущим настройкам по умолчанию. Какие-то механизмы и так в современных ядрах включены. Ниже моя компиляция того, что показалось актуальным на текущий момент. В основном это то, что касается таймаутов и потребления памяти. Её сейчас много и она дешёвая.
📌 Увеличиваем значение tcp_max_orphans, которое отвечает за максимальное число осиротевших (не связанных ни с одним процессом) сокетов TCP. Каждый такой сокет съедает примерно 64 Кб памяти. Так что параметр нужно сопоставлять с доступной памятью на сервере.
net.ipv4.tcp_max_orphans = 65536📌 Уменьшаем tcp_fin_timeout (по умолчанию 60). Параметр отвечает за максимальное время пребывания сокета в состоянии FIN-WAIT-2. Это состояние используется в тех случаях, когда другая сторона не закрыла соединение. Каждый сокет занимает порядка 1.5 Кб памяти, что может подъедать её, когда их очень много.
net.ipv4.tcp_fin_timeout = 10📌 Параметры, отвечающие за проверку TCP соединений в статусе SO_KEEPALIVE: keepalive_time определяет время, через которое начнутся проверки после последней активности соединения, keepalive_intvl определяет интервал проверки, а keepalive_probes количество этих проверок.
net.ipv4.tcp_keepalive_time = 1800net.ipv4.tcp_keepalive_intvl = 15net.ipv4.tcp_keepalive_probes = 5📌 Стоит обратить внимание на параметры
net.ipv4.tcp_mem, net.ipv4.tcp_rmem, net.ipv4.tcp_wmem. Они очень сильно зависят от памяти на сервере и в момент загрузки системы вычисляются автоматически. В общем случае их трогать не обязательно, но иногда можно и вручную подредактировать в сторону увеличения значений. 📌 Отключаем (по умолчанию включено) передачу syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета.
net.ipv4.tcp_syncookies = 0📌 Отдельное внимание алгоритму, который используется для контроля перегрузки в TCP сетях. Их много (cubic, htcp, bic, westwood и т.д.) и однозначно сказать, что лучше использовать, трудно. В разных схемах нагрузки алгоритмы показывают разные результаты. Управляет этим параметр ядра tcp_congestion_control:
net.ipv4.tcp_congestion_control = cubic📌 При большом количестве исходящих соединений сервера может не хватать локальных портов для них. По умолчанию используется диапазон 32768 - 60999. Его можно расширить:
net.ipv4.ip_local_port_range = 10240 65535📌 Включаем защиту от TIME_WAIT атак. По умолчанию она отключена.
net.ipv4.tcp_rfc1337 = 1📌 Максимальное число открытых сокетов, ждущих соединения, по умолчанию имеет довольно низкое значение. В ядрах до 5.3 это 128, в 5.4 увеличили до 4096. На нагруженных и мощных серверах имеет смысл увеличить:
net.core.somaxconn = 16384📌 На мощных и нагруженных серверах можно увеличить стандартные значения размера буфера приёма и передачи для всех соединений. Параметр измеряется в байтах. По умолчанию это 212992 или 208 КБ.
net.core.rmem_default = 851968net.core.wmem_default = 851968net.core.rmem_max = 12582912net.core.wmem_max = 12582912📌 Отключаем локальные перенаправления ICMP пакетов. Делать это стоит только в том случае, если ваш сервер не выполняет роль маршрутизатора, то есть у вас обычный веб сервер.
net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.all.secure_redirects = 0net.ipv4.conf.all.send_redirects = 0Дополнительно можно вообще отключить ответ на ICMP запросы на уровне ядра. Я сам так не делаю обычно, но видел компанию, где вообще все сервера не отвечали на пинги.
net.ipv4.icmp_echo_ignore_all = 1#linux #sysctl #network
👍111👎3
▶️ Если кто-то ещё не видел, предлагаю насладиться просмотром великолепного саркастического ролика на тему работы технической поддержки по телефону: The Expert: IT Support.
▪ Оригинал:
⇨ https://www.youtube.com/watch?v=ZOzzRlc_qho
▪ Дубляж:
⇨ https://www.youtube.com/watch?v=F0T0Y91npYg
Мне лично оригинал намного больше понравился.
У меня была очень похожая по своему абсурду и безвыходности история. И тоже с тех. поддержкой по телефону. Зимой ездил проверять загородный дом, где у меня постоянно включен электрический котёл для отопления, который управляется через GSM модуль.
Особенность этого котла и модуля такова, что когда настроено управление по GSM, вручную ничего изменить нельзя. Надо отключать модуль и менять настройки. Днём я экспериментировал с режимами, а вечером собрался уезжать в квартиру. Это была пятница. И как назло, связь с котлом пропала, и я не могу поменять режим на тот, что мне нужен. А уехать, не поменяв режим, тоже не могу, потому что там выставлена комфортная температура для всего дома, а уезжая, я оставляю 12 градусов. Топить дом на полную мощность, когда там никого нет, не хотелось.
В котле стоит симка от известного оператора связи, но продавалась она вместе с GSM модулем. Управляется симка только через личный кабинет вендора модуля. Она по сути мне не принадлежит, так как является корпоративной для их юр. лица.
Я уже стою готовый выехать и понимаю, что не знаю, что делать. Подождал минут 10, связи нет. Облазил весь сайт продавца GSM модуля, телефона поддержки нигде нет. Его походу просто не существует. Пишу через тикет систему в тех. поддержку. Думаю, ну раз номера нет, значит тех. поддержка отвечает оперативно и решает проблему. Прождал час, никто не ответил на почту.
Звоню в тех. поддержку мобильного оператора. Там огроменное голосовое меню и я не понимаю, куда мне нужно обратиться по своему вопросу. Несколько раз прослушал голосового помощника и не понял, во-первых, как решить вопрос через голосовое меню, во-вторых, как попасть на живого оператора. Тут уже конкретно раздражённый был. Начал искать в интернете информацию, как попасть к живому оператору. В итоге нашёл номер, позвонил туда и попал к человеку. Слава богу, пока это ещё возможно!
Назвал оператору номер телефона. Она всё проверила, сказала, что тариф корпоративный, и он в минусе, поэтому не работает. У меня все платежи были в срок и баланс с запасом, так что не понял, как так вышло. Это уже проблемы продавца GSM модулей, с их биллингом что-то не так. Объяснил ситуацию оператору и попросил придумать хоть что-нибудь, чтобы номер заработал. Какой-нибудь обещанный платёж или что-то ещё, лишь бы вернулась связь. Она сказала, что сделать ничего нельзя.
В общем, я смирился и уезжать не стал. Остался ночевать. Побоялся уехать, а то потом придётся возвращаться, чтобы перезагружать GSM модуль. Не было уверенности, что потом всё заработает само. В итоге ночью связь появилась, управление заработало. Утром я всё настроил и уехал домой.
И только в понедельник днём мне тех. поддержка написала, что были проблемы с биллингом у сотового оператора, поэтому временно связь не работала, а теперь всё ок.
Такие вот современные технологии. Я лично себе не стал никаких умных домов делать. Всё провёл проводами и для электрики, и для слаботочки. Хотя мне предлагал электрик сделать выключатели на радиоуправлении, и провода не пришлось бы тащить к каждому. В бревенчатом доме это довольно хлопотно. Отказался. Как представлю, аккумуляторы там менять, или какие-нибудь помехи начнутся. Все камеры, все рабочие места, везде кабели протянул. Ну его нафиг.
Я не сторонник автоматизации в доме. Хотя казалось бы, со всем этим работаю и разбираюсь. Купить приборы, сервачок поставить, WiFi и т.д. Вот из-за того, что разбираюсь, и не хочу связываться. Пусть хоть дома всё будет чётко и по старинке — пришёл, шлёпнул по выключателю и всё работает. Система реального времени. Котёл тоже переделаю, когда перееду постоянно жить, а не наездами.
#юмор
▪ Оригинал:
⇨ https://www.youtube.com/watch?v=ZOzzRlc_qho
▪ Дубляж:
⇨ https://www.youtube.com/watch?v=F0T0Y91npYg
Мне лично оригинал намного больше понравился.
У меня была очень похожая по своему абсурду и безвыходности история. И тоже с тех. поддержкой по телефону. Зимой ездил проверять загородный дом, где у меня постоянно включен электрический котёл для отопления, который управляется через GSM модуль.
Особенность этого котла и модуля такова, что когда настроено управление по GSM, вручную ничего изменить нельзя. Надо отключать модуль и менять настройки. Днём я экспериментировал с режимами, а вечером собрался уезжать в квартиру. Это была пятница. И как назло, связь с котлом пропала, и я не могу поменять режим на тот, что мне нужен. А уехать, не поменяв режим, тоже не могу, потому что там выставлена комфортная температура для всего дома, а уезжая, я оставляю 12 градусов. Топить дом на полную мощность, когда там никого нет, не хотелось.
В котле стоит симка от известного оператора связи, но продавалась она вместе с GSM модулем. Управляется симка только через личный кабинет вендора модуля. Она по сути мне не принадлежит, так как является корпоративной для их юр. лица.
Я уже стою готовый выехать и понимаю, что не знаю, что делать. Подождал минут 10, связи нет. Облазил весь сайт продавца GSM модуля, телефона поддержки нигде нет. Его походу просто не существует. Пишу через тикет систему в тех. поддержку. Думаю, ну раз номера нет, значит тех. поддержка отвечает оперативно и решает проблему. Прождал час, никто не ответил на почту.
Звоню в тех. поддержку мобильного оператора. Там огроменное голосовое меню и я не понимаю, куда мне нужно обратиться по своему вопросу. Несколько раз прослушал голосового помощника и не понял, во-первых, как решить вопрос через голосовое меню, во-вторых, как попасть на живого оператора. Тут уже конкретно раздражённый был. Начал искать в интернете информацию, как попасть к живому оператору. В итоге нашёл номер, позвонил туда и попал к человеку. Слава богу, пока это ещё возможно!
Назвал оператору номер телефона. Она всё проверила, сказала, что тариф корпоративный, и он в минусе, поэтому не работает. У меня все платежи были в срок и баланс с запасом, так что не понял, как так вышло. Это уже проблемы продавца GSM модулей, с их биллингом что-то не так. Объяснил ситуацию оператору и попросил придумать хоть что-нибудь, чтобы номер заработал. Какой-нибудь обещанный платёж или что-то ещё, лишь бы вернулась связь. Она сказала, что сделать ничего нельзя.
В общем, я смирился и уезжать не стал. Остался ночевать. Побоялся уехать, а то потом придётся возвращаться, чтобы перезагружать GSM модуль. Не было уверенности, что потом всё заработает само. В итоге ночью связь появилась, управление заработало. Утром я всё настроил и уехал домой.
И только в понедельник днём мне тех. поддержка написала, что были проблемы с биллингом у сотового оператора, поэтому временно связь не работала, а теперь всё ок.
Такие вот современные технологии. Я лично себе не стал никаких умных домов делать. Всё провёл проводами и для электрики, и для слаботочки. Хотя мне предлагал электрик сделать выключатели на радиоуправлении, и провода не пришлось бы тащить к каждому. В бревенчатом доме это довольно хлопотно. Отказался. Как представлю, аккумуляторы там менять, или какие-нибудь помехи начнутся. Все камеры, все рабочие места, везде кабели протянул. Ну его нафиг.
Я не сторонник автоматизации в доме. Хотя казалось бы, со всем этим работаю и разбираюсь. Купить приборы, сервачок поставить, WiFi и т.д. Вот из-за того, что разбираюсь, и не хочу связываться. Пусть хоть дома всё будет чётко и по старинке — пришёл, шлёпнул по выключателю и всё работает. Система реального времени. Котёл тоже переделаю, когда перееду постоянно жить, а не наездами.
#юмор
YouTube
The Expert: IT Support (Short Comedy Sketch)
Subscribe for more short comedy sketches & films: http://bit.ly/laurisb Buy Expert shirts & hoodies at https://laurisb.myshopify.com/ Square Project Ep2. A funny video about a phone call to IT Support. Another day in the life of Anderson, an engineer trying…
👍76👎4
▶️ Rebrain наконец-то стали выкладывать некоторые свои вебинары в публичный доступ. Теперь можно их пропускать и откладывать на потом 😁 И зашли сразу с козыря. Выложили вебинар:
Networks by Rebrain: Траблшутинг сетевых сервисов. Инструменты и утилиты для диагностики
⇨ https://www.youtube.com/watch?v=5Ppg5PHQFH4
Я смотрел два вебинара с этим ведущим. Очень понравилось. Ольга чётко всё рассказывает, в теме разбирается отлично. Видно, что к вебинарам готовится: план мероприятия, теория, подготовленная лаба, практика. На одном из вебинаров, Сегментация сети без разделения на подсети (интересная и новая для меня тема), не удержался и выразил своё восхищение 👍
В общем, рекомендую. Ольга Яновская, Василий Озеров, Андрей Буранов. Их стараюсь не пропускать, так как всегда гарантированно интересно и полезно.
#видео #обучение #network
Networks by Rebrain: Траблшутинг сетевых сервисов. Инструменты и утилиты для диагностики
⇨ https://www.youtube.com/watch?v=5Ppg5PHQFH4
Я смотрел два вебинара с этим ведущим. Очень понравилось. Ольга чётко всё рассказывает, в теме разбирается отлично. Видно, что к вебинарам готовится: план мероприятия, теория, подготовленная лаба, практика. На одном из вебинаров, Сегментация сети без разделения на подсети (интересная и новая для меня тема), не удержался и выразил своё восхищение 👍
В общем, рекомендую. Ольга Яновская, Василий Озеров, Андрей Буранов. Их стараюсь не пропускать, так как всегда гарантированно интересно и полезно.
#видео #обучение #network
YouTube
Networks by Rebrain: Траблшутинг сетевых сервисов.Инструменты и утилиты для диагностики
Анонсы живых открытых практикумов https://xn--r1a.website/rebrain_devops
Запись открытого практикума Networks by Rebrain: Траблшутинг сетевых сервисов. Инструменты и утилиты для диагностики
Проводим открытые уроки по DevOps, Linux, Golang, Networks каждую неделю…
Запись открытого практикума Networks by Rebrain: Траблшутинг сетевых сервисов. Инструменты и утилиты для диагностики
Проводим открытые уроки по DevOps, Linux, Golang, Networks каждую неделю…
👍92👎5
На днях поставил себе на ноут программу по управлению оборотами вентилятора TPFanControl (https://thinkwiki.de/TPFanControl). Она вроде бы специально для серии Thinkpad написана, но может и с другими работает. Но это не суть. Таких программ много.
Я раньше пользовался подобной программой, потом как-то подзабыл и при переезде на другой ноут не поставил. Сейчас вспомнил и исправил. Программа нужна вот для чего. Я настроил включение вентилятора только если температура процессора становится выше 70-ти градусов. Это случается не так часто. В итоге почти всё время ноут полностью бесшумен. Очень удобно.
Стандартные алгоритмы управления вентилятором другие. Обычно хоть немного, но он шевелится и прибавляет обороты значительно раньше. Хотя температуры до 70-80 градусов вполне безопасны для процессора. Перегреться всё равно не успеет, он тротлить начинает сразу при перегреве.
У TPFanControl немного замороченный текстовый конфиг. Все настройки только в нём. После установки не понятно, с чего начать настройку. Если кому-то нужен, напишите в комментах, я свой выложу.
Обзор и настройка программы:
⇨ https://www.youtube.com/watch?v=5IPn0Jt7oA8
#железо
Я раньше пользовался подобной программой, потом как-то подзабыл и при переезде на другой ноут не поставил. Сейчас вспомнил и исправил. Программа нужна вот для чего. Я настроил включение вентилятора только если температура процессора становится выше 70-ти градусов. Это случается не так часто. В итоге почти всё время ноут полностью бесшумен. Очень удобно.
Стандартные алгоритмы управления вентилятором другие. Обычно хоть немного, но он шевелится и прибавляет обороты значительно раньше. Хотя температуры до 70-80 градусов вполне безопасны для процессора. Перегреться всё равно не успеет, он тротлить начинает сразу при перегреве.
У TPFanControl немного замороченный текстовый конфиг. Все настройки только в нём. После установки не понятно, с чего начать настройку. Если кому-то нужен, напишите в комментах, я свой выложу.
Обзор и настройка программы:
⇨ https://www.youtube.com/watch?v=5IPn0Jt7oA8
#железо
YouTube
Make Your Thinkpad Laptop Quiet TPFanControl : Software Sunday EP 17
I am a big fan of Lenovo / IBM Thinkpads, however they tend to be a bit on the loud side when it comes to fan noise. With TPFanControl you can create what is essentially a custom fan curve for your Thinkpad. With the right configuration, you can make your…
👍36👎9
🎓 Недавно вспомнил про образовательную платформу stepik.org, где я когда-то давно проходил несколько курсов. Зашёл посмотреть, что там есть интересного и полезного. С удивлением заметил довольно много бесплатных и на вид неплохих курсов с тысячами отзывов и оценок.
Ещё обратил внимание, что некоторые курсы после прохождения предлагают получить именной сертификат. Мне кажется, может быть полезным получить 1-2 таких сертификата и добавить их к своему резюме. При условии, что у вас там будет 2-3 сертификата с полноценного платного обучения с сертификацией в конце. Разбавить их тематическими бесплатными для увеличения значимости в глазах рекрутёра не думаю, что будет лишним. Разумеется всё это актуально для тех, у кого небольшой опыт.
📌 Несколько бесплатных курсов по Linux:
▪ Введение в Linux — самый большой и масштабный бесплатный курс по Linux. В целом, отзывы положительные, но в последних видны упоминания, что курс уже устарел. На курсе даётся база, которая в Linux меняется очень слабо, так что скорее всего устаревание некритичное. К курсу полагается сертификат.
▪ Основы Linux — более свежий и короткий курс по сравнению с предыдущим. Но объём всё равно внушительный. Не на один день.
▪ Linux CLI — наиболее свежий курс с основами командной строки. Объём небольшой, на один вечер.
▪ Архитектура параллельных вычислительных систем — название неговорящие, хотя сам курс про Linux. В нём учат настраивать линуксовую базу: apache, nginx, iptables, bind9 (dns), nfs, samba, docker.
#обучение
Ещё обратил внимание, что некоторые курсы после прохождения предлагают получить именной сертификат. Мне кажется, может быть полезным получить 1-2 таких сертификата и добавить их к своему резюме. При условии, что у вас там будет 2-3 сертификата с полноценного платного обучения с сертификацией в конце. Разбавить их тематическими бесплатными для увеличения значимости в глазах рекрутёра не думаю, что будет лишним. Разумеется всё это актуально для тех, у кого небольшой опыт.
📌 Несколько бесплатных курсов по Linux:
▪ Введение в Linux — самый большой и масштабный бесплатный курс по Linux. В целом, отзывы положительные, но в последних видны упоминания, что курс уже устарел. На курсе даётся база, которая в Linux меняется очень слабо, так что скорее всего устаревание некритичное. К курсу полагается сертификат.
▪ Основы Linux — более свежий и короткий курс по сравнению с предыдущим. Но объём всё равно внушительный. Не на один день.
▪ Linux CLI — наиболее свежий курс с основами командной строки. Объём небольшой, на один вечер.
▪ Архитектура параллельных вычислительных систем — название неговорящие, хотя сам курс про Linux. В нём учат настраивать линуксовую базу: apache, nginx, iptables, bind9 (dns), nfs, samba, docker.
#обучение
👍124👎3
Бессмысленная воскресная тема. Дело было вечером, делать было нечего. Увидел в одной из подборок софта с github информацию о консольном видео проигрывателе Terminal Media Player. Причём там было указано, что может проигрывать видео из youtube.
Мне стало очень любопытно, неужели действительно в терминале можно посмотреть ютубовское видео. Взял чистую виртулаку с Debian 11, без иксов, без видеокарты, без звуковой карты. Типичная VPS. Решил проверить, смогу ли я запустить ролик из ютуба на ней. Сразу скажу, что у меня получилось, но пришлось повозиться.
Все ошибки, исправления, поиски решений я опущу. Покажу сразу рабочий вариант, к которому я в итоге пришёл через несколько итераций с версиями софта и решением проблем.
Подключаем contrib non-free репозитории:
Ставим зависимости:
Ставим yt-dlp, который будет качать ролики с ютуба:
Устанавливаем свежую версию Rust и Cargo:
Собираем tplay:
Пробуем проиграть видео:
Если у вас нет звуковой карты, то скорее всего увидите ошибку, типа такой:
Оказывается, в ядре линукс с некоторого времени появилась звуковая карта пустышка, как раз для таких случаев. Загружаем модуль ядра:
И снова пробуем запустить ролик:
Теперь должны увидеть изображение. С настройками по умолчанию у меня картинка была слишком непонятной. Сделал таблицу символов чёрно-белой, стало получше:
А когда заменил на другую, стало ещё лучше:
Разные настройки цвета и набора символов можно менять в процессе воспроизведения видео, нажимая на цифры 0-9 и клавиши g.
Такая вот бесполезная фигня получилась, которая реально работает. Можно в терминале по ssh смотреть видео на VPS в режиме ASCII. Единственное, где это может пригодиться — быстро получить картинку в ASCII из какого-то кадра в видео. Если делать всё это на ноуте или компе, то можно картинку с веб камеры вывести в терминал.
#разное #linux
Мне стало очень любопытно, неужели действительно в терминале можно посмотреть ютубовское видео. Взял чистую виртулаку с Debian 11, без иксов, без видеокарты, без звуковой карты. Типичная VPS. Решил проверить, смогу ли я запустить ролик из ютуба на ней. Сразу скажу, что у меня получилось, но пришлось повозиться.
Все ошибки, исправления, поиски решений я опущу. Покажу сразу рабочий вариант, к которому я в итоге пришёл через несколько итераций с версиями софта и решением проблем.
Подключаем contrib non-free репозитории:
deb http://deb.debian.org/debian/ bullseye main contrib non-freeСтавим зависимости:
# apt install libopencv-dev clang libclang-dev ffmpeg libavfilter-dev \libavdevice-dev libasound2-devСтавим yt-dlp, который будет качать ролики с ютуба:
# curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp \-o /usr/local/bin/yt-dlp# chmod a+rx /usr/local/bin/yt-dlpУстанавливаем свежую версию Rust и Cargo:
# curl https://sh.rustup.rs -sSf | shСобираем tplay:
# cargo install tplayПробуем проиграть видео:
# tplay https://www.youtube.com/watch?v=dtWrZJw2iWcЕсли у вас нет звуковой карты, то скорее всего увидите ошибку, типа такой:
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'Оказывается, в ядре линукс с некоторого времени появилась звуковая карта пустышка, как раз для таких случаев. Загружаем модуль ядра:
# modprobe snd-dummyИ снова пробуем запустить ролик:
# tplay https://www.youtube.com/watch?v=dtWrZJw2iWcТеперь должны увидеть изображение. С настройками по умолчанию у меня картинка была слишком непонятной. Сделал таблицу символов чёрно-белой, стало получше:
# tplay https://www.youtube.com/watch?v=dtWrZJw2iWc -g А когда заменил на другую, стало ещё лучше:
# tplay https://www.youtube.com/watch?v=dtWrZJw2iWc -g --char-map ".:-=+*"Разные настройки цвета и набора символов можно менять в процессе воспроизведения видео, нажимая на цифры 0-9 и клавиши g.
Такая вот бесполезная фигня получилась, которая реально работает. Можно в терминале по ssh смотреть видео на VPS в режиме ASCII. Единственное, где это может пригодиться — быстро получить картинку в ASCII из какого-то кадра в видео. Если делать всё это на ноуте или компе, то можно картинку с веб камеры вывести в терминал.
#разное #linux
👍127👎3
На днях в рассылке увидел любопытный инструмент, на который сразу обратил внимание. Название простое и неприметное — Task. Это утилита, написанная на Gо, которая умеет запускать задачи на основе конфигурации в формате yaml. Сейчас сразу на примерах покажу, как это работает, чтобы было понятно, для чего может быть нужно.
Сама программа это просто одиночный бинарник, который можно установить кучей способов, описанных в документации. Его даже в винде можно установить через winget.
Создаём файл с задачами Taskfile.yml:
Сохраняем и запускаем. Для начала посмотрим список задач:
Запустим первую задачу:
Или сразу обе, запустив task без параметров. Запустится задача default, которую мы описали в самом начале:
Идею, думаю, вы поняли. Это более простая и лёгкая в освоении замена утилиты make, которая используется в основном для сбора софта из исходников.
Первое, что приходит в голову, где утилита task может быть полезна, помимо непосредственно сборки из исходников, как замена make — сборка docker образов. Если у вас длинный RUN, который неудобно читать, поддерживать и отлаживать из-за его размера, то его можно заменить одной задачей с task. Это позволит упростить написание и поддержку, а также избавить от необходимости разбивать этот RUN на несколько частей, что порождает создание дополнительных слоёв.
Вместо того, чтобы описывать все свои действия в длиннющем RUN, оформите все свои шаги через task и запустите в RUN только его. Примерно так:
Скопировали бинарник + yaml с задачами и запустили их. А там они могут быть красиво оформлены по шагам. Писать и отлаживать эти задачи будет проще, чем сразу в Dockerfile. Для task написано расширение в Visual Studio Code.
Task поддерживает:
◽переходы по директориям
◽зависимости задач
◽импорт в Taskfile из другого Taskfile
◽динамические переменные
◽особенности OS, можно явно указать Taskfile_linux.yml или Taskfile_windows.yml
и многое другое. Всё это описано в документации.
Я немного поразбирался с Task. Он мне показался более простой заменой одиночных сценариев для ansible. Это когда вам не нужен полноценный playbook, а достаточно простого набора команд в едином файле, чтобы быстро его запустить и выполнить небольшой набор действий. Только в Task нет никаких модулей, только cmds.
#devops #script #docker
Сама программа это просто одиночный бинарник, который можно установить кучей способов, описанных в документации. Его даже в винде можно установить через winget.
Создаём файл с задачами Taskfile.yml:
version: "3"tasks: default: desc: Run all tasks cmds: - task: task01 - task: task02 task01: desc: Task 01 cmds: - echo "Task 01" task02: desc: Task 02 cmds: - echo "Task 02"Сохраняем и запускаем. Для начала посмотрим список задач:
# task --listtask: Available tasks for this project:* default: Run all tasks* task01: Task 01* task02: Task 02Запустим первую задачу:
# task task01task: [task01] echo "Task 01"Или сразу обе, запустив task без параметров. Запустится задача default, которую мы описали в самом начале:
# tasktask: [task01] echo "Task 01"Task 01task: [task02] echo "Task 02"Task 02Идею, думаю, вы поняли. Это более простая и лёгкая в освоении замена утилиты make, которая используется в основном для сбора софта из исходников.
Первое, что приходит в голову, где утилита task может быть полезна, помимо непосредственно сборки из исходников, как замена make — сборка docker образов. Если у вас длинный RUN, который неудобно читать, поддерживать и отлаживать из-за его размера, то его можно заменить одной задачей с task. Это позволит упростить написание и поддержку, а также избавить от необходимости разбивать этот RUN на несколько частей, что порождает создание дополнительных слоёв.
Вместо того, чтобы описывать все свои действия в длиннющем RUN, оформите все свои шаги через task и запустите в RUN только его. Примерно так:
COPY --from=bins /usr/bin/task /usr/local/bin/taskCOPY tasks/Taskfile.yaml ./Taskfile.yamlRUN taskСкопировали бинарник + yaml с задачами и запустили их. А там они могут быть красиво оформлены по шагам. Писать и отлаживать эти задачи будет проще, чем сразу в Dockerfile. Для task написано расширение в Visual Studio Code.
Task поддерживает:
◽переходы по директориям
◽зависимости задач
◽импорт в Taskfile из другого Taskfile
◽динамические переменные
◽особенности OS, можно явно указать Taskfile_linux.yml или Taskfile_windows.yml
и многое другое. Всё это описано в документации.
Я немного поразбирался с Task. Он мне показался более простой заменой одиночных сценариев для ansible. Это когда вам не нужен полноценный playbook, а достаточно простого набора команд в едином файле, чтобы быстро его запустить и выполнить небольшой набор действий. Только в Task нет никаких модулей, только cmds.
#devops #script #docker
👍61👎2
Я одно время перебирал программы для личных заметок, аналоги Evernote. В какой-то момент мне надоело. Понял, что это пустая трата времени. Остался в итоге на Joplin, которым пользуюсь уже пару лет. В нём не всё устраивает, но в целом — сойдёт.
У меня накопился большой список подобных программ. Часть из них я пробовал и писал заметки, часть так и не смотрел. Скорее всего уже не буду, поэтому составляю этот список как есть. Может кому-нибудь пригодится.
◽Joplin. Писал о нём много, как в отдельных заметках (1, 2), так и косвенно упоминал в других. Не нравится тормознутость, отсутствие нормальных таблиц, отсутствие локального шифрования базы.
◽Obsidian. По отзывам одно из самых популярных решений. Я бы советовал начинать именно с него, если ищите что-то подобное. В нём хорошо реализованы связи между документами. Это прям его фишка. В плюсы можно отнести большое количество плагинов для расширения функциональности.
◽Trilium Notes. Тоже популярное приложение, как и предыдущее. Часто давали рекомендации на него. Есть возможность установить на свой сервер и все устройства синхронизировать с него.
◽Appflowy. Авторы позиционируют его как аналог Notion. Из явных плюсов — приложение шустрое, так как написано на Rust и Flutter. С Notion оно никак не конкурирует, потому что функционал заметно ниже. Это просто заметки.
◽Notea. Ещё одна попытка сделать копию Notion. Можно запустить в Docker, базу хранить в S3. Выглядит приятно и современно. Похож на Appflowy. Даже не знаю, как их сравнить. На вид почти одно и то же.
◽CherryTree. Необычная программа для заметок в старом стиле. Написана на C++, поэтому работает очень быстро. Минус один и самый существенный — это локальная программа, мобильной версии нет вообще.
◽MyTetra. Ещё одно олдскульное приложение на C++. Я его начал использовать. Сначала показалось удобным, потому что быстрое с хорошей навигацией. Но когда немного попользовался, заметил много минусов и в итоге забросил. Там был какой-то один жирнющий минус в редакторе, из-за которого я прекратил использование. К сожалению, уже забыл, что не понравилось.
◽️Wreeto. Веб сервис с адаптированным под мобильники интерфейсом. Так что можно через браузер ходить со смартфона. Умеет хранить заметки в формате Markdown и Wiki. Можно настроить Google oAuth. Написано на Ruby, что неплохо, так как аналоги чаще всего на Javascript. Хотя у меня тут нет уверенности, что руби явно быстрее яваскрипта.
◽️PMS - персональная система менеджмента. Тут есть всё — от календаря с ToDo, адресной книги до ведения целей личностного развития. Даже личная хранилка для паролей есть. Система интересная. Думаю, сделаю про неё отдельную заметку.
◽️Focalboard. Ещё одна заявленная альтернатива Trello, Notion, и Asana от авторов бесплатного чат-сервера Mattermost. Выглядит круто, особенно в связке с Mattermost. Но это больше про командную работу, а не персональные заметки. Хотя сейчас заметил в репозитории информацию, что проект для персонального использования останется как есть, а все командные фишки и развитие этого направления переедут в Mattermost как единую платформу.
◽️Standard Notes. Похожий на все остальные подобные приложения, аналоги Notion и Trello. В этом разработчики делают упор на безопасность и приватность. Обещают шифрованное хранение и передачу информации при синхронизации. Внешне особых отличий от остальных не увидел.
◽️Nimbus Note. Видел несколько положительных отзывов на него. Приложение коммерческое с бесплатным тарифным планом. Это не Open Source. Для одиночного использования бесплатного тарифного плана за глаза, как раньше было у Evernote. Выглядит приятнее open source аналогов, что логично для коммерческого продукта.
◽️Notesnook. Авторы позиционируют приложение как замену Evernote. Сделан упор на шифровании хранения и передачи информации. В мобильном приложении есть отдельный пароль на запуск. Можно шарить отдельные заметки и шифровать их паролем. Написан на JavaScript, внешне похож на аналоги.
#заметки
У меня накопился большой список подобных программ. Часть из них я пробовал и писал заметки, часть так и не смотрел. Скорее всего уже не буду, поэтому составляю этот список как есть. Может кому-нибудь пригодится.
◽Joplin. Писал о нём много, как в отдельных заметках (1, 2), так и косвенно упоминал в других. Не нравится тормознутость, отсутствие нормальных таблиц, отсутствие локального шифрования базы.
◽Obsidian. По отзывам одно из самых популярных решений. Я бы советовал начинать именно с него, если ищите что-то подобное. В нём хорошо реализованы связи между документами. Это прям его фишка. В плюсы можно отнести большое количество плагинов для расширения функциональности.
◽Trilium Notes. Тоже популярное приложение, как и предыдущее. Часто давали рекомендации на него. Есть возможность установить на свой сервер и все устройства синхронизировать с него.
◽Appflowy. Авторы позиционируют его как аналог Notion. Из явных плюсов — приложение шустрое, так как написано на Rust и Flutter. С Notion оно никак не конкурирует, потому что функционал заметно ниже. Это просто заметки.
◽Notea. Ещё одна попытка сделать копию Notion. Можно запустить в Docker, базу хранить в S3. Выглядит приятно и современно. Похож на Appflowy. Даже не знаю, как их сравнить. На вид почти одно и то же.
◽CherryTree. Необычная программа для заметок в старом стиле. Написана на C++, поэтому работает очень быстро. Минус один и самый существенный — это локальная программа, мобильной версии нет вообще.
◽MyTetra. Ещё одно олдскульное приложение на C++. Я его начал использовать. Сначала показалось удобным, потому что быстрое с хорошей навигацией. Но когда немного попользовался, заметил много минусов и в итоге забросил. Там был какой-то один жирнющий минус в редакторе, из-за которого я прекратил использование. К сожалению, уже забыл, что не понравилось.
◽️Wreeto. Веб сервис с адаптированным под мобильники интерфейсом. Так что можно через браузер ходить со смартфона. Умеет хранить заметки в формате Markdown и Wiki. Можно настроить Google oAuth. Написано на Ruby, что неплохо, так как аналоги чаще всего на Javascript. Хотя у меня тут нет уверенности, что руби явно быстрее яваскрипта.
◽️PMS - персональная система менеджмента. Тут есть всё — от календаря с ToDo, адресной книги до ведения целей личностного развития. Даже личная хранилка для паролей есть. Система интересная. Думаю, сделаю про неё отдельную заметку.
◽️Focalboard. Ещё одна заявленная альтернатива Trello, Notion, и Asana от авторов бесплатного чат-сервера Mattermost. Выглядит круто, особенно в связке с Mattermost. Но это больше про командную работу, а не персональные заметки. Хотя сейчас заметил в репозитории информацию, что проект для персонального использования останется как есть, а все командные фишки и развитие этого направления переедут в Mattermost как единую платформу.
◽️Standard Notes. Похожий на все остальные подобные приложения, аналоги Notion и Trello. В этом разработчики делают упор на безопасность и приватность. Обещают шифрованное хранение и передачу информации при синхронизации. Внешне особых отличий от остальных не увидел.
◽️Nimbus Note. Видел несколько положительных отзывов на него. Приложение коммерческое с бесплатным тарифным планом. Это не Open Source. Для одиночного использования бесплатного тарифного плана за глаза, как раньше было у Evernote. Выглядит приятнее open source аналогов, что логично для коммерческого продукта.
◽️Notesnook. Авторы позиционируют приложение как замену Evernote. Сделан упор на шифровании хранения и передачи информации. В мобильном приложении есть отдельный пароль на запуск. Можно шарить отдельные заметки и шифровать их паролем. Написан на JavaScript, внешне похож на аналоги.
#заметки
👍54👎1
Если вам приходится самому писать Dockerfiles для сборки образов, то рекомендую удобный и функциональный линтер для проверки синтаксиса и общих рекомендаций по оптимизации — Hadolint (Haskell Dockerfile Linter). Он проверяет Dockerfile на предмет использования общепринятых best practice, а shell код в
Hadolint можно использовать как локально, так и с помощью веб сервиса. Работает он чётко, все рекомендации по делу. Покажу несколько примеров. Простенький Dockerfile:
Казалось бы, что тут может быть не так. Проверяем рекомендации hadolint:
-:6 DL3007 warning: Using latest is prone to errors if the image will ever update. Pin the version explicitly to a release tag
-:7 DL3018 warning: Pin versions in apk add. Instead of `apk add <package>` use `apk add <package>=<version>`
Вполне резонные замечания. Он не рекомендует использовать тэг latest и советует явно указывать версию софта в пакетном менеджере. В данном случае это скорее всего не критично. Но в общем случае за этим стоит следить, особенно за latest. Это разом может всё сломать в самый неподходящий момент.
Ещё небольшой пример:
Проверяем:
-:2 DL3008 warning: Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`
-:2 DL3009 info: Delete the apt-get lists after installing something
-:2 DL3015 info: Avoid additional packages by specifying `--no-install-recommends`
Здесь та же рекомендация — указывать конкретную версию в установке пакетов. Дальше рекомендация подчистить за работой apt-get. Речь тут скорее всего про что-то типа в самом конце:
Ну и последняя рекомендация добавить ключ
То есть hadolint рекомендует привести
Как видите, все рекомендации адекватные, хотя каких-то явных ошибок тут нет.
#devops #docker
RUN с помощью рекомендаций ShellCheck.Hadolint можно использовать как локально, так и с помощью веб сервиса. Работает он чётко, все рекомендации по делу. Покажу несколько примеров. Простенький Dockerfile:
FROM golang:1.7.3 AS buildWORKDIR /go/src/github.com/alexellis/href-counter/RUN go get -d -v golang.org/x/net/html COPY app.go .RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .FROM alpine:latestRUN apk --no-cache add ca-certificatesWORKDIR /root/COPY --from=build /go/src/github.com/alexellis/href-counter/app .CMD ["./app"]Казалось бы, что тут может быть не так. Проверяем рекомендации hadolint:
# docker run --rm -i hadolint/hadolint < Dockerfile-:6 DL3007 warning: Using latest is prone to errors if the image will ever update. Pin the version explicitly to a release tag
-:7 DL3018 warning: Pin versions in apk add. Instead of `apk add <package>` use `apk add <package>=<version>`
Вполне резонные замечания. Он не рекомендует использовать тэг latest и советует явно указывать версию софта в пакетном менеджере. В данном случае это скорее всего не критично. Но в общем случае за этим стоит следить, особенно за latest. Это разом может всё сломать в самый неподходящий момент.
Ещё небольшой пример:
FROM debian:stableRUN apt-get update && apt-get install -y --force-yes apache2EXPOSE 80 443VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"]ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]Проверяем:
# docker run --rm -i hadolint/hadolint < Dockerfile-:2 DL3008 warning: Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`
-:2 DL3009 info: Delete the apt-get lists after installing something
-:2 DL3015 info: Avoid additional packages by specifying `--no-install-recommends`
Здесь та же рекомендация — указывать конкретную версию в установке пакетов. Дальше рекомендация подчистить за работой apt-get. Речь тут скорее всего про что-то типа в самом конце:
&& apt-get clean \&& rm -rf /var/lib/apt/lists/*Ну и последняя рекомендация добавить ключ
--no-install-recommends в apt-get, что тоже не лишено смысла. То есть hadolint рекомендует привести
RUN к следующему виду:RUN apt-get update && \apt-get install -y --force-yes --no-install-recommends apache2=2.4 \&& apt-get clean && rm -rf /var/lib/apt/lists/*Как видите, все рекомендации адекватные, хотя каких-то явных ошибок тут нет.
#devops #docker
1👍84👎1