Установка Debian на raid-массив с LUKS шифрованием, корневой файловой системой ZFS и загрузкой с UBS и detached header

4/Май/2026 mdadmzfsluksusb-bootdetached-header

LUKS шифрование с отдельным header-файлом на USB 5504x3096 luks-encrypted-brick.jpg
LUKS шифрование с отдельным header-файлом на USB

Вступление издалека

Не так давно опять настальгировал во FreeBSD, всё прекрасно, всё привычно, всё удобно.
Один только момент полностью исключает её из использования на десктопе, по крайней мере у меня.
Почти на всех моих ноутбуках FreeBSD не поддерживает ни спящий, ни ждущий режимы (s2disk/s2ram).
И сделать я с этим ничего не смог, а уж перепробовал многое.

Без ждущего режима совершенно невозможно пользоваться ноутбуком, так как после транспортировки необходимо по новой всё загружать, включать, открывать.
Да и перезагружаю рабочие станции только после обновлений, этого требующих.

Из многих приятных мелочей, которые есть во Фряхе, и которые отсутствуют в Debian это ZFS Boot Environments, это несколько удобней чем, скажем, снапшоты LVM.
А второе это GEOM_ELI, который поддерживает не только, как LUKS, режим ИЛИ пароль, ИЛИ ключ, но так же поддерживает режим И пароль, И ключ.

Подумал, подумал, да и решил развернуть Debian с нуля с учётом всех инструментов, которые использую, опыта, и, что немаловажно, привычек.

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

Установка Debian на...

ZBook Studio x360

17/Апрель/2026 zbookx360

ZBook Studio x360 3000x2100 IMG_20260513_181633.jpg
ZBook Studio x360


Предварительный осмотр ноутбука

Пыль
Пыль 5504x3096
IMG_20260212_154405.jpg
Пыль
Пыль 5504x3096
IMG_20260212_154411.jpg
Общий вид
Общий вид 5504x3096
IMG_20260221_183605.jpg
Что-то не так
Что-то не так 5504x3096
IMG_20260221_181713.jpg
Что-то не правильно
Что-то не правильно 5504x3096
IMG_20260221_181724.jpg
Что-же не правильно?
Что-же не правильно? 5504x3096
IMG_20260221_181730.jpg
Общий вид
Общий вид 5504x3096
IMG_20260221_181934.jpg
Общий вид
Общий вид 5504x3096
IMG_20260221_182151.jpg
Общий вид
Общий вид 5504x3096
IMG_20260221_183635.jpg
ZBook Studio x360...

Как надо (и как не надо) сопровождать вашу систему, GIT и пакеты

10/Январь/2026 zero-trustsecurity

Хороший админ и его сервер
Хороший админ и его сервер 1000x1000
good_admin_and_his_server_exw.jpg

Стандартная ситуация, у вас есть основной рабочий компьютер, на котором у вас три разных проекта.
Один проект на nodejs, второй продакшн на python, а третий ваш личный “pet project”, тоже на python.
А ещё у вас в этой же системе личная+рабочая почта, ну и, скажем, браузер и клиент-банк.
И это всё под вашим пользователем.
Ну не под рутом же! ¯\_(ツ)_/¯
Всё вполне обычно. У многих вполне технически грамотных разработчиков таких проектов могут быть десятки и десятки ключей для ssh или git серверов.

Пример с популярным фреймворком PyTorch


Вполне обыденно Вы пишете свой код, время от времени коммитите, и тут в ваш уютный pet-project с AI прилетает обновление torchtriton.
А после этого из вашей системы улетают следующие наборы данных, в соответствии с основной функцией бинарника, которая делает следующее:

  • Сбор системной информации:
    • nameservers из /etc/resolv.conf
    • hostname из gethostname()
    • текущий логин из getlogin()
    • текущая рабочая директория из getcwd()
    • переменные окружения
  • Чтение следующих файлов:
    • /etc/hosts
    • /etc/passwd
    • Первые 1,000 файлов из $HOME/*
    • $HOME/.gitconfig
    • $HOME/.ssh/*

Обновление прилетело, конфедициальные данные - улетели.
Скомпрометировано не только всё под вашей учётной записью (и, возможно, системой), но и по цепочке всё, чем вы управляли, куда коммитили, куда подключались.

Как надо (и...

Установка основных версий Python на Debian Trixie

22/Декабрь/2025 pythontrixie

Python и Debian 1600x904 debian-python.png
Python и Debian

Очень, очень часто приходится сталкиваться с необходимостью использования определённой версии Питона, например, для torch, или чего-то специфического.
Использовать conda или Docker в связке с nvidia-container-toolkit и потом настраивать образы вроде nvidia/cuda:13.0.1-runtime-ubuntu22.04 мне ощущается противоестесственно, хотя часто так делал.
Да и в контейнере приходится устанавливать дополнительные пакеты.

Проще и удобней собрать всё на хостовой системе, но при этом не допустить контаминации всей системы посторонними библиотеками и исполняемыми файлами.

Далее приводится пример сборки нескольких версий Python только для группы verpy, что несколько удобнее, чем установка только для одного пользователя.

  • ai - произвольный пользователь, от которого осуществляется компиляция.
  • verpy - группа, которой будет разрешено исполнение.
1
2
3
4
apt install \
    build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
    wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev \
    liblzma-dev libgdbm-dev libnsl-dev libgdbm-compat-dev

mkdir /opt/openssl
mkdir /opt/python
groupadd --gid 42398 verpy
usermod -aG verpy ai

Установка основных версий...

Ошибка подключения GitLab Agent: Unauthorized

25/Ноябрь/2025 kubernetesgitlabagentk

Ошибка подключения GitLab Agent 1400x350 kubernetes_gitlab_agent_error.png
Ошибка подключения GitLab Agent

Не вдаваясь в подробности, как именно и почему все организовано, доступ осуществляется по следующей цепочке:

1
Nginx stream ingress <> Main Nginx Frontend <> Nginx Backend inside GitLab instance.

Основной фронтенд управляет поддоменом gitlab, который закрыт для внешнего доступа посредством авторизации auth_basic.

Ошибка подключения GitLab...
Страница 4 из 16