Пропустить до основного содержимого



Резервное копирование YunoHost с помощью Borg


Инструкция предполагает что вы умеете работать в консоли Linux,
выполнять файловые операции, а также знакомы с протоколом ssh и
основами сетевого взаимодействия


Задача


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

Определения


  • Сервер - система, которая будет хранить бэкапы. Для примера возьмём за адрес сервера mystorage.space
  • Клиент - система с работающим YunoHost, с которого будут сниматься резервные копии. Например myhosting.space


Предварительные условия


  1. Сервер, на котором будем хранить бэкапы
  2. Возможность стабильного доступа к этому серверу по ip или доменному имени (напрямую или через сетевое устройство с белым IP)
  3. Права рута для установки и настройки Борг-сервера и доступа ssh для Борг-клиента


В качестве хранилища бэкапов у меня используется Synology, поэтому в
части руководства будет описана специфика его настройки.


Настройка

Настройка сервера бэкапов
Установка Borg


В общем случае Borg присутствует практически во всех популярных дистрибутивах. Информацию по установке можно получить на этой странице.

В случае с Synology, Borg можно установить через Центр пакетов, найдя его через поиск в разделе Сообщество. После установки в интерфейсе пользователя ничего не появится т.к. это консольная утилита. При установке необходимо будет ввести пароль для дешифровки бэкапов - этот пароль нужно сохранить в надёжное место!

Подготовка пользователя


Необходимо создать пользователя и группу, а так же директорию для ключа. Пользователя и группу, можно к примеру назвать borg-backup. После создания, необходимо соответственно включить пользователя в группу.

В Synology управление пользователями и группами производится через веб-интерфейс, в Панели управления. Созданного пользователя необходимо добавить в группу administrators, иначе доступ по ssh работать не будет.

Далее необходимо создать каталоги и выдать на них права. Обычно каталог пользователя располагается по адресу /home/, но у Synology немного другая структура, команды ниже приведены для него:

# mkdir -p /var/services/homes/borg-backup/.ssh
# touch /var/services/homes/borg-backup/.ssh/authorized_keys
# chown -R borg-backup:borg-backup /var/services/homes/borg-backup
# chmod -R 0700 /var/services/homes/borg-backup
Настройка клиента
Установка Borg


Установка происходит через веб-интерфейс, также, как и для других пакетов YunoHost. Для того чтобы через поиск можно было найти Borg, в фильтре справа от поисковой строки необходимо выбрать пункт "все приложения".

В процессе установки необходимо ввести адрес Сервера и каталог для бэкапов.

Для удобства в качестве каталога назначения можно указать адрес сервера, с которого снимается бэкап. Вместо доменного имени можно использовать IP, порт также не обязательно должен быть 22, если например у вас настроен проброс порта с маршрутизатора на Сервер.

ssh://borg-backup@mystorage.space:22/~/myhosting.space
Настройка и проверка доступа по ssh


После установки Borg на YunoHost сгенерируются ключи доступа по ssh, публичный ключ необходимо вписать на сервер. Взять его можно в админке YunoHost, в разделе Приложения / borg. Ключ будет находиться в строке Public key: и выглядит примерно так: ssh-ed25519 AAAAC3NzaC1lZD..... Копируем его в буфер обмена или куда-нибудь ещё.

Далее необходимо вставить ключ на Сервер, в файл /var/services/homes/borg-backup/.ssh/authorized_keys

Для того, чтобы избежать проблемы с поиском исполняемого файла borg на сервере, необходимо в строке перед ключом вставить путь к исполняемому файлу borg. Для Synology это выглядит так: command="/usr/local/bin/borg serve" ssh-ed25519 AAAAC3NzaC1lZD....

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

# type -a borg

Чтобы проверить авторизацию, необходимо зайти на Клиента в консоль под рутом и выполнить команду:
# ssh -i ~/.ssh/id_borg_ed25519 borg-backup@mystorage.space -p 22

В результате должна произойти авторизация на Сервер. Консоль при этом не вернёт ввод, из-за запуска исполняемого файла borg.
Ручной запуск и проверка


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

# systemctl start borg

Консольный ввод при этом повиснет и продолжительность этого подвисания напрямую связана с объёмом данных резервного копирования.

Если что-то пошло не так, подробный лог можно посмотреть в админке YunoHost в разделе Инструменты / Логи.

После того как консоль вернёт управление, можно запросить с сервера информацию о бэкапах:

# app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg info "$(yunohost app setting $app repository)"

Отчёт по резервному копированию также можно посмотреть через веб-интерфейс YunoHost в разделе Приложения / borg на вкладке Advanced.

Восстановление


Полное восстановление должно происходить также в YunoHost с установленным borg и настроенным подключением по ssh. Понадобится ключ для расшифровки бэкапов, о котором указывалось вначале, а также перенос ключа для подключения по ssh с Клиента на Сервер т.к. при новой установке borg ключ сгенерируется новый.

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

После получения имени необходимо сформировать команду и выполнить её в консоли на Клиенте. Для примера я укажу для восстановления бэкап Hubzilla:

app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg export-tar "$(yunohost app setting $app repository)::_auto_hubzilla-2023-02-05_14:28" /home/yunohost.backup/archives/hubzilla.tar

В этой команде имя бэкапа _auto_hubzilla-2023-02-05_14:28.
Я не стал указывать полное имя файла для архива т.к. YunoHost потом не
даст удалить этот архив через интерфейс - там ограничение в 30
символов на имя файла бэкапа, поэтому архив называется просто
hubzilla.tar


Заключение


Работа с автоматическими бэкапами в YunoHost кажется мозговыносящей, но будь у меня эта инструкция, я не потратил бы на настройку несколько вечеров.

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

Настройку частоты резервного копирования также можно произвести достаточно гибко через настройки веб-интерфейса. Там есть соответствующее поле, работающее с форматом systemd OnCalendar format. Например можно указать 3:00 и резервное копирование будет выполняться каждые сутки в 3 часа ночи.

Источники




Полезные дополнения Friendica


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

Fancybox - изображения из записей открываются в полноэкранной галерее, с возможностью листания

Language Filter - позволяет скрыть посты на всех языках кроме указанных. работает на основе анализа записей. каждый пользователь хаба может настроить под себя или отключить.

Impressum - позволяет вывести некоторую информацию на странице /friendica

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

Numfriends - позволяет в настройках профиля пользователя менять количество выводимых друзей в блоке

Page Header - позволяет админу вывести какую-либо информацию между верхней панелью и контентом

Matomo / Piwik Analytics - подключает аналитику сервиса Matomo

Showmore Dynamic - позволяет настроить сворачивание длинных постов. Каждый пользователь может настроить функционал самостоятельно.

Smileybutton - кнопка вставки смайликов

Start Page - позволяет пользователям настроить, какая страница отобразится после входа

Unicode Smilies - большой набор смайлов для использования с плагином Smileybutton

#friendica #настройка #список



И снова здравствуйте


Съехал с Хабзиллы на Френдику. Этому предшествовали долгие вечера попыток подчинить то, что мне было необходимо, переписки с ментейнерами, которых по штуке на проект и дождаться ответа нереально, и прочие приключения, которые исчерпали моё терпение. Возможно я напишу ещё сравнительный анализ двух вышеуказанных платформ, но это будет позже.

Пока что спешу сообщить, что сервер продолжает работу в новом формате, а я продолжаю работу над ним. Часть контента будет восстановлена, тем более что я только что случайно обнаружил его в поисковой выдачи гугла (хотя думал что роботы ко мне не ходят).

#hubzilla #friendica #fediverse