🔍 Как объединить логи всех контейнеров в одном месте
Привет, укротитель логов!
Вчера в комментах подсказали инструмент logdy — теперь смотрю все логи через браузер. Один бинарник, никаких зависимостей. Показываю все режимы работы.
Установка за 10 секунд
## Простой режим — один лог
Или так:
Открывай
Логи Docker контейнера
Объединение нескольких контейнеров
Запускаем logdy в режиме сокетов:
Направляем логи каждого контейнера:
Теперь все логи в одном интерфейсе с фильтрацией по источнику!
Для локальной разработки
В VS Code:
API режим с токеном
Запускаем с API:
Отправляем логи через curl:
Режим stdin для пайпов
Фишки logdy:
- Парсит JSON логи автоматически
- Разбивает на колонки
- Фильтрация и поиск в реальном времени
- Защита паролем через ключи запуска
- Экспорт логов
💡 Где выручает:
- Отладка микросервисов
- Мониторинг нескольких контейнеров
- Быстрый просмотр логов без SSH
- Демо для заказчика
Итог: один инструмент покрывает 90% задач с логами. Особенно круто для Docker-окружения.
____________________
Дополнительный материал:
🧠 - Путешествие LXD: Как Контейнеры LXD Переопределили Виртуализацию
🧠 - Удаление файлов и каталогов без стресса
🧠 - Создание Docker Образов и Магия Сетей: От Одиночных Узлов до Docker Swarm
#Linux_Mastery #logs #devops #docker #monitoring #tools
Привет, укротитель логов!
Вчера в комментах подсказали инструмент logdy — теперь смотрю все логи через браузер. Один бинарник, никаких зависимостей. Показываю все режимы работы.
Установка за 10 секунд
# curl https://logdy.dev/install.sh | sh
## Простой режим — один лог
# tail -f /var/log/syslog | logdy --ui-ip=0.0.0.0
Или так:
# logdy --ui-ip=0.0.0.0 follow /var/log/syslog
Открывай
https://твой-ip:8080 — логи в браузере!Логи Docker контейнера
# docker logs 761965fa13b2 --follow | logdy --ui-ip=0.0.0.0
Объединение нескольких контейнеров
Запускаем logdy в режиме сокетов:
# logdy --ui-ip=0.0.0.0 socket 8123 8124
Направляем логи каждого контейнера:
# docker logs d20339949095 --follow | logdy forward 8123
# docker logs 761965fa13b2 --follow | logdy forward 8124
Теперь все логи в одном интерфейсе с фильтрацией по источнику!
Для локальной разработки
# node app.js | logdy
В VS Code:
Ctrl+Shift+P → "Simple Browser: Show" → https://localhost:8080API режим с токеном
Запускаем с API:
# logdy --ui-ip=0.0.0.0 --api-key=secrettoken
Отправляем логи через curl:
curl --location --request POST 'https://1.2.3.4:8080/api/log' \
--header 'Authorization: Bearer secrettoken' \
--header 'Content-Type: application/json' \
--data '{"logs": [{"log": "this is a log message as a string" }],"source":"machine identifier"}'
Режим stdin для пайпов
# logdy stdin
Фишки logdy:
- Парсит JSON логи автоматически
- Разбивает на колонки
- Фильтрация и поиск в реальном времени
- Защита паролем через ключи запуска
- Экспорт логов
💡 Где выручает:
- Отладка микросервисов
- Мониторинг нескольких контейнеров
- Быстрый просмотр логов без SSH
- Демо для заказчика
Итог: один инструмент покрывает 90% задач с логами. Особенно круто для Docker-окружения.
____________________
Дополнительный материал:
🧠 - Путешествие LXD: Как Контейнеры LXD Переопределили Виртуализацию
🧠 - Удаление файлов и каталогов без стресса
🧠 - Создание Docker Образов и Магия Сетей: От Одиночных Узлов до Docker Swarm
#Linux_Mastery #logs #devops #docker #monitoring #tools
Telegram
Linux Skill - Освой Linux c нуля до DevOps
#short_story
🌟📦 Путешествие LXD: Как Контейнеры LXD Переопределили Виртуализацию! 🚀🔐
В мире, где скорость разработки и развертывания приложений играет ключевую роль, одна технология выделяется своей мощью и гибкостью - LXD от Canonical. Это история о том…
🌟📦 Путешествие LXD: Как Контейнеры LXD Переопределили Виртуализацию! 🚀🔐
В мире, где скорость разработки и развертывания приложений играет ключевую роль, одна технология выделяется своей мощью и гибкостью - LXD от Canonical. Это история о том…
👍9🔥7
Media is too big
VIEW IN TELEGRAM
🔥 Как я ускорил поиск с 10 секунд до миллисекунд
Привет, цифровой архитектор!
Твой поиск по базе тормозит как трактор в болоте? Пользователи ждут результаты вечность, а ты не знаешь, как это починить? Сейчас покажу реальное решение.
📍 Таймкоды видео:
00:00 — Введение в Elasticsearch
02:05 — Почему обычный поиск тормозит
05:49 — Основные понятия: индексы, документы, запросы
07:09 — Установка через Docker
08:23 — Базовые команды GET, PUT, POST
10:51 — Добавление и обновление документов
14:19 — Настройка поиска и ранжирование
18:29 — Реальный пример: веб-приложение на Spring Boot
25:43 — Тестирование и результаты
🚀 Попробуй настроить у себя и сравни скорость!
🌐 Источник: https://youtu.be/vxE1aGTEnbE?si=1tTdg2QASMGfF6f_
____________________
Дополнительный материал:
🧠 - От простого до грандиозного: Путешествие Kubernetes в мире контейнеризации
🧠 - Linux Mastery: Управление разрешениями каталогов с помощью chmod
🧠 - Станьте мастером управления пользователями и группами в Linux с помощью команд adduser и addgroup
#Linux_youtube #Elasticsearch #DevOps #Search #Docker #Performance #Database
Привет, цифровой архитектор!
Твой поиск по базе тормозит как трактор в болоте? Пользователи ждут результаты вечность, а ты не знаешь, как это починить? Сейчас покажу реальное решение.
📍 Таймкоды видео:
00:00 — Введение в Elasticsearch
02:05 — Почему обычный поиск тормозит
05:49 — Основные понятия: индексы, документы, запросы
07:09 — Установка через Docker
08:23 — Базовые команды GET, PUT, POST
10:51 — Добавление и обновление документов
14:19 — Настройка поиска и ранжирование
18:29 — Реальный пример: веб-приложение на Spring Boot
25:43 — Тестирование и результаты
🚀 Попробуй настроить у себя и сравни скорость!
🌐 Источник: https://youtu.be/vxE1aGTEnbE?si=1tTdg2QASMGfF6f_
____________________
Дополнительный материал:
🧠 - От простого до грандиозного: Путешествие Kubernetes в мире контейнеризации
🧠 - Linux Mastery: Управление разрешениями каталогов с помощью chmod
🧠 - Станьте мастером управления пользователями и группами в Linux с помощью команд adduser и addgroup
#Linux_youtube #Elasticsearch #DevOps #Search #Docker #Performance #Database
🔥3
Media is too big
VIEW IN TELEGRAM
🔧 Устанавливаем полноценный Linux на MacBook с M1
Можно ли жить на Linux, если у тебя MacBook с Apple Silicon?
Автор проверяет это вживую: Fedora AArch64, KDE, Steam, Docker, OBS — всё на голом железе без виртуалок.
👨💻 Что в видео:
— Установка Linux с нуля на Mac M1
— Автомонтирование, Steam, Docker, OBS
— Что работает, что нет (Thunderbolt, USB 4, Touch ID)
— Настройки для игр, DevOps и реального использования
🌐 Источник: https://www.youtube.com/live/riKVQjbO-nU?si=8bOjeM8RVXdX88A2
#linux #macbook #fedora #asahi #arm64 #devops
Можно ли жить на Linux, если у тебя MacBook с Apple Silicon?
Автор проверяет это вживую: Fedora AArch64, KDE, Steam, Docker, OBS — всё на голом железе без виртуалок.
👨💻 Что в видео:
— Установка Linux с нуля на Mac M1
— Автомонтирование, Steam, Docker, OBS
— Что работает, что нет (Thunderbolt, USB 4, Touch ID)
— Настройки для игр, DevOps и реального использования
🌐 Источник: https://www.youtube.com/live/riKVQjbO-nU?si=8bOjeM8RVXdX88A2
#linux #macbook #fedora #asahi #arm64 #devops
👍8🔥4
🔥 Fstab блокирует загрузку? Переходи на systemd
Привет, мастер монтирования!
Облачные провайдеры давно используют systemd для управления дисками в твоих виртуалках. Я однажды чуть не потерял данные, не зная этого.
👉 Показываю, как systemd заменяет fstab и почему это лучше
#Linux_Mastery #systemd #mount #linux #devops #storage
Привет, мастер монтирования!
Облачные провайдеры давно используют systemd для управления дисками в твоих виртуалках. Я однажды чуть не потерял данные, не зная этого.
👉 Показываю, как systemd заменяет fstab и почему это лучше
#Linux_Mastery #systemd #mount #linux #devops #storage
👍7👀4
Media is too big
VIEW IN TELEGRAM
📉 Диагностика производительности в Linux: с чего начать?
Если top, iotop, perf, uptime и vmstat вызывают только лёгкую тревогу, а не понимание — это видео для тебя.
Разбираем, как анализировать ресурсы, собирать метрики, строить флеймграфы и не ловить фантомные баги при помощи методики Брендона Грега.
🌐 Источник: https://www.youtube.com/watch?v=bGqdRyXWPP0
#linux #performance #diagnostics #devops #monitoring
Если top, iotop, perf, uptime и vmstat вызывают только лёгкую тревогу, а не понимание — это видео для тебя.
Разбираем, как анализировать ресурсы, собирать метрики, строить флеймграфы и не ловить фантомные баги при помощи методики Брендона Грега.
🌐 Источник: https://www.youtube.com/watch?v=bGqdRyXWPP0
#linux #performance #diagnostics #devops #monitoring
👍11
Media is too big
VIEW IN TELEGRAM
🔧 Забудь про Helper Scripts — настраиваем Proxmox вручную и понимаем каждый шаг
Привет, цифровой архитектор!
Устал от готовых скриптов, которые делают всё за тебя, но ты не понимаешь, что происходит? Этот свежий гайд Proxmox 8.3 — для тех, кто хочет разобраться в каждом шаге.
#Linux_youtube #proxmox #virtualization #homelab #linux #devops
Привет, цифровой архитектор!
Устал от готовых скриптов, которые делают всё за тебя, но ты не понимаешь, что происходит? Этот свежий гайд Proxmox 8.3 — для тех, кто хочет разобраться в каждом шаге.
#Linux_youtube #proxmox #virtualization #homelab #linux #devops
👍9
🔧 20+ переменных Bash, которые ты точно не использовал
Привет, повелитель скриптов!
Видел скрипты, где пути и настройки вбиты намертво? А потом ломаешь голову, почему они не работают на другой машине. Bash уже всё придумал за тебя — используй зарезервированные переменные.
📂 Навигация и окружение
$DIRSTACK — Содержимое вершины стека каталогов
$OLDPWD — Прежний рабочий каталог
$PATH — Путь поиска программ
$HOME — Домашний каталог пользователя
👤 Информация о пользователе
$UID — Содержит реальный идентификатор, который устанавливается только при логине
$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя
$GROUPS — Массив групп к которым принадлежит текущий пользователь
🖥️ Информация о системе
$HOSTNAME — hostname машины
$HOSTTYPE — Архитектура машины
$OSTYPE — Тип ОС
⚙️ Работа со скриптами и функциями
$EDITOR — Текстовый редактор по-умолчанию
$FUNCNAME — Имя текущей функции в скрипте
$SECONDS — Время работы скрипта (в сек.)
$$ — PID самого скрипта
$PPID — Идентификатор родительского процесса
$! — PID последнего запущенного в фоне процесса
$? — Содержит код завершения последней команды
📝 Работа с параметрами
$# — Общее количество параметров переданных скрипту
$* — Все аргументы переданные скрипту (выводятся в строку)
$@ — Тоже самое, что и предыдущий, но параметры выводятся в столбик
🔍 Дополнительные переменные
$LC_CTYPE — Внутренняя переменная, которая определяет кодировку символов
🔖 Сохрани шпаргалку — пригодится в каждом скрипте!
#Linux_Mastery #bash #scripting #linux #automation #devops #sysadmin
Привет, повелитель скриптов!
Видел скрипты, где пути и настройки вбиты намертво? А потом ломаешь голову, почему они не работают на другой машине. Bash уже всё придумал за тебя — используй зарезервированные переменные.
📂 Навигация и окружение
$DIRSTACK — Содержимое вершины стека каталогов
$OLDPWD — Прежний рабочий каталог
$PATH — Путь поиска программ
$HOME — Домашний каталог пользователя
👤 Информация о пользователе
$UID — Содержит реальный идентификатор, который устанавливается только при логине
$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя
$GROUPS — Массив групп к которым принадлежит текущий пользователь
🖥️ Информация о системе
$HOSTNAME — hostname машины
$HOSTTYPE — Архитектура машины
$OSTYPE — Тип ОС
⚙️ Работа со скриптами и функциями
$EDITOR — Текстовый редактор по-умолчанию
$FUNCNAME — Имя текущей функции в скрипте
$SECONDS — Время работы скрипта (в сек.)
$$ — PID самого скрипта
$PPID — Идентификатор родительского процесса
$! — PID последнего запущенного в фоне процесса
$? — Содержит код завершения последней команды
📝 Работа с параметрами
$# — Общее количество параметров переданных скрипту
$* — Все аргументы переданные скрипту (выводятся в строку)
$@ — Тоже самое, что и предыдущий, но параметры выводятся в столбик
🔍 Дополнительные переменные
$LC_CTYPE — Внутренняя переменная, которая определяет кодировку символов
🔖 Сохрани шпаргалку — пригодится в каждом скрипте!
#Linux_Mastery #bash #scripting #linux #automation #devops #sysadmin
👍8🔥3
🔑 Уязвимость: Почему добавление в группу Docker равносильно
Привет, цифровой архитектор!
Ты, вероятно, сталкивался с советом, как избавиться от постоянного ввода
В этом посте разберем, почему добавлять пользователя в группу
📌 Ошибка: Запуск Docker без
Для удобства многие инженеры выполняют всего одну команду:
С этого момента любой член группы
🚨 Почему это критическая уязвимость?
Если пользователь может управлять Docker-демоном без ограничений, он может запустить контейнер, который способен:
1. Смонтировать корневую файловую систему хост-машины (например,
2. Получить полный доступ к
3. Выполнить любую команду от имени
В результате, член группы
💡 Вывод: Практика, которая ломает всё
Использование группы
Если ты используешь это решение, ты должен понимать, что любой злоумышленник, получивший доступ к этой учетной записи, получит безусловный доступ к хост-системе.
#Docker #Security #Linux #SysAdmin #DevOps
sudo su -Привет, цифровой архитектор!
Ты, вероятно, сталкивался с советом, как избавиться от постоянного ввода
sudo при работе с Docker. Решение простое: добавить своего пользователя в группу docker. Удобно? Да. Но это одна из самых критических ошибок безопасности в Linux!В этом посте разберем, почему добавлять пользователя в группу
docker равносильно вручению ему полных прав root на хост-машине.📌 Ошибка: Запуск Docker без
sudoДля удобства многие инженеры выполняют всего одну команду:
# Не делай так, если не понимаешь рисков!
sudo usermod -aG docker $(whoami)
С этого момента любой член группы
docker может выполнять команды Docker. Но проблема в том, что Docker-демон по умолчанию работает от имени root.🚨 Почему это критическая уязвимость?
Если пользователь может управлять Docker-демоном без ограничений, он может запустить контейнер, который способен:
1. Смонтировать корневую файловую систему хост-машины (например,
/) в контейнер.2. Получить полный доступ к
/etc/shadow (теневой файл паролей) и другим критическим системным файлам.3. Выполнить любую команду от имени
root на хосте.В результате, член группы
docker может легко повысить свои привилегии до суперпользователя, полностью обходя систему sudo.💡 Вывод: Практика, которая ломает всё
Использование группы
docker ломает фундаментальный принцип изоляции привилегий в Linux. Удобство не стоит безопасности.Если ты используешь это решение, ты должен понимать, что любой злоумышленник, получивший доступ к этой учетной записи, получит безусловный доступ к хост-системе.
#Docker #Security #Linux #SysAdmin #DevOps
👍22
Media is too big
VIEW IN TELEGRAM
⚙️ Установка Ubuntu Server и CasaOS Пошаговое руководство
Привет, системный инженер!
Устал от сложной настройки базового Linux-сервера, когда тебе нужна простая и красивая панель управления? В этом гайде мы покажем, как быстро развернуть CasaOS на надежной базе Ubuntu Server для создания домашнего облака или мини-сервера с веб-интерфейсом.
🌐 Источник: https://www.youtube.com/watch?v=eTjIXKtSV94
#Linux #Ubuntu #Server #CasaOS #CLI #Sysadmin #Минигайд #DevOps
Привет, системный инженер!
Устал от сложной настройки базового Linux-сервера, когда тебе нужна простая и красивая панель управления? В этом гайде мы покажем, как быстро развернуть CasaOS на надежной базе Ubuntu Server для создания домашнего облака или мини-сервера с веб-интерфейсом.
🌐 Источник: https://www.youtube.com/watch?v=eTjIXKtSV94
#Linux #Ubuntu #Server #CasaOS #CLI #Sysadmin #Минигайд #DevOps
👍12🔥1👀1
🧠 Запусти аудит зарубежных IP за 1 секунду на своем VPS
Привет, техноэнтузиаст!
Купил свежий VPS, но не уверен, куда с нее можно дотянуться? Это частая боль: если сервер уже под гео-ограничениями, он бесполезен для работы с зарубежным софтом, GitLab CI или просто для проверки YouTube/TikTok.
Показывать, куда есть доступ, а куда нет, нужно быстро, без установки лишних пакетов. Китайские умельцы давно создали скрипт, который делает это одной командой. Он проверяет доступность YouTube, TikTok, ChatGPT, Gmail и другие сервисы, а также выдает информацию о гео IP адресе виртуалки.
📌 Bash-ванлайнер для аудита VPS
Этот скрипт скачивает и запускает проверку, выводя результат прямо в консоль. Важно: Запускать его нужно на свежеарендованной VPS.
Как это работает:
1.
2.
💡 Вывод
Теперь ты за секунду знаешь, можно ли использовать эту VPS для работы с гео-зависимыми сервисами. Если проверка пройдена, можешь смело приступать к настройке.
#Linux #Bash #DevOps #VPS #CLI #Security
Привет, техноэнтузиаст!
Купил свежий VPS, но не уверен, куда с нее можно дотянуться? Это частая боль: если сервер уже под гео-ограничениями, он бесполезен для работы с зарубежным софтом, GitLab CI или просто для проверки YouTube/TikTok.
Показывать, куда есть доступ, а куда нет, нужно быстро, без установки лишних пакетов. Китайские умельцы давно создали скрипт, который делает это одной командой. Он проверяет доступность YouTube, TikTok, ChatGPT, Gmail и другие сервисы, а также выдает информацию о гео IP адресе виртуалки.
📌 Bash-ванлайнер для аудита VPS
Этот скрипт скачивает и запускает проверку, выводя результат прямо в консоль. Важно: Запускать его нужно на свежеарендованной VPS.
# Скачать и запустить проверку доступности зарубежных сервисов (YouTube, TikTok, ChatGPT и др.)
curl -sL https://check.foreign.services.sh | bash
Как это работает:
1.
curl -sL скачивает скрипт (содержит набор пингов и DNS-запросов к актуальным зарубежным IP).2.
| bash передает его сразу на выполнение в Bash. Результат выводится мгновенно.💡 Вывод
Теперь ты за секунду знаешь, можно ли использовать эту VPS для работы с гео-зависимыми сервисами. Если проверка пройдена, можешь смело приступать к настройке.
#Linux #Bash #DevOps #VPS #CLI #Security
👍9
💡 Systemd обещает быструю загрузку, но твоя система тормозит?
Привет, цифровой архитектор! 👋
Классика: сам демон работает быстро, но вынужден ждать ленивые юниты, которые создают "критическую цепочку" задержек. Покажу, как быстро найти виновника и устранить проблему с помощью двух команд.
1. 🔍 Кто виноват: Анализ времени запуска
Команда
Назначение: Быстрый поиск юнитов, которые стартуют медленнее всего.
2. ⛓️ Поиск узкого места: Критическая цепочка
Если юнит стартует быстро, но при этом висит в топе, значит, он кого-то ждет. Нам нужно увидеть цепочку зависимостей, которая создает задержку.
Назначение: Показывает, какой именно юнит или зависимость блокирует загрузку критических служб.
Частый пример:
3. 🛠️ Устраняем задержку через override
Чтобы «отвязать» Docker от медленной сети, используем правильный подход systemd — не трогаем оригинальный файл юнита, а создаем прокладку
Назначение: Переопределяем параметры
После этого не забудьте применить изменения:
Важно: Использование
💡 Вывод: Регулярное использование systemd-analyze позволяет держать под контролем стартовую производительность сервера и избегать фантомный задержек, которые съедают рабочее время.
#Linux #systemd #CLI #DevOps #Optimization
Привет, цифровой архитектор! 👋
Классика: сам демон работает быстро, но вынужден ждать ленивые юниты, которые создают "критическую цепочку" задержек. Покажу, как быстро найти виновника и устранить проблему с помощью двух команд.
1. 🔍 Кто виноват: Анализ времени запуска
Команда
systemd-analyze blame покажет точное время, которое каждый юнит потратил на запуск, сортируя их по убыванию.
# Выводит список юнитов, отсортированный по времени запуска
systemd-analyze blame
Назначение: Быстрый поиск юнитов, которые стартуют медленнее всего.
2. ⛓️ Поиск узкого места: Критическая цепочка
Если юнит стартует быстро, но при этом висит в топе, значит, он кого-то ждет. Нам нужно увидеть цепочку зависимостей, которая создает задержку.
# Анализ цепочки зависимостей, которая замедляет запуск системы
systemd-analyze critical-chain
Назначение: Показывает, какой именно юнит или зависимость блокирует загрузку критических служб.
Частый пример:
docker.service ждет поднятия сети (systemd-networkd-wait-online.service). Это бессмысленно, если у Docker нет жесткой зависимости от сети на старте.3. 🛠️ Устраняем задержку через override
Чтобы «отвязать» Docker от медленной сети, используем правильный подход systemd — не трогаем оригинальный файл юнита, а создаем прокладку
override.conf:
# Открыть редактор для создания override.conf
sudo systemctl edit docker.service
# В открывшийся файл вставьте:
[Unit]
After=network.target
Wants=network.target
Назначение: Переопределяем параметры
After и Wants, чтобы Docker не ждал некритичные сетевые службы.После этого не забудьте применить изменения:
# Применить изменения
sudo systemctl daemon-reload
sudo systemctl restart docker
Важно: Использование
systemctl edit создает отдельный файл, который не будет перезаписан при обновлении пакета Docker.💡 Вывод: Регулярное использование systemd-analyze позволяет держать под контролем стартовую производительность сервера и избегать фантомный задержек, которые съедают рабочее время.
#Linux #systemd #CLI #DevOps #Optimization
👍12🔥1
🚀 Systemd + Bash: Мониторинг зависшего PHP-FPM за 5 строк кода
Привет, повелитель терминала!
Твой
Вместо ручного поиска и убийства PID, давай настроим автоматический скрипт, который решит эту проблему за тебя.
📌 Авто-чистка зависших FPM
Этот скрипт ищет дочерние процессы
💡 Фишка: Ты можешь запускать этот скрипт через
#Linux #Bash #DevOps #автоматизация #мониторинг
Привет, повелитель терминала!
Твой
php-fpm начал зависать в любой момент и перестал отвечать на запросы? Это происходит из-за исчерпания ресурсов или процессов, ушедших в непрерываемое ожидание.Вместо ручного поиска и убийства PID, давай настроим автоматический скрипт, который решит эту проблему за тебя.
📌 Авто-чистка зависших FPM
Этот скрипт ищет дочерние процессы
php-fpm в состоянии D и принудительно завершает их, чтобы твой пул восстановился, используя базовые принципы Bash-сценариев.# Ищем процессы FPM, застрявшие в D-состоянии
STUCK_PIDS=$(ps -o pid=,state= -C php-fpm | grep D | awk '{print $1}')
if [ -n "$STUCK_PIDS" ]; then
# Найдено: принудительно убиваем зависшие процессы (SIGKILL)
# Используй kill -9 только в крайних случаях!
echo "$STUCK_PIDS" | xargs kill -9
# Перезапускаем сервис для гарантированного восстановления
systemctl restart php-fpm
fi
💡 Фишка: Ты можешь запускать этот скрипт через
cron или systemd.timer, чтобы автоматизировать траблшутинг. Это гарантирует стабильность твоего сервиса.#Linux #Bash #DevOps #автоматизация #мониторинг
👍3
🔑 Как автоматизировать multi-tenancy в Nginx через Redis/etcd.
Привет, опытный инженер! 👋
Внедрение multi-tenancy всегда сопровождается одной и той же болью: как быстро маршрутизировать входящий трафик к нужному бэкенду, если клиенты (арендаторы) добавляются постоянно? Хуже того, если мы используем
Статический конфиг нам не подходит. Решение — динамическая маршрутизация на основе SNI (Server Name Indication) с использованием модуля njs, где список арендаторов хранится во внешней БД (Redis или etcd).
📌 Динамический Upstream по SNI с njs
На L4 Nginx (или Angie) может прочитать имя сервера (SNI) во время TLS-рукопожатия и на основе этого имени принять решение о маршрутизации. Модуль
Шаг 1. Настраиваем
Нам нужен скрипт на
Шаг 2. Конфигурируем
В конфигурации Nginx (Angie) в блоке
💡 Вывод
Такой подход позволяет полностью разделить список арендаторов (который может храниться в Redis/etcd и обновляться мгновенно) от статического конфига Nginx. Nginx (Angie) перечитывает
#Nginx #DevOps #Stream #SNI #MultiTenancy #njs
Привет, опытный инженер! 👋
Внедрение multi-tenancy всегда сопровождается одной и той же болью: как быстро маршрутизировать входящий трафик к нужному бэкенду, если клиенты (арендаторы) добавляются постоянно? Хуже того, если мы используем
stream (Layer 4) для RDP/SSH/VPN, где ручная перезагрузка Nginx из-за нового конфига — это недопустимый downtime.Статический конфиг нам не подходит. Решение — динамическая маршрутизация на основе SNI (Server Name Indication) с использованием модуля njs, где список арендаторов хранится во внешней БД (Redis или etcd).
📌 Динамический Upstream по SNI с njs
На L4 Nginx (или Angie) может прочитать имя сервера (SNI) во время TLS-рукопожатия и на основе этого имени принять решение о маршрутизации. Модуль
njs позволяет сделать этот процесс динамическим.Шаг 1. Настраиваем
njs для чтения SNIНам нужен скрипт на
njs, который возьмёт имя хоста из SNI и, используя внешний модуль, найдёт соответствующий upstream в Redis или etcd (имитация логики):// sni_router.js
function route(s) {
// Получаем имя хоста из SNI
var hostname = s.ssl_server_name;
// Здесь должна быть логика поиска в Redis/etcd
// Для примера, ищем в предопределенном словаре:
var tenantMap = {
'client_a.example.com': 'backend_pool_a',
'client_b.example.com': 'backend_pool_b'
};
if (tenantMap[hostname]) {
return tenantMap[hostname];
}
// Если арендатор не найден, используем upstream по умолчанию
return 'default_pool';
}
Шаг 2. Конфигурируем
stream и njsВ конфигурации Nginx (Angie) в блоке
stream мы загружаем скрипт и используем его результат в директиве upstream.# Загрузка njs модуля и скрипта
js_include sni_router.js;
js_set $backend_name sni_router.route;
stream {
upstream backend_pool_a {
server 10.0.0.1:443;
}
upstream backend_pool_b {
server 10.0.0.2:443;
}
upstream default_pool {
server 10.0.0.10:443;
}
server {
listen 443 ssl;
ssl_preread on; # Важно: позволяет Nginx читать SNI
# Динамически определяем upstream на основе результата njs-скрипта
proxy_pass $backend_name;
}
}
💡 Вывод
Такой подход позволяет полностью разделить список арендаторов (который может храниться в Redis/etcd и обновляться мгновенно) от статического конфига Nginx. Nginx (Angie) перечитывает
njs-переменную $backend_name для каждого нового соединения, обеспечивая высокую доступность и нулевой downtime при добавлении новых клиентов. Это критически важно для масштабируемой и отказоустойчивой архитектуры.#Nginx #DevOps #Stream #SNI #MultiTenancy #njs
🔥 Облегчи виртуализацию с Incus: простой старт
💻 Привет, мастер консолей и виртуализации!
🔍 Если тебе Proxmox кажется слишком громоздким и хочется легкого решения для одиночного хоста — Incus именно то, что нужно: простая установка и управление через CLI с мощным функционалом.
📌 Основные возможности Incus:
- Легкий запуск LXC и Docker контейнеров, VM на QEMU+KVM
- Использование официальных образов linuxcontainers.org
- Поддержка разного хранения: ZFS, LVM, Btrfs, Ceph и др.
- Управление через CLI и веб-интерфейс
- Настройка сети и NAT с DNSMASQ IPAM
💡 Теперь ты знаешь, что Incus — это легкое и гибкое решение для виртуализации без ограничений Proxmox. Попробуй и сам убедись!
🔗 Официальный сайт и документация: linuxcontainers.org
🔗 GitHub репозиторий Incus: https://github.com/lxc/incus
#Linux #DevOps #Виртуализация #Incus #LXC #KVM #Linux_err24
💻 Привет, мастер консолей и виртуализации!
🔍 Если тебе Proxmox кажется слишком громоздким и хочется легкого решения для одиночного хоста — Incus именно то, что нужно: простая установка и управление через CLI с мощным функционалом.
📌 Основные возможности Incus:
- Легкий запуск LXC и Docker контейнеров, VM на QEMU+KVM
- Использование официальных образов linuxcontainers.org
- Поддержка разного хранения: ZFS, LVM, Btrfs, Ceph и др.
- Управление через CLI и веб-интерфейс
- Настройка сети и NAT с DNSMASQ IPAM
# Установка пакетов на Debian 13
apt install incus incus-base qemu-system
# Инициализация административного пользователя
incus admin init
# Список доступных образов Debian
incus image list images:debian
# Запуск контейнера Debian 13
incus launch images:debian/13 debian-ct --storage default
# Подключение к контейнеру
incus exec debian-ct -- bash
# Запуск виртуалки Ubuntu
incus launch images:ubuntu/noble ubuntu-vm --vm --storage default
# Вход в Ubuntu VM
incus exec ubuntu-vm -- bash
# Основные команды для обзора
incus ls
incus info ubuntu-vm
incus storage list
incus network list
💡 Теперь ты знаешь, что Incus — это легкое и гибкое решение для виртуализации без ограничений Proxmox. Попробуй и сам убедись!
🔗 Официальный сайт и документация: linuxcontainers.org
🔗 GitHub репозиторий Incus: https://github.com/lxc/incus
#Linux #DevOps #Виртуализация #Incus #LXC #KVM #Linux_err24
GitHub
GitHub - lxc/incus: Powerful system container and virtual machine manager
Powerful system container and virtual machine manager - GitHub - lxc/incus: Powerful system container and virtual machine manager
Media is too big
VIEW IN TELEGRAM
🔐 SSH для сисадминов: безопасность и удобство за 17 минут
👋 Привет, защитник серверов!
Админ попросил SSH-ключ? Не знаешь, какой отправить? Разбираемся с созданием ключей, настройкой SSH-сервера, клиента и пробросом портов. Всё пошагово и с примерами.
Полезные ссылки из видео:
- Источник видео
- Пример sshd_config
- Пример ssh config
- Команды для прав на .ssh
#ssh #linux #безопасность #sysadmin #devops #туннелирование #ubuntu
👋 Привет, защитник серверов!
Админ попросил SSH-ключ? Не знаешь, какой отправить? Разбираемся с созданием ключей, настройкой SSH-сервера, клиента и пробросом портов. Всё пошагово и с примерами.
Полезные ссылки из видео:
- Источник видео
- Пример sshd_config
- Пример ssh config
- Команды для прав на .ssh
#ssh #linux #безопасность #sysadmin #devops #туннелирование #ubuntu
👍10
🛡️ Укрепляем SSHD: Почему тебе стоит включить ключи Ed25519
Привет, цифровой архитектор!
Настройка демона SSHD (
Доступ к TCP-порту 22 (порт SSH по умолчанию) желательно ограничивать от публичного доступа. Вот замечания по ключевым директивам, которые помогут тебе повысить безопасность:
1️⃣ Аутентификация по паролю
Ты можешь оставить аутентификацию по паролю (
- Закрываем ботов: Если ты решишь полностью отключить аутентификацию по паролю (
- Защита от перебора: По умолчанию разрешено 6 попыток аутентификации (
- Пустые пароли: Директива
2️⃣ Аутентификация с использованием публичных ключей
Это более надежный метод, чем аутентификация по паролю. По умолчанию он включен (
- Преимущества Ed25519: Ключи Ed25519 основаны на эллиптических кривых и многими считаются обеспечивающими превосходную безопасность по сравнению с RSA. На практике они также намного короче.
- Файл ключей: Твой открытый ключ, который ты используешь для аутентификации, должен быть скопирован в файл
💡 Вывод:
Помни, что SSH предназначен для обеспечения безопасного входа в оболочку и шифрует все данные сеанса. Если ты используешь OpenSSH, то настройки сервера хранятся в файле /etc/ssh/sshd\_config.
#Linux #DevOps #Security #SSHD #Ed25519
Привет, цифровой архитектор!
Настройка демона SSHD (
sshd), который обеспечивает безопасное удаленное подключение к твоему серверу по протоколу SSH, — это то, с чего начинается любая административная работа. Конфигурация OpenSSH-сервера обычно хранится в файле /etc/ssh/sshd\_config.Доступ к TCP-порту 22 (порт SSH по умолчанию) желательно ограничивать от публичного доступа. Вот замечания по ключевым директивам, которые помогут тебе повысить безопасность:
1️⃣ Аутентификация по паролю
Ты можешь оставить аутентификацию по паролю (
PasswordAuthentication yes) на всякий случай, потому что при использовании несловарного пароля подобрать его злоумышленнику практически нереально.
PasswordAuthentication yes
- Закрываем ботов: Если ты решишь полностью отключить аутентификацию по паролю (
PasswordAuthentication no), это немедленно отсечет большинство ботов, которые пытаются подобрать пароли, и твой журнал будет менее замусорен.- Защита от перебора: По умолчанию разрешено 6 попыток аутентификации (
MaxAuthTries 6). Ты можешь ограничить это число, например, до четырех (MaxAuthTries 4).- Пустые пароли: Директива
PermitEmptyPasswords no должна быть включена всегда, чтобы запрещать вход с пустым паролем.2️⃣ Аутентификация с использованием публичных ключей
Это более надежный метод, чем аутентификация по паролю. По умолчанию он включен (
PubkeyAuthentication yes). OpenSSH поддерживает несколько типов ключей, включая RSA, ECDSA и Ed25519.- Преимущества Ed25519: Ключи Ed25519 основаны на эллиптических кривых и многими считаются обеспечивающими превосходную безопасность по сравнению с RSA. На практике они также намного короче.
- Файл ключей: Твой открытый ключ, который ты используешь для аутентификации, должен быть скопирован в файл
~/.ssh/authorized_keys на удаленном хосте.💡 Вывод:
Помни, что SSH предназначен для обеспечения безопасного входа в оболочку и шифрует все данные сеанса. Если ты используешь OpenSSH, то настройки сервера хранятся в файле /etc/ssh/sshd\_config.
#Linux #DevOps #Security #SSHD #Ed25519
👍10
Media is too big
VIEW IN TELEGRAM
🌐 Почему каждому IT-специалисту нужно знать сети
👋 Привет, повелитель трафика!
Сети — в каждой вакансии: разработчик, тестировщик, DevOps, сисадмин. Разбираем OSI/ISO, TCP/IP, MAC и IP-адреса, порты, NAT, TCP vs UDP, DNS и траблшутинг. Всё кратко и понятно.
🔗 Полезные ссылки:
- Источник видео
- Сети для самых маленьких
- Комикс про DNS
- Про приватные подсети
#сети #networking #tcp #udp #dns #nat #devops #sysadmin #osiiso #ip
👋 Привет, повелитель трафика!
Сети — в каждой вакансии: разработчик, тестировщик, DevOps, сисадмин. Разбираем OSI/ISO, TCP/IP, MAC и IP-адреса, порты, NAT, TCP vs UDP, DNS и траблшутинг. Всё кратко и понятно.
🔗 Полезные ссылки:
- Источник видео
- Сети для самых маленьких
- Комикс про DNS
- Про приватные подсети
#сети #networking #tcp #udp #dns #nat #devops #sysadmin #osiiso #ip
👍17
🔥 Настройка проброса портов в Incus: проще, чем в Proxmox
👋 Эй, укротитель виртуалок!
Покажу, как добавить веб-интерфейс к Incus и настроить проброс портов. Всё просто и быстро — без танцев с бубном.
✅ Установка веб-интерфейса Incus
Проблема: Нужен удобный GUI для управления виртуалками и контейнерами.
Решение: Установи официальный пакет из репозитория Zabbly.
Вариант 1: Скачать пакет напрямую
Вариант 2: Подключить репозиторий
Настраиваем systemd:
Открываем доступ извне:
Готово! Открывай браузер, заходи на порт 8443 и следуй простой инструкции по добавлению сертификата.
🌐 Проброс портов: в 10 раз проще Proxmox
Проблема: Нужно пробросить порт 80 с хоста в виртуалку, чтобы получить доступ к веб-сервису.
Решение: В Incus это делается за 3 клика или одной командой.
Пример: Пробросим порт 80 с хоста
Через веб-интерфейс:
1. Иди в Networks → incusbr0 → Forwards
2. Жми "Add Forward"
3. Заполняй:
- Listen address:
- Listen port:
- Target address:
- Target port:
Через CLI (одна команда):
Вот и всё! В Proxmox тебе пришлось бы писать правила для iptables и разбираться с NAT вручную.
💡 Почему Incus удобнее для одиночного хоста?
✅ IPAM из коробки — разбираешься за 2 минуты
✅ NAT и DHCP работают сразу, ничего настраивать не нужно
✅ Проброс портов через GUI за 3 клика или одну команду
✅ Никаких iptables — всё просто и наглядно
Если у тебя есть виртуалка с nested virtualization (у многих хостеров она включена) — разворачивай Incus и запускай VM внутри. Получишь полноценный хост виртуализации.
🔗 Официальный репозиторий Incus:
https://github.com/lxc/incus
🔗 Репозиторий Zabbly с пакетами:
https://pkgs.zabbly.com/incus/stable/
#incus #виртуализация #linux #devops #proxmox #sysadmin #Linux_err24
👋 Эй, укротитель виртуалок!
Покажу, как добавить веб-интерфейс к Incus и настроить проброс портов. Всё просто и быстро — без танцев с бубном.
✅ Установка веб-интерфейса Incus
Проблема: Нужен удобный GUI для управления виртуалками и контейнерами.
Решение: Установи официальный пакет из репозитория Zabbly.
Вариант 1: Скачать пакет напрямую
# Качаем готовый .deb пакет
wget https://pkgs.zabbly.com/incus/stable/pool/main/i/incus/incus-ui-canonical_6.17-debian11-202510101456_amd64.deb
# Устанавливаем
dpkg -i incus-ui-canonical_6.17-debian11-202510101456_amd64.deb
Вариант 2: Подключить репозиторий
# Добавляем ключ репозитория
curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc
# Создаём источник пакетов
sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-lts-6.0.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/lts-6.0
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc
EOF'
# Обновляем и ставим UI
apt update
apt install incus-ui-canonical
Настраиваем systemd:
# Редактируем юнит
systemctl edit incus.service
# Добавляем переменную окружения
[Service]
Environment = INCUS_UI=/opt/incus/ui/
# Применяем изменения
systemctl daemon-reload
systemctl restart incus
Открываем доступ извне:
incus config set core.https_address :8443
Готово! Открывай браузер, заходи на порт 8443 и следуй простой инструкции по добавлению сертификата.
🌐 Проброс портов: в 10 раз проще Proxmox
Проблема: Нужно пробросить порт 80 с хоста в виртуалку, чтобы получить доступ к веб-сервису.
Решение: В Incus это делается за 3 клика или одной командой.
Пример: Пробросим порт 80 с хоста
192.168.137.14 в VM ubuntu24 с IP 10.253.116.184.Через веб-интерфейс:
1. Иди в Networks → incusbr0 → Forwards
2. Жми "Add Forward"
3. Заполняй:
- Listen address:
192.168.137.14- Listen port:
80, Protocol: TCP- Target address:
10.253.116.184- Target port:
80Через CLI (одна команда):
incus network forward port add incusbr0 192.168.137.14 TCP 80 10.253.116.184 80
Вот и всё! В Proxmox тебе пришлось бы писать правила для iptables и разбираться с NAT вручную.
💡 Почему Incus удобнее для одиночного хоста?
✅ IPAM из коробки — разбираешься за 2 минуты
✅ NAT и DHCP работают сразу, ничего настраивать не нужно
✅ Проброс портов через GUI за 3 клика или одну команду
✅ Никаких iptables — всё просто и наглядно
Если у тебя есть виртуалка с nested virtualization (у многих хостеров она включена) — разворачивай Incus и запускай VM внутри. Получишь полноценный хост виртуализации.
🔗 Официальный репозиторий Incus:
https://github.com/lxc/incus
🔗 Репозиторий Zabbly с пакетами:
https://pkgs.zabbly.com/incus/stable/
#incus #виртуализация #linux #devops #proxmox #sysadmin #Linux_err24
GitHub
GitHub - lxc/incus: Powerful system container and virtual machine manager
Powerful system container and virtual machine manager - GitHub - lxc/incus: Powerful system container and virtual machine manager
👍5