- Регистрация
- 23 Август 2023
- Сообщения
- 3 641
- Лучшие ответы
- 0
- Реакции
- 0
- Баллы
- 243
Offline
Мне довольно часто приходится работать с только что созданными 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.
В терминале выполните команду:
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;
Символы пароля не отображаются в терминале — ни звёздочками, ни точками. Это нормальное поведение и сделано из соображений безопасности.
Если всё сделано правильно, вы увидите приглашение командной строки сервера.
С этого момента вы работаете не на своём компьютере, а напрямую на 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 запросит подтверждение отпечатка ключа сервера. Это стандартная мера безопасности.
Просто нажмите
, чтобы сохранить ключ и продолжить подключение.После этого вы сможете полноценно работать с сервером через 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-ключ у вас уже есть (обычно он лежит в ~/.ssh), этот шаг можно пропустить.
Шаг 1. Создайте ключ на локальной машине
Откройте терминал на своём компьютере и выполните команду:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Пояснения к параметрам:
-t rsa — тип ключа (RSA — распространённый и надёжный вариант).
-b 4096 — длина ключа в битах (хороший баланс между безопасностью и совместимостью).
-C — комментарий для удобной идентификации ключа (обычно указывают email или имя устройства).
В процессе генерации система спросит, куда сохранить ключ.
Если нажать Enter, он будет сохранён в стандартное место:
~/.ssh/id_rsa
Для большинства случаев этого более чем достаточно. Использовать другой путь имеет смысл только при работе с несколькими ключами.
Шаг 3. Установите пароль на ключ (по желанию)
Далее система предложит задать пароль для приватного ключа.
Рекомендуется установить пароль — это защитит ключ, если файл попадёт в чужие руки.
Если вы понимаете риски и хотите упростить использование, можно оставить пароль пустым и просто нажать Enter.
После этого будут созданы два файла:
id_rsa — приватный ключ (никому не передавать).
id_rsa.pub — публичный ключ (его мы будем добавлять на сервер).
Иногда возникает необходимость использовать один и тот же SSH-ключ на нескольких компьютерах, например, на рабочем и домашнем.
Это допустимо, но требует аккуратности.
Шаг 1. Скопируйте приватный ключ
Перенесите файл приватного ключа (id_rsa) на новое устройство без изменения содержимого.
Шаг 2. Разместите ключ в правильном месте
На новом устройстве поместите ключ в каталог:
~/.ssh
И обязательно установите корректные права доступа (если используете Linux):
chmod 600 ~/.ssh/id_rsa
Это важно: SSH просто откажется использовать ключ с небезопасными правами.
Шаг 3. Проверьте подключение
Попробуйте подключиться к серверу, явно указав путь к ключу:
ssh -i ~/.ssh/id_rsa user@server
Если всё настроено правильно, соединение будет установлено без запроса пароля от сервера.
Важно:
Никогда не передавайте приватный ключ через небезопасные каналы (почта, мессенджеры, облачные заметки). Для передачи используйте защищённые способы — scp, зашифрованные архивы или физические носители.
После того как SSH-ключ создан, необходимо добавить публичную часть ключа на сервер. Именно она сообщает серверу, каким пользователям и с каких устройств разрешён доступ.
Сделать это можно двумя способами:
Автоматически — быстрее и проще.
Вручную — полезно знать, как работает всё «под капотом».
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 работать.
Вставьте содержимое публичного ключа в файл 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-сервера.
для его редактирования требуются права администратора.
Найдите (или добавьте) следующие строки:
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-подключение к серверу.
sudo nano /etc/ssh/sshd_config
Это основной конфигурационный файл SSH-сервера.
Шаг 2. Измените порт
Найдите строку:
#Port 22
Уберите символ # (если он есть) и укажите новый порт, например:
Port 20022
Рекомендации по выбору порта:
Используйте значения выше 1024.
Избегайте популярных портов других сервисов.
Не используйте слишком очевидные варианты вроде 2222.
В редакторе nano:
Ctrl + S — сохранить файл.
Ctrl + X — выйти.
Чтобы изменения вступили в силу, выполните:
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:
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-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и практическими примерами из реальных проектов.