Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Bash Days | Linux | DevOps
تُعد قناة Bash Days | Linux | DevOps (@bashdays) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 23 803 مشتركاً، محتلاً المرتبة 5 708 في فئة التكنولوجيات والتطبيقات والمرتبة 28 124 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 23 803 مشتركاً.
بحسب آخر البيانات بتاريخ 16 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -201، وفي آخر 24 ساعة بمقدار -10، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 20.40%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 11.53% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 4 855 مشاهدة. وخلال اليوم الأول يجمع عادةً 2 744 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 17.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل bashdays, linux, bash, docker, скрипт.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 17 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
angie со встроенной поддержкой SSL сертификатов от Lets Encrypt.
ㅤ
Сегодня покажу как избавиться от боли и на лету получать SSL для angie. Без всяких там certbot и acme.sh. Довольно удобно реализовано.
Для чистоты эксперимента я взял чистый, прерываемый сервер, без nginx’ов и т.п. на базе Ubuntu 24.04.
angie это аналог nginx, но на стероидах, у меня он крутится на уроках для LinuxFactory и в блоге. Подкупил он меня нативной поддержкой LUA и кучей модулей включая авто-получение SSL сертов.
Устанавливаем angie:
sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg https://angie.software/keys/angie-signing.gpg
echo "deb https://download.angie.software/angie/$(. /etc/os-release && echo "$ID/$VERSION_ID $VERSION_CODENAME") main" | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
sudo apt-get update
sudo apt-get install -y angie
Начиная с Angie 1.3.0, модуль ACME (http_acme_module) включён по умолчанию в основной пакет angie.
Открываем айпишник сервера в браузере и убеждаемся что все работает. Если всё заебись, получишь стартовую страницу angie. Дефолтная страница практически один в один повторяет дефолтную страницу от nginx.
Дальше у меня есть домен two.su который живет в Cloudfalre. В настройках DNS я прописываю A запись и указываю айпишник нового сервера. Весь трафик идет напрямую, без фильтрации самого Cloudfalre.Конфигуряем angie на домен two.su. Создаем файл
two.su.conf в /etc/angie/httpd.d/ с таким содержимым.
server {
listen 443 ssl;
server_name two.su www.two.su;
acme letsencrypt;
ssl_certificate $cert_letsencrypt;
ssl_certificate_key $cert_key_letsencrypt;
location / {
root /var/www/html;
}
}
А в файле /etc/angie/angie.conf в секцию http добавляем:
acme_client letsencrypt https://acme-v02.api.letsencrypt.org/directory;
resolver 127.0.0.53;
map $acme_cert_letsencrypt $cert_letsencrypt {
'' /etc/angie/ssl-self-signed/cert.pem;
default $acme_cert_letsencrypt;
map $acme_cert_letsencrypt $cert_key_letsencrypt {
'' /etc/angie/ssl-self-signed/key.pem;
default $acme_cert_key_letsencrypt;
}
Если angie у тебя работает в докере, то в resolver пропиши: 127.0.0.11.
Проверяем: angie -t и в ответ получаем:
angie: the configuration file /etc/angie/angie.conf syntax is ok
angie: configuration file /etc/angie/angie.conf test is successful
Полученный сертификат и соответствующий ключ будут доступны в конфигурации через переменные $acme_cert_<имя> и $acme_cert_key_<имя>.
Перезапускаем: systemctl reload angie
Если получил ошибку, закинь сертификаты заглушки в /etc/angie
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/C=RU/O=Bashdays/CN=LinuxFactory"
У меня никаких ошибок не возникло.
В папке: /var/lib/angie/acme/letsencrypt появились ключи и серты.
Захожу в браузере на two.su и вижу зеленый замочек. Что и требовалось доказать. SSL сертификат был автоматически получен и в дальнейшем будет автоматически продляться. Без всяких кронов, клиентов, API ключей и хуйни.
Единый сертификат будет получен для всех доменных имён, которые были перечислены в директиве server_name. А директива acme указывает, какой ACME-клиент должен использоваться.Меня вся эта кухня полностью устраивает. Понятно дело есть
Nginx Proxy Manager, но я привык работать без гуёвых штук и мордочек.
Когда что-то настраиваешь руками, а не мышкой, то имеешь представление как работает технология изнутри. А если ты это знаешь, то легко сможешь отдебажить баги и найти первопричину.
По крайней мере меня так учили и я с этим полностью согласен.
🛠 #linux #devops #angie #ssl
—
✅ @bashdays / @linuxfactory / @blogiVentoy.
ㅤ
iVentoy это PXE сервер. Если уж совсем простым языком, то это сервер который раздаёт исошники.
Чтобы установить операционку тебе не нужна никакая флешка и т.п.
Выставляешь в биосе сетевую загрузку и устанавливаешь на выбор любой дистрибутив.
iVentoy из коробки дружит и с легаси биосом и с efi, так что хуёвина универсальная. Можно поднимать сервер и по Linux и под Windows.
iVentoy is an enhanced version of the PXE server. With iVentoy you can boot and install OS on multiple machines at the same time through the network. iVentoy is extremely easy to use, without complicated configuration, just put the ISO file in the specified location and select PXE boot in the client machine. iVentoy supports x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI and ARM64 UEFI mode at the same time. iVentoy support 110+ common types of OS (Windows/WinPE/Linux/VMware)Тыкаем палкой:
wget https://github.com/ventoy/PXE/releases/download/v1.0.20/iventoy-1.0.20-linux-free.tar.gz
tar -xzf iventoy-1.0.20-linux-free.tar.gz
mv iventoy-1.0.20 /opt/iventoy
cd /opt/iventoy
Теперь закидываем любые iso образы в папку /opt/iventoy/iso.
Я закинул ubuntu server и selectos для теста.
Запускаем:
./iventoy.sh start
После этого можно зайти на морду и посмотреть более детально, крутится эта штука на 26000 порту. Меня пустило так:
http://192.168.10.32:26000
Внутри можно поднастроить TFTP сервер, увидеть исошники, поменять разрешения экранов и менюшек, прописать белые списки мак адресов ну и т.п. Сам потыкаешь, всё интуитивно понятно.
Да, важно не забыть в вебморде справа нажать зеленую стрелку, это запустит PXE сервер.Проверяем. Поднимаю новую машину в виртулбоксе c EFI, выставляю загрузку по сети и вижу ожидаемый результат. У меня доступно два дистрибутива ubuntu и selectos. Отлично! Выбираем нужный дистрибутив и запускаем установку по сети. Что понравилось —
iVentoy ставится элементарно, без хуйни и заморочек. Буквально пару минут и у тебя готовый PXE, запускай и накатывай операционки без флешек и внешних винтов.
Да, чтобы оно автоматом стартавало, можно закинуть какой-нибудь такой юнит.
[Unit]
Description=iVentoy PXE Server
After=network.target
[Service]
Type=forking
ExecStart=/opt/iventoy/iventoy.sh start
ExecStop=/opt/iventoy/iventoy.sh stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
Надо будет попробовать исошники с виндой подкинуть. А то порой приносят мне по старой памяти ноуты на переустановку винды, хуй откажешься, я же блядь программист.
Ладно, бери на вооружение, глядишь пригодится.
🛠 #linux #pxe #utilites
—
✅ @bashdays / @linuxfactory / @blogHashicorp Vault есть прикольная фишка со встроенным ssh враппером и подписными ключами.
ㅤ
То есть ты не напрямую подключаешься к серверу:
ssh root@server
А подключаешься к серверу через сервер с Vault, получается что-то вроде бастиона. Vault подписывает ключи и запускает тебя в нужное место.
Настраивается эта штука так:
На сервере с Vault выполняем:
vault secrets enable -path=ssh ssh
vault write ssh/config/ca generate_signing_key=true
Создаём под это дело отдельную роль:
vault write ssh/roles/devops -<<"EOH"
{
"allow_user_certificates": true,
"allowed_users": "*",
"allowed_extensions": "permit-pty,permit-port-forwarding,permit-agent-forwarding,permit-user-rc,permit-X11-forwarding",
"default_extensions": [
{
"permit-pty": ""
}
],
"key_type": "ca",
"default_user": "root",
"ttl": "30m0s"
}
EOH
На сервере к которому хотим подключаться, делаем:
curl -o /etc/ssh/trusted-user-ca-keys.pem https://vault.bashdays.ru:8200/v1/ssh/public_key
Добавляем в конфиг /etc/ssh/sshd_config строчку:
TrustedUserCAKeys /etc/ssh/trusted-user-ca-keys.pem
И перезапускаем: systemctl restart sshd
Переходим на свою локальную машину, с которой будем подключаться:
export VAULT_TOKEN="token"
vault write -address='https://vault.bashdays.ru:8200' ssh/sign/devops public_key=@$HOME/.ssh/id_rsa.pub
Этой командой подписываем свой публичный ключ через vault сервер. В ответ получаем кучу всякой хуйни типа: serial_number и signed_key.
Сохраняем на локальную машину подписанный ключ:
export VAULT_TOKEN="token"
vault write -address='https://vault.bashdays.ru:8200' --field=signed_key ssh/sign/devops public_key=@$HOME/.ssh/id_rsa.pub > ~/.ssh/id_rsa_signed_key.pub
Смотрим параметры получившегося ключа:
ssh-keygen -Lf /Users/user/.ssh/id_rsa_signed_key.pub`
Опять же получишь портянку информации, можно посмотреть валидность и время жизни этого ключа.
Теперь подключаемся:
ssh -i ~/.ssh/id_rsa_signed_key.pub -i ~/.ssh/id_rsa root@server
Ну и вишенка, подключаемся через враппер:
vault ssh -address='https://vault.bashdays.ru:8200' -private-key-path=~/.ssh/id_rsa -public-key-path=~/.ssh/id_rsa.pub -mode=ca -role=devops -user-known-hosts-file=/dev/null root@server
В этом случае подписывать ключ не обязательно.
Доступ к серверам контролирует Vault. Можно быстро накручивать необходимые права, забирать и отзывать ключи. Ну и там много чего еще можно сделать.
Выглядит крайне неудобно и не интуитивно. Но порой такую штуку можешь встретить в компаниях. Хотя я против такой хуйни, какая-то блядь избыточная безопасность.Что-то вроде центра сертификации, писал как-то отдельный пост на эту тему. Нашел еще видос у пиндоса на эту тему, можешь визуально глянуть и проникнутся. Такие дела! 🛠 #linux #devops — ✅ @bashdays / @linuxfactory / @blog
Такие предложения бывают раз в 100 лет, тем более с рекомендациями, НЕ ПРОЕБИСЬ. Предложи удалёнку, 250 тыщ в месяц, хорошее отношение и по итогу получишь Золотую Антилопу.Пиши быстрее сюда и назначай собес: @LittleGreenCat 🛠 #хантинг — ✅ @bashdays / @linuxfactory / @blog
Производитель пива изменяет формулу напитка, предварительно проводит А/Б тестирование. Из 10ти тестировщиков, только 1му не зашёл новый напиток. А это означало, что новое пиво мастхев и его можно вливать в пузаны населению. Но что-то пошло по пизде, новое пиво не взлетело. А потребители массово захейтили производителя и потребовал вернуть старую формулу.Почему всё пошло по пизде? Ведь на проекте были тестировщики, были результаты исследований. Что не так? Все просто, в отличие от потребителей, тестировщики не знали какой бекэнд они тестировали, старый или новый. Производитель банально не учел у потребителей когнитивное искажение — отклонение в сторону «Статус-Кво». Эт чё за хуйня? Это склонность держаться за старое, даже если новое в разы лучше.
Идите нахуй со своим новым фреймворком, мне привычнее на Bash скриптах сервера настраивать. Лучше оставлю всё как есть. Куберы? Нене, я лучше протоптанной дорожкой пойду и на docker swarm буду жить.Короче эта тяга ко всему привычному и знакомому, даже если оно пиздец не удобное и не безопасное. Почему появляется искажение «Статус-Кво». Ты годами задрачивал Bash скрипты и теперь с помощью их можешь решить абсолютно любую задачу. Но приходит какой-то Алёша и говорит — Антон, твои скрипты унылое гавно, слишком сложные и трудозатратные. Чтобы решить задачи, есть более эффективные инструменты. С помощью этих инструментов ты будешь тратить в 10 раз меньше времени и результат будет лучше. Но чтобы всё получилось, тебе придется окунуться в новое и еще годик позадротить. Антон шлёт нахуй этого Алёшу. Зачем изучать новое, если дорожка протоптана и заасфальтирована. Иди по ней и в ус не дуй. Так работают мозги. Работа с привычкой. У мозга есть знакомые сценарии и готовые шаблоны. Поэтому мы с тобой склонны избегать перемен, даже если они приведут к лучшему результату.
По крайней мере у меня так, я в рот ебал что-то новое изучать, особенно если это нужно не мне, а работодателю. Если я делаю это для себя, то конечно с этим проще.Последствия этих искажений очевидны — ты пиздецово деградируешь. Упускаешь возможности, хуяришь на нелюбимой работе, пишешь душный код, лишь бы от тебя отъебались. Но иногда эти искажения наоборот полезны — когда твои новые решения несут непредсказуемые и высокие риски. В этой ситуации «Статус-Кво» будет хорошим выбором, но только если это не сверх осторожность. Следовать привычки это не плохо или хорошо. Всё зависит от привычки. Можно привыкнуть ко всему, даже если это раньше казалось тебе не возможным.
Когда ты начал изучать Кубер и такой — да блядь, почему эта хуйня такая неочевидная? А через полгода ты уже его на хую вертел и всё что можно в него мигрировал.Всегда пробуй то, что кажется некомфортным или страшным. Будь открыт к новому, получай, а не трать свою энергию от знакомства с неизведанным. Ну и конечно же оценивай риски и преимущества изменений (swot-анализ), чтобы принимать более осознанные решения. Задавай вопрос — а действительно ли я делаю так, потому что это лучше для меня? Или потому что это привычно? Главная опасность «Статуса-Кво», то что люди могут привыкнуть к любым ужасам, причиной которых они сами и являются. Поэтому чтобы не быть причиной ужасов, задумайся — когда именно твоё мнение стало твоим. Подведем черту. Если решил что-то изменить, убедись что другим это зайдет. Проводи тесты на реальных пользователях, а не на заинтересованных лицах (тестировщиках).
Как с Кинопоиском, когда они выкатили новую морду, весь интернет орал. По итогу ребята вернули старую версию, но оставили возможность переключаться на новую.Так и с пивом, теперь есть 2 версии. Старое и новое. А потребитель уже сам выберет, что ему больше по вкусу. Пили параллельно, вводи параллельно, давай право выбора и у тебя всегда всё будет хорошо. Хорошего тебе дня! 🛠 #рабочиебудни — ✅ @bashdays / @linuxfactory / @blog
C:\Users\<user>\.wslconfig.
Пример:
[wsl2]
processors=2
Здесь я выделил виртуальной машине 2 ядра из 16ти доступных. По умолчанию wsl сразу выгребает 16 ядер и половину памяти.
Таких параметров для тонкой настройки — жопой ешь, под любые твои хотелки и потребности.Хочешь подключить swap? Без проблем! Хочешь указать кастомное ядро? Хуйня! Есть и такой параметр! Про всё остальное почитаешь сам. Всё это удобно собрано в этой доке, причем на русском языке. Садишься, пробегаешься глазками, вникаешь, закрываешь свои базовые потребности. Удобно! В общем имей в виду, что даже wsl поддаётся конфигурации.
Хотя у меня никогда не возникало потребностей что-то менять, дефолтные параметры вполне вменяемые, линуксы не тормозят, всё работает из коробки. Но позадротить иногда хочется и благо для этого есть всё необходимое.Пользуйтесь! 🛠 #linux #networks #windows #wsl — ✅ @bashdays / @linuxfactory / @blog
wsl имел такой же айпишник как и хостовая машина, нужно сделать так:
В винде, в папке C:\Users\<user>\ создать файл с названием .wslconfig и запихать в него:
[wsl2]
networkingMode=mirrored
Затем перезапустить wsl2 в повершеле:
wsl --shutdown
И после этого твой линукс получит тот же самый айпишник что и хостовая машина (192.168.0.100), а не виртуальные (172.31.124.159, 10.255.255.254).
Ну а там дальше пробрасывай порты и развлекайся как твоей душе угодно.
Режим mirrored включает зеркальный режим сети, при котором wsl использует сетевой стек хоста, а не собственную виртуализированную NAT-сеть. — wsl и винда имеют один и тот же IP-адрес — Порты, открытые в wsl, становятся видимыми как будто они открыты на самой винде. — Локальные сервисы винды и wsl могут легче видеть друг друга без специальных настроек. — Повышенная совместимость с випиэн, файрволами и корпоративными прокси.Раньше жили пиздатее, можно было сделать так:
networkingMode=bridge и виртуалка в wsl получала айпишник прям по DHCP. Но в новых версиях винды эту штуку выпилили, видимо на это были свои причины.
Где и как можно применить:
- Ты хочешь из винды обратиться к серверу поднятому внутри wsl, без localhost:port-forward и прочих долбаёбских танцев.
- Проблемы с випиэн (часто бывает, что при включённом випиэн wsl теряет интернет или не видит другие хосты).
- Когда надо изнутри wsl видеть локальную сеть хоста и взаимодействовать, как обычное приложение винды.
- При разработке серверных приложений, если нужно, чтобы всё вело себя как на обычной машине, а не в изолированной виртуалке.
Ну ты понял. Бери на вооружение, хуйня полезная если правильно применить.
🛠 #linux #networks #windows #wsl
—
✅ @bashdays / @linuxfactory / @blogsu -c 'ls -la'
С виду всё верно. Но если внимательно прочитать команду и подумать, происходит такое:
Хочу стать root и выполнить команду ls -la.Но у
su другое мнение:
Хочу стать пользователем с именем -cА
-c — это не имя пользователя, а опция.
Поэтому правильно так:
su root -c 'ls -la'
Теперь логика не хромает:
Перейти к пользователю root и выполнить команду ls -la.Вроде мелочь, а на эти грабли постоянно наступают и бегут — аа, у меня принтер не печатает!!! Что я делаю не так???
А чем отличается su от sudo я писал тут, почитай на досуге и обнови нейронные связи.🛠 #bash #badpractices #bestpractices — ✅ @bashdays / @linuxfactory / @blog
nip.io ничего не слышал, но всё чаще встречаю его у ребят с Linux Factory.
Суть этого сервиса — автоматически разрешать поддомены в IP адреса без необходимости поднимать свой DNS сервер.
Сейчас как мы делаем, локально редактируем файл /etc/hosts, прописываем в него какие-то свои локальные айпишники на вымышленные домены.
Например:
192.168.0.10 nginx.local
192.168.0.11 grafana.local
И если перейти по адресу nginx.local попадаешь на виртуалку с айпишником 192.168.0.10. Это всё очевидно.
Но опять же как оказалось про манипуляции с hosts файлом многие не знали.А ведь это база. С помощью которой ты к примеру поднимаешь новый продакшен. Но что бы протестировать его, тебе нужно подкинуть на новый продакшен домен со старого продакшена. А тебе такое сделать не дадут. Вот и прописываешь себе в
hosts этот домен, указываешь айпишник нового прода, идешь тестишь, если все ок, то меняешь A запись.
Вернемся к nip.io, суть там такая же, прописываешь айпишники и нужные домены и по итогу получаешь такое:
nginx.192.168.0.10.nip.io → 192.168.0.10
app.192.168.0.11.nip.io → 192.168.0.11
test.192.168.0.12.nip.io → 192.168.0.12
Теперь открыв nginx.192.168.0.10.nip.io ты попадешь на 192.168.0.10 без редактирования своего hosts файла.
Давай потыкаем
У меня на IP 192.168.10.6 в локалке висит малина со всякими открытыми портами.
Пингуем:
ping 192.168.10.6.nip.io
В ответ я получаю такую картинку:
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: 192.168.10.6.nip.io
Address: 192.168.10.6
Отлично, пинг прошел, вернулся локальный айпишник. То есть мы пинганули какой-то глобальный домен, а он привел нас на локальный сервис.
Теперь я направляюсь в браузер и открываю url:
http://192.168.10.6
Мне открывается стартовая страница nginx. Тут всё понятно и логично. А теперь давай сделаем так.
http://nginx.192.168.10.6.nip.io
Хуяк и видим предупреждение:
Для сайта 192.168.10.6.nip.io не поддерживается защищенное подключениеНу клёвое же. Запрос прошел через глобальный домен и перенаправил запрос в мою локальную сеть. Без необходимости что-то прописывать в
hosts файле.
Просто жмем «продолжить» и попадаем снова на стартовую страницу nginx.
Еще вариант с портами:
http://sync.192.168.10.6.nip.io:8384На порту
8384 у меня висит syncthing и всё отлично открывается. То есть можно пробрасывать запросы через домен прям на порты или в докер контейнеры.
А можно прям кучу поддоменов плодить:
http://a.b.c.d.192.168.10.6.nip.io/И всё будет работать. А еще можно на такие домены получить SSL сертификаты, но у тебя должен быть белый айпишник.
sudo certbot certonly --standalone -d nginx.204.0.115.50.nip.io
Хуяк и у тебя готовый SSL для домена nginx.204.0.115.50.nip.io. Ну а если не хочется возиться с certbot можно воспользоваться алтернативами, например acme.sh или caddy.
Минусы nip.io:
1. Не поддерживает wildcards, но в большинстве случаев они избыточны. Инструмент заточен больше на удобное тестирование при разработке.
2. SSL работает только с публичными IP. Для 127.0.0.1.nip.io или 192.168.x.x.nip.io Let's Encrypt не выдаст сертификат.
У nip.io есть альтернативы: xip.io или sslip.io
В общем я показал, а тебе уже самому решать где это применить или не применить.Хорошо тебе провести эти выходные. Ну а я пошел фиксить баги. Увидимся! 🛠 #devops #networks — ✅ @bashdays / @linuxfactory / @blog
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
