Домашний сервер — часть 7: делаем Time Capsule на базе Orange Pi

Находясь в командировке вдали от домашней сети, в которой организовано резервное копирование MacBook штатными средствами macOS, я всё чаще стал получать уведомления от Time Mashine о том, что резервные копии давно не создавались. Имея в наличии Orange Pi для тестов, Wi-Fi роутер и соответственно MacBook, было принято решение организовать аналог Time Capsule для поездок. Перераспределив данные между флешками был освобожден USB FlashDisk Kingston DataTravel на 128Gb. Безусловно для нормальной организации хранилища резервных копий macOS, необходимо минимум двукратное превышение объёма накопителя MacBook, но имеем то, что имеем, по-этому начнём.

1. Подготовка USB-диска к работе с экосистемой Apple

Для работы TimeMashine требуется накопитель с файловой системой HFS+ или APFS, но это в случае прямого взаимодействия накопителя и устройства Apple. В связи с открытостью систему Linux, можно включить поддержку этих файловых систем, но мы будем организовывать сетевой вариант, поэтому сможем использовать файловую систему Linux - Ext4. Я буду использовать весь диск целиком, поэтому, если Вы будете использовать эту инструкцию обязательно учтите этот момент. Подробная инструкция по подключению USB-диска, создания раздела и нанесение файловой системы находится - здесь

Создаем точку монтированная нашего USB-диска (точно такую же, как мы записали в файле fstab) у меня - это /mnt/timemashine и предоставляем каталогу полный доступ:

sudo mkdir -p 777 /mnt/timemashine

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

sudo mount -a

Убеждаемся, что диск подключился и продолжаем дальше.

2. Установка Netatalk (сервиса обеспечивающего нативное подключение сетевого хранилища в macOS) и всего такого прочего

Netatalk — это бесплатная реализация протокола Apple Filling Protocol c открытым исходным кодом, которая обеспечивает нативную связь между Time Machine macOS сервером, на котором запущен этот сервис.

В репозитории Ubuntu имеется пакет netatalk, но он старой версии 2.2.6

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

wget -c http://prdownloads.sourceforge.net/netatalk/netatalk-3.1.12.tar.gz

Следующим шагом распаковываем архив и переходим в распакованный архив:

tar xfvz netatalk-3.1.12.tar.gz && cd ./netatalk-3.1.12

Теперь начинается шаманство: именно таким образом лет 15 назад устанавливалось множество программ на Linux.
Устанавливаем необходимые пакеты, которые нам понадобятся для сборки:

sudo apt-get install libevent-dev libssl-dev libgcrypt-dev libkrb5-dev libpam0g-dev libwrap0-dev libdb-dev libtdb-dev libmysqlclient-dev avahi-daemon libavahi-client-dev libacl1-dev libldap2-dev libcrack2-dev systemtap-sdt-dev libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libio-socket-inet6-perl tracker libtracker-sparql-2.0-dev libtracker-miner-2.0-dev

Запускаем конфигурирование (подготовка исходных текстов для компилирования исходного кода) netatalk. Скрипту configure, необходимо передать дополнительные аргументы, чтобы программа собралась с необходимыми нам параметрами:

./configure --with-init-style=debian-systemd --without-libevent --without-tdb --with-cracklib --enable-krbV-uam --with-pam-confdir=/etc/pam.d --with-dbus-daemon=/usr/bin/dbus-daemon --with-dbus-sysconf-dir=/etc/dbus-1/system.d

Если в процессе конфигурирования возникают ошибки, то придётся доустановить необходимые зависимости указанные в ошибке.

После успешной сборки проекта, идет компиляция программы:

make

и установка

sudo make install

Всё, пакет Netatalk установлен в нашу систему. Теперь нам осталось только настроить сервисы netatalk и avahi-daemon.

3. Настройка сервисов Netatalk и Avahi-daemon для работы в сети с техникой Apple

Для настройки Netatalk открываем для редактирование файл /usr/local/etc/afp.conf:

sudo nano /usr/local/etc/afp.conf

и приводим его к следующему виду:

;
; Netatalk 3.x configuration file
;

[Global]
vol preset = default_for_all
log file = /var/log/netatalk.log
uam list = uams_guest.so
mimic model = TimeCapsule6,106

[default_for_all]
file perm = 0664
directory perm = 0774
cnid scheme = dbd

;[Homes]
;basedir regex = /home

[TimeMachine]
path = /mnt/timemashine/backup
time machine = yes
vol size limit = 100000

;[Video]
;path = /mnt/timemashine/video

Теперь настроим Avahi-daemon, для этого открываем на редактирование файл /etc/avahi/services/afpd.service

 sudo nano /etc/avahi/services/afpd.service

и приводим к следующему виду:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
        <name replace-wildcards="yes">%h</name>
        <service>
                <type>_afpovertcp._tcp</type>
                <port>548</port>
        </service>
        <service>
                <type>_device-info._tcp</type>
                <port>0</port>
                <txt-record>model=TimeCapsule6,106</txt-record>
        </service>
</service-group>

скопируем файл сервиса в каталог systemd:

sudo cp /var/lib/systemd/deb-systemd-helper-masked/netatalk.service /lib/systemd/system/

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

sudo systemctl enable avahi-daemon
sudo systemctl enable netatalk
sudo systemctl start avahi-daemon
sudo systemctl start netatalk

4. Настройка Time Mashine в macOS

В терминале macOS выполняем:

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

Эта команда позволяет TimeMashine в macOS находить и отображать "неподдерживаемые" сетевые хранилища.

Далее идем в настройки системы и выбираем пункт TimeMashine, там нажимаем кнопку "Выбрать диск". Там выбираем наш ресурс и всё... Для простоты подключаемся как гость и наша резервная копия начала делаться.

Похожие записи

Добавить комментарий