💡 Полезные Советы
При подготовке материала использовались тезисы из книги Чипа Хьюена "AI-инженерия"
Не понятные термины смотрите в конце: "FAQ: Расширенный словарь терминов AI- и ML-инженера"
Индустрия искусственного интеллекта переживает тектонический сдвиг. Граница между классическим машинным обучением и созданием современных ИИ-приложений стала настолько резкой, что породила новую профессию, новые стандарты разработки и даже новые интернет-мемы. Разбираемся, чем на самом деле занимаются AI-инженеры, зачем им нужна фундаментальная математика и на какие проекты стоит обратить внимание.
Разница между ML-инжинирингом и AI-инжинирингом?
Смена парадигмы произошла в результате перехода от обучения моделей под узкие задачи к использованию готовых мультимодальных и языковых систем.
- ML-инжиниринг (традиционный) сфокусирован на полном цикле создания моделей: сборе и ручной разметке данных, конструировании признаков (feature engineering), подборе архитектур нейросетей, обучении с нуля и тонкой настройке гиперпараметров.
- AI-инжиниринг опирается на готовые базовые модели (Foundation Models, LLM). Основная работа смещается от создания архитектур к их адаптации и оркестрации: промт-инжинирингу, построению конвейеров контекста (RAG), созданию автономных агентов и дообучению.
| Критерий | ML-инжиниринг | AI-инжиниринг |
|---|---|---|
| Основная цель | Обучить эффективную модель под задачу | Адаптировать базовую модель под бизнес-процесс |
| Работа с данными | Разметка, табличные данные, feature engineering | Неструктурированные данные, векторные БД, эмбеддинги |
| Характер вывода | Детерминированный/закрытый (классы, числа) | Вероятностный, открытый (текст, код, изображения) |
| Стек технологий | Python, PyTorch, Scikit-learn, MLOps | Python/TypeScript, LangChain, LlamaIndex, vLLM |
Зачем AI-инженеру нужна "база" (ML и статистика)?
Несмотря на то что приложения на основе базовых моделей можно создавать, не имея познаний в области ML, понимание основ машинного обучения и статистики поможет разрабатывать более эффективные приложения и избежать ненужных сложностей. Для уверенной работы в сфере AI-инженерии необходимо разбираться в следующих понятиях:
- Концепции из области теории вероятности, такие как выборка, детерминизм и распределение.
- Понятия из области ML, такие как обучение с учителем, обучение без учителя, логарифмическое правдоподобие, градиентный спуск, обратное распространение, функция потерь и настройка гиперпараметров.
- Различные архитектуры нейронных сетей, включая прямое распространение, рекуррентные сети и трансформеры.
- Метрики, такие как доля правильных ответов алгоритма, F1-мера, точность, полнота, косинусное сходство и кросс-энтропия.
Специфика данных: проблема мультиязычности
При проектировании AI-приложений критически важно учитывать, на каких данных обучалась фундаментная модель. Английский язык доминирует в Интернете. Анализ набора данных Common Crawl показывает, что он составляет почти половину данных (45,88 %). Английский в восемь раз превосходит второй по распространенности язык - русский (5,97 %). Следом идут немецкий (5,88 %), китайский (4,87 %) и японский (4,79 %). Языки, слабо представленные в качестве обучающих данных (как правило, те, что не вошли в этот список и занимают менее 1%), считаются низкоресурсными. Это напрямую влияет на качество и логику работы AI-приложений на разных языках.
Иллюзия простоты: от прототипа к production.
Многие разработчики попадают в ловушку быстрого старта. В сфере искусственного интеллекта действует правило: подняться от 0 до 60 легко, а от 60 до 100 - крайне трудно. Из-за первоначального успеха компании часто сильно недооценивают время, которое потребуется, чтобы улучшить продукт. Отличный пример - опыт компании LinkedIn: им потребовался месяц, чтобы достичь 80 % желаемого результата. Но затем им понадобилось еще четыре месяца, чтобы наконец превысить 95 %. Много времени было потрачено на работу над дефектами продукта и борьбу с галлюцинациями, а малая скорость достижения каждого последующего 1 % прироста сильно разочаровывала инженеров.
Влияние AI на рынок: угроза или наставник?
Готовые AI-системы уже ломают привычные бизнес-модели. Многие образовательные организации используют AI для создания более совершенных продуктов, однако немало тех, кто считает, что AI отбирает у них работу. Например, компания Chegg, которая помогает студентам выполнять домашние задания, отметила, что цена их акций резко упала - с 28 долларов при запуске ChatGPT в ноябре 2022 года до 2 долларов в сентябре 2024-го, поскольку студенты обращаются за помощью к AI. Если риск заключается в том, что AI может заменить многие навыки, то возможность кроется в его использовании в качестве наставника для приобретения любого умения. AI способен помочь человеку быстро освоить азы многих навыков, а затем можно продолжить заниматься самостоятельно, чтобы превзойти AI.
Откуда взялся мем про AI-разработчиков? Кто такие "оберточники" и почему в IT-сообществе смеются над AI-разработчиками?
Если вы зайдете в комментарии на Хабре, Дваче или в профильные Telegram-каналы, то быстро заметите специфическое, часто откровенно токсичное отношение к тем, кто называет себя "AI-разработчиком". В рунете популярны грубые шутки, приравнивающие создателей ИИ-приложений к людям "нетрадиционной ориентации".
Этот локальный мем возник не на пустом месте. За агрессивным юмором скрывается глубокий конфликт внутри индустрии, который строится на трех фундаментальных факторах:
- Синдром "оберточника" и обесценивание сложной инженерии.
Для классического бэкенд-разработчика (например, пишущего на Python) создание рабочего продукта - это долгий процесс. Нужно спроектировать архитектуру, настроить реляционную базу данных, продумать кэширование, обернуть всё это в Docker-контейнеры и настроить Linux-сервер для деплоя. Это требует фундаментальных знаний компьютерных наук и понимания того, как работает память и сеть. На этом фоне в индустрию ворвался тренд на "вайб-кодинг" (vibe-coding). Появились тысячи стартаперов, которые создают продукты, просто написав красивый фронтенд, который отправляет текстовый промт через API к серверам OpenAI (ChatGPT) или Anthropic (Claude). Таких разработчиков пренебрежительно прозвали "оберточниками" (wrapper builders). У них нет базы данных, нет своей бизнес-логики и нет бэкенда - весь их продукт является лишь тонкой графической "оберткой" над чужой нейросетью. Снобизм классических инженеров вызван тем, что написание пары API-запросов теперь модно называть громким словом "AI-инжиниринг". Информационный шум и венчурный "пузырь"
Второй фактор раздражения - колоссальная финансовая несправедливость и хайп. Инженеры, решающие действительно сложные технические задачи (построение отказоустойчивых highload-систем, оптимизация сложных SQL-запросов, обеспечение информационной безопасности), годами борются за повышение бюджетов. В то же время поверхностные "AI-агентства", состоящие из маркетологов и пары джуниоров, привлекают миллионные инвестиции под обещания "внедрить ИИ". Большинство таких проектов не имеет под собой технической ценности (никакого moat - защитного барьера) и умирает, как только OpenAI выпускает очередное обновление, встраивая функционал этого стартапа в свой базовый чат. Этот "пузырь" вызывает закономерный скепсис и раздражение у технического ядра IT-сообщества.
- Токсичное наследие рунета и защита профессии
Специфика русскоязычной интернет-культуры такова, что любые легковесные тренды, снижающие порог входа в профессию, встречают агрессивное сопротивление. Подобные обесцененные ярлыки - это защитный механизм сообщества. Двадцать лет назад системные программисты смеялись над веб-мастерами. Десять лет назад бэкендеры выдумывали обидные прозвища для фронтендеров ("формошлепы") и PHP-разработчиков. Недавно объектом насмешек были специалисты по No-Code и блокчейн-энтузиасты. Сегодня эстафетная палочка хейта перешла к AI-инженерам. Называя ИИ-разработчиков "нетрадиционными", классические IT-специалисты пытаются провести черту между "настоящей" инженерией и теми, кто просто удачно оседлал временный хайп.
14 крутых open-source проектов AI-приложений
Если вы хотите посмотреть, как выглядит настоящий, качественный AI-инжиниринг на практике, обратите внимание на эти репозитории GitHub (у каждого десятки тысяч звезд):
abi/screenshot-to-code - преобразует скриншоты, макеты и видео в чистый HTML/Tailwind, React или Vue с помощью Vision-моделей.
gpt-engineer-org/gpt-engineer - инструмент, генерирующий целые кодовые базы и рабочие проекты по текстовому описанию архитектуры.
open-interpreter/open-interpreter - локальная среда выполнения: модель напрямую пишет и выполняет Python/Bash-код на вашей машине для автоматизации задач и управления ОС.
sawyerhood/draw-a-ui - визуальный канвас, превращающий набросанные от руки схематичные скетчи в рабочий HTML-интерфейс.
mendableai/firecrawl - мощный AI-пайплайн, который сканирует веб-сайты и конвертирует их страницы в чистый Markdown для последующего использования в RAG и кодогенерации.
Significant-Gravitas/AutoGPT - один из самых популярных автономных мультиагентных проектов, разбивающий масштабные цели на цепочки действий.
All-Hands-AI/OpenHands (ранее OpenDevin) - открытая платформа разработки ИИ-агентов, способных самостоятельно модифицировать репозитории, читать логи компиляции и исправлять баги.
Nutlope/aicommits - CLI-утилита, анализирующая git diff и автоматически формирующая информативные сообщения для коммитов по стандартам Conventional Commits.
sweepai/sweep - автономный ассистент, превращающий проблемы (Issues) на GitHub в готовые Pull Requests с исправленным кодом и тестами.
reworkd/AgentGPT - веб-платформа для развертывания автономных настраиваемых агентов прямо в браузере для выполнения исследовательских задач.
eosphoros-ai/DB-GPT - мощный фреймворк для локального развертывания AI. Позволяет безопасно общаться с базами данных с помощью естественного языка (Text-to-SQL) без риска утечки корпоративной информации.
sqlchat/sqlchat - чат-ориентированный SQL-клиент. Инструмент предлагает использовать диалоговый интерфейс вместо громоздкого классического UI для выполнения запросов, модификации и настройки базы данных.
mckaywrigley/ai-code-translator - легковесный инструмент на основе языковых моделей, который берет исходный код на одном языке программирования и автоматически переводит его на другой (отлично подходит для переписывания легаси-проектов).
joshpxyne/GPT-Migrate - AI-агент, предназначенный для автоматизации масштабной миграции целых кодовых баз. Анализирует структуру репозитория и может пошагово переносить бэкенд с одного языка или фреймворка на другой.
FAQ: Расширенный словарь терминов AI- и ML-инженера
Чтобы окончательно разобраться в специфике современной ИИ-разработки, вот краткая расшифровка главных отраслевых терминов:
- Что такое RAG (Retrieval-Augmented Generation)?
Это архитектурный подход, при котором языковая модель перед генерацией ответа сначала ищет нужные факты во внешней базе данных (например, во внутренней документации компании). Грубо говоря, это способ дать ИИ "прочитать" ваши личные документы, чтобы он отвечал строго по ним и не придумывал факты. - Что такое Эмбеддинги (Embeddings)?
Это способ перевода текста, изображений или звука в массивы чисел (векторы). Эмбеддинги позволяют алгоритмам математически вычислять "смысловую близость" слов. Благодаря им база данных понимает, что слова "собака" и "щенок" находятся близко друг к другу, а "собака" и "швеллер" - далеко. - Что такое MLOps (Machine Learning Operations)?
Это аналог классического DevOps, но адаптированный для систем машинного обучения. MLOps-инженеры настраивают автоматизацию, CI/CD-пайплайны, мониторинг и бесперебойный деплой нейросетей на серверы. - Что такое Галлюцинации ИИ?
Ситуация, когда языковая модель генерирует грамматически правильный и очень уверенный, но абсолютно ложный или выдуманный ответ. Борьба с галлюцинациями - одна из главных задач AI-инженеров при подготовке продукта к релизу. - Что такое LoRA и PEFT?
Обучение огромных моделей (вроде GPT) с нуля требует гигантских вычислительных мощностей и суперкомпьютеров. PEFT (Parameter-Efficient Fine-Tuning) и в частности LoRA - это методы "дешевого" дообучения. Они позволяют слегка скорректировать поведение модели под вашу конкретную задачу, обновив лишь крошечную долю её параметров, что можно сделать даже на одной хорошей потребительской видеокарте. - Что такое "Вайб-кодинг" (Vibe-coding)?
Новый сленговый термин. Означает процесс написания программ, когда разработчик не пишет код руками по строчкам, а пишет промты на естественном языке. Человек задает общий "вайб" и логику архитектуры, а рутинную генерацию синтаксиса делегирует агентам или инструментам вроде Cursor и GitHub Copilot.
1. Данные и характер работы систем
- Детерминированный / закрытый вывод
Свойственен классическому машинному обучению (ML). На один и тот же входной набор данных алгоритм всегда выдает один и тот же результат из строго заданного набора. Результатом является класс (например, спам / не спам) или конкретное число (предсказание цены). - Вероятностный / открытый вывод
Свойственен генеративному ИИ (AI-инженерия). Модель не знает точного ответа, а математически предсказывает вероятности следующих токенов. Выходные данные ничем не ограничены - это генерация текста, рабочего программного кода или изображений. На один и тот же запрос при разных генерациях можно получить разные результаты. - Разметка и табличные данные
Классический формат данных для ML - реляционные таблицы (как в базах SQL), где каждая строка имеет известную целевую переменную (разметку). Например, база квартир, где известны площадь, район и точная цена продажи. - Неструктурированные данные и Векторные БД
То, с чем работает современный ИИ: сырые тексты статей, логи, изображения, аудио. Чтобы нейросеть могла искать информацию по таким данным, они превращаются в векторы (эмбеддинги) и сохраняются в специализированные векторные базы данных (например, Qdrant, Milvus), заточенные под быстрый поиск по смыслу, а не по ключевым словам. - Feature engineering (Конструирование признаков)
Ручной аналитический процесс в классическом ML. Инженер берет сырые данные и с помощью математики и логики создает из них новые признаки, чтобы помочь алгоритму. Пример: из столбца "дата рождения" вычислить новый признак "возраст в днях". В современном AI нейросети извлекают нужные признаки из контекста самостоятельно.
2. Базовые концепции обучения и статистики
- Выборка, детерминизм и распределение
Базовые понятия теории вероятностей. Выборка - часть данных из генеральной совокупности, на которой мы обучаем или тестируем модель. Детерминизм - строгая предсказуемость результата алгоритма. Распределение - описание того, с какой частотой и вероятностью в данных появляются те или иные значения. - Обучение с учителем (Supervised) и без учителя (Unsupervised)
В первом случае алгоритм учится на примерах, где заранее дан правильный ответ (человек разметил, где на фото коты, а где собаки). Во втором случае алгоритм получает сырые данные без подсказок и сам ищет в них скрытые закономерности (например, разбивает пользователей на кластеры по поведению). - Градиентный спуск и Обратное распространение (Backpropagation)
Градиентный спуск - математический алгоритм оптимизации. Он шаг за шагом корректирует веса (настройки) нейросети, чтобы минимизировать ошибку (как бы "спускаясь" на дно ямы, где ошибка равна нулю). Обратное распространение - механизм, позволяющий сети понять, какой именно нейрон на предыдущем слое совершил ошибку, чтобы скорректировать его вес. - Функция потерь (Loss) и Логарифмическое правдоподобие
Математические формулы, которые оценивают качество работы модели в процессе обучения. Функция потерь вычисляет, насколько сильно предсказание нейросети отклонилось от идеала. Логарифмическое правдоподобие оценивает вероятность того, что модель выдаст реальные, правильные данные. - Гиперпараметры
В отличие от внутренних параметров (весов), которые нейросеть настраивает сама в процессе обучения, гиперпараметры задает сам разработчик до старта (например, сколько слоев будет в сети, с какой скоростью ей учиться).
3. Архитектуры нейронных сетей
- Прямое распространение (Feedforward)
Самый базовый тип нейросетей. Сигнал идет строго в одном направлении: от входного слоя к выходному. Не имеют памяти, поэтому плохо подходят для понимания текста. - Рекуррентные сети (RNN)
Архитектура, обладающая своеобразной "памятью". Они обрабатывают данные последовательно (слово за словом), поэтому их долгое время использовали для машинного перевода. Их минус - они забывают контекст, если текст слишком длинный. - Трансформеры (Transformers)
Архитектура, совершившая революцию и подарившая нам ChatGPT. Благодаря механизму "внимания" (Attention), трансформер анализирует все слова в тексте одновременно. Он мгновенно понимает логические связи между первым и тысячным словом в документе, не теряя контекст.
4. Метрики оценки качества моделей
- Accuracy (Доля правильных ответов) - самый простой показатель: процент верных предсказаний от общего числа.
- Precision (Точность) - показывает, сколько из тех объектов, что модель назвала положительными, реально являются таковыми (минимизация ложных срабатываний).
- Recall (Полнота) - показывает, какую долю из всех реальных положительных объектов модель смогла найти (минимизация пропусков).
- F1-мера - сбалансированная метрика, представляющая собой среднее гармоническое между Точностью и Полнотой.
- Кросс-энтропия - метрика потерь в задачах классификации (например, при предсказании следующего слова), измеряющая разницу между предсказанием сети и реальностью.
- Косинусное сходство - математическая мера, показывающая, насколько два вектора направлены в одну сторону. В AI используется для оценки смысловой близости текстов (чем ближе показатель к 1, тем больше похож смысл).
5. Популярный стек технологий
- Python - безоговорочный язык №1 в индустрии машинного обучения и AI.
- PyTorch - самый популярный открытый фреймворк для создания и обучения глубоких нейронных сетей.
- Scikit-learn - классическая библиотека Python для базового машинного обучения (регрессии, деревья решений), используемая в традиционном ML-инжиниринге.
- LangChain и LlamaIndex - мощные Python-фреймворки оркестрации для AI-инженеров. С их помощью пишут логику AI-агентов, настраивают RAG (подключают нейросети к корпоративным базам данных) и управляют памятью ботов.
- vLLM - высокопроизводительная библиотека для быстрого инференса (запуска и обработки запросов) больших языковых моделей на серверах. Позволяет экономить ресурсы видеокарт.
Сегодня расскажу историю о том, как я до 4 часов ночи пытался восстановить обычное VNC-соединение между двумя ПК на Windows 11. Спойлер: виновником торжества оказалось основное сетевое оборудование, но по пути пришлось столкнуться с логикой Microsoft и обновить систему до Pro-версии + попутно решая проблему, с сайтом riopass.ru, который не работал по причине магистральных блокировок.
Сначала в ход пошла моя классическая база. Было обновлено ПО на обеих сторонах с нуля (RealVNC Viewer на клиенте и TightVNC Server на хосте). Настройка сервера, смена паролей, полное отключение брандмауэра Windows и антивирусов, проброс 5900 порта и приложения в брэндмауэре - результата ноль. Не помогла даже перезагрузка.
Далее я исключил промежуточное сетевое оборудование (на котором была какая то защита от spoofing'а) и соединил ПК напрямую интернет-кабелем. Удивительно, но и это не решило проблему.
RDP и ключи с ggsel, ну нафига?
Раз VNC сдался, я решил зайти через RDP. Но для этого нужна Windows 11 Pro. В ходе ночных экспериментов на ggsel за копейки был куплен ключ с привязкой к аккаунту Microsoft (Retail).
Интересный момент: в инструкции к ключу было строго указано, что обновить OEM-версию Home до Pro не выйдет, но у меня всё успешно обновилось. А вот дальше начались проблемы с экосистемой Microsoft.
Оказалось, что подключиться по RDP к компу с официальным аккаунтом Microsoft (в формате MicrosoftAccount\your@mail.ru) - тот еще квест. Система не пускает из-за особенностей работы модуля TPM и ПИН-кодов Windows Hello. Даже если отключить ПИН-код и оставить только вход по паролю, RDP может выдавать ошибку авторизации. Чтобы всё завелось, пришлось заходить в аккаунт, сбрасывать пароль и отключать требование входа только через Windows Hello. Но и это не помогло! RDP работает только с локальной или корпоративной утечкой! В итоге пришлось подключаться с локальной учеткой... Azure ID у меня нету :)
Магия Wi-Fi и китайских роутеров.
После всех манипуляций, ради эксперимента подключил этот проблемный мини-ПК по Wi-Fi. И - о чудо! - моментально заработали и RDP, и VNC.
Далее я вернулся к проводному соединению, вручную изменил статический IP-адрес на роутере через Mi Home, и доступ снова появился. Правда, радость была недолгой: отвалился сетевой диск. При попытке его подключить система выдавала таймаут, зависал проводник и у меня почему то вернулось OneDrive, а ранее работавшие адреса перестали пинговаться. В итоге помогла только полная перезагрузка того ПК, с которого я инициировал подключение.

Итоги и выводы
Сложив всю картину воедино, стало ясно, что корнем всех бед оказался роутер Xiaomi. То, как в нем реализована связка MAC/IP, как происходит согласование таблиц маршрутизации и почему он хаотично изолирует часть портов и клиентов друг от друга, - останется загадкой навсегда, наверное даже для китайцев которые написали прошивку для этого роутера. Из-за его зависших таблиц прямой кабель изначально тоже не работал, так как сетевой интерфейс ПК не мог корректно обновить данные.
Суть этой истории такова:
- Будьте осторожны с недорогими китайскими роутерами. Иногда они ведут себя абсолютно непредсказуемо в плане фильтрации трафика, подкидывая проблемы там, где их быть не должно.
- Старое доброе правило "выключить и включить" всё ещё актуально, особенно если непонятно, на каком этапе застрял пакет.
- Идеальных систем не существует. Несовершенно всё: от китайского роутера за полторы тысячи рублей до логики работы сервисов огромной корпорации вроде Microsoft.
P.S. Почему я отдельно упомянул Microsoft? Ещё давно, мой аккаунт просто улетел в блокировку за "подозрительную активность". При попытке зайти на сайт microsoft.com для авторизации система начала навязчиво требовать создание ключей TPM (Passkeys), хотя они уже были созданы ранее. Из-за этого происходил замкнутый круг и постоянно вылетала ошибка.
В итоге пришлось отказаться от входа по ПИН-коду, запрашивать одноразовый код на почту и сбрасывать пароль. Только чудом зайдя в аккаунт таким способом, я добился того, что всё заработало. И, как оказалось, никакие ключи заново создавать на самом деле было не нужно это не доработка Microsoft, когда Windows обновился с Home на Pro.
Сегодня разберем очень коварную проблему, с которой сталкиваются энтузиасты при покупке Raspberry Pi 5 на китайских маркетплейсах. Вы заказываете версию на 8 ГБ для своего нового домашнего сервера, радостно запускаете её, система обновляется, и после первой же перезагрузки плата превращается в безжизненный кусок текстолита.
Спойлер: дело чаще всего не в браке, а в хитрых аппаратных модификациях. И чтобы докопаться до истины, нам потребуется старый добрый UART.
Откуда берутся дешевые 8 ГБ?
На AliExpress массово продаются Raspberry Pi 5, которые изначально сошли с конвейера с 2 ГБ оперативной памяти. Умелые мастера выпаивают дешевый чип памяти и ставят на его место банку на 8 ГБ (например, от Samsung).
Проблема кроется в том, что объем памяти на Raspberry Pi аппаратно задается крошечными конфигурационными SMD-резисторами на плате. Перепаивать эту мелочь под микроскопом слишком долго, поэтому китайские продавцы этого просто не делают. В итоге получается плата-мутант: аппаратно она заявляет загрузчику, что она версия на 2 ГБ, но физически несет на борту 8 ГБ.
Ловушка обновления загрузчика (EEPROM)
До середины 2024 года встроенная прошивка Raspberry Pi (EEPROM) закрывала глаза на такие расхождения. Система просто загружалась и позволяла Linux работать со всеми доступными 8 ГБ.
Но в новых версиях прошивок (начиная с конца 2024 года) разработчики внедрили строгую проверку соответствия железа. Теперь загрузчик сравнивает аппаратный ID платы с физически обнаруженным чипом. Если есть расхождение - загрузка намертво блокируется ради безопасности.
Именно поэтому свежекупленная плата может отлично работать в первый день, но стоит Raspberry Pi OS в фоновом режиме обновить EEPROM - и вы получаете нерабочее устройство.
UART - ваш главный помощник в отладке
Когда плата не грузится, на мониторе через HDMI вы видите просто черный экран. Вентилятор может крутиться на 100%, но что именно пошло не так - загадка. Здесь на помощь приходит аппаратная отладка.

UART (Universal Asynchronous Receiver-Transmitter) - это низкоуровневый интерфейс, который выводит текстовые логи работы процессора и загрузчика еще до того, как инициализируется видеовыход.
У Raspberry Pi 5 есть огромное преимущество перед прошлыми поколениями - выделенный 3-контактный порт отладки (JST-SH), расположенный между разъемами micro-HDMI.


После подключения USB-адаптера к компьютеру, вам нужно открыть терминал с правильными параметрами.
Параметры соединения:
Baud rate (скорость): 115200
Data bits: 8
Parity: None (Нет)
Stop bits: 1
Flow control: None (Нет)
Для Windows:
Зайдите в Диспетчер устройств -> Порты (COM и LPT) и найдите номер вашего адаптера (например,
COM3).Скачайте и откройте программу PuTTY.
Выберите тип соединения (Connection type): Serial.
В поле Serial line впишите ваш порт (например,
COM3), а в поле Speed -115200.Нажмите Open.
Запуск процесса отладки
Нажмите кнопку Open внизу окна PuTTY. Откроется черное пустое окно терминала.
Только после этого подайте питание на вашу Raspberry Pi 5 (подключите блок питания).
В черном окне сразу же должен побежать белый текст - это логи загрузчика (EEPROM) и старта системы.
В окне терминала побегут логи. Если у вас модифицированная плата с новой прошивкой, вы увидите, как загрузка разбивается о критическую ошибку: BOOT ERROR: code 9 - 'SDRAM mismatch' (Процессор ожидает конфигурацию 16 Gbit (2 ГБ), а видит актуальную конфигурацию 64 Gbit (8 ГБ)).

Инструкция по "оживлению" платы
Чтобы плата стабильно работала, нужно откатить прошивку на ту, которая не проверяет память, и жестко запретить ей обновляться.
Откат загрузчика:
Берем обычную USB-флешку или MicroSD, форматируем строго в FAT32.
Скачиваем с официального GitHub (
raspberrypi/rpi-eepromв разделе Releases) архив старой прошивки восстановления (ищите версии до сентября 2024 года). Можно скачать с нашего сайта.Распаковываем все файлы из архива прямо в корень флешки (без подпапок).
Вставляем в выключенную Raspberry Pi, подаем питание. Ждем несколько секунд, пока зеленый диод на плате не начнет быстро и равномерно мигать (это означает успешную перепрошивку EEPROM).
Блокировка обновлений (Критически важно!):
Вытаскиваем флешку восстановления, вставляем рабочий накопитель с Raspberry Pi OS и успешно загружаемся в систему.
Немедленно открываем терминал Linux и навсегда отключаем фоновую службу обновления EEPROM двумя командами:
sudo systemctl disable rpi-eeprom-update sudo systemctl mask rpi-eeprom-update
Стоит ли игра свеч?
Покупка модифицированной Raspberry Pi на китайских маркетплейсах - это самая настоящая лотерея, в которой вы расплачиваетесь своим собственным временем. Ради сомнительной экономии вы рискуете получить нестабильного "франкенштейна" и потратить несколько вечеров кряду, пытаясь заставить его хотя бы загрузить операционную систему. Если вы собираете надежный домашний сервер, где важен стабильный аптайм и отсутствие сюрпризов, такой подход категорически не годится! Лучше переплатить за официальную плату и спать спокойно.
Но в этой ситуации есть один огромный, жирный плюс. Пытаясь оживить этот "кирпич", изучая логи через UART, откатывая версии загрузчика EEPROM и ковыряясь в консоли Linux через отладочный порт, вы прокачаете свои навыки траблшутинга на все сто. Вы потеряете кучу нервов и времени, но взамен получите тот самый хардкорный опыт работы с железом, который не даст ни один учебник. Не покупайте это, если вам нужно, чтобы всё работало "из коробки". Покупайте, если хотите научиться решать настоящие инженерные проблемы.
Бонус. Тот самый момент "окирпичивания" (Ошибка SDRAM)
Это ранняя стадия загрузки, где система проводит инвентаризацию "железа". Обратите внимание на ключевые строки:
2.37 Expected configuration 16 Gbit: Загрузчик считывает конфигурационные резисторы на плате и ждет, что сейчас увидит 2 ГБ памяти (16 Гигабит).2.41 Actual configuration 32 Gbit byte-mode: Процессор физически стучится в чип памяти и понимает, что перед ним 4 ГБ (32 Гигабита). Примечание: на платах с 8 ГБ здесь будет значение 64 Gbit.2.48 BOOT ERROR: code 9 - 'SDRAM mismatch': Система уходит в жесткий отказ. Дальше этой строчки процесс не пойдет, пока мы не вмешаемся.

Чудесное исцеление (Успешная прошивка EEPROM)
Это лог успешного отката прошивки со спасательной флешки. Именно ради этих строк я и затевал всю возню с UART!
6.82 Writing EEPROM: Начался процесс стирания злой прошивки и записи доброй (старой). Полоса из плюсиков и точек показывает прогресс.14.70 Verify BOOT EEPROM: Плата умная, она проверяет сама себя, чтобы убедиться, что новая прошивка легла ровно и без ошибок.19.08 BOOT-EEPROM: UPDATED: Победа. Загрузчик успешно обновлен. После этой строчки можно выключать питание, вставлять флешку с Raspberry Pi OS и наслаждаться работающим сервером или мини ПК. НО если у Вас OS RASBIAN не забудьте про:
sudo systemctl disable rpi-eeprom-update sudo systemctl mask rpi-eeprom-update
Внимание: Система обновляется как вирус, даже без интернета!
ВАЖНО: даже если вы успешно откатили EEPROM через флешку восстановления, расслабляться рано. Официальная операционная система Raspberry Pi OS обновляет прошивку загрузчика без спроса, словно вирус.
Самое коварное здесь то, что ей для этого даже не нужен доступ к сети! Свежие файлы прошивки уже лежат внутри самого установочного образа операционной системы. Как только вы впервые загружаете свежую ОС, фоновая служба rpi-eeprom-update сверяет версии, находит в своих локальных папках более новую "злую" прошивку и молча подготавливает её к установке.
При следующей перезагрузке ваша плата снова превратится в кирпич, и вам в любом случае придется заново искать старые файлы и откатывать EEPROM, теряя кучу времени!
Именно поэтому порядок действий должен быть строго таким: откатили прошивку -> успешно загрузились в Linux -> немедленно отключили службу rpi-eeprom-update в терминале -> и только потом начали настраивать сеть и сервер.
⚠️ Важное дополнение: Проблемы с новыми версиями Raspberry Pi OS (Trixie и новее)
В новых релизах ОС разработчики Raspberry Pi изменили подход к обновлениям: теперь прошивка и ядро связаны гораздо жестче. Система целенаправленно борется с кастомизацией (перепайкой чипов памяти) на уровне самого ядра. Поэтому команд, описанных в оригинальной статье, для новых образов уже недостаточно.
Чтобы обойти эту проблему и заставить модифицированную плату работать, потребуется использовать более старый образ операционной системы.
Что нужно сделать:
1. Скачайте архивный образ системы
Используйте образ не новее raspios_arm64-2025-11-24 (в идеале - релизы 2024 года). Найти прошлые версии можно в официальном архиве: downloads.raspberrypi.com/raspios_arm64/images/.
2. Заморозьте пакеты до первого обновления
Установите систему, но до первого обновления вам нужно не только отключить rpi-eeprom-update, но и полностью исключить из апдейтов ядро и загрузочные утилиты.
Для этого выполните команду заморозки пакетов в терминале:
sudo apt-mark hold initramfs-tools initramfs-tools-bin initramfs-tools-core linux-headers-rpi-2712 linux-headers-rpi-v8 linux-image-rpi-2712 linux-image-rpi-v8 raspi-firmware rpi-eepromПроверенные версии пакетов
Ниже представлен список и версии библиотек-пакетов, которые стабильно работают на моей конфигурации (до них можно обновляться):
initramfs-tools-bin/stable,now 0.148.4+rpt2 arm64
initramfs-tools-core/stable,stable,now 0.148.4+rpt2 all
initramfs-tools/stable,stable,now 0.148.4+rpt2 all
linux-headers-rpi-2712/now 1:6.12.75-1+rpt1 arm64
linux-headers-rpi-v8/now 1:6.12.75-1+rpt1 arm64
linux-image-rpi-2712/now 1:6.12.75-1+rpt1 arm64
linux-image-rpi-v8/now 1:6.12.75-1+rpt1 arm64
raspi-firmware/now 1:1.20260408-1 all
rpi-eeprom/now 28.13-1 all(Моя рабочая версия ОС на данный момент: Linux Rastb5 6.12.75+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.75-1+rpt1 (2026-03-11) aarch64 GNU/Linux)
Справка: Подробнее об этой проблеме можно почитать в моем issue в официальном репозитории GitHub #2029 (закрыто разработчиками с пометкой "не поддерживается").
Известные проблемы и риски
- Черный экран (Видеопамять): При перезагрузке может возникнуть проблема с видеопамятью, связанная с кодом прошивки и распаянной оперативной памятью. При подключении через VNC или HDMI может отображаться черный экран. Этот момент требует дополнительных тестов на вашей стороне.
- Риск будущих поломок: Разработчики Raspberry Pi постепенно переписывают библиотеки. Есть высокий риск, что с каждым новым обновлением будут возникать конфликты, и придется выискивать новые пакеты для sudo apt-mark hold.
Важное замечание по безопасности
Описанный метод позволит вашей "кастомной" Raspberry Pi 5 нормально работать, но ценой полного отказа от обновлений безопасности ядра.
Для домашней лаборатории или тестов это вполне приемлемо. Однако, если вы планируете использовать плату для коммерческих или промышленных нужд (например, как постоянный терминал), безопасность будет под угрозой. Для таких задач искренне рекомендую продать плату и приобрести классический x86 Мини-ПК - в коммерческой эксплуатации они показывают себя гораздо стабильнее одноплатников и навсегда избавляют от подобных проблем с железом и прошивками.
Если у Вас есть полезные сведения, новые решения или вопросы пишите: support@riopass.ru
Как сделать из компьютера игровую приставку XBOX: Пошаговый гайд
Многие задумываются о покупке консоли для игр на большом экране, забывая, что обычный ПК может справиться с этой задачей ничуть не хуже, а в чем-то даже лучше. Зачем покупать отдельную приставку, если ваш компьютер уже обладает нужной мощностью, а цены на игры и подписки в ПК-сегменте зачастую выгоднее?
В этой статье я расскажу, как объединить рабочий ПК и телевизор в единую игровую станцию.
Что нам потребуется?
Для реализации проекта понадобится всего три основных компонента:
- HDMI-кабель нужной длины. В моем случае расстояние от ПК до телевизора приличное, поэтому я использую 7-метровый кабель (покупал его довольно давно на AliExpress примерно за 200 рублей).
Беспроводной геймпад. Идеальный выбор для ПК - контроллер от Xbox. У меня используется модель от Xbox One. Рекомендую брать более новые ревизии и, чтобы не заморачиваться с постоянной заменой батареек, сразу докупить к нему фирменный аккумулятор.

- Телевизор с поддержкой HDMI. Очень желательно, чтобы в вашем ТВ была функция быстрого отклика (игровой режим), чтобы передавать картинку без задержек (input lag).
ВАЖНО: Многое зависит от самого провода HDMI и настроек телевизора. Например, в моем ТВ есть функция HD Ultra Color. Если ее включить с моим кабелем, картинка просто пропадает. Поэтому, если после подключения у вас нет изображения, попробуйте отключить подобные "улучшалки" в настройках портов телевизора.
Программная часть: Windows, Xbox и Steam
Windows "из коробки" отлично умеет работать с сервисами Xbox. По сути, ваш ПК - это и есть Xbox, только с более широким функционалом. Я долгое время пользовался экосистемой Xbox на ПК, пока не закончилась подписка.
Если вы хотите сэкономить или у вас уже собрана большая библиотека игр, связка Windows + Steam работает безупречно. Steam поддерживает режим Big Picture, который специально создан для телевизоров. Интерфейс выглядит как меню консоли и отлично управляется с геймпада. Так же можно подключить дополнительный софт и управлять Windows c гейпада, например Controller Companion .
Остается только расширить экраны в настройках дисплея Windows, чтобы вывести картинку на ТВ (И да, Windows умеет дублировать два экрана, а третий расширять):

Кабель-менеджмент: как спрятать 7 метров провода
Самая сложная часть в таких проектах - аккуратно проложить длинный кабель, чтобы он не валялся под ногами и не мешал роботу-пылесосу.
Изначально это выглядело так:

Проблема дешевых длинных HDMI-кабелей в их жесткости. Толстая оплетка сделана специально, чтобы исключить перегибы и повреждение жил, поэтому сложить его под углом 90 градусов в углу комнаты просто не получится.
Для фиксации я придумал собственное крепление вдоль плинтуса. Использовал площадки на липучках (двустороннем скотче) и пластиковые хомуты-стяжки.

Стягиваем, обрезаем лишние хвосты хомутов, и получается очень аккуратная линия, которая почти не бросается в глаза:

Вот что получилось!
Наш проект готов! Теперь за компьютером можно не только с комфортом писать код и администрировать серверы, но и в любой момент переключиться на отдых. Берем геймпад, откидываемся на диван и запускаем Tekken 8 на большом экране!


Глоссарий
- HDMI (High Definition Multimedia Interface) - стандартный интерфейс для передачи цифровых видеоданных высокого разрешения и многоканального звука от компьютера к телевизору или монитору по одному кабелю.
- Input lag (Задержка ввода) - время, которое проходит между нажатием кнопки на геймпаде и соответствующим изменением картинки на экране телевизора. Функция "быстрого отклика" или «игровой режим» в телевизорах минимизирует эту задержку, что критически важно для динамичных игр, таких как файтинги (например, Tekken 8).
- Steam Big Picture - специальный полноэкранный режим игровой платформы Steam. Его интерфейс специально адаптирован под телевизоры с большой диагональю и полностью управляется с геймпада, визуально и функционально имитируя меню классических игровых приставок.
- HD Ultra Color (и аналогичные функции ТВ) - технология расширения цветового диапазона (HDR) в современных телевизорах. Передача такого сигнала требует высокой пропускной способности, с которой могут не справиться бюджетные или очень длинные HDMI-кабели, что приводит к черному экрану или мерцанию.
- Геймпад (Контроллер) - игровой пульт. Для Windows де-факто стандартом считаются геймпады от консолей Xbox, так как операционная система поддерживает их нативно (без необходимости скачивать сторонние драйверы или программы-эмуляторы).
- Кабель-менеджмент - процесс аккуратной укладки, маскировки и фиксации проводов в помещении. Позволяет защитить кабели от повреждений, упрощает уборку (кабель не мешает роботу-пылесосу) и сохраняет эстетичный вид комнаты.
- Хомут-стяжка - гибкий пластиковый крепежный элемент, используемый для фиксации проводов. В сочетании с монтажными площадками на клейкой основе позволяет надежно закрепить кабель на плинтусе или мебели без сверления
Uptime Kuma: Селфхост-мониторинг для ваших сервисов
Если у вас крутится зоопарк собственных сервисов, рано или поздно встает вопрос: как узнать, что всё работает, до того, как пользователи (или вы сами) обнаружат ошибку 502?
Uptime Kuma - это легковесный, опенсорсный аналог UptimeRobot, который можно развернуть на своем железе за пару минут. У него красивый интерфейс, поддержка десятков видов уведомлений и богатый функционал для создания публичных статус-страниц.
Для каких проектов подходит Uptime Kuma?
Этот инструмент универсален и отлично вписывается в самые разные сценарии:
- Домашние лаборатории (Homelab): Идеально для серверов на базе Raspberry Pi или виртуалок в Proxmox. Можно мониторить локальные DNS-фильтры, прокси-менеджеры, умный дом и базы данных, API.
- Сайты и пет-проекты: Контроль доступности ваших блогов, лендингов и веб-приложений извне
- Проверка открытых TCP-портов. Удобно, если вы держите, например, сервер по Counter-Strike и хотите знать, когда он "прилег".
- Контроль SSL-сертификатов: Kuma умеет заранее предупреждать, что сертификат сайта скоро протухнет.
Как установить?
Самый простой, надежный и чистый способ развернуть Uptime Kuma - использовать Docker.
Создайте директорию для проекта, а внутри - файл docker-compose.yml со следующим содержимым:
version: '3.3' # В новый версиях Docker не обязательно указывать!
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
# Обязательно пробрасываем volume, чтобы статистика не пропала при рестарте контейнера.
# Хранить данные лучше на надежном носителе (например, eMMC или HDD).
- ./uptime-kuma-data:/app/data
# Раскомментируйте строку ниже, если планируете мониторить другие Docker-контейнеры
# - /var/run/docker.sock:/var/run/docker.sock
ports:
- "3001:3001"
restart: unless-stoppedПосле этого запускаем контейнер:
docker-compose up -dГотово! Теперь интерфейс доступен по адресу: http://<IP_вашего_сервера>:3001.
Базовая настройка: с чего начать?
При первом входе система попросит создать учетную запись администратора. Дальше начинается самое интересное:
- Добавление мониторов:
Нажмите "+ Новый монитор". Выберите тип (HTTP/HTTPS для сайтов, Ping для хостов, TCP Port для баз данных или игр). Укажите адрес и интервал проверок.
Лайфхак: Если у вас бывают микроразрывы сети и выскакивают ошибки вроде ECONNRESET, увеличьте параметр "Количество повторных попыток" (Retries) до 2-3. Это избавит от ложных срабатываний. Настройка уведомлений (Алертов):
Зайдите в настройки монитора -> "Настроить уведомления". Uptime Kuma поддерживает всё: от Email и Webhooks до Telegram и Discord. Проще всего создать Telegram-бота через BotFather, вписать его токен в Kuma и получать моментальные пуши о падении сервисов прямо в мессенджер.
Публичные страницы статуса (Status Pages):
В верхнем меню есть кнопка "Страницы статуса". Там можно собрать красивый дашборд с зелеными полосками аптайма, добавить свой логотип, разделить сервисы по группам (например, "Внешние сайты" и "Внутренняя инфраструктура") и выставить это всё в открытый доступ, чтобы ваши пользователи всегда видели актуальное состояние проектов.
Работа с инцидентами (Ручное информирование)
Автоматика - это хорошо, но иногда сервер уходит в оффлайн по вашей инициативе. Например, вы планируете провести обслуживание Raspberry Pi 5 (Сервера), обновить ядро или восстановить систему из бэкапа на eMMC диске. Чтобы на странице статуса не появилась пугающая красная полоса "Недоступен", в Uptime Kuma есть механизм Инцидентов.

На странице статуса нажмите зеленую кнопку "Создать инцидент". Перед вами появится форма:
- Название инцидента: Краткая суть (например, "Плановое техническое обслуживание" или "Проблемы с хостинг-провайдером").
- Содержание инцидента: Подробное описание ситуации. Поле поддерживает синтаксис Markdown, так что текст можно красиво отформатировать, добавить списки или ссылки.
- Стиль: Выпадающий список позволяет выбрать визуальное оформление плашки, которая появится на дашборде.
- ИНФО - нейтральное уведомление (полезно для плановых работ).
- ВНИМАНИЕ - желтый алерт (сервис работает нестабильно).
- ОШИБКА - красный алерт (всё упало, мы уже чиним).
- ОСНОВНОЙ / СВЕТЛЫЙ / ТЕМНЫЙ - системные цвета для кастомизации под дизайн вашей страницы.
Как только работы завершатся, инцидент можно "Закрыть", и он уйдет в историю, а пользователи увидят, что проблема решена.
Глоссарий
- Аптайм (Uptime): Время непрерывной работы вычислительной системы или сервиса с момента последней загрузки. Выражается в процентах (например, 99.9% - отличный показатель).
- Даунрайм (Downtime): Время простоя, когда сервис недоступен для пользователей по техническим причинам.
- Дашборд (Dashboard): Информационная панель (доска), на которую выводятся ключевые показатели и графики в удобном для чтения виде. В Uptime Kuma это "Страницы статуса".
- Монитор (Monitor): Отдельная задача проверки в Uptime Kuma, которая регулярно опрашивает конкретный сервис (сайт, IP-адрес, порт) на предмет его "жизни".
- Инцидент (Incident): Событие, приводящее к прерыванию работы сервиса или снижению качества его работы. На статус-страницах используется для информирования пользователей о текущих проблемах или плановых работах.
- Пинг (Ping): Базовая сетевая утилита для проверки целостности и качества соединений. Отправляет эхо-запрос к узлу сети и фиксирует время ответа.
- Self-hosted (Селфхост): Практика самостоятельного размещения и обслуживания программного обеспечения на собственных серверах, а не использования облачных решений от сторонних компаний.
Uptime Kuma работает по принципу "настроил и забыл", потребляет минимум ресурсов.
Бонус: Мониторинг с Grafana и Prometheus
Встроенные публичные "Страницы статуса" в Uptime Kuma отлично подходят для пользователей вашего сайта. Но если вы лично хотите видеть максимально подробную картину с графиками задержек до миллисекунды, историю SSL-сертификатов и глубокую аналитику - данные нужно выводить в Grafana.
Uptime Kuma спроектирована по всем канонам современного мониторинга и умеет отдавать свои метрики в формате базы данных Prometheus (по адресу http://<ваш-ip>:3001/metrics).
Как это работает на практике:
Вы разворачиваете контейнер с базой данных Prometheus и указываете ему забирать метрики из Uptime Kuma (добавив блок в
prometheus.yml).Пример:
global: scrape_interval: 15s scrape_configs: - job_name: 'node-exporter' static_configs: - targets: ['node-exporter:9100'] - job_name: 'cadvisor' static_configs: - targets: ['cadvisor:8080'] - job_name: 'uptime-kuma' basic_auth: username: 'Ваш логин' password: 'Ваш пароль' static_configs: - targets: ['uptime-kuma:3001']- Разворачиваете контейнер с Grafana и подключаете к ней Prometheus как источник данных (Data Source).
- Импортируете готовый шаблон дашборда (например, введя ID 18278 или 25062 в разделе Import).

В результате вы получаете роскошную, интерактивную панель управления с детализацией каждого пинга, которую можно тонко настраивать под себя. Это идеальный вариант для главной страницы вашей внутренней панели управления инфраструктурой.
Чистый интернет во всей домашней сети, блокировка мобильной рекламы, защита от трекеров и полное скрытие DNS-запросов от провайдера - всё это можно реализовать силами одной лишь Raspberry Pi или другим устройством на Linux.
Долгое время королем сетевой блокировки считался Pi-hole, но сегодня индустрия двинулась дальше. AdGuard Home - более современное решение: оно написано на Go, работает "из коробки" с шифрованием (DoH, DoT, DoQ) и поддерживает мощный Adblock-синтаксис фильтров.
В этой статье мы разберем, как правильно развернуть AdGuard Home в Docker на Raspberry Pi, как решить частую проблему занятого 53-го порта (особенно если у вас стоят другие сервисы вроде v2rayA/Xray) и как правильно настроить систему для RU-сегмента.
Подготовка: Решаем проблему 53-го порта
Главная сложность при установке любого DNS-сервера в Docker - борьба за порт 53. Этот порт необходим для работы DNS, но в современных дистрибутивах Linux (включая Raspberry Pi OS и Ubuntu) он часто уже занят системным резолвером (systemd-resolved), встроенным dnsmasq или прокси-глушилками (например, движком Xray).
Перед стартом проверим, свободен ли порт. Выполните команду в терминале малинки:
sudo ss -tulpn | grep :53Сценарий 1: Порт занят службой systemd-resolved
Если в выводе вы увидели этот процесс, его нужно отключить, чтобы освободить порт для Docker:
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo rm /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
Сценарий 2: Порт частично занят другими сервисами (Xray, VPN, dnsmasq)
Если вы увидели, что на порту 53 висят другие важные службы (например, на локальных адресах 127.2.0.17 или 10.42.0.1), отключать их нельзя - это сломает ваши туннели или внутреннюю сеть.
Решение: Мы заставим AdGuard Home слушать порт 53 только на основном IP-адресе вашей Raspberry Pi, который смотрит в домашнюю сеть.
Узнайте локальный IP-адрес малинки:
hostname -I(Допустим, ваш адрес 192.168.1.50. Запомните его, он пригодится при написании Docker Compose).
Шаг 1: Развертывание через Docker Compose (Предполагается, что у Вас уже установлен и настроен Docker)
Создадим отдельную директорию для проекта и конфигурационный файл:
mkdir -p ~/adguard && cd ~/adguard
nano docker-compose.ymlВставьте в файл следующий конфиг. Внимание: замените 192.168.1.50 на реальный IP-адрес вашей Raspberry Pi!
services:
adguardhome:
image: adguard/adguardhome
container_name: adguardhome
restart: unless-stopped
ports:
# Привязываем DNS к конкретному IP малинки, чтобы избежать конфликтов
- "192.168.1.50:53:53/tcp"
- "192.168.1.50:53:53/udp"
# Веб-панель управления
- "80:80/tcp"
# Порт для первичной инициализации
- "3000:3000/tcp"
volumes:
- ./work:/opt/adguardhome/work
- ./conf:/opt/adguardhome/confСохраните файл (Ctrl+O, затем Enter) и закройте редактор (Ctrl+X).
Запускаем контейнер:
docker compose up -d
Шаг 2: Первичная настройка AdGuard Home
Откройте браузер и перейдите по адресу: http://<IP_ВАШЕЙ_МАЛИНКИ>:3000.
Перед вами откроется приветственный мастер установки:
- Веб-интерфейс: Оставляйте "Все интерфейсы" и порт 80.
DNS-сервер: Оставляйте "Все интерфейсы" и порт 53.
Примечание: Внутри контейнера AdGuard должен слушать всё, Docker сам перенаправит трафик с внешнего IP на внутренний.
- Нажмите Далее, придумайте логин и надежный пароль для администратора.
После завершения панель управления станет доступна по обычному адресу: http://<IP_ВАШЕЙ_МАЛИНКИ>.

Шаг 3: Настройка шифрования (DNS-over-HTTPS / QUIC)
По умолчанию AdGuard отправляет запросы в сеть в открытом виде. Провайдер может их перехватывать, анализировать и подменять (так работают базовые блокировки сайтов). Защитим наш трафик.
- В панели управления перейдите в Настройки -> Настройки DNS.
В поле Апстрим DNS-серверы удалите всё и вставьте этот список быстрых и зашифрованных серверов:
https://dns.cloudflare.com/dns-query quic://dns.adguard-dns.com tls://dns.quad9.net https://dns.google/dns-query- Ниже в режиме маршрутизации выберите "Параллельные запросы" - AdGuard будет опрашивать все серверы одновременно и выбирать самый быстрый ответ. Это ускорит загрузку сайтов.
В поле Серверы начальной загрузки (Bootstrap DNS) вставьте обычные IP-адреса. Они нужны системе только для того, чтобы в первый раз узнать координаты зашифрованных серверов:
9.9.9.10 149.112.112.10 2620:fe::10 2620:fe::fe:10 1.1.1.1 1.0.0.1 8.8.8.8 9.9.9.9- Нажмите Проверить апстримы и, если всё ок, нажмите Применить.
Шаг 4: Подключаем лучшие фильтры для рунета (и где искать пропавшие списки)
Чтобы не перегружать оперативную память Raspberry Pi и не вызывать "поломку" нормальных сайтов, списки блокировок нужно подбирать аккуратно. В последних версиях AdGuard Home разработчики сильно почистили встроенные каталоги.
Перейдите в Фильтры -> Черные списки DNS -> Добавить черный список
Рекомендуемый сбалансированный набор:
- Общие: AdGuard DNS filter (включен по умолчанию, отлично режет базовую рекламу и трекеры) и OISD Blocklist Full (идеальный агрегатор без ложных срабатываний)..
- Региональные: AdGuard Russian filter и RU AdList (без них реклама Яндекса, Mail.ru и локальных сетей будет пролетать).
- Безопасность: Phishing URL Blocklist (PhishTank and OpenPhish), Malicious URL Blocklist (URLhaus) (Они надежно защитят домашнюю сеть от фишинга и вирусов.), WindowsSpyBlocker (глушит телеметрию Windows, не ломая обновления системы).

Куда пропал список для России и защита от трекеров?
Если вы не нашли в меню "Региональные" привычный российский фильтр - не пугайтесь. Дело в том, что разработчики AdGuard перенесли все актуальные DNS-блокировки для России (и правила против трекеров) прямо в базовый AdGuard DNS filter. Технически, вы уже защищены от отечественной рекламы "из коробки".
Как добавить кастомные списки вручную (Для продвинутых):
Для максимальной, бескомпромиссной фильтрации специфического мусора в рунете и телеметрии, добавьте пару легендарных списков вручную.
Нажмите "Добавить свой список" и введите:
- Для блокировки телеметрии Windows 10/11 (без поломки обновлений):
- Название:
WindowsSpyBlocker - URL:
https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
- Название:
- Для жесткой блокировки Яндекс.Метрики, Mail.ru и тизерных сетей:
- Название:
RU AdList - URL:
https://easylist-downloads.adblockplus.org/advblock.txt
- Название:
Нажмите "Сохранить", и AdGuard сам скачает актуальные правила.
Заключение: Направляем трафик
Теперь, когда ваш персональный DNS-сервер готов, нужно направить на него трафик.
У вас есть два пути:
- Для всего дома: Зайдите в настройки вашего домашнего роутера, найдите параметры DHCP и в поле Primary DNS (Основной DNS) введите IP-адрес вашей Raspberry Pi. Перезагрузите роутер. Теперь все устройства (телефоны, ТВ, ноутбуки) защищены автоматически.
- Для одного устройства: Если не хотите трогать роутер, зайдите в сетевые настройки конкретного ПК или смартфона и укажите IP малинки в качестве DNS вручную.
Что в итоге?
Вы получили полный контроль над своим сетевым трафиком. Вкладка "Журнал запросов" в AdGuard Home наглядно покажет, какие устройства и куда пытаются "стучаться" в фоновом режиме. Если какой-то нужный вам сайт или банк случайно заблокируется - вы сможете внести его в белый список прямо из лога в один клик.
Часто задаваемые вопросы (FAQ)
Почему AdGuard Home не блокирует рекламу внутри видео на YouTube, VK или Rutube?
Потому что эти платформы используют технологию серверной вклейки рекламы (SSAI - Server-Side Ad Insertion). Рекламные ролики и основное видео склеиваются на серверах корпораций и отдаются на ваше устройство с одного и того же домена единым зашифрованным потоком. DNS-фильтр работает на уровне доменов: он либо заблокирует весь видеопоток целиком, либо пропустит его вместе с рекламой. Для блокировки in-stream рекламы вам всё еще понадобятся браузерные расширения (например, uBlock Origin) или модифицированные клиенты (ReVanced).
У меня перестал открываться нужный сайт (Сбербанк, Госуслуги, Кинопоиск). Как починить?
Такое иногда случается - это типичное "ложное срабатывание" одного из черных списков. Не паникуйте! Откройте веб-панель AdGuard Home, перейдите в раздел "Журнал запросов". Найдите там свежую красную строчку с заблокированным доменом вашего сервиса и просто нажмите кнопку "Разблокировать". Сайт моментально заработает.
Что произойдет, если Raspberry Pi зависнет или я выдерну ее из розетки?
Это важный нюанс, о котором нужно помнить. Если вы указали малинку в настройках роутера как единственный DNS-сервер для всего дома, то при её отключении у всех устройств в квартире "пропадет" интернет. Сайты просто перестанут открываться (хотя мессенджеры по прямым IP могут работать). Если вы планируете выключить сервер надолго, не забудьте вернуть в настройках роутера автоматическое получение DNS от провайдера.
Что будет, если дома отключится электричество? Придется ли запускать всё заново?
Нет. В конфигурации нашего Docker-файла прописано правило restart: unless-stopped. Это значит, что как только Raspberry Pi получит питание и загрузится, AdGuard Home запустится автоматически, и интернет у всех устройств в доме восстановится.
Можно ли использовать AdGuard Home одновременно с VPN или обходом DPI (например, v2rayA / Xray)?
Да, они прекрасно работают на одном сервере. Более того, это классическая связка для современного домашнего сервера. Главное правило - грамотно настроить порты (как описано в нашей инструкции), чтобы движок VPN и Docker-контейнер с AdGuard не пытались одновременно занять 53-й порт на всех сетевых интерфейсах. Привязка AdGuard к локальному IP-адресу полностью решает эту проблему.
Глоссарий терминов
- DNS (Domain Name System) - "телефонная книга" интернета. Переводит понятные человеку адреса (например, riopass.ru) в числовые IP-адреса серверов (например, 192.168.1.1), которые понимают компьютеры.
- Апстрим DNS (Upstream DNS) - вышестоящий сервер в интернете. Когда вы вводите адрес сайта, а ваш домашний AdGuard Home не знает его IP-адреса, он обращается именно к апстрим-серверам (например, к серверам Cloudflare или Google) за ответом.
- Серверы начальной загрузки (Bootstrap DNS) - обычные, нешифрованные серверы (например,
1.1.1.1). Они нужны вашему AdGuard только в самую первую секунду работы: чтобы перевести буквенный адрес шифрованного апстрим-сервера (типаdns.cloudflare.com) в цифры и установить с ним защищенное соединение. - DNS-over-HTTPS (DoH) / DNS-over-QUIC (DoQ) - современные протоколы шифрования. Заворачивают ваши DNS-запросы в непроницаемый криптографический туннель. Благодаря им ваш интернет-провайдер не видит, на какие сайты вы заходите, и не может подменить ответ (например, выдать страницу-заглушку о блокировке).
- Порт 53 - стандартная "дверь" в сетевом оборудовании, через которую проходит весь нешифрованный DNS-трафик.
- DHCP (Dynamic Host Configuration Protocol) - служба на вашем домашнем роутере, которая автоматически раздает IP-адреса и настройки сети (включая адрес нашего нового DNS-сервера) всем подключающимся телефонам, телевизорам и компьютерам.
- Docker / Docker Compose - система контейнеризации. Позволяет запускать программы (например, AdGuard Home) в изолированной среде со всеми необходимыми зависимостями, чтобы они не конфликтовали с основной операционной системой (Raspberry Pi OS).
- systemd-resolved - встроенная в Linux системная служба для управления сетевыми именами. Часто является главной головной болью при настройке собственных DNS-серверов, так как намертво занимает порт 53.
- v2rayA / Xray - мощные современные инструменты для маршрутизации трафика и обхода систем глубокого анализа пакетов (DPI). Часто устанавливаются на тот же сервер, что и AdGuard Home, для создания комплексного домашнего шлюза.
- SSAI (Server-Side Ad Insertion) - серверная вклейка рекламы. Технология, из-за которой AdGuard Home и другие сетевые блокировщики не могут вырезать рекламу внутри видеороликов на YouTube или VK Video. Видео и реклама отдаются с одного домена единым зашифрованным потоком.
- Ложные срабатывания (False Positives) - ситуация, когда из-за слишком агрессивных списков фильтрации под блокировку попадает полезный домен. Из-за этого может сломаться верстка сайта или перестать работать авторизация в приложении банка.
- Локальный IP-адрес - внутренний адрес устройства в вашей домашней сети (обычно начинается на 192.168.x.x или 10.x.x.x). Доступ к нему есть только у устройств, подключенных к вашему домашнему Wi-Fi, из интернета напрямую до него не добраться.