Начальная настройка сервера на Debian 11
Для начала берем любой VPS. Я взял на reg.ru самый дешевый - Тариф «Base-1»:
- 15 ГБ SSD
- 1 ГБ RAM
- 1 vCPU
- Debian 11 Bullseye
- 370 р/мес (или 0,55 ₽/час)
При первом подключении к новому серверу желательно выполнить несколько шагов по базовой настройке, которые повысят безопасность и удобство использования.
Подключаемся по ssh
под root
:
ssh root@95.163.237.142
Обновление Debian и создание юзера
Приступаем к настройке. Для начала обновим систему:
apt update && apt upgrade -y
Установим sudo
, если его нет:
apt install sudo
Теперь нам нужно создать нового юзера, под которым мы будем подключаться к серверу и выполнять все необходимые в дальнейшем операции. Почему нельзя использовать юзера
root
? Можно, но практика показывает, что из-за наличия неограниченных админских прав под рутом гораздо проще натворить непоправимых дел, даже по чистой случайности.
Создаем отдельного юзера www
(можно использовать любое название):
adduser www
Следуем инструкциям на экране (все поля можно оставить пустыми, главное сохранить пароль).
Добавляем пользователя в группу sudo
. Это позволит нашему пользователю www
выполнять команды с административными привилегиями, написав перед командой слово sudo
:
usermod -aG sudo www
Первоначальная настройка UFW
Чтобы разрешить только определенные подключения к определенным службам в Debian
можно использовать брандмауэры, например UFW
. Он позволяет сделать базовые настройки, для более сложных настроек лучше использовать iptables
.
- удобный интерфейс для управления политиками безопасности межсетевого экрана.
- является простым и популярным инструментом для настройки и управления брандмауэром в дистрибутивах
Ubuntu
иDebian
.
Установим брандмауэр UFW (пока мы все еще залогинены под рутом, поэтому без sudo
):
apt install ufw -y
Профили брандмауэра позволяют UFW управлять именованными наборами правил для установленных приложений. Профили для некоторых распространенных программ присутствуют в UFW по умолчанию. Их список пожно посмотреть командой ufw app list
. Статус самого UFW можно проверить коммандой ufw status
.
Например, для OpenSSH уже есть профиль, который мы и используем (на данном этапе настройки другие нас не интересуют):
ufw allow OpenSSH
Запускаем сервис:
ufw enable
Вводим y
и Enter
, чтобы подтвердить активацию брандмауэра.
В итоге, ответ на запрос статуса ufw status
должен быть примерно таким:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Готово. UFW блокирует все соединения, кроме SSH. В дальнейшем мы будем добавлять новые правила1 по мере необходимости.2
Установка вспомогательных программ
Для дальнейшей работы нам нужно установить несколько полезных инструментов и зависимостей.
sudo apt install -y zsh neovim ripgrep tmux tree htop git curl wget zip unzip \
build-essential zsh-syntax-highlighting ca-certificates gnupg lsb-release
zsh
- одна из современных командных оболочек UNIX (замена bash);neovim
- мощный текстовый редактор;tmux
- терминальный мультиплексор;tree
- просмотр дерева директорий в командной строке;htop
- программа, предназначенная для вывода на терминал списка запущенных процессов и информации о них;git
- система контроля версий (Уже в составе Debian);curl
- кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL. (Уже в составе Debian);wget
- свободная неинтерактивная консольная программа для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также поддерживает работу через HTTP прокси-сервер. (Уже в составе Debian);zip
- это утилита для сжатия и упаковки файлов;unzip
- распаковывает zip-архивы;build-essential
- метапакет (не является программой сам по себе). Устанавливает нужные нам зависимости:g++
,gcc
,libc-dev
,make
;ca-certificates
- pEM-файлы CA сертификатов позволяют приложениям на основе SSL проверять подлинность SSL-соединений. Необходима для установки Docker;gnupg
- свободная программа для шифрования информации и создания электронных цифровых подписей. Необходима для установки Docker;lsb-release
- позволяет использовать одноименную утилиту для получения информации об используемом дистрибутиве Linux. Необходима для установки Docker.
Установка OhMyZsh
+ Powerlevel10k
Этот шаг не обязателен. Просто добавляет удобства и продуктивности дальнейшей работе.
Для начала убедимся, что zsh
установлен:
zsh --version
Если все в порядке, то в терминале будет показана установленная версия, например:
zsh 5.8 (x86_64-debian-linux-gnu)
Теперь установим его оболочкой по умолчанию:
chsh -s $(which zsh)
И переподключимся к серверу. После реконнекта на экране появится сообщение с предложением сконфигурировать zsh
.
This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~). This function can help you with a few settings that should
make your use of the shell easier.
You can:
(q) Quit and do nothing. The function will be run again next time.
(0) Exit, creating the file ~/.zshrc containing just a comment.
That will prevent this function being run again.
(1) Continue to the main menu.
(2) Populate your ~/.zshrc with the configuration recommended
by the system administrator and exit (you will need to edit
the file by hand, if so desired).
--- Type one of the keys in parentheses ---
Выбираем вариант 0
(создать файл заглушку) и жмем Enter
. На следующем шаге этот файл настроек за нас создаст великолепный Oh My Zsh
!
Установка OhMyZsh
Oh My Zsh
- восхитительный, управляемый сообществом фреймворк с открытым исходным кодом для управления вашей конфигурациейZsh
. Он поставляется в комплекте с тысячами полезных функций, помощников, плагинов, тем и нескольких вещей, которые заставят вас вскрикнуть… “Oh My ZSH!”3
Установить его можно двумя способами: через wget
, или через curl
. Выбирайте любой, так как мы имеем в своем арсенале обе утилиты.
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
или
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
При успешной установке вы увидите красивую надпись о том, что фрэймворк установлен.
Установка темы Powerlevel10k
Powerlevel10k
- это тема для Zsh
. Она популярная, кастомизируемая, быстрая! и имеет много плюшек.
Для установки достаточно клонировать репозиторий в определенную папку:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k
На этом же шаге можно установить два плагина:
zsh-syntax-highlighting
- удобная подсветка комманд оболочки в терминале;zsh-autosuggestions
- предлагает команды при вводе на основе истории.
Выполним поочередно две команды (клонирование репозиториев):
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
Теперь нужно отредактировать файл настроек zsh
, заменив строку с используемой темой. Открываем файл ~/.zshrc
в nvim
:
nvim ~/.zshrc
Закомментируем дефолтную тему и добавим установленную:
# ZSH_THEME="robbyrussell"
ZSH_THEME="powerlevel10k/powerlevel10k"
Добавим установленные ранее плагины:
# строка 88-89
plugins=(git zsh-syntax-highlighting zsh-autosuggestions)
h
j
k
l
или←
↓
↑
→
- навигацияi
- режим редактированияesc
- выход из режима редактирования:wq
- выйти с сохранением изменений
Для того, чтобы изменения вступили в силу и тема с плагинами активировались нужно перезагрузить файл настроек следующей коммандой:
source ~/.zshrc
Сразу после этого запустится настройка темы в режиме вопрос-ответ, где нужно просто нажимать нужный варианты ответа. Настройку всегда можно запустить заново командой p10k configure
, поэтому не бойтесь ошибиться. По окончании настройки внешний вид терминала изменится.
Установка Docker и Docker Compose на Debian 11
sudo apt remove docker docker-engine docker.io containerd runc
Установка репозитория
Все нужные зависимости у нас уже установлены, поэтому перейдем к следующему шагу, описанному в официальной документации Docker4:
Добавим официальный GPG key
Docker’а:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Следующей коммандой установим репозиторий:
echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Установка Docker
Обновим индекс пакетов:
sudo apt update
И, наконец, установим Docker Engine
, containerd
, и Docker Compose
:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Проверим статус сервиса:
sudo systemctl status docker
В ответ должны получить нечто похожее:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-12-09 23:45:01 MSK; 31s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 183873 (dockerd)
Tasks: 7
Memory: 33.8M
CPU: 357ms
CGroup: /system.slice/docker.service
└─183873 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Добавление юзера в группу docker
Добавим нашего юзера в группу docker
, чтоб он мог им управлять:
sudo usermod -aG docker ${USER}
Проверим, каким группам принадлежит юзер www
:
groups ${USER}
Вывод в терминале должен быть таким: www : www sudo docker
. Если так - все получилось успешно. Чтобы ваше членство в группе было активировано - переподключимся к серверу.
Автозапуск docker.service
Последнее, что нужно сделать - настроить автозапуск Docker при загрузке системы. Сделать это можно при помощи systemd
:
systemd
— подсистема инициализации и управления службами в Linux.
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
Использованы материалы статьи Initial Server Setup with Debian 11