Мне довольно часто приходится работать с только что созданными VPS — будь то развёртывание нового проекта, подготовка тестового окружения или эксперименты с инфраструктурой. Практически каждый такой сервер после создания находится в «сыром» состоянии и требует базовой первичной настройки.

Как правило, эта настройка включает:

  • Усиление безопасности (пользователи, SSH, базовые ограничения).

  • Настройку фаервола.

  • Установку Docker и сопутствующих инструментов.

  • Установку базового набора утилит, без которых комфортная работа невозможна.

До публикации этой статьи все эти шаги у меня существовали в виде разрозненных заметок в Obsidian: что-то было аккуратно записано, что-то — просто держалось в голове и воспроизводилось «на автомате». Со временем стало понятно, что такой подход неудобен: легко что-то забыть, перепутать порядок действий или каждый раз тратить время на восстановление контекста.

В итоге я решил собрать основное в одну структурированную заметку.
Она призвана упростить процесс первичной настройки сервера — как для вас, так и для меня самого в будущем.

Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и практическими примерами из реальных проектов.


Выбор операционной системы

При создании VPS практически любой хостинг предлагает выбрать операционную систему. Набор доступных образов может отличаться, но чаще всего вы увидите что-то из этого списка:

  • Ubuntu.

  • Debian.

  • CentOS / AlmaLinux / Rocky Linux.

  • Windows (обычно требует больше ресурсов).

  • Arch Linux.

Выбор операционной системы напрямую зависит от ваших задач, опыта и предпочтений.
Если говорить о самом популярном варианте, то это, безусловно, Ubuntu — её часто рекомендуют новичкам из-за большого количества гайдов, статей и готовых решений.

Однако лично я чаще выбираю Debian, и вот почему:

  • Он более минималистичен — в системе изначально меньше лишнего.

  • Отличается высокой стабильностью и предсказуемостью.

  • В моём опыте потребляет меньше ресурсов, чем Ubuntu, что особенно важно для недорогих VPS.

  • За годы работы у меня несколько раз возникали неприятные проблемы именно с серверами на Ubuntu, чего почти не случалось с Debian.

Это не означает, что Ubuntu — плохой выбор. Если вам с ней комфортно, вы хорошо её знаете или просто хотите следовать большинству гайдов — это абсолютно нормально.

Важно другое:
В рамках этой статьи все примеры будут приведены для систем семейства Debian — то есть Debian и Ubuntu. Их настройка, пакетный менеджер и общая логика администрирования во многом совпадают, поэтому вы без проблем сможете применять инструкции на обеих системах.


Подключение к серверу

После приобретения VPS необходимо дождаться завершения его инициализации. В этот момент хостинг-провайдер выделяет ресурсы виртуальной машине и разворачивает выбранный образ операционной системы.

Время активации может заметно отличаться в зависимости от провайдера:

  • Иногда сервер готов уже через 1–2 минуты.

  • В некоторых случаях процесс может занять несколько часов.

  • Редко, но бывает, что активация растягивается до суток.

После завершения инициализации хостинг предоставит вам данные для подключения:

  • IP-адрес сервера.

  • Логин пользователя (чаще всего это root).

  • Пароль.

Эти данные лучше сразу сохранить в надёжном месте — они понадобятся вам не один раз.

Подключение через SSH

SSH — это основной и самый распространённый способ удалённого подключения к серверу.

Шаг 1. Откройте терминал

  • На Linux и macOS используйте стандартный терминал.

  • На Windows подойдёт PowerShell или любая программа с поддержкой SSH, например PuTTY.

Шаг 2. Подключитесь к серверу

В терминале выполните команду:

ssh login@ip-адрес

Где:

  • login — имя пользователя (чаще всего root).

  • ip-адрес — IP вашего сервера.

Пример команды:

ssh root@127.0.0.1

Шаг 3. Подтвердите отпечаток ключа сервера

При первом подключении SSH предупредит, что ранее вы не подключались к этому серверу, и предложит сохранить его отпечаток ключа.

Этот механизм защищает от подключения к поддельному серверу в случае подмены или атаки «man-in-the-middle». Отпечаток будет сохранён в файле:

~/.ssh/known_hosts

В ответ на запрос введите yes и нажмите Enter.

Шаг 4. Введите пароль

После этого система запросит пароль пользователя.

Важно знать несколько моментов:

  • Пароль можно вставить из буфера обмена:

    • Ctrl + Shift + V — в большинстве терминалов Linux и Windows.

    • Cmd + V — на macOS;

  • Символы пароля не отображаются в терминале — ни звёздочками, ни точками. Это нормальное поведение и сделано из соображений безопасности.

Шаг 5. Убедитесь, что подключение прошло успешно

Если всё сделано правильно, вы увидите приглашение командной строки сервера.
С этого момента вы работаете не на своём компьютере, а напрямую на VPS, и можете переходить к его дальнейшей настройке.

Подключение через Tabby

Tabby — это современный кроссплатформенный терминал с графическим интерфейсом, который удобно использовать для работы с серверами по SSH. Он особенно хорошо подойдёт тем, кто не хочет каждый раз набирать команды вручную или предпочитает визуальные инструменты.

Шаг 1. Установите Tabby

Скачайте программу с официального сайта Tabby и установите её на свой компьютер. Tabby доступен для Windows, macOS и Linux.

Шаг 2. Запустите приложение

После установки просто откройте Tabby — при первом запуске вы увидите стартовый экран с предложением создать новое подключение.

Шаг 3. Создайте SSH-подключение

В интерфейсе программы:

  • Нажмите кнопку New Connection.

  • Выберите тип подключения SSH.

  • Укажите IP-адрес сервера.

  • Введите логин пользователя (чаще всего это root).

  • Укажите пароль, выданный хостинг-провайдером.

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

Шаг 4. Подключитесь к серверу

Нажмите кнопку Connect. Tabby автоматически попытается установить соединение с сервером.

Шаг 5. Подтвердите отпечаток ключа

Как и при обычном SSH-подключении, при первом соединении Tabby запросит подтверждение отпечатка ключа сервера. Это стандартная мера безопасности.

Просто нажмите Yes, чтобы сохранить ключ и продолжить подключение.

После этого вы сможете полноценно работать с сервером через Tabby, используя его дополнительные возможности:

  • вкладки и раздельные панели;

  • настраиваемые темы оформления;

  • встроенную работу с файлами по SFTP;

  • удобную интеграцию с SSH-ключами.


Установка дополнительных программ и библиотек

Образы операционных систем, предоставляемые хостингами, могут заметно отличаться. В одних уже предустановлены базовые утилиты (например, git), в других — система может быть максимально «чистой».

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

Для начала обновим список доступных пакетов и установим наиболее часто используемые утилиты:

apt update
apt install -y sudo curl nano git btop

Разберёмся, что именно мы установили:

  • sudo — позволяет выполнять команды с правами администратора (актуально, если вы будете работать не под root);

  • curl — инструмент для работы с URL, часто используется для скачивания файлов и выполнения установочных скриптов;

  • nano — простой и понятный текстовый редактор для работы с конфигурационными файлами прямо в терминале;

  • git — система контроля версий, без которой сложно представить работу с современными проектами;

  • btop — современный и наглядный монитор ресурсов, показывающий загрузку CPU, памяти, дисков и сети в реальном времени. Это более функциональная и визуально приятная альтернатива top и htop.

Этот набор — хороший базовый минимум, который пригодится практически на любом сервере, независимо от того, для каких задач он используется.


Вход на сервер по SSH-ключу

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

Поэтому в реальных проектах практически всегда делают так:

  • Вход по паролю отключают.

  • Доступ оставляют только по SSH-ключам.

Что такое SSH-ключ

SSH-ключ — это криптографическая пара из двух файлов:

  • Приватный ключ — хранится только у вас.

  • Публичный ключ — добавляется на сервер.

При подключении сервер проверяет, что у вас есть соответствующий приватный ключ, и пускает вас без ввода пароля. Такой подход:

  • Значительно безопаснее паролей.

  • Удобнее в повседневной работе.

  • Устойчив к брутфорсу.

1. Генерация SSH-ключа

Если SSH-ключ у вас уже есть (обычно он лежит в ~/.ssh), этот шаг можно пропустить.

Шаг 1. Создайте ключ на локальной машине

Откройте терминал на своём компьютере и выполните команду:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Пояснения к параметрам:

  • -t rsa — тип ключа (RSA — распространённый и надёжный вариант).

  • -b 4096 — длина ключа в битах (хороший баланс между безопасностью и совместимостью).

  • -C — комментарий для удобной идентификации ключа (обычно указывают email или имя устройства).

Шаг 2. Выберите путь сохранения ключа

В процессе генерации система спросит, куда сохранить ключ.
Если нажать Enter, он будет сохранён в стандартное место:

~/.ssh/id_rsa

Для большинства случаев этого более чем достаточно. Использовать другой путь имеет смысл только при работе с несколькими ключами.

Шаг 3. Установите пароль на ключ (по желанию)

Далее система предложит задать пароль для приватного ключа.

  • Рекомендуется установить пароль — это защитит ключ, если файл попадёт в чужие руки.

  • Если вы понимаете риски и хотите упростить использование, можно оставить пароль пустым и просто нажать Enter.

После этого будут созданы два файла:

  • id_rsaприватный ключ (никому не передавать).

  • id_rsa.pubпубличный ключ (его мы будем добавлять на сервер).

Перемещение SSH-ключей между устройствами

Иногда возникает необходимость использовать один и тот же SSH-ключ на нескольких компьютерах, например, на рабочем и домашнем.

Это допустимо, но требует аккуратности.

Шаг 1. Скопируйте приватный ключ

Перенесите файл приватного ключа (id_rsa) на новое устройство без изменения содержимого.

Шаг 2. Разместите ключ в правильном месте

На новом устройстве поместите ключ в каталог:

~/.ssh

И обязательн�� установите корректные права доступа (если используете Linux):

chmod 600 ~/.ssh/id_rsa

Это важно: SSH просто откажется использовать ключ с небезопасными правами.

Шаг 3. Проверьте подключение

Попробуйте подключиться к серверу, явно указав путь к ключу:

ssh -i ~/.ssh/id_rsa user@server

Если всё настроено правильно, соединение будет установлено без запроса пароля от сервера.

Важно:
Никогда не передавайте приватный ключ через небезопасные каналы (почта, мессенджеры, облачные заметки). Для передачи используйте защищённые способы — scp, зашифрованные архивы или физические носители.

2. Добавление SSH-ключа на VPS

После того как SSH-ключ создан, необходимо добавить публичную часть ключа на сервер. Именно она сообщает серверу, каким пользователям и с каких устройств разрешён доступ.

Сделать это можно двумя способами:

  • Автоматически — быстрее и проще.

  • Вручную — полезно знать, как работает всё «под капотом».

Способ 1. Использование ssh-copy-id (рекомендуется)

ssh-copy-id — это утилита, которая автоматически копирует ваш публичный ключ на сервер и настраивает всё необходимое.

На локальной машине выполните команду:

ssh-copy-id login@ip-адрес

Где:

  • login — пользователь на сервере (чаще всего root).

  • ip-адрес — IP вашего VPS.

После выполнения команды система попросит ввести пароль от сервера. Это нормально: пароль используется только один раз, чтобы добавить ключ.

В результате публичный ключ будет записан в файл:

~/.ssh/authorized_keys

на стороне сервера, и вы сможете подключаться по SSH без ввода пароля.

Ручное добавление ключа

Этот способ пригодится, если ssh-copy-id недоступна или вы хотите лучше понимать, что именно происходит.

Шаг 1. Подключитесь к серверу по паролю

ssh login@ip-адрес

Шаг 2. Создайте каталог для SSH-ключей

На сервере выполните команды:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

Что здесь важно:

  • Каталог ~/.ssh используется SSH для хранения ключей.

  • Права 700 означают, что доступ к папке есть только у владельца — это обязательное требование безопасности, позволяющее SSH работать.

Шаг 3. Добавьте публичный ключ в authorized_keys

Вставьте содержимое публичного ключа в файл authorized_keys:

echo "<ваш публичный ключ>" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Здесь <ваш публичный ключ> — это содержимое файла id_rsa.pub с вашей локальной машины.

Права 600 означают, что файл доступен только владельцу, что также критично для работы SSH.

Альтернативный вариант (одной командой)

Добавить ключ можно и без ручного редактирования файлов, выполнив команду на локальной машине:

cat ~/.ssh/id_rsa.pub | ssh login@ip-адрес "cat >> ~/.ssh/authorized_keys"

Эта команда передаст публичный ключ на сервер и добавит его в нужный файл автоматически.

Шаг 4. Проверьте, что ключ добавлен

На сервере выполните:

cat ~/.ssh/authorized_keys

Вы должны увид��ть строку с вашим публичным ключом.

3. Отключение входа по паролю в SSH

После того как вход по ключу настроен и проверен, можно переходить к отключению паролей. Делать это раньше не рекомендуется — иначе можно просто потерять доступ к серверу.

Шаг 1. Откройте конфигурацию SSH-сервера

sudo nano /etc/ssh/sshd_config
  • файл /etc/ssh/sshd_config отвечает за поведение SSH-сервера.

  • для его редактирования требуются права администратора.

Шаг 2. Измените параметры аутентификации

Найдите (или добавьте) следующие строки:

PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes

Что они означают:

  • PasswordAuthentication no — полностью отключает вход по паролю.

  • PermitRootLogin prohibit-password — запрещает вход под root по паролю, но разрешает вход по ключу.

  • PubkeyAuthentication yes — явно включает аутентификацию по SSH-ключам.

Если строки закомментированы (начинаются с #), уберите символ #, чтобы настройки применились.

Шаг 3. Сохраните файл и перезапустите SSH

В редакторе nano:

  • Ctrl + S — сохранить файл;

  • Ctrl + X — выйти.

Затем перезапустите SSH-сервис:

sudo systemctl restart sshd

4. Проверка доступа

Откройте новое окно терминала (важно не закрывать текущее соединение) и попробуйте подключиться к серверу:

ssh login@ip-адрес

Если всё настроено корректно:

  • Пароль запрошен не будет.

  • Вход произойдёт автоматически по SSH-ключу.

На этом этапе сервер уже защищён от брутфорса по паролям, и можно переходить к следующим шагам — созданию отдельного пользователя, настройке sudo и фаервола.


Закрываем порты сервера

Одна из базовых и при этом критически важных мер защиты сервера — настройка фаервола. По умолчанию сервер может принимать соединения практически на любые порты, и если не ограничить этот доступ, вы фактически оставляете лишние «двери» открытыми.

Идея простая:

  • Разрешаем только то, что действительно нужно.

  • Всё остальное — закрываем.

Для этой задачи мы будем использовать UFW (Uncomplicated Firewall) — простой и удобный интерфейс для управления фаерволом, который отлично подходит для начальной и средней настройки сервера.

Установка UFW

Для начала установим ufw:

sudo apt update
sudo apt install ufw -y

Здесь:

  • apt update обновляет список доступных пакетов.

  • apt install ufw -y устанавливает фаервол без дополнительных вопросов.

Базовая настройка правил

Теперь зададим базовую политику работы фаервола.

Шаг 1. Запрещаем все входящие соединения

sudo ufw default deny incoming && sudo ufw default allow outgoing

Что это означает:

  • Все входящие подключения запрещены по умолчанию.

  • Сервер по-прежнему может инициировать исходящие соединения (обновления, обращения к API и т.д.).

Это основа безопасной конфигурации.

Шаг 2. Разрешаем доступ по SSH

Очень важно: этот шаг нужно выполнить до включения фаервола, иначе вы рискуете потерять доступ к серверу.

Разрешаем стандартный SSH-порт:

sudo ufw allow 22

Если у вас есть статический IP-адрес, защиту можно усилить и разрешить SSH-доступ только с него:

sudo ufw allow from <IP-адрес> to any port 22

В этом случае заменить <IP-адрес> нужно на IP, с которого вы подключаетесь к серверу.
Такой подход сильно снижает вероятность атак на SSH.

Шаг 3. Открываем нужные порты для сервисов

Теперь разрешаем доступ только к тем портам, которые действительно используются:

sudo ufw allow 80    # HTTP
sudo ufw allow 443   # HTTPS
sudo ufw allow 8000  # порт приложения (например, Django)

Если вы не используете какой-то из этих портов — не открывайте его.
Фаервол должен отражать реальную конфигурацию вашего сервера, а не «на всякий случай».

Включение фаервола

После того как все необходимые правила добавлены, активируем ufw.

sudo ufw enable

Если фаервол был включён ранее и вы вносили изменения, иногда имеет смысл временно его отключить и включить снова:

sudo ufw disable && sudo ufw enable

Проверка состояния фаервола

Чтобы убедиться, что правила применились корректно, выполните:

sudo ufw status

Вы увидите список разрешённых портов и общее состояние фаервола.
Если SSH (порт 22) присутствует в списке — доступ к серверу сохранён.


Смена порта SSH

По умолчанию SSH-сервер работает на 22-м порту. Это общеизвестно, поэтому большинство автоматических ботов и сканеров начинают атаки именно с него.

Смена порта не является полноценной мерой безопасности, но она:

  • Заметно снижает количество шумных попыток входа.

  • Уменьшает нагрузку на сервер.

  • Упрощает анализ логов.

Важно понимать: смена порта — это дополнение к SSH-ключам и фаерволу, а не замена им.

Порядок действий

Важно:
Перед началом убедитесь, что:

  • Вход по SSH-ключу уже работает.

  • Фаервол настроен корректно.

  • У вас есть активное SSH-подключение к серверу.

Шаг 1. Откройте конфигурацию SSH

sudo nano /etc/ssh/sshd_config

Это основной конфигурационный файл SSH-сервера.

Шаг 2. Измените порт

Найдите строку:

#Port 22

Уберите символ # (если он есть) и укажите новый порт, например:

Port 20022

Рекомендации по выбору порта:

  • Используйте значения выше 1024.

  • Избегайте популярных портов других сервисов.

  • Не используйте слишком очевидные варианты вроде 2222.

Шаг 3. Сохраните изменения

В редакторе nano:

  • Ctrl + S — сохранить файл.

  • Ctrl + X — выйти.

Шаг 4. Перезапустите SSH-сервис

Чтобы изменения вступили в силу, выполните:

sudo systemctl restart sshd

Шаг 5. Разрешите новый порт в фаерволе

Если используется ufw, обязательно откройте новый порт:

sudo ufw allow 20022

⚠ Делать это нужно до закрытия 22-го порта, иначе можно потерять доступ.

Шаг 6. Закройте стандартный SSH-порт

После того как новый порт открыт, можно удалить правило для 22-го порта:

sudo ufw delete allow 22

Шаг 7. Проверьте подключение

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

ssh -p 20022 login@ip-адрес

Если соединение установилось — всё настроено корректно.

Шаг 8. Примените правила фаервола

После того, как сменили порт и проверили подключение нужно применить правила фаервола:

sudo ufw disable && sudo ufw enable

Установка Docker

Сегодня сложно представить современную серверную среду без Docker. Он позволяет изолировать приложения, упростить деплой и сделать окружение максимально воспроизводимым — от локальной разработки до продакшена.

Docker предоставляет официальную инструкцию по установке, но для первичной настройки сервера есть более простой и быстрый способ — использование официального установочного скрипта.

Быстрая установка Docker через официальный скрипт

Docker поддерживает специальный скрипт, который:

  • Автоматически определяет дистрибутив.

  • Добавляет официальный репозиторий Docker.

  • Устанавливает Docker Engine и необходимые зависимости.

Для установки выполните одну команду:

curl -fsSL https://get.docker.com | sh

Важно понимать, что здесь происходит:

  • curl скачивает установочный скрипт.

  • символ | (pipe) сразу передаёт его на выполнение.

  • скрипт запускается сразу, без сохранения в файл.

Если вы работаете не под root, команда может запросить пароль или завершиться с ошибкой. В этом случае выполните:

curl -fsSL https://get.docker.com | sudo sh

Проверка установки

После завершения установки убедитесь, что Docker установлен корректно:

docker --version

В ответ вы должны увидеть текущую версию Docker Engine.

Также можно проверить состояние сервиса:

sudo systemctl status docker

Если сервис запущен — установка прошла успешно.

Добавление пользователя в группу docker

По умолчанию Docker требует прав администратора, поэтому все команды приходится запускать с sudo. Для повседневной работы это неудобно, а команды быстро превращаются в нечитаемые.

Решается это добавлением пользователя в группу docker.

Выполните команду:

sudo usermod -aG docker $USER

Здесь:

  • usermod — утилита для изменения параметров пользователя.

  • -aG docker — добавляет пользователя в группу docker, не удаляя его из других групп.

  • $USER — текущий пользователь.

После этого необходимо перелогиниться:

  • выйдите из текущей SSH-сессии и подключитесь заново.

  • либо выполните команду:

newgrp docker

Чтобы убедиться, что всё работает корректно, выполните команду без sudo:

docker ps

Если команда отработала без ошибок, значит Docker настроен правильно и готов к использованию без прав администратора.


Оболочка терминала ZSH

Zsh — это современная командная оболочка, основанная на Bash, но с рядом улучшений. Она предлагает:

  • Удобное автодополнение команд и аргументов.

  • Расширенные возможности работы с историей команд.

  • Поддержку плагинов и тем оформления.

  • Гибкую настройку внешнего вида и поведения терминала.

Для удобной работы с Zsh часто используют фреймворк Oh My Zsh. Он сразу включает набор полезных плагинов, тем и базовых настроек.

В сочетании с темой PowerLevel10k ваша командная строка станет не только красивой, но и информативной: индикаторы статуса Git, текущая директория, время выполнения команд и многое другое.

Подробная инструкция доступна на GitHub.

Установка и настройка Zsh

Шаг 1. Установите Zsh

sudo apt install zsh -y

Шаг 2. Сделайте Zsh оболочкой по умолчанию

sudo chsh -s /bin/zsh

Шаг 3. Установите Oh My Zsh

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Во время установки система предложит сделать Zsh стандартной оболочкой — выберите Y и нажмите Enter.

Шаг 4. Установите тему PowerLevel10k

git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k

Шаг 5. Настройте тему в конфигурации

Откройте файл конфигурации Zsh:

nano ~/.zshrc

Найдите строку:

ZSH_THEME="robbyrussell"

и замените её на:

ZSH_THEME="powerlevel10k/powerlevel10k"

Сохраните изменения (Ctrl + S) и выйдите из редактора (Ctrl + X).

Шаг 6. Примените настройки

source ~/.zshrc

При первом запуске PowerLevel10k автоматически запустит мастер настройки.
Вы сможете выбрать:

  • Стиль отображения командной строки.

  • Информацию о Git.

  • Цветовую схему и иконки.

  • Дополнительные визуальные индикаторы.

Изменение настроек после установки

Если вы захотите что-то изменить в будущем или что-то пошло не так в мастере настройки, достаточно выполнить команду:

p10k configure

Она запустит мастер заново и позволит корректно настроить внешний вид терминала.


Atuin — удобная история команд

Atuin — это современный инструмент для работы с историей команд в терминале. Он делает её по-настоящему удобной и наглядной, а также добавляет функции, которых нет в стандартной истории Bash или Zsh:

  • Визуальное отображение предыдущих команд.

  • Быстрый поиск по выполненным командам.

  • Синхронизация истории между устройствами.

  • Аналитика и статистика по использованию команд.

Благодаря Atuin вы легко сможете вспомнить сложные команды, проверить, что и когда выполнялось, и даже перенести историю на другой компьютер.

Официальный репозиторий: Atuin на GitHub

Установка Atuin

Установка Atuin проста и занимает буквально одну команду:

curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh

Команда скачивает и сразу запускает установщик.

Импорт истории команд

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

atuin import auto
  • Опция auto автоматически определит вашу оболочку.

  • Если нужно, можно указать конкретную оболочку, например bash или zsh:

atuin import bash

или

atuin import zsh

Использование

После установки и импорта истории Atuin будет работать автоматически:

  • Клавиша — просмотр предыдущих команд с возможностью поиска.

  • При вводе текста Atuin покажет совпадения из истории.

  • Команды можно фильтровать, сортировать и анализировать через встроенные функции.

Если вы не видите историю, перезапустите оболочку:

  • Для Bash:

source ~/.bashrc
  • Для Zsh:

source ~/.zshrc

Создание бэкапов с помощью ReBack

После настройки сервера и развёртывания проектов часто возникает вопрос: как организовать резервное копирование данных?

  • Где хранить бэкапы?

  • Как автоматизировать процесс?

  • Как контролировать срок хранения файлов?

Для этих задач я разработал программу ReBack. Она позволяет:

  • Создавать бэкапы локально на сервере.

  • Отправлять их в S3-хранилище.

  • Автоматически удалять устаревшие файлы по заданному сроку хранения.

Всё, что требуется, — скачать бинарный файл, настроить конфигурацию и добавить задачу в Cron для автоматического выполнения.

Подробное описание доступно в репозитории ReBack. Буду рад вашим отзывам и предложениям по улучшению!

Важно: Для работы программы необходимо иметь S3-хранилище.
Это может быть:

Также для бэкапа конкретного сервиса, например PostgreSQL из Docker, сам сервис должен быть установлен и запущен.

Установка ReBack

Скачиваем последнюю версию (на данный момент 0.3.1):

wget https://github.com/proDreams/reback/releases/latest/download/reback_linux

Даём права на выполнение:

chmod +x reback_linux

Создаём файл конфигурации:

touch settings.json

Открываем файл для редактирования:

nano settings.json

Настройка конфигурации

Пример базового шаблона settings.json:

{
  "s3_endpoint": "https://s3.example.com",
  "s3_region": "us-east-1",
  "s3_bucket": "my-bucket",
  "s3_access": "access-key",
  "s3_secret": "secret-key",
  "s3_path_style": "path",
  "backup_dir": "/tmp/backups",
  "elements": []
}

Описание ключевых параметров:

  • s3_endpoint — адрес S3-хранилища (MinIO или облачный сервис).

  • s3_region — регион S3.

  • s3_bucket — название вашего бакета.

  • s3_access и s3_secret — ключи доступа к S3.

  • s3_path_style — способ подключения:

  • backup_dir — директория для локального хранения бэкапов.

  • elements — массив объектов, которые будут бэкапиться.

После настройки сохраняем изменения (Ctrl + S) и выходим (Ctrl + X).

Пример: бэкап PostgreSQL из Docker

Если на сервере есть PostgreSQL в Docker-контейнере, добавляем объект в массив elements:

{
  "element_title": "my_pg_docker_db",
  "s3_folder": "postgres_docker_backups",
  "backup_retention_days": 30,
  "s3_backup_retention_days": 90,
  "params": {
    "type": "postgresql_docker",
    "docker_container": "postgres_container",
    "db_name": "my_database",
    "db_user": "user",
    "db_password": "password"
  }
}

Описание параметров элемента:

  • element_title — уникальное название объекта.

  • s3_folder — папка в S3 для хранения бэкапов.

  • backup_retention_days — срок хранения локальных бэкапов (в днях).

  • s3_backup_retention_days — срок хранения бэкапов в S3 (в днях).

  • params — настройки объекта:

    • type — тип элемента (postgresql_docker, mongodb, folder и т.д.).

    • docker_container — имя контейнера (узнать можно через docker ps).

    • db_name, db_user, db_password — параметры базы данных.

Сохраняем изменения (Ctrl + S) и выходим (Ctrl + X).

Запуск ReBack вручную

Для разового бэкапа выполните:

./reback_linux backup
  • Аргумент backup обязателен.

  • Если конфигурация корректна, бэкапы создадутся локально и в S3.

Автоматизация с помощью Cron

Откройте редактор Cron:

crontab -e

Добавьте задачу для ежедневного бэкапа, например в 2 часа ночи:

0 2 * * * /path/to/reback_linux backup >> /path/to/logs/backup.log 2>&1
  • 0 2 * * * — время запуска (ежедневно в 2:00).

  • /path/to/reback_linux backup — путь до программы и аргумент backup.

  • /path/to/logs/backup.log — файл для записи логов работы.

Теперь ReBack будет автоматически создавать резервные копии по расписанию, а устаревшие файлы будут удаляться согласно настройкам.


Заключение

Настройка VPS — это ключевой этап, который напрямую влияет на безопасность, стабильность и производительность ваших проектов. Даже небольшой упуск в конфигурации может привести к проблемам, поэтому важно уделить внимание базовым шагам: выбору операционной системы, настройке SSH-доступа, фаервола и установке необходимых инструментов.

Следуя описанным в статье шагам, вы сможете:

  • Подготовить сервер под свои задачи.

  • Минимизировать потенциальные угрозы безопасности.

  • Создать удобную и функциональную среду для разработки и развёртывания приложений.

  • Автоматизировать рутинные процессы, такие как бэкапы и управление историей команд.

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

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

Если у вас есть идеи, дополнения или советы, которые могли бы сделать процесс настройки VPS ещё удобнее и безопаснее — делитесь в комментариях! Ваш опыт может быть полезен другим.

Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и практическими примерами из реальных проектов.