Как я доставал больничные из PostgreSQL, не имея PostgreSQL
История одного воскресенья: три дампа, три кластера, разбор бинарных страниц PostgreSQL без единого работающего сервера - и 729 электронных больничных, вернувшихся на место.
История одного воскресенья: три дампа, три кластера, разбор бинарных страниц PostgreSQL без единого работающего сервера - и 729 электронных больничных, вернувшихся на место.
Онлайн-касса РИТЕЙЛ-01ФМ подключена к Raspberry Pi по USB. Задача звучала как пятиминутная: печатать на ней что угодно. На деле пришлось разобрать протокол ШТРИХ-М и вылечить аппаратную ошибку.
Личный AI-агент в Telegram на домашней ВМ за NAT: как вывести её в интернет через VPS за границей на GRE+IPsec, где платить за модели рублями и как не спалить токены за ночь.
Переезд рабочего Nextcloud на новый сервер: замена Apache на nginx, тюнинг PHP-FPM, Collabora в Docker, TURN-сервер для звонков и полтора десятка граблей по дороге.
Задача: перенести десятки корпоративных ящиков с VK WorkSpace на собственный почтовик, не потеряв ни письма. Готовые решения не подошли — написал свой скрипт на Python.
Разворачиваем 3proxy (HTTP + SOCKS5) на Ubuntu с аутентификацией по логину и паролю. С разбором главного подводного камня — прав на каталог лога.
Поднимаем локальное зеркало репозитория OpenVox: rsync тянет пакеты с Vox Pupuli, nginx раздаёт по HTTP, а профиль Puppet сам переключает ноды на свой источник.
Разбираем архитектуру roles & profiles + Hiera в OpenVox: где лежит код, как устроены правила и как безопасно вносить изменения. С рабочими примерами: пакеты, пользователи, SSH, Zabbix, NTP.
Как подключить ноду под управление OpenVox и корректно её отключить: агент, подпись сертификата, bootstrap-скрипт и грабли на живых серверах.
Поднимаем сервер управления OpenVox на Debian 13, кладём весь код инфраструктуры под git и настраиваем автоматическую раскатку через r10k.