bashninja | DevOps | SRE |CyberSecurity |Computer Science
前往频道在 Telegram
264
订阅者
无数据24 小时
-27 天
-1330 天
帖子存档
https://habr.com/ru/articles/1017290/
Набросал тут статейку на Хабре =)
Вопрос с реального собеса на DevOps-позицию
df -h показывает 20% занято. du -sh /* в сумме даёт 95%. Сервер лагает. Места "нет".
Что происходит и как починить?
.
.
.
Файл удалили через rm, но процесс его держит открытым. Ядро не освобождает блоки пока жив файловый дескриптор - место физически занято, просто невидимо. Классика: лог-файл ротировали rm пока java или nginx в него пишет.
Найти проблему: lsof +L1
Показывает открытые файлы у которых счётчик ссылок меньше 1 - файл удалён из файловой системы, но процесс его ещё держит. Вывод будет примерно такой:
java 1234 user 7w REG ... /var/log/app.log (deleted)
7w - номер дескриптора и режим доступа. Цифра - номер (7), буква - что процесс делает с файлом: r читает, w пишет, u читает и пишет. В нашем случае java пишет в лог - значит w.
Починить без рестарта: > /proc/1234/fd/7
> - оператор перенаправления в bash, открывает файл на запись и обнуляет содержимое. /proc/1234/fd/ - папка где Linux хранит все открытые дескрипторы процесса 1234 в виде симлинков на реальные файлы. 7 - цифра из вывода lsof перед буквой режима.
Команда идёт к файлу напрямую через дескриптор - минуя файловую систему где файл уже "удалён". Место освобождается моментально, процесс продолжает работать.
Сталкивались с таким? 👇💻 Windows, Linux, macOS — на чём реально работают инженеры в 2026?
Холиварная тема. Но давайте честно — выбор рабочей ОС в IT это не религия, это компромисс между болью и удобством.
🍎 macOS — Unix из коробки, нормальный экран, батарея. ssh, grep, curl без танцев. Минус: цена железа и закрытая экосистема. Сломался тулчейн Apple Silicon — идёшь гуглить почему brew опять что-то не то слинковал.
🐧 Linux — окружение совпадает с продакшеном один в один. Никаких сюрпризов с line endings, полный контроль над всем. Цена: раз в полгода после обновления ядра что-нибудь отвалится. Garuda, Ubuntu, Arch — у каждого дистра своя секта.
🪟 Windows — WSL2 реально вытащил ситуацию: полноценное Linux-ядро, Docker Engine без прослойки. Но стоит шагнуть за пределы WSL: пути с обратными слешами, права доступа ни с чем не совместимы, и PowerShell который притворяется bash.
Занятная закономерность: джуны стартуют на Windows → мидлы переезжают на macOS → сеньоры уходят на Linux и не возвращаются.
На чём работаете и почему именно на этом? 👇
🎬 Мини-сериалы и документалки по хакингу
━━━━━━━━━━━━━━━━━━
👋 Привет, родные!
━━━━━━━━━━━━━━━━━━
Подборка документалок и мини-сериалов для тех, кто хочет понять как работает хакинг изнутри. Реальные истории, интервью с легендами индустрии и разборы громких кейсов.
━━━━━━━━━━━━━━━━━━
🏆 Must Watch
━━━━━━━━━━━━━━━━━━
The Internet's Own Boy (2014)
История Аарона Шварца — создателя RSS, Reddit, активиста открытого доступа. Трагический финал борьбы с системой.
We Are Legion: The Story of the Hacktivists (2012)
Документалка про Anonymous — от истоков до Operation Payback. Интервью с участниками, анализ идеологии.
Zero Days (2016)
Stuxnet — кибероружие США и Израиля против иранской ядерной программы. Первая документированная кибервойна.
The Great Hack (2019)
Cambridge Analytica, Facebook и манипуляции выборами. Как данные стали оружием массового поражения.
━━━━━━━━━━━━━━━━━━
🎯 Хакеры и их истории
━━━━━━━━━━━━━━━━━━
Darknet Diaries (подкаст → документалка)
Джек Райзайдер рассказывает реальные истории про хаки, пентесты и киберпреступления. Лучшие эпизоды:
— Kevin Mitnick и его побег от ФБР
— Взлом казино через аквариум
— История Silk Road
Silk Road: Drugs, Death and the Dark Web (2017)
Ross Ulbricht (Dread Pirate Roberts) и создание первого даркнет-маркетплейса. От идеи до пожизненного срока.
The Hacker Wars (2014)
Anonymous, LulzSec, Jeremy Hammond. Реальные кадры арестов, интервью с хакерами из тюрьмы.
━━━━━━━━━━━━━━━━━━
💰 Киберпреступность
━━━━━━━━━━━━━━━━━━
Crime + Investigation: The Billion Dollar Code (2021)
История стартапа ART+COM vs Google Earth. Кража технологий и судебные баталии.
Hunting the KGB Killers (2017)
Кибершпионаж, APT28 (Fancy Bear) и атаки на западные институты. Расследование связей с ГРУ.
The Perfect Weapon (2020)
Документалка про кибервойны между государствами. От Stuxnet до вмешательства в выборы.
━━━━━━━━━━━━━━━━━━
🔐 Security & Privacy
━━━━━━━━━━━━━━━━━━
Citizenfour (2014)
Эдвард Сноуден и разоблачение массовой слежки АНБ. Оскар за лучший документальный фильм.
Terms and Conditions May Apply (2013)
Что на самом деле написано в пользовательских соглашениях. Кто владеет твоими данными?
The Social Dilemma (2020)
Бывшие сотрудники Google, Facebook, Twitter о том, как соцсети манипулируют поведением. Алгоритмы как оружие.
━━━━━━━━━━━━━━━━━━
🎓 Технические разборы
━━━━━━━━━━━━━━━━━━
Hacking Google (YouTube серия, 2022)
Официальная серия от Google про Project Zero, баг-баунти и защиту инфраструктуры. Реальные кейсы от инсайдеров.
Hackerville (2018, мини-сериал)
Художественный, но основан на реальных событиях. Киберпреступность в Румынии, взломы банков.
Code 2600 (2011)
Документалка про хакерскую культуру и журнал "2600: The Hacker Quarterly". Интервью с легендами сцены.
━━━━━━━━━━━━━━━━━━
⚡️ Бонус: YouTube каналы
━━━━━━━━━━━━━━━━━━
Computerphile
Академический подход: как работают алгоритмы шифрования, SQL injection, buffer overflow.
LiveOverflow
CTF разборы, реверс-инжиниринг, эксплуатация уязвимостей. Для тех, кто хочет практики.
IppSec
Прохождения машин с HackTheBox. Полные разборы с объяснениями.
━━━━━━━━━━━━━━━━━━
На выходных есть чем заняться! 🍿
#hacking #infosec #documentary #mustwatch
🐬 Flipper Zero: карманный мультитул для радиохакинга
━━━━━━━━━━━━━━━━━━
👋 Привет, родные!
━━━━━━━━━━━━━━━━━━
Сегодня разбираем Flipper Zero — портативное устройство для работы с радиочастотами, RFID, NFC и GPIO. Это швейцарский нож для пентестеров, IoT-исследователей и всех, кто хочет понять, как работают беспроводные протоколы.
━━━━━━━━━━━
🎯 Что умеет
━━━━━━━━━━━
— RFID (125 kHz): чтение/эмуляция карт доступа, домофонных ключей
— NFC (13.56 MHz): работа с бесконтактными картами Mifare/NTAG
— Sub-GHz (315/433/868/915 MHz): анализ сигналов пультов, датчиков
— Infrared: универсальный пульт для ТВ, кондиционеров
— BadUSB: эмуляция клавиатуры для выполнения скриптов
— GPIO/UART/I2C/SPI: отладка электроники и прошивка железа
━━━━━━━━━━━
⚙️ Железо
━━━━━━━━━━━
CPU: STM32WB55 (Cortex-M4 @ 64MHz + M0+)
Display: 128×64 монохром (как тамагочи!)
Battery: 2000 mAh (~неделя работы)
Вес: 102г
Размер: с банковскую карту
━━━━━━━━━━━
🚀 Практика
━━━━━━━━━━━
Sub-GHz радио:
— Клонирование пультов от ворот/шлагбаумов
— Реверс-инжиниринг протоколов IoT-датчиков
— Анализ сигналов беспроводных устройств
RFID/NFC:
— Тестирование СКУД на объектах
— Эмуляция домофонных ключей
— Чтение ID карт (банковские читает, но платить не даст)
BadUSB:
— Автоматизация deployment скриптов
— Демонстрация векторов атак
— Эмуляция HID-устройств
GPIO:
— Прошивка микроконтроллеров
— Подключение внешних модулей (WiFi Devboard)
— UART-дебаг железа
━━━━━━━━━━━
🔧 Прошивки
━━━━━━━━━━━
Stock (официальная):
✅ Стабильная
❌ Ограничения Sub-GHz для некоторых регионов
Unleashed:
✅ Без региональных ограничений
✅ Больше протоколов
→ Для исследователей
RogueMaster:
✅ Максимум плагинов
✅ Активное комьюнити
❌ Может быть нестабильна
Xtreme:
✅ Баланс стабильности и функционала
→ Золотая середина
Обновление: qFlipper (GUI) или WebUpdater
━━━━━━━━━━━
💡 Применение в DevOps/Security
━━━━━━━━━━━
Физическая безопасность:
— Аудит СКУД
— Тестирование карт доступа
— Проверка беспроводных систем
IoT Security:
— Анализ протоколов умных устройств
— Поиск уязвимостей в беспроводных датчиках
— Реверс неизвестных протоколов
Автоматизация:
— BadUSB для быстрого деплоя скриптов
— GPIO для прошивки устройств в лаборатории
Обучение:
— Наглядная демонстрация уязвимостей
— Практика с радиопротоколами
━━━━━━━━━━━
⚠️ Легальность
━━━━━━━━━━━
Разрешено:
✅ Тестирование своих систем
✅ Исследовательские цели
✅ Работа с разрешения владельца
Запрещено:
❌ Взлом чужих систем
❌ Клонирование карт для мошенничества
❌ Глушение частот экстренных служб
В России: легален для личного использования
⚠️ Ст. 272 УК РФ (неправомерный доступ) актуальна!
━━━━━━━━━━━
💰 Где взять
━━━━━━━━━━━
Официально: flipperzero.one (~$199 + доставка)
В РФ: маркетплейсы 25-35k ₽
Must-have аксессуары:
— WiFi Devboard (для атак WiFi/BLE)
— Protective case (экран царапается)
— SD карта (базы данных и логи)
━━━━━━━━━━━━━━━━━━
📚 Полезные ресурсы
━━━━━━━━━━━━━━━━━━
Документация: docs.flipper.net
GitHub: github.com/flipperdevices
Форум: forum.flipperzero.one
Awesome Flipper: github.com/djsime1/awesome-flipperzero
━━━━━━━━━━━━━━━━━━
✅ ИТОГ
━━━━━━━━━━━━━━━━━━
— Понимаешь как работают беспроводные протоколы
— Умеешь тестировать физическую безопасность
— Получаешь hands-on опыт с радио и RFID
— Готов к реальным security аудитам
⚠️ С большой мощностью приходит большая ответственность. Используй только для легального тестирования!
━━━━━━━━━━━━━━━━━━
#hardware #security #pentest #flipper
⚡️ S02E03 — Docker Compose: запускаем микросервисы одной командой
━━━━━━━━━━━━━━━━━━
👋 Привет, родные!
━━━━━━━━━━━━━━━━━━
После Dockerfile логично научиться поднимать стек из нескольких контейнеров. Сегодня разбираем Docker Compose: как одной командой стартовать веб + база + Redis, настроить сети и персистентность.
━━━━━━━━━━━
🎯 Что разберём
━━━━━━━━━━━
— Зачем нужен Compose (проблема: docker run × 5 контейнеров)
— Структура docker-compose.yml
— Services, networks, volumes
— Переменные окружения (.env файл)
— Зависимости между сервисами (depends_on, healthcheck)
— Полезные команды (up, down, logs, exec)
— Типичные грабли и как их избежать
━━━━━━━━━━━
📦 Было vs Стало
━━━━━━━━━━━
Без Compose:
docker run -d postgres
docker run -d redis
docker run -d --link postgres web
docker run -d nginx
Куча команд, сложно воспроизвести, порты и env в разных местах.
С Compose:
docker compose up -d
Всё описано в одном файле, версионируется, воспроизводимо.
━━━━━━━━━━━
🚀 Базовый пример
━━━━━━━━━━━
version: '3.8'
services:
web:
build: .
ports:
- "8080:8080"
depends_on:
- postgres
- redis
postgres:
image: postgres:15-alpine
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
pgdata:
Три контейнера, персистентность, зависимости — всё в 20 строках.
━━━━━━━━━━━
🔗 Networks: как общаются
━━━━━━━━━━━
Compose автоматически создаёт bridge-сеть:
— Контейнеры видят друг друга по имени сервиса
— web подключается к postgres:5432, redis:6379
— Изоляция: разные проекты не видят друг друга
━━━━━━━━━━━
💾 Volumes: данные не теряются
━━━━━━━━━━━
Named volumes (рекомендуется для БД):
volumes:
- pgdata:/var/lib/postgresql/data
Bind mounts (для разработки):
volumes:
- ./app:/app # Изменения кода сразу видны
━━━━━━━━━━━
⏱️ Healthcheck: реальная готовность
━━━━━━━━━━━
depends_on запускает по порядку, но НЕ ждёт готовности!
Решение:
postgres:
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 5s
web:
depends_on:
postgres:
condition: service_healthy
Теперь web стартует только когда postgres реально готов.
━━━━━━━━━━━
🛑 Типовые грабли
━━━━━━━━━━━
❌ "Connection refused" к базе
→ База не готова, добавь healthcheck
❌ Volumes не сохраняются
→ Используй named volumes
❌ Порты конфликтуют
→ ss -tulnp | grep :8080
❌ Переменные не работают
→ Проверь .env файл
❌ Контейнеры не видят друг друга
→ Убедись в одной сети
━━━━━━━━━━━
🏁 Что делаем в лабе
━━━━━━━━━━━
Задание 1: Flask + PostgreSQL
— Простой стек
— Настройка healthcheck
— Проверка персистентности
Задание 2: Nginx + Flask + PostgreSQL + Redis
— Полный production-like стек
— Frontend/backend сети
— Переменные через .env
— Балансировка и масштабирование
Задание 3: Дебаг проблем
— База не готова
— Volumes не сохраняются
— Порты заняты
━━━━━━━━━━━━━━━━━━
🔗 Лабораторная работа (lab07):
https://github.com/b4shninja/b4shninja/blob/main/courses/from_zero_to_devops_hero/lab07/README.md
━━━━━━━━━━━━━━━━━━
В лабе:
✅ Полная теория с примерами
✅ Готовые проекты для запуска
✅ Мини-челленджи
✅ Troubleshooting guide
✅ Quick Start за 5 минут
━━━━━━━━━━━━━━━━━━
✅ ИТОГ
━━━━━━━━━━━━━━━━━━
— Запускаешь целый стек одной командой
— Понимаешь как работают сети и volumes
— Умеешь дебажить проблемы с зависимостями
— Готов к оркестрации в production (Kubernetes впереди!)
━━━━━━━━━━━━━━━━━━
Давай, газуй! 🚀🧩 VPN в РФ в 2025: как блочат, что живёт дольше и что выбрать
🧠 Что такое VPN?
VPN - это зашифрованный тоннель между устройством и удалённым узлом. Провайдер видит факт соединения и метаданные, содержимое не видит. VPN не отменяет законы - соблюдай правила своей страны и сети.
🚧 Как провайдеры распознают и ограничивают
🧱 IP и подсети - банят адреса узлов целыми диапазонами.
🧭 DNS-манипуляции - подмена или блок DoH/DoT до старта VPN. Главное: после подключения весь DNS идёт внутри туннеля, без утечек.
🔬 DPI и поведение - сигнатуры протоколов, TLS-отпечатки, SNI в открытом ClientHello. Есть ECH, который прячет SNI, но внедрение ограничено и часто режется.
📉 UDP-трафик - частая цель для душения и отрезания, особенно QUIC и нестандартные порты.
🕵️ Active probing - DPI простукивает сервер, подтверждает протокол и вносит адрес в бан. Устойчивость зависит от реализации: помогают uTLS, правдоподобный ALPN/SNI, корректные ответы бэкенда.
🐌 Троттлинг - не полный блок, а сильное замедление.
🛡 Протоколы и маскировки: что реально держится
🧰 Классические VPN
OpenVPN
➕ Гибкий и распространённый.
➖ "Голый" вариант легко сигнатурится.
✅ Включай tls-crypt/tls-crypt v2, при необходимости маскируй через stunnel или WebSocket. Режим OVPN-TCP:443 выглядит как обычный HTTPS-трафик браузера.
WireGuard
➕ Очень быстрый и простой.
➖ Работает только по UDP. "Голая" конфигурация часто палится и душится.
✅ Используй внешний транспорт: обёртка UDP→TCP/WS/QUIC (sing-box, udp2raw и аналоги). Живучесть выше - задержки тоже выше.
IKEv2/IPsec
➕ Нативная поддержка в iOS, macOS, Windows.
➖ Узнаётся DPI и зависит от UDP.
🥷 Маскировочные стеки
V2Ray/XRay (VLESS + TLS/REALITY, WS/gRPC/HTTP2) - приоритет для маскировки: "чище" и предсказуемее, чем VMess, который чаще сигнатурится.
Trojan/Trojan-GO - имитация обычного TLS-веб-трафика; стойкость требует реальный домен, корректный сертификат и ALPN плюс правильные ответы на probe.
Shadowsocks (+ плагины, v2ray-plugin/uTLS) - лёгкий прокси; живучесть полностью зависит от плагина и мимикрии.
Hysteria2 (QUIC) - очень быстро, но при давлении на UDP может не взлететь.
Заметка про ALPN
✅ h2 поверх TCP помогает выглядеть как обычный веб.
❗️ h3/QUIC - спорный выбор в сетях, где режут UDP.
🧭 Рекомендации по выбору и настройке
🧩 Мультипротокол и обфускация - ищи профили VLESS(+TLS/REALITY), Trojan, OVPN-TCP через stunnel/WS. Для WireGuard ставь обёртку.
🔌 Порты 443/80 - мимикрия под HTTPS/HTTP.
🔐 TLS 1.3, реалистичный ALPN/SNI - плюс корректные ответы бэкенда.
🧪 DNS-гигиена - после подключения весь резолвинг внутри туннеля; при split-tunneling следи за утечками. DoH/DoT полезны до установления VPN и вне туннеля.
🔁 Ротация IP и доменов - помогает переживать активные баны подсетей.
🧰 Клиенты - автообновление профилей, kill-switch, split-tunneling, тесты на утечки.
🌍 Инфраструктура - сервера ближе географически (меньше RTT), нормальная поддержка и запасные каналы связи.
🛰 Что поставить под конкретного провайдера
🏠 Жёсткий домашний DPI, режет UDP - Trojan или VLESS-WS-TLS, либо OpenVPN-TCP:443 через stunnel/WS.
📱 Мобильные сети с плавающим качеством - VLESS-WS-TLS; Hysteria2 только если UDP жив; WireGuard с обёрткой как компромисс.
🏢 Офисы и гостевые Wi-Fi - почти всегда TCP:443 с правдоподобным TLS.
✈️ Telegram: MTProto-прокси и VPN
MTProto-прокси разблокирует только Telegram. VPN защищает и ведёт весь трафик. Можно держать оба: в этом случае Telegram может пойти через MTProto мимо VPN - это нормально. Проверь маршруты и отсутствие DNS-утечек.
🌩 Доменные фронты
У крупных CDN фронтинг в основном недоступен или ломается из-за политик вроде SNI-mismatch и ACL. Локальные исключения редки и работают нестабильно.
📜 Правовая часть
Регулирование меняется. Операторы обязаны блокировать ресурсы по реестрам, а риски для пользователя зависят от сценариев и действующих норм. Это не юридическая консультация - проверяй актуальные правила и корпоративные политики.
🚀 XARGS: ТВОЯ СУПЕРСИЛА В КОМАНДНОЙ СТРОКЕ!
Привет, родные ! 👋 Сегодня разберем xargs — утилиту, которая превратит тебя из новичка в гуру bash! 🍔
✨ ЧТО ЭТО ВООБЩЕ ТАКОЕ?
xargs — это преобразователь stdin в аргументы командной строки.
Проще говоря:
Без xargs: echo "file1 file2" | rm ❌ (не работает!)
С xargs: echo "file1 file2" | xargs rm ✅ (работает!)
xargs берет то, что приходит из stdin и превращает в аргументы для следующей команды!
🔥 ОСНОВНЫЕ ФИШКИ ЗА 30 СЕКУНД 🙃
# Массовое удаление
find . -name "*.tmp" | xargs rm
# Параллельная загрузка
xargs -P5 -n1 wget < urls.txt
# Безопасно для файлов с пробелами
find . -type f -name '*.mp3' -print0 | xargs -0 -I{} mv -- '{}' /music/
💡 ПОПУЛЯРНЫЕ СЦЕНАРИИ
📁 РАБОТА С ФАЙЛАМИ 😮
# Поиск в куче файлов
find /project -name '*.py' -print0 | xargs -0 grep -nH 'import pandas'
# Архивирование найденного
find . -type f -name '*.js' -print0 | tar --null -czf backup.tar.gz -T -
# Массовое переименование
find . -type f -name '*.jpg' -print0 | xargs -0 -I{} mv -- '{}' '{}'.backup
⚡️ ПАРАЛЛЕЛЬНАЯ МОЩЬ 😏
# Конвертация изображений (4 потока!)
find . -type f -name '*.png' -print0 | xargs -0 -P4 -n1 -I{} convert '{}' '{}'.jpg
# Параллельные HTTP-запросы
xargs -P10 -n1 curl -O < urls.txt
# Бэкап нескольких БД одновременно
printf '%s\n' db1 db2 db3 | xargs -n1 -P3 -I{} pg_dump -Fc -d "{}" -f "{}.dump"
🔧 АВТОМАТИЗАЦИЯ 😍
# Выполнение команд из файла
xargs -L1 -I{} sh -c '{}' < commands.txt
# Обработка с логированием
find /var/log -type f -name '*.log' -print0 \
| tee >(tr '\0' '\n' > files.list) \
| xargs -0 grep -H 'ERROR'
🛡 БЕЗОПАСНОСТЬ ПРЕВЫШЕ ВСЕГО
ЧЕГО ИЗБЕГАТЬ 🚽:
# ❌ ОПАСНО - нет подтверждения
find / -name "*" | xargs rm -rf
# ❌ Чувствительно к пробелам find . -name "My File.txt" | xargs rКАК ДЕЛАТЬ ПРАВИЛЬНО 👍:
# ✅ Всегда тестируй с -p сначала!
find . -name "*.log" | xargs -p rm
# ✅ Для файлов с пробелами используй -print0/-0
find . -name "*.txt" -print0 | xargs -0 rm
# ✅ Проверяй лимиты системы xargs --show-limit🎪 ЭКСТРЕМАЛЬНЫЕ СЦЕНАРИИ МАССОВАЯ ОБРАБОТКА 🤯:
# Ресайз фотографий в 8 потоков
find . -name "*.RAW" -print0 | xargs -0 -P 8 -I {} convert {} -resize 50% {}.jpg
# Параллельный анализ логов
find /logs -name "*.gz" -print0 | xargs -0 -P 4 zcat | grep "500 ERROR"
ДИНАМИЧЕСКИЕ КОМАНДЫ 😠:
# Каждая строка из файла - как отдельная команда
cat deployments.txt | xargs -L 1 -I {} sh -c "{}"
📚 шпаргалОчка ✍️
# Базовый синтаксис cmd | xargs target_cmd
# Параллельно + замена
cmd | xargs -P N -I {} command {}
# Безопасно для пробелов find ... -print0 | xargs -0 command
# По одному аргументу cmd | xargs -n1 command
# Подтверждение выполнения
cmd | xargs -p command
# Строка за раз cmd | xargs -L 1 command💡 ЗОЛОТЫЕ ПРАВИЛА 😠 Всегда тестируй с -p перед опасными операциями Используй -print0 + -0 для работы с файлами -P N ускоряет обработку в N раз -I {} дает полный контроль над подстановкой Комбинируй с find для максимальной эффективности 🎯 ВЫВОД: xargs + find = 💪 СУПЕРСИЛА командной строки! 🏋️♂️ Теперь ты можешь обрабатывать тысячи файлов БЕЗ циклов for! Попробуй и расскажи о результатах в комментах! 👇 🔥 Лайк если полезно! Репост если не гей! 😏
Родные, привет 👋
👨🦲Как оно бывает:
ребят, у меня сегодня мозг как nginx после кривого апстрима: то 200, то 502.
поэтому без героизма — 30 минут и одна задача. таймер тикает, телефон в изгнании.
🔫что это значит на практике:
— сегодня: почему оно «не слушает порт» и где вообще этот ss -tulnp;
— завтра: допингуем до нужного сервиса и не умрём;
— послезавтра: нормальный docker run -p, чтобы браузер перестал делать вид, что нас не знает.
📝после блока — три строчки в заметки: что делал → где сломалось → чем починил.
вот серьёзно, это полезнее, чем десять мотивационных рилсов с человеком, который никогда не видел journalctl.
😵и да, сон — это не чит-код, это часть плана. если не спал — не ругайся на голову, она не БД, индексы сама не перестроит.
😳маленькие победы считаются:
- поднял nginx на 8080 и увидел страницу — галочку поставь;
- словил 502 и довёл до 200 — вообще праздник;
- уменьшил образ на 20 МБ — гордись, это минус одна картошка в рюкзаке.
😊Как идея: запустить общий чат, разбить его по тредам по технологиям и накидать туда полезности? Если «за» — черканите в комменты.
Привет, родные! 👋
Когда-то я был тем самым админом «на всё»: таскал принтеры, распутывал провода, ездил по два часа на работу и думал, что без техвышки в DevOps не берут.
😈Выгорел, устал и понял: или делаю шаг сейчас, или так и живу.
Перестал ждать идеального момента. Перестал копить ролики и статьи «на потом».
Начал делать маленькие домашние стенды 😵— своими руками.
━━━━━━━━━━━━━━━━━━
📝 Как я учился
Утро: 🚌→🚇 дорога. В пути — заметки «что попробую вечером».
Вечер: один конкретный шаг.
Неважно, где ты научился поднимать LAMP или кластер БД — в офисе или дома на виртуалках.
Важно — понимание и навык.
❤️ Формула, которая вывезла
Один вечер — одна вещь:
✅что-то поднять;
✅что-то настроить;
✅что-то понять.
Через пару месяцев пазл сложился: логи уже не пугали, стало ясно, где искать причину, пришла уверенность.
😊 Результат
✅Через 3 месяца и обновлённое резюме на hh я попал в Сбер ✅(3-я линия ТП).
✅Через полгода — руководитель 3-й линии.
✅Ещё через год — DevOps-инженер на проекте в одном лице.
━━━━━━━━━━━━━━━━━━
📚 FROM ZERO TO DevOps Hero — это бесплатный курс
Короткие статьи, лабы на GitHub, разбор типовых ошибок — без воды.
Навигация по сериям — в закрепе канала.🍻
🤗Пиши вопросы. Делай. Расти. Я рядом.
🖼️😍😍😍😍😍😍😍😍😍🖼️
Привет, родные 👋
Запилил вам хорошим удобную навигацию по всем сериям. Теперь не надо листать ленту — один пост, два клика, и ты в нужной теме. Сохраняй в «Избранное» и кидай друзьям.
Буду дополнять по мере выхода серий 👉
🐧 Сезон 1 — "Профессия и база"
- S01E01 — Кто такой DevOps-инженер в России?
- S01E02 — Сколько зарабатывает DevOps-инженер в России?
- S01E03 — Как приходят в DevOps?
- S01E04 — Что должен уметь джун DevOps?
- S01E05 — Стек технологий в России
- S01E06 — Как пройти собеседование на DevOps в России?
- S01E07 — Домашняя лаборатория для будущего DevOps
- S01E08 — Практика Linux: процессы, права, пакеты, сервисы и логи
- S01E09 — Базовая сеть: как понять, почему «не стучится до базы»
- S01E10 — Мини-сервис локально: веб + база. Ломаем и чиним «боевые» баги!
🖼️ Сезон 2 — "Контейнеры и Docker"
- S02E01 — Docker с нуля: чем он отличается от виртуальной машины и как им пользоваться
- S02E02 — Свой первый Dockerfile: образы, кэш и размер без боли
- S02E03 — Docker Compose: запускаем микросервисы одной командой
⚡️ S02E02 — Свой первый Dockerfile: образы, кэш и размер без боли
━━━━━━━━━━━━━━━━━━
Привет, родные 👋
━━━━━━━━━━━━━━━━━━
Сегодня собираем свой образ. По-честному: что такое Dockerfile, как работает кэш слоёв, почему образы «толстеют», и как сделать аккуратно и быстро.
━━━━━━━━━━━
🎯 Что разберём (ровно по заданию)
━━━━━━━━━━━
— Базовые инструкции Dockerfile: FROM, WORKDIR, COPY, RUN, ENV, EXPOSE.
— Кэш слоёв: почему порядок инструкций важен и как ускорять сборку.
— .dockerignore: убираем лишние файлы из контекста.
— Уменьшаем размер образа через multi-stage.
— Частые грабли: «не виден файл», «команда не находится», «локально ок — в контейнере нет», «порт занят».
— Мини-чек-лист качества: кэш, размер, не-root пользователь, логи и порты.
━━━━━━━━━━━
📦 Скелет Dockerfile (что должно быть всегда)
━━━━━━━━━━━
FROM <база>:<тег>
WORKDIR /app
Сначала манифесты зависимостей → RUN установка
Потом код → COPY . .
Не-root пользователь
EXPOSE нужного порта
Понятная команда запуска (CMD)
━━━━━━━━━━━
🚀 Пайплайн «быстро и чинно»
━━━━━━━━━━━
Сначала зависимости (кэшируем), потом код. При мелких правках кода сборка летит за счёт сохранённого кэша.
━━━━━━━━━━━
🧪 Multi-stage: «толстый билд, тонкий рантайм»
━━━━━━━━━━━
Builder со всем для сборки → Runtime только с тем, что нужно для запуска.
Размер меньше, старт быстрее, поверхность атаки скромнее.
━━━━━━━━━━━
🛑 Типовые «почему не работает»
━━━━━━━━━━━
— COPY не находит файл → путь считается от контекста сборки.
— Команда не находится → поставили её в builder, а запускаете в runtime.
— Сервис молчит → слушает 127.0.0.1 вместо 0.0.0.0, порт/EXPOSE не совпадают.
— Образ раздулся → нет .dockerignore, тянете лишнее; помогает multi-stage.
— «Permission denied» к Docker → добавь себя в группу docker и перезайди.
— Порт занят → проверь ss -tulnp | grep :8080 или возьми другой порт.
━━━━━━━━━━━
🏁 Что делаем в серии
━━━━━━━━━━━
— Пишем простой Dockerfile под веб-сервис.
— Меряем время сборки до/после перестановки инструкций.
— Сжимаем образ multi-stage подходом.
— Ловим типовые ошибки и чиним их.
━━━━━━━━━━━━━━━━━━
🔗 Домашка, команды и мини-челленджи (lab06):
https://github.com/b4shninja/b4shninja/blob/main/courses/from_zero_to_devops_hero/lab06/README.md
━━━━━━━━━━━━━━━━━━
ИТОГ
━━━━━━━━━━━━━━━━━━
— Понимаешь логику слоёв и кэша.
— Собираешь образ аккуратно и без лишних мегабайт.
— Готов к следующей серии — тома и персистентность.
⚡️ S02E01 — Docker с нуля: чем он отличается от виртуальной машины и как им пользоваться
━━━━━━━━━━━━━━━━━━
Привет, родные 👋
Виртуальная машина — это отдельная операционная система, запущенная внутри вашей основной. Свои процессы, свои настройки, изоляция как у «компа в компе».
Docker — это «контейнер с приложением»: берёт ядро у хоста, тащит только нужные зависимости и взлетает за секунды.
Итог простой: виртуальная машина — тяжёлая броня; контейнер — лёгкая куртка. Для локалки, стендов и CI — самое оно.
━━━━━━━━━━━
🎯 Зачем это тебе
━━━━━━━━━━━
— Запускаешь сервис одинаково на ноуте и на сервере.
— Меньше «у меня не работает» из-за разных окружений.
— Можно экспериментировать без страха: поднял → проверил → снёс → чисто.
━━━━━━━━━━━
📦 Что такое Docker по-человечески
━━━━━━━━━━━
— Образ (image) — слепок приложения и окружения (только чтение, версионируется).
— Слои (layers) — «бутерброд» образа; кэш ускоряет сборку и загрузку.
— Контейнер (container) — запущенный экземпляр образа: легко стартует/останавливается/удаляется.
— Почему его зовут «одноразовым»: файловая система контейнера временная — пересоздал и вернулся к чистому состоянию. Удобно для обновлений и отладки.
— А куда девать данные? Выносить снаружи:
• bind-mount: -v ~/data:/app/data — папка хоста в контейнере;
• volume: -v myvol:/app/data — том, которым управляет Docker.
Так настройки и база не пропадут при пересоздании.
━━━━━━━━━━━
🧰 Мини-шпаргалка команд
━━━━━━━━━━━
— docker run … — запустить контейнер из образа.
— docker ps / docker ps -a — кто бежит и кто недавно бежал.
— docker logs <name> — логи процесса внутри.
— docker exec -it <name> sh — зайти внутрь (если есть shell).
— docker stop <name> → docker rm <name> — остановить и убрать.
— docker image ls, docker pull/push — образы и реестр.
━━━━━━━━━━━
🌐 Порты без боли
━━━━━━━━━━━
— -p 8080:80 = порт 8080 на хосте → 80 в контейнере.
— Не открывается страница? Проверь три вещи:
кто держит порт на хосте — ss -tulnp | grep 8080;
логи контейнера — docker logs <name>;
приложение внутри слушает не 127.0.0.1, а 0.0.0.0.
━━━━━━━━━━━
🛑 Типовые «а почему не работает?»
━━━━━━━━━━━
— Контейнер сразу умирает → смотри docker logs (переменные, пути, команда).
— Порт занят → найди процесс (ss -tulnp | grep :8080) или возьми другой (-p 8081:80).
— «Permission denied» к Docker → добавь себя в группу docker и перезайди в сессию.
— Снаружи тишина, локально ок → проверь UFW/маршруты, открой порт: sudo ufw allow 8080/tcp.
━━━━━━━━━━━
🚀 Что делаем в серии — по полочкам и с улыбкой 😎
━━━━━━━━━━━
— Ставим Docker и запускаем hello-world.
— Поднимаем nginx с пробросом 8080:80.
— Залезаем внутрь, работаем с ОС в контейнере.
— Ловим типовые фейлы и чиним их.
— Убираем за собой, чтобы система не пухла от мусора.
🔗 Домашка, команды и мини-челленджи:
https://github.com/b4shninja/b4shninja/blob/main/courses/from_zero_to_devops_hero/lab05/README.md
ИТОГ
━━━━━━━━━━━━━━━━━━
— Разберёшься, где уместна виртуальная машина, а где контейнер.
— Сможешь запустить сервис, посмотреть логи и быстро понять, что пошло не так.
— Готов к следующей серии — там напишем свой Dockerfile.
📩 Подписывайся, чтобы не пропустить выпуск про Dockerfile.
И зови всех-всех: друзья, коллеги, одногруппники — подписывайтесь, дальше будет ещё интереснее!
⚡️ S01E10 — Мини-сервис локально: веб + база. Ломаем и чиним «боевые» баги!
━━━━━━━━━━━━━━━━━━
👋 Привет, родные 👋 ну что, самое время газануть? )))
🧩 Знакомо? Сайт «жив», база «жива», а ответов нет.
💡 Обычно дело в простых штуках: порт не слушает, адрес не тот, прокси спорит с бэкендом.
🔬 Соберём стенд, где все связи видно как на ладони.
━━━━━━━━━━━
🛠 Что делаем в серии
━━━━━━━━━━━
• — nginx на 80-м порту;
• — тонкий бэкенд на Flask (localhost:5000);
• — PostgreSQL (localhost:5432).
➡️ Маршрут: браузер → nginx → /api → бэкенд → БД → ответ.
━━━━━━━━━━━
🎯 Зачем это тебе
━━━━━━━━━━━
• Видишь систему целиком, а не «ошибку в вакууме».
• Это может сработать у вас на работе и на собесе: типовые кейсы «502», «БД недоступна», «таймаут на порту».
━━━━━━━━━━━
📚 Что разбираем по факту
━━━━━━━━━━━
• Обратный прокси в nginx к локальному бэкенду.
• Как бэкенд ходит в PostgreSQL и где чаще рвётся.
• Где искать правду: journalctl, логи postgres, ss.
🔎 Шесть поломок и быстрый путь к причине:
— бэкенд умер → 502;
— слушает не тот адрес;
— неправильный логин/пароль к БД;
— БД не слушает TCP;
— UFW душит снаружи;
— nginx не перечитал конфиг.
━━━━━━━━━━━
🤝 Честно
━━━━━━━━━━━
Без Docker и оркестраторов. База — связки и диагностика: IP → порт → процесс → конфиг → логи.
━━━━━━━━━━━
🚀 Как работать с выпуском
━━━━━━━━━━━
• Открываешь лабу.
• Поднимаешь веб + бэкенд + БД.
• Специально ломаешь по пунктам и чинишь.
• Короткий отчёт: «что сломал → как нашёл → чем починил».
🔗 Лаба (README, команды, разбор):
https://github.com/b4shninja/b4shninja/blob/main/courses/from_zero_to_devops_hero/lab04/README.md
«Страх — это вывеска “здесь будет рост”.»
Зови всех-всех, подтягивайтесь и жмите «подписаться».🔥
Привет, родные 👋 не газуется?
⚡️⚡️⚡️ Страшно начинать новое — нормально. Разбираем, почему так и что с этим делать
Многие пишут: «Мне уже поздно», «память плохая», «начну завтра».
Так что произошло вот что: мозг не ленивый — он экономит энергию и защищает нас от стыда. А мы принимаем это за «я не способен».
‼️ Но хорошая новость: это чинится конкретными шагами. Ниже — разбор и понятный план.
1️⃣ Почему нас клинит перед стартом
• Мозг любит привычное. Новое = риск. Вот почему это важно: тревога — это не знак «не трогай», а сигнал «будет непривычно».
• Сравнение с профи. Смотришь на чужие 5 лет опыта и думаешь: «я ноль». Ноль — это нормально в начале.
• Страх выглядеть глупо. «Сейчас спрошу — подумают, что туплю». И молчим. Теряем время.
• Перфекционизм. «Сначала разберусь во всём, потом начну». В итоге не начинаем.
2️⃣ Мифы про «старый/плохая память»
• Возраст ≠ стоп. Учиться можно в 30, 40 и 50+. Меняется скорость и стратегия: меньше «зазубрить», больше «связать с опытом».
• Память тренируется задачами, а не «волей». Вот как это работает: делаешь маленькие циклы «прочитал → попробовал → объяснил».
• Усталость — не «глупость». Иногда тебе не учиться — тебе спать.
3️⃣ Что делать. Короткий план без героизма
0. Выбери крошечную цель на 7 дней.
Не «выучу DevOps», а «каждый день 25 минут: Linux-команды + конспект 5 строк».
1. Разбей первый шаг до смешного.
Открыть «лабу», запустить терминал, набрать 3 команды. Всё. Дальше можно продолжить, если есть силы.
2. Ритуал входа (2 минуты).
• режим «не думаем»: надел наушники → открыл план → старт таймера 25 мин.
• телефон — в другой комнате. Да, это важно.
3. Работай на «черновик».
Разреши себе 100 плохих попыток. Плохая попытка считается. Идут знания.
4. Учись вслух.
После блока скажи себе: «Сегодня понял/сделал: …». Это закрепляет лучше, чем ещё ютуб.
5. Спроси один раз в день.
Застрял >10 минут — задай вопрос в чат/поиску. Это может вам помочь не тратить вечер на ерунду.
6. Мини-отчёт (1–3 строки).
Что сделал, что было непонятно, что завтра. Конец.
4️⃣ Как не сдуться на 2-й неделе
• Ограничь сравнение. Подписки/лента — в режим «по выходным».
• Окружение. Найди 1–2 человека «учимся вместе». Можно в комментариях к посту.
• Шаблон дня. Один и тот же час. Мозг любит предсказуемость.
• Запланируй спад. Будет день, когда не хочется. Сделай микро-дозу: 10 минут. Считается.
5️⃣ Скрипты против «я слишком стар/глуп»
• «Я не медленный — я новичок. Новички делают медленно и вслух — это норма».
• «Мне не нужно понять всё. Мне нужно сделать следующий шаг».
• «Я учусь, а не сдаю экзамен. Ошибка — часть работы».
Сохрани, перечитывай перед началом.
6️⃣ Мини-план на 14 дней (пример для тех, кто идёт в DevOps)
Дни 1–3: терминал и базовые команды (cd, ls, cat, grep, tail).
Дни 4–5: процессы и сервисы (ps, top/htop, systemctl).
Дни 6–7: пакеты (apt install/remove/show), логи (journalctl).
Дни 8–9: сети (ip a, ip route, ping, curl).
Дни 10–11: git-минимум (clone, branch, commit, push).
Дни 12–14: маленький проект: «поднять nginx, страничку и чек-лист».
Каждый день: 25–40 минут, мини-отчёт 3 строки.
7️⃣ Если кажется, что память «не держит»
• Пиши короткие конспекты и чек-листы команд — своей фразой.
• Повтор на следующий день: 5 минут посмотреть вчерашнее и запустить 2–3 команды заново.
• Объясни другу/чату: «Вчера я делал X, вот как». Это цементирует знания.
И Т О Г
Вы не сломаны. Вы живые. Страх — это просто сигнал «будет новое».
Делаем маленькие шаги, фиксируем прогресс, задаём вопросы, не стыдимся быть новичками.
p.s эта статья-пост посвящается моим товарищам, которые так и не начали =)
Привет, родные 👋 Газу, газу, газу!
Едем дальше S01E09 — Базовая сеть: как понять, почему «не стучится до базы»
https://dzen.ru/a/aO1h8HRYgTIcamtJ
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
