Обновить
512K+

Системное администрирование *

Лишь бы юзер был доволен

497,81
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Amnezia на Mikrotik: полгода спустя

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели43K

В начале года я разработал AmneziaWG контейнер для Mikrotik. С тех пор произошло довольно много изменений, и судя по тому, как на хабре часто выходят разного рода статьи, где то один, то другой придумывает и вайбкодит какой-то новый впн-клиент, то складывается впечатление, что о Amnezia уже все забыли, хотя она очень даже помогает решать рабочие задачи.

Читать далее

Новости

Резолвер здоров, а страницы не открываются: как я сделал отказоустойчивый DoH на MikroTik

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели9.9K

В филиальной сети перестала открываться страница, которая до этого работала неделями. На роутере всё зелёное: :resolve отдаёт валидный адрес, DoH отвечает Status:0, монитор пишет «здоров». А у людей страница не открывается.

Оказалось, что ответ Cloudflare (8.6.112.0 / 8.47.69.0) валиден, но до него из этой сети нет маршрута. Проверка «получил IP или нет» такого не ловит. Рассказ о том, как я делал отказоустойчивый DoH на MikroTik и где упёрся в ограничения RouterOS.

Читать историю

Восстановление учетной записи в Windows 11

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели8.2K

Что делать, если Windows 11 заблокировала профиль пользователя, встроенные инструменты восстановления пасуют, а «всемогущий ИИ» с первой попытки предлагает решение, которое превращает систему в бесконечную рекурсивную петлю?

Рассказываю историю о том, как обычный пятничный вечер превратился в расследование сбоя NTFS-разрешений, как обойти скрытые ловушки совместимости Windows со времен XP и как с помощью правильного PowerShell-скрипта вернуть владельцу доступ к 180 тысячам файлов профиля (и спасти игровые сохранения!), не потеряв ни одного байта данных. 

Читать далее

Написал NetRuleRouter, чтобы сайты, приложения и сети работали через разные подключения без отключения VPN

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели8.6K

Представьте ситуацию: на компьютере включён VPN, зарубежные сервисы работают, но некоторые российские сайты, банки или маркетплейсы начинают просить его отключить.

Выключаете VPN — российские ресурсы открываются, зато часть зарубежных становится недоступной. Включаете обратно — проблема повторяется.

А если одновременно нужны корпоративный VPN, личный VPN, мессенджеры, игры и обычный интернет?

Мне надоело постоянно переключаться между подключениями. Поэтому я начал разрабатывать NetRuleRouter — программу, которая позволяет управлять маршрутизацией трафика по сайтам, приложениям, IP-адресам и сетям.

Причём NetRuleRouter — не VPN-клиент. Он работает поверх уже существующих подключений и позволяет выбирать, через какое из них должен идти определённый трафик.

Разработку я начал 1 апреля 2026 года, первые рабочие версии использовал ещё летом, а теперь выпустил первую публичную альфу NetRuleRouter v0.1.0-alpha.1 для Windows и Linux.

Хочу рассказать, откуда появилась идея, что уже умеет программа, как я использую её сам и почему при таком количестве возможностей это пока именно alpha.

Читать далее

Зоопарк версий под контролем: как я создал enodia — инвентаризацию сервисов с EOL и CVE

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.4K

Сколько у вас в инфраструктуре версий PostgreSQL? А какие из них уже не поддерживаются? А сколько CVE висит на том nginx, который «работает — не трогай»?

Если вы ответили на все три вопроса без поиска по чатам и вики, дальше можно не читать. А я в какой‑то момент понял, что не могу, и написал для этого инструмент. Под катом история о том, как он появился, на какие грабли я наступил по дороге и почему MySQL однажды заблокировал собственный хост из‑за моего мониторинга.

Читать далее

Архитектура VFS, часть 1 — файловая система и дескрипторы

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели5.4K

Думаю, многие из нас, желавших освоить DevOps или углубиться в азы архитектуры всеми любимого Linux сталкивались с такими понятиями как Inode, файловые дескрипторы, виртуальная файловая система, какие-то там суперблоки и многое-многое другое.

Всё это, как я считаю, можно объединить двумя словами: "Архитектура VFS", которую мы сегодня и разберём. Перед тем как начать, я думаю, что нам стоит определиться, что КОНКРЕТНО мы будем изучать:

1. Что такое файловые системы, какими они бывают и зачем они нужны.

2. Что такое VFS, зачем она нужна и как она работает.

3. Что такое файловые дескрипторы (FD), зачем они нужны и как они работают.

4. Операторы перенаправления потоков.

Если вы, как и я, метите в DevOps(а именно для них эта статья и написана), то эта информация вам может понадобиться, как минимум, для того, чтобы пройти собеседование - на тему траблшутинга часто могут задавать вопросы в духе "удалил файл, но процесс всё равно продолжает его читать".

Читать далее

Протухшие сертификаты, нулевой keystore и потерянная «@»: воскрешаем Huawei SANEX9510 без перезагрузки базы

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели5.2K

Система стояла мёртвой десять месяцев, пока платная поддержка искала причину. Я поднял её за три дня. Оказалось, что «просто протухли сертификаты» было семью независимыми поломками: keystore на 0 байт, зашифрованный пароль с потерянной первой «@», приватный ключ, который не понимает родной OpenSSL продукта, и утёкшие соединения к Sybase IQ. Разбираем слой за слоем, без ребута и без сброса паролей.

Читать далее

В логе было «не удалось получить данные:» и дальше пустота. Это и была вся ошибка

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.1K

В логе моего сборщика данных годами появлялась строка «не удалось получить данные:» и дальше ничего. Я считал это багом форматирования, пока не посмотрел: код написан правильно, просто у asyncio.TimeoutError пустой str(). Дальше выяснилось интереснее. Рядом лежит хелпер с тремя попытками и паузой в пять секунд, написанный ровно под сетевые сбои, а ловит он except aiohttp.ClientError. Начиная с Python 3.11 asyncio.TimeoutError это встроенный TimeoutError, наследник OSError, и к иерархии aiohttp он отношения не имеет. То есть единственная ошибка, ради которой ретраи существовали, пролетала мимо них. Причём у aiohttp есть и свои таймаутные исключения, которые как раз ClientError, и именно это сбивает с толку. Заодно разбираю, как я на основе этих пустых ошибок записал в заметки несуществующее «сетевое ограничение VPS» и построил вокруг него архитектурное решение.

Читать далее

РКН на этот раз с 10:00 по 12:00 зацепил npm (но только на последних версиях nodejs)

Время на прочтение1 мин
Охват и читатели5.3K

Сегодня с утра обнаружил, что на сервере не работает docker build, который собирает проект под nodejs.

Опытным путем выяснил, что прерываются соединения к npm. Но интересно то, что это было не на всех сборках. Оказалось, что режутся только node:22 и node:24, а node:20 работает. При этом режется только когда запускаешь npm, а git и curl работают. Помимо npm, не скачивается с gitlab. Github при этом работает. Проблема возникает и при работе npm, и при fetch из node. А при использовании образов, основанных на alpine, а не debian, не работает даже git.

Читать далее

Бэкап SQLite прошёл проверку. Второй заказ в него не попал

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели4.7K

Копия SQLite открывается, контрольная сумма совпадает, integrity_check отвечает ok. А подтверждённого заказа в ней нет. Разбираю результат десяти локальных прогонов: где осталась запись, почему проверки её не заметили и как принять резервную копию по содержимому. Полный проверенный скрипт — внутри.

Читать далее

Свои GPU плюс облако: как LLM-шлюз живёт в продакшене — ноды, отказы, ключи, обновления

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели4.4K

В прошлой статье я рассказывал про маршрутизацию и деньги в Keystone. The Model Switchboard. (KTMS), нашем open-source LLM-шлюзе на Go. Эта статья про эксплуатацию: как подключить свои видеокарты, что происходит, когда отказывает каждая зависимость, как менять ключи шифрования, как проверять, что вы скачали именно наш релиз, и как обновляться без простоя.

Читать далее

Думал, дел на пару вечеров… Но демка на Vercel выросла в PWA с собственным CI/CD на Coolify

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели7.5K

Привет! На связи Никита Шелепин, менеджер поддержки в Selectel. Расскажу о том, как однажды подписался на легкое на первый взгляд задание, предвкушая потратить пару вечеров, а закончилось все собственным CI/CD, Docker’ом и PWA.

Предстояло сделать сервис, который позволит оценивать когнитивные способности пользователей, а также будет собирать и сохранять результаты для выгрузки и дальнейшего исследования.

За моими плечами тогда было около года опыта — я писал инструменты администрирования на Vue с Bootstrap для одной компании в качестве подработки. Затем самостоятельно познакомился с SvelteKit — мне понравились его философия и модульность, а также то, что «из коробки» он дает удобный роутер и простые инструменты для создания fullstack-приложения.

С этим багажом знаний я и приступил к работе.

Читать далее →

Мониторинг изменений групповой политики Active Directory через git

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.9K

В этой статье мы рассмотрим подход как просто, эффективно и, самое главное, бесплатно отслеживать изменения групповой политики (GPO) Active Directory.

Если вы не единственный системный администратор в компании, своевременно ли вы узнаете, что кто-то из коллег изменил групповую политику? Обычно утром кто-то звонит и спрашивает - “А кто-то что-то менял в политике? У меня не работает/не подключается…”

Хорошо когда для мониторинга есть отдельный продукт, а если нет?
Использование репозитория git поможет легко и наглядно следить за изменениями объектов.

TLDR;
Идея: регулярно экспортировать GPO в xml и загружать на сервер git
Результат: бесплатный мониторинг изменений политики с минимальными трудозатратами

Читать далее

Ближайшие события

«client prematurely closed connection», хотя пользователь никуда не уходил

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.2K

В логах nginx появляется 499, и кажется, что клиент просто закрыл соединение. Но за таким обрывом может скрываться таймаут балансировщика, медленный бэкенд и запросы, которые продолжают выполняться впустую. На примерах с Go, aiohttp и Angie разбираемся, откуда берутся 499, как они влияют на инфраструктуру и по каким признакам отличить обычную отмену запроса от проблемы на стороне сервера.

Разобраться с 499

Liferay в gov секторе — как тяга к халяве, ой, то есть к OpenSource доводит до CWE-319

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели10K

Товарищи, 6 часов назад я просто хотел зарегистрироваться на одном государственном сервисе и спокойно лечь спать, но сейчас, в три, мать его, часа ночи я сижу и пишу этот текст потратив свой вечер на responsible disclosure и попытки выяснить, кто же в этой богадельне отвечает за протоколы безопасности, что бы моё письмо не ушло в почту тому же "специалисту" который накатил коробочный Liferay с дефолтными конфигами и сейчас спокойно сопит в своей постельке.

Выговорился. А теперь - к делу.

Один VPS и пять сервисов: как поставить и когда расселять

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели11K

Можно ли на один VPS поставить несколько сервисов? Можно, все так делают — у меня на личном VPS крутятся таск-трекер, бот в Telegram, пара пет-проектов и Grafana, чтобы за всем этим следить. Однако немногие знают, как это сделать правильно, поэтому рассказываю под катом. 

Читать

Одна деталька положила три сервиса

Время на прочтение7 мин
Охват и читатели6.3K

Что может поломать работу сразу нескольких сервисов? Разгадываем в этом детективе, как найти виновника поломки.

Перейти к расследованию

Что бэкапить в ИИ-приложении: модель, документы, индексы или историю диалогов?

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.3K

Привет, Хабр! На связи Михаил Витко, менеджер PaaS-продуктов Рег.облака. Представим ситуацию. После восстановления ИИ-помощник принимает запросы и отвечает без ошибок. Но на вопрос о сроке возврата товара называет 14 дней вместо 30: база уже знает о новой редакции регламента, а поиск работает по старому индексу. Проверка доступности сервиса такую поломку не обнаружит.

В статье подробно разберем, как резервировать RAG-помощника по корпоративным документам и восстанавливать его части в согласованном состоянии. Тема обширная, поэтому мы разделили материал на две части. В первой поговорим о том, какие данные нужно сохранять, что можно пересоздать после сбоя и как организовать резервное копирование в S3, PostgreSQL и Kubernetes. А во второй обсудим, как восстановить приложение без рассогласования данных и проверить, что оно корректно работает после сбоя. 

Читать далее

Делаем AppImage средствами Nix

Уровень сложностиСложный
Время на прочтение17 мин
Охват и читатели8.7K

«И что это я, в самом деле, всё про QEMU да про QEMU? Давайте я вам лучше про AppImage расскажу. Короче, случай из жизни nix». (c)

Для сборки QEMU с своими доработками (новые машины, tcg-code-quality, i2c-remote-master, GPIO наружу через GUSE и прочее) у каждого коллеги свой путь: кто-то собирает сам, кто-то берёт готовый бинарник у соседа, кто-то сидит на дистрибутиве, где glib на три года старше, чем нужно, а студенты вообще не хотят ничего собирать сами...

Хотелось простого: один файл, который скачал, сделал chmod +x и запустил. На любом x86_64 Linux, без root, без установки пакетов и без «а у меня не собирается». При этом сама сборка должна быть воспроизводимой, а не «собрано на ноутбуке у Пети».

Ниже история о том, как из этого получился небольшой flake, который собирает QEMU через Nix и упаковывает его в AppImage. Здесь я покажу как подписывать образы, обновлять их дельтами и подсовывать QEMU свою, экспериментальную libfuse так, чтобы она использовалась только для QEMU.

Читать далее

Не давайте агенту docker.sock: как я сделал для ИИ отдельный вход в свой Docker-менеджер

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели5.4K

Я пишу d9c, терминальный менеджер Docker для удалённых серверов, и однажды заметил, что через него к моим серверам ходит уже не только я, но и Claude Code. Таблицы для людей агенту не подходят. Ему нужен JSON, ограничение на объём вывода, чёткая граница между «посмотреть» и «сломать» и человек, который подтверждает удаление. Рассказываю, как сделал для агентов CLI-режим, MCP-сервер и десять skills, почему инструментов двенадцать, а не сорок, и как агент всё-таки удалил стейджинг, не спросив меня, хотя задумано было ровно наоборот.

Читать далее
1
23 ...