| Filename | Latest commit message | Latest commit date |
|---|---|---|
| README.md | ||
Первоначальная настройка Debian Server
Базовая настройка чистой установки Debian Server перед установкой сервисов.
Все команды выполняются от
root, если не указано иное.
1. Проверка версии Debian
cat /etc/debian_version
cat /etc/os-release
Проверить hostname:
hostnamectl
2. Настройка имени сервера
Задать hostname:
hostnamectl set-hostname server
Например:
hostnamectl set-hostname webserver
Проверить:
hostnamectl
hostname
Добавить имя сервера в /etc/hosts:
nano /etc/hosts
Пример:
127.0.0.1 localhost
127.0.1.1 webserver
Если у сервера статический IP:
192.168.1.10 webserver
3. Настройка часового пояса
Посмотреть доступные часовые пояса:
timedatectl list-timezones | grep Europe
Для Томска:
timedatectl set-timezone Asia/Tomsk
Проверить:
timedatectl
date
4. Настройка локали
Установить необходимые пакеты:
apt install -y locales
Запустить настройку:
dpkg-reconfigure locales
Рекомендуемый вариант:
en_US.UTF-8 UTF-8
Для русской локали можно дополнительно включить:
ru_RU.UTF-8 UTF-8
Проверить:
locale
5. Обновление системы
Обновить список пакетов:
apt update
Установить обновления:
apt full-upgrade -y
Удалить ненужные пакеты:
apt autoremove -y
Очистить кеш:
apt clean
После обновления проверить:
reboot
После перезагрузки снова подключиться по SSH.
6. Установка базовых утилит
Установить набор наиболее полезных инструментов:
apt install -y \
sudo \
curl \
wget \
git \
nano \
vim \
htop \
btop \
ncdu \
lsof \
net-tools \
iproute2 \
dnsutils \
traceroute \
tcpdump \
rsync \
unzip \
zip \
tar \
tree \
jq \
ca-certificates \
gnupg \
apt-transport-https \
software-properties-common \
bash-completion
Проверить:
htop
или:
btop
7. Создание отдельного пользователя
Не рекомендуется постоянно работать под root.
Создать пользователя:
adduser admin
Добавить его в группу sudo:
usermod -aG sudo admin
Проверить:
id admin
Должно присутствовать:
sudo
Проверить работу sudo:
su - admin
sudo whoami
Результат:
root
Вернуться в root:
exit
8. Настройка SSH
Основной конфигурационный файл:
/etc/ssh/sshd_config
Перед изменением сделать резервную копию:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Открыть конфигурацию:
nano /etc/ssh/sshd_config
Рекомендуемые параметры:
PermitRootLogin yes
PasswordAuthentication yes
PubkeyAuthentication yes
MaxAuthTries 3
X11Forwarding no
PasswordAuthentication yesможно оставить на этапе первоначальной настройки. После проверки входа по SSH-ключу его рекомендуется отключить.
Проверить конфигурацию:
sshd -t
Если ошибок нет:
systemctl restart ssh
Проверить:
systemctl status ssh
9. Настройка SSH-ключей
На клиентском компьютере создать ключ:
ssh-keygen -t ed25519
Скопировать ключ на сервер:
ssh-copy-id admin@SERVER_IP
Например:
ssh-copy-id admin@192.168.1.10
Проверить вход:
ssh admin@SERVER_IP
10. Отключение входа по паролю
Выполнять только после успешной проверки входа по SSH-ключу.
Открыть:
nano /etc/ssh/sshd_config
Установить:
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
Проверить:
sshd -t
Применить:
systemctl restart ssh
Не закрывать текущую SSH-сессию.
В отдельном окне проверить новый вход:
ssh admin@SERVER_IP
Только после успешного входа закрыть старую сессию.
11. Проверка сетевых интерфейсов
Посмотреть интерфейсы:
ip addr
Краткий вариант:
ip -br addr
Маршруты:
ip route
DNS:
resolvectl status
Проверить интернет:
ping -c 4 1.1.1.1
Проверить DNS:
ping -c 4 debian.org
Проверить DNS отдельно:
dig debian.org
12. Настройка DNS
Посмотреть текущую конфигурацию:
resolvectl status
Временное изменение DNS:
resolvectl dns eth0 1.1.1.1 8.8.8.8
Проверить:
resolvectl status
Для постоянной настройки DNS способ зависит от того, чем управляется сеть:
systemd-networkd, NetworkManager, ifupdown, Netplan и т. д.
13. Проверка дисков
Посмотреть диски:
lsblk
Использование файловой системы:
df -h
Использование inode:
df -i
Найти занимающие место каталоги:
du -xh /var | sort -h | tail -30
Удобный интерактивный вариант:
ncdu /
14. Проверка памяти
free -h
Информация о памяти:
cat /proc/meminfo
15. Проверка CPU
lscpu
Текущая загрузка:
uptime
16. Проверка запущенных сервисов
Список активных сервисов:
systemctl --type=service --state=running
Неудачно завершившиеся сервисы:
systemctl --failed
После установки сервера рекомендуется проверить:
systemctl --failed
Результат желательно:
0 loaded units listed.
17. Проверка открытых портов
Посмотреть TCP-порты:
ss -ltnp
TCP + UDP:
ss -lntup
Например:
ss -lntup
Позволяет определить, какие программы слушают сетевые порты.
18. Firewall
Для простой настройки можно использовать nftables.
Установить:
apt install -y nftables
Включить:
systemctl enable --now nftables
Проверить:
systemctl status nftables
Текущие правила:
nft list ruleset
19. Базовая конфигурация nftables
Создать резервную копию:
cp /etc/nftables.conf /etc/nftables.conf.bak
Открыть:
nano /etc/nftables.conf
Минимальный пример:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter;
policy drop;
# Loopback
iif lo accept
# Established connections
ct state established,related accept
# ICMP
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
# SSH
tcp dport 22 accept
}
chain forward {
type filter hook forward priority filter;
policy drop;
}
chain output {
type filter hook output priority filter;
policy accept;
}
}
Проверить конфигурацию:
nft -c -f /etc/nftables.conf
Если ошибок нет:
systemctl restart nftables
Проверить:
nft list ruleset
Перед включением firewall обязательно убедитесь, что SSH разрешён. Иначе можно потерять доступ к серверу.
20. Автоматическая синхронизация времени
Проверить:
timedatectl
Если используется systemd-timesyncd:
systemctl status systemd-timesyncd
Включить:
systemctl enable --now systemd-timesyncd
Проверить:
timedatectl timesync-status
21. Проверка системных логов
Основной журнал:
journalctl
Ошибки:
journalctl -p err -b
Ошибки предыдущей загрузки:
journalctl -p err -b -1
SSH:
journalctl -u ssh
Следить за логом в реальном времени:
journalctl -f
22. Настройка размера journal
Посмотреть размер:
journalctl --disk-usage
Например, ограничить журнал:
nano /etc/systemd/journald.conf
Указать:
SystemMaxUse=500M
SystemKeepFree=1G
MaxRetentionSec=30day
Перезапустить:
systemctl restart systemd-journald
Проверить:
journalctl --disk-usage
23. Проверка времени загрузки
systemd-analyze
Подробно:
systemd-analyze blame
Критический путь:
systemd-analyze critical-chain
24. Настройка swappiness
Посмотреть текущее значение:
sysctl vm.swappiness
Для серверов часто используют:
vm.swappiness=10
Создать конфигурацию:
nano /etc/sysctl.d/99-server.conf
Добавить:
vm.swappiness=10
Применить:
sysctl --system
Проверить:
sysctl vm.swappiness
Значение
10не является обязательным. Для конкретного сервера параметр следует выбирать с учётом объёма RAM и характера нагрузки.
25. Проверка температуры и оборудования
Установить:
apt install -y lm-sensors
Определить датчики:
sensors-detect
Посмотреть температуру:
sensors
26. Установка SMART
Установить:
apt install -y smartmontools
Посмотреть диски:
lsblk
Проверить SMART:
smartctl -a /dev/sda
Для NVMe:
smartctl -a /dev/nvme0
27. Полезные команды мониторинга
CPU / RAM
htop
или:
btop
Диск
df -h
Сеть
ip -br addr
ss -lntup
Процессы
ps aux --sort=-%cpu | head
По памяти:
ps aux --sort=-%mem | head
Нагрузка
uptime
28. Проверка установленных пакетов
Поиск пакета:
dpkg -l | grep PACKAGE
Информация:
apt show PACKAGE
Например:
apt show nginx
29. Проверка свободного места
df -h
Особое внимание:
/
/var
/home
/tmp
Если /var находится на отдельном разделе:
df -h /var
30. Очистка старых пакетов
Удалить ненужные зависимости:
apt autoremove -y
Очистить кеш:
apt clean
Проверить:
df -h
31. Рекомендуемая структура каталогов
Для дополнительных серверных приложений удобно использовать:
/opt/
Например:
/opt/scripts/
/opt/apps/
/opt/docker/
/opt/backups/
Создать:
mkdir -p /opt/{scripts,apps,backups}
32. Скрипты администратора
Рекомендуемый каталог:
/opt/scripts/
Создать:
mkdir -p /opt/scripts
chmod 755 /opt/scripts
Скрипты:
/opt/scripts/
├── backup.sh
├── healthcheck.sh
└── monitoring.sh
33. Настройка Git
Установить:
apt install -y git
Проверить:
git --version
Настроить имя:
git config --global user.name "Server Admin"
Настроить email:
git config --global user.email "admin@example.com"
Проверить:
git config --global --list
34. Настройка Bash
Создать пользовательский файл:
nano ~/.bashrc
Полезные настройки:
alias ll='ls -lah'
alias la='ls -A'
alias l='ls -CF'
alias ports='ss -lntup'
alias mem='free -h'
alias disk='df -h'
Применить:
source ~/.bashrc
35. Проверка SSH после всех изменений
С другого компьютера:
ssh admin@SERVER_IP
Проверить:
whoami
hostname
uptime
Проверить sudo:
sudo -i
36. Финальная проверка
Перед установкой прикладного ПО рекомендуется проверить:
Система
cat /etc/os-release
Hostname
hostnamectl
Время
timedatectl
Сеть
ip -br addr
ip route
DNS
resolvectl status
Диск
df -h
RAM
free -h
CPU
lscpu
Сервисы
systemctl --failed
Открытые порты
ss -lntup
Firewall
nft list ruleset
SSH
systemctl status ssh
37. Рекомендуемый порядок дальнейшей настройки
После выполнения базовой настройки можно переходить к установке конкретных сервисов:
Debian
│
├── Обновление системы
├── Hostname
├── Timezone
├── Locale
├── Пользователь + sudo
├── SSH + ключи
├── DNS
├── Firewall
├── NTP
├── SMART
├── Мониторинг
│
└── Прикладное ПО
├── Nginx
├── PHP
├── MariaDB
├── Docker
├── Mail
├── Zabbix
└── другие сервисы
38. Быстрая установка базового набора
Для нового сервера большинство базовых пакетов можно установить одной командой:
apt update && apt full-upgrade -y && \
apt install -y \
sudo \
curl \
wget \
git \
nano \
vim \
htop \
btop \
ncdu \
lsof \
net-tools \
iproute2 \
dnsutils \
traceroute \
tcpdump \
rsync \
unzip \
zip \
jq \
ca-certificates \
gnupg \
bash-completion \
nftables \
lm-sensors \
smartmontools
После установки:
systemctl enable --now nftables
Проверить систему:
systemctl --failed
Важно
Перед изменением сетевых настроек, SSH или firewall:
- Убедитесь, что есть доступ к консоли сервера.
- Не закрывайте текущую SSH-сессию.
- Проверяйте конфигурацию перед перезапуском сервисов.
- После изменения SSH проверяйте подключение из отдельной сессии.
- После настройки firewall проверяйте доступ к необходимым портам.
Проверка SSH:
sshd -t
Проверка nftables:
nft -c -f /etc/nftables.conf
Проверка systemd:
systemctl --failed
Проверка портов:
ss -lntup