Собственный сервер
Резервное копирование в папку на компьютере, которым вы управляете сами, по SSH. Подойдёт сервер на Linux, NAS, Raspberry Pi, VPS, а также Mac или компьютер с Windows, на котором включён SSH-сервер. Frost использует SSH-клиент, который уже есть на вашем компьютере, поэтому на сервер ничего устанавливать не нужно.
#Перед началом
- На сервере должны быть включены SSH и SFTP. На большинстве серверов с Linux есть и то и другое. На NAS ищите их в настройках терминала или файловых служб.
- Нужна учётная запись на сервере, которая может записывать в выбранную папку. Хорошо завести отдельную учётную запись только для копий.
- В Windows должен быть установлен клиент OpenSSH. Обычно он уже есть. Если нет, добавьте его в «Параметрах», в разделе «Система > Дополнительные компоненты».
#В мастере настройки
Выполните frost init и выберите Self-hosted.
| Вопрос мастера | Ответ |
|---|---|
| What is the server SSH address? | Пользователь и хост, например me@nas.local, или Host из вашей конфигурации SSH. Добавьте :2222, если порт другой |
| Which folder on the server? | По умолчанию frost, в вашей домашней папке на сервере. Полный путь вроде /srv/backups/frost тоже подойдёт |
Если последней папки в пути нет, мастер создаст её. Папка, в которой она лежит, должна уже существовать.
#SSH-ключ Frost
Frost использует собственный ключ SSH, который мастер создаёт при первой настройке. Личные ключи и SSH-агент ему не нужны. Frost никогда не запрашивает пароль, поэтому запланированные копии всегда создаются с тем же способом входа.
Сервер пока не знает ключ Frost, поэтому в первый раз мастер спрашивает, как его добавить:
- Add it for me (добавить за меня) передаёт терминал ssh. При первом подключении к серверу ssh показывает его отпечаток и спрашивает, доверяете ли вы ему. Затем он запрашивает ваш пароль на сервере, добавляет ключ Frost, и мастер продолжает работу. Пароль получает только ssh. Frost его не видит и не хранит.
- I'll add it myself (добавлю сам) показывает, где лежит файл открытого ключа Frost. Добавьте строку из этого файла в
~/.ssh/authorized_keysна сервере и нажмите[enter].
| Компьютер | Открытый ключ Frost |
|---|---|
| macOS и Linux | ~/.config/frost/ssh/frost_ed25519.pub |
| Windows | %AppData%\frost\ssh\frost_ed25519.pub |
Когда ключ добавляет мастер, строка начинается с restrict. Это отключает перенаправление соединений и выделение терминала, но Frost по-прежнему может читать и записывать файлы. Выполнение команд оболочки остаётся возможным, если сервер не ограничивает учётную запись протоколом SFTP.
#Добавить ключ вручную
В macOS или Linux эта команда добавляет ключ с restrict в начале и запрашивает ваш пароль на сервере:
(printf 'restrict '; cat ~/.config/frost/ssh/frost_ed25519.pub) | ssh me@nas.local 'umask 077; mkdir -p .ssh; cat >> .ssh/authorized_keys'
Некоторые NAS также позволяют вставить SSH-ключ в настройках вашей учётной записи.
Сервер с Windows хранит ключи в других местах, поэтому Add it for me на нём не работает. Добавьте строку в C:\Users\<you>\.ssh\authorized_keys для обычной учётной записи или в C:\ProgramData\ssh\administrators_authorized_keys для администратора.
#Порты и конфигурация SSH
Frost читает настройки SSH из ~/.ssh/config, как и ssh. Запись Host может задавать пользователя, порт и другие параметры. Её имя можно указать вместо адреса. Frost передаёт собственный ключ, но SSH также может предложить ключи из явно заданных записей IdentityFile в вашей конфигурации.
#Полезно знать
- Файловая система сервера должна поддерживать жёсткие ссылки. С их помощью Frost гарантирует, что два компьютера никогда не перезапишут служебные записи копий друг друга. Они есть в ext4, Btrfs, XFS, ZFS, APFS и NTFS. Мастер проверяет это при подключении.
- Если ключ хоста сервера изменился, Frost отказывается подключаться, так же как ssh. Если вы переустановили сервер, удалите его старый ключ командой
ssh-keygen -R <host>и снова выполнитеfrost init. frost statusпоказывает, насколько заполнен диск сервера, аfrost backupпредупреждает, когда он почти заполнен.- Если папка лежит на диске, который сервер монтирует, этот диск должен быть смонтирован во время копирования. Если папки нет на месте, копирование завершается ошибкой, а не записывает данные куда-то ещё.