Debian 12 Server: установка, разметка диска и стартовая серверная настройка
Что мы строим и зачем
Debian 12 хорош тем, что он не изображает из себя “магический комбайн”. Ставишь — и получаешь систему, которую можно объяснить, повторить и обслуживать. Ниже — цельный сценарий: от разметки диска до базовой серверной настройки, чтобы дальше на этот фундамент ставить веб, базы, контейнеры и всё, что ты считаешь “сервисом”.
Принцип неизменный: одно действие → проверка. Если проверка не прошла, дальше не идём. Это экономит часы и нервные клетки.
Перед установкой: быстрые решения, которые потом сложно переиграть
Есть три вещи, которые лучше выбрать сразу: режим загрузки (UEFI), схема разделов (GPT) и стратегия хранения (обычные разделы или LVM). “Потом переделаю” обычно заканчивается миграцией в неудобное время.
Если сервер под одного владельца — UEFI + GPT почти всегда правильнее. По диску: минимально надёжный вариант — обычные разделы. Более гибкий — LVM, если ты понимаешь, что захочешь менять размеры /var и /home без перестановки.
Devil’s Advocate: LVM — это не “ускорение”, а удобство управления. Если тебе важнее простота, не стесняйся жить без LVM.
Схема разметки: два рабочих варианта
Вариант А: без LVM, просто и прозрачно
Подходит большинству “один сервер — один админ”.
GPT (UEFI)
- EFI System Partition 512M FAT32 /boot/efi
- /boot 1G ext4
- / 25–60G ext4 или xfs
- /var 20–100G ext4 или xfs (если веб/логи/БД — лучше выделить)
- swap 2–8G (по ситуации)
- /home или /srv остальное
Проверяемая логика: /var отдельно, чтобы логи, кэш и базы не душили корень.
Вариант B: LVM, гибко и по-взрослому
Когда ты точно знаешь, что размеры будут меняться.
GPT (UEFI)
- EFI System Partition 512M FAT32 /boot/efi
- /boot 1G ext4
- LVM PV остальное
LVM (VG=vg0)
- lv_root 30–60G ext4/xfs /
- lv_var 40–150G ext4/xfs /var
- lv_home или lv_srv остальное /home или /srv
- lv_swap 2–8G swap
Если сервер под веб и базы — /var лучше выделять отдельно и давать ему воздух. Иначе одна “случайная” ротация логов/кэша превращается в стоп-кран.
Установка Debian 12: что нажимать и что не перепутать
Берём официальный ISO Debian 12 и ставим “Server / SSH”. В процессе инсталлятор спросит про зеркало репозитория, имя хоста, пользователя, разметку и набор пакетов.
В выборе пакетов для сервера обычно достаточно: SSH server и standard system utilities. Графику на сервер не тащим, если на то нет прямой причины.
В момент разметки выбирай один из вариантов выше. Если сомневаешься, бери вариант A: он проще, а проблем от него меньше.
Первый вход: обновления и базовая гигиена
После первого загрузочного входа закрываем известные уязвимости обновлением.
sudo apt update
sudo apt -y full-upgrade
Проверка: симуляция апгрейда и версия ядра.
apt -s full-upgrade | sed -n '1,40p'
uname -a
Нормальный пользователь и запрет root по SSH
Даже если ты создал пользователя в инсталляторе, проверь, что у него есть sudo и что root по SSH не принимается.
groups
sudo -v
sudo whoami
Правим SSH-конфиг так, чтобы вход был только по ключам.
sudoedit /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
X11Forwarding no
Проверка синтаксиса и рестарт.
sudo sshd -t
sudo systemctl restart ssh
sudo systemctl status ssh --no-pager -l
Devil’s Advocate: пароли отключай только после того, как проверил вход по ключу со своей машины во второй сессии.
Firewall: быстро включить политику и не отрезать себе доступ
Для “нормального” сервера достаточно UFW: читаемо и воспроизводимо.
sudo apt -y install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
Проверка: правила активны.
sudo ufw status verbose
sudo ss -tulpn | sed -n '1,30p'
Fail2ban: тише в логах, меньше перебора
sudo apt -y install fail2ban
sudo systemctl enable --now fail2ban
Проверка: jail и статусы.
sudo fail2ban-client status
sudo systemctl status fail2ban --no-pager -l
Время и journald: чтобы потом не было “а когда это было?”
timedatectl
sudo timedatectl set-timezone Asia/Jerusalem
timedatectl
Ограничиваем рост журналов.
sudo journalctl --disk-usage
sudoedit /etc/systemd/journald.conf
SystemMaxUse=500M
RuntimeMaxUse=200M
sudo systemctl restart systemd-journald
sudo journalctl --disk-usage
Финальная проверка: что реально “торчит” наружу
Смотрим слушающие порты и включённые сервисы. Если ты не можешь объяснить сервис — он лишний.
sudo ss -tulpn
systemctl list-unit-files --state=enabled | sed -n '1,120p'
Типовые ошибки
Самая частая — отключить PasswordAuthentication до проверки ключей. Вторая — включить firewall до разрешения SSH. Третья — оставить /var внутри / и потом удивляться, почему кончился диск после “обычного” логирования.
Итог
У тебя получился “солидный” Debian 12 Server: грамотная разметка, нормальный вход, предсказуемые обновления, базовая защита и контроль логов. Дальше можно ставить конкретные сервисы. И это будет не лотерея, а инженерная последовательность.
Важно
Текст не заменяет твою ответственность за выбор схемы хранения и доступов. Если сервер удалённый — держи консоль провайдера/ILO/панель, прежде чем резать доступы. Без резервного входа любая “безопасность” превращается в блокировку самого себя.