Мне довольно часто приходится работать с только что созданными 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 sshd4. Проверка доступа
Откройте новое окно терминала (важно не закрывать текущее соединение) и попробуйте подключиться к серверу:
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-хранилище.
Это может быть:
Облачный сервис, например TimeWeb.
Или собственный MinIO сервер (MinIO). (Статья про разворачивание MinIO)
Также для бэкапа конкретного сервиса, например 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— способ подключения:path— напримерhttps://s3.example.com/my-bucket.virtual-host— напримерhttps://my-bucket.s3.example.com.
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>&10 2 * * *— время запуска (ежедневно в 2:00)./path/to/reback_linux backup— путь до программы и аргументbackup./path/to/logs/backup.log— файл для записи логов работы.
Теперь ReBack будет автоматически создавать резервные копии по расписанию, а устаревшие файлы будут удаляться согласно настройкам.
Заключение
Настройка VPS — это ключевой этап, который напрямую влияет на безопасность, стабильность и производительность ваших проектов. Даже небольшой упуск в конфигурации может привести к проблемам, поэтому важно уделить внимание базовым шагам: выбору операционной системы, настройке SSH-доступа, фаервола и установке необходимых инструментов.
Следуя описанным в статье шагам, вы сможете:
Подготовить сервер под свои задачи.
Минимизировать потенциальные угрозы безопасности.
Создать удобную и функциональную среду для разработки и развёртывания приложений.
Автоматизировать рутинные процессы, такие как бэкапы и управление историей команд.
Не забывайте о регулярном обновлении системы и установленных компонентов, а также о документировании изменений. Даже простая привычка записывать свои действия поможет в будущем быстро восстанавливать систему или переносить настройки на новые серверы.
Эта статья может служить как пошаговым руководством для новичков, так и шпаргалкой для опытных пользователей, которым важно быстро настроить сервер без лишних ошибок.
Если у вас есть идеи, дополнения или советы, которые могли бы сделать процесс настройки VPS ещё удобнее и безопаснее — делитесь в комментариях! Ваш опыт может быть полезен другим.
Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и практическими примерами из реальных проектов.
