Pull to refresh

Создаем личное облако на 3 Тб

*nix *
Tutorial
Я бы хотел поделиться одним способом создания личного облака на базе трехтеррабайтного WD MyBook Live. Нет, я не буду даже упоминать про wd2go и их «полуоблака», которые по сути являются только доступами к самому NAS через сервисы WD при помощи довольно корявых Java-апплетов. В этой статье речь пойдет о «честном» облаке, работающем на MBL при помощи ownCloud.
Это решение подойдет тем, кто мечтает о личном аналоге Dropbox, файлы в котором хранятся не «где-то там», а на конкретном физическом носителе, и ограничены только его объемом, без необходимости платить ежемесячно за этот объем (пренебрегая абонентской платой за интернет и стоимостью электроэнергии).
Большинство решений подобной задачи требуют достаточно много покопаться в интернете и опираются на хорошее знание Linux-систем. В данном посте я попытаюсь дать наиболее полный и адекватный HOW-TO на русском, чего сам в интернете не нашел. Так что многое пришлось делать методом проб и ошибок на свой страх и риск. Реализация данного решения не требует каких-либо фундаментальных знаний Linux, и я постараюсь расписать все наиболее доступно, по шагам.

Если интересно что из этого вышло — добро пожаловать под кат.

Прежде всего, хотел бы сказать что все манипуляции над своим MyBook Live вы делаете только под собственную ответственность. Теоретически, при неправильной последовательности действий, есть возможность сделать его не работоспособным, и хотя в подавляющем большинстве случаев, коробочку можно воскресить, а данные — спасти, все равно постарайтесь сделать бэкап содержимого на другой носитель. Либо, если есть такая возможность, лучше работать над чистым носителем.

Современная линейка WD MyBook Live — это процессор 800 МГц, 256 Мбайт оперативной памяти и практически полноценный вариант Debian Linux в качестве прошивки, правда это уже не поддерживаемый Lenny с примесью файлов прошивки от WD, да еще и под архитектуру PPC, так что с пакетами повозиться все же придется, однако apt-get, wget и dpkg тут самые что ни на есть обычные, а значит работать с репозиториями возможно в полной мере.

На хабре уже была статья об ownCloud, поэтому останавливаться подробно на том что это такое и как оно устанавливается в общем случае я не буду, перейду сразу к конкретике для MBL. Прежде всего, ownCloud – это серверное приложение, которое работает максимально похоже на сервисы Dropbox, Google Drive и подобные, только хостится оно на вашем железе, что само по себе совершенно бесплатно, да и MBL – далеко не худший вариант для хостинга подобного решения.

В первую очередь, нам нужно будет включить доступ к нашему MBL по SSH для дальнейшей работы. Делается это довольно просто — зайдя по адресу mybooklive/UI/ssh и поставив галочку напротив протокола SSH:



Как видно, пароль по-умолчанию для доступа – welc0me.
Дальше останется только войти по SSH через терминал (на windows-машине можно использовать PuTTY):
ssh root@192.168.X.X

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

ВАЖНО!
Ни в коем случае не пытайтесь проапгрейдить дистрибутив на мажорную версию, а лучше вообще забудьте о существовании команд full-upgrade, safe-upgrade или любой другой upgrade, это неминуемо приводит к тому, что вы больше не сможете загрузить девайс. Мне пришлось-таки поплатиться за свое любопытство ручным разбором устройства и восстановлением через анбрик. Ничего смертельного, но чрезвычайно неприятно и отнимает уйму времени.
Также, советую тщательно следить за пакетами, которые устанавливаете или удаляете. Так можно в лучшем случае утянуть уйму ненужного мусора, а в худшем — при удалении какого-либо ненужного пакета вместе с зависимостями, грохнуть что-то жизненно важное. Так, например если вы умудритесь грохнуть ssh, то единственный вариант вернуть коробку к жизни также, будет через разбор и анбрик начисто.
Ну и на последок, чего вообще делать нельзя — так это трогать udev, его даже апдейтить опасно, в этом случае рискуете получить вместо My Book Live кирпич, непригодный к восстановлению. Лучше всего от греха подальше, запретить ему обновляться командой:
aptitude hold udev

Это заморозит данный пакет, тем самым предотвратив возможность его обновления.

Потом, нам потребуется подготовить платформу для установки стороннего ПО. И ключевым здесь будет удаление пакетов wd-nas, дабы apt-get не ругался в дальнейшем по каждому пустяку. Как ни странно, этой информации нет практически нигде, кроме официального источника:
rm -f /var/lib/dpkg/info/wd-nas.*

Это устранит пакеты, зависимые от прошивки.

Следующим шагом, нам будет необходимо добавить в список доступных репозиториев две ссылки. Сделать это удобнее всего в редакторе nano, командой:
nano /etc/apt/sources.list

А вот что необходимо добавить:
deb http://ftp.us.debian.org/debian/ squeeze main 
deb-src http://ftp.us.debian.org/debian/ squeeze main 

Возможно у кого-то возникнут вопросы, зачем добавлять репозитории squeeze если версия самого WD MBL — lenny? Отвечу — просто потому что lenny с февраля 2012 года более не поддерживается, и большинство необходимых пакетов для него давно устарели, что может привести к неразрешимым зависимостям (пришлось откатываться к заводским настройкам после первой неудачной попытки). В интернете достаточно много советов по тому какие еще репозитории можно добавить, включая тестовые ветки, но я советую не слишком увлекаться, потому что не зная что ты делаешь, можно превратить эту шуструю коробочку в безжизненный кирпичик.
Во избежание путаницы, привожу содержимое моего sources.list, с которым все работает
deb archive.debian.org/debian lenny main
deb-src archive.debian.org/debian lenny main
deb ftp.us.debian.org/debian squeeze main
deb-src ftp.us.debian.org/debian squeeze main

После добавления нужных строк и сохранения списка репозиториев, нужно попробовать обновиться командой:
apt-get update


Не забываем, что ownCloud все же написан на PHP, поэтому для его полноценной работы нам потребуется установить ряд необходимых пакетов, включая актуальную версию PHP5 и несколько необходимых модулей:
apt-get install php5 php5-gd php-xml-parser php5-intl zlib1g

Установщик может ругнуться на недоверенные пакеты. Это происходит потому что подписанные ключи для репозиториев Дебиан уже не актуальны. У этой проблемы существует решение, однако можно и проигнорировать предупреждение просто нажав пару раз на «Y». Также, в процессе установки возможны конфликты разных версий пакетов, часть из которых была предустановлена в системе. По-умолчанию, предпочтение будет дано уже установленным пакетам (это же Debian), так что вполне можно согласиться с этим решением (хотя ничего страшного не должно произойти даже если заменить эти пакеты на новые).

Если все прошло успешно, самое время перейти непосредственно к установке ownCloud. Это достаточно простая часть. Нужно перейти в каталог /www/ и скачать туда веб-установщик при помощи wget. А также, убедиться что установлены соответствующие групповые права на запись:
cd /var/www/
wget https://download.owncloud.com/download/community/setup-owncloud.php --no-check-certificate
chmod 755 setup-owncloud.php
chgrp www-data /var/www
chmod g+w /var/www

Далее, нужно перейти в браузере по адресу mybooklive/setup-owncloud.php чтобы продолжить установку. Можно установить ownCloud в любой каталог, но чтобы не запутаться в дальнейшем, советую все же, ставить его в одноименный каталог /owncloud/.
Если в конце установки, вы увидите
подобную картину

то не пугайтесь. Все требуемые модули мы устанавливали еще на прошлом шаге, но для того чтобы они заработали, нужно всего-навсего, перезагрузить веб-сервер apache:
/etc/init.d/apache2 restart

Хотя я бы не стал на данный момент этого делать, потому что немного позже мы все равно его будем перезагружать.
После того как мы определились с каталогом установки, останется лишь немного допилить напильничком доступы извне для http и SSL https, а также вернуть групповые права для /www/. Для этого, необходимо будет прописать следующие строки:
        <Directory /var/www/owncloud/>
                AllowOverride All
                Options +FollowSymLinks
        </Directory>
        <Directory /var/www/owncloud/data>
                Order deny,allow
                Deny from all
        </Directory>

между подобных модулей ... в следующих файлах:
nano /etc/apache2/sites-enabled/000-wdnas

nano /etc/apache2/sites-enabled/000-wdnas-ssl

Вот теперь можно перезагружать апач и возвращать права доступа для /www/:
/etc/init.d/apache2 restart
chmod g-w /var/www

Технически, данные вновь установленного owncloud хоть и находятся на жестком диске, однако логически они принадлежат системному разделу MBL, который имеет ограничение в 2 Гб. Для того, чтобы иметь возможность использовать весь доступный объем под owncloud (честно, не представляю кому и зачем это может понадобиться и сколько лет будут синхронизироваться все 3TB, забитые данными), а не ограничиваться системным разделом, мы сделаем символическую ссылку в основной раздел DataVolume, предварительно остановив апач на время наших манипуляций:
/etc/init.d/apache2 stop
mv /var/www/owncloud/data /DataVolume/owncloud_data
chgrp www-data /DataVolume/owncloud_data
chmod 770 /DataVolume/owncloud_data
ln -s /DataVolume/owncloud_data /var/www/owncloud/data

Я категорически не советую прокидывать линк в папку Public из соображений безопасности.

По сути, нам останется только вновь запустить апач и основная цель будет достигнута:
/etc/init.d/apache2 start

Теперь по адресу mybooklive/owncloud нам доступно собственное облако, в котором можно держать и синхронизировать огромное количество документов, доступ к которым можно получить с Win, Mac, Linux, Android и даже iOS при помощи нативных клиентов для каждой из осей, просто настроив клиент на синхронизацию с вышеуказанным адресом.
Похоже, это победа.

Однако...


По правде, это еще далеко не победа, а только полпути, потому что адрес mybooklive/owncloud является локальным, и работать наше облако будет только в рамках домашней сети, благодаря чему толку от него будет очень немного. Но что же сделать чтобы пользоваться ownCloud можно было отовсюду? Конечно, счастливые обладатели статических IP скажут что нужно просто заменить «mybooklive» в адресе на IP устройства, предварительно пробросив нужные порты через роутер, и будут правы. Но такая роскошь есть не у каждого, и подавляющее большинство пользователей имеют-таки самые обычные динамические IP, которые меняются постоянно, так что каждый раз устройство будет иметь новый адрес.
Как ни странно, у этой задачи есть достаточно несложное решение. Нет, даже не подумайте что мы посмотрим в сторону неудобного сервиса wd2go (хотя была пара идей как можно использовать и его) – напротив, мы опять поработаем головой и воспользуемся такой полезной штукой как Dynamic DNS.

Для этого нам понадобится:
  1. Зарегистрировать домен.
  2. Зарегистрироваться на каком-либо сервисе, предоставляющем DynDNS.
  3. Установить DynDNS клиент на наш MyBookLive

Для первого пункта вполне подойдут даже любые бесплатные домены третьего уровня (гуглятся на ура), но лучше конечно зарегистрировать собственный домен. Есть вполне дешевые доменные зоны, например домен в зоне .pw (острова Палау, хотя некоторые регистраторы раскручивают его как Professional Web) обойдется даже чуть меньше 7 € в год. Как вариант — посмотреть по акциям на GoDaddy (там часто можно урвать какой-то лакомый кусочек всего за 5 баксов).

В качестве сервера DynDNS лично я выбрал совершенно бесплатный от freedns.afraid.org, потому что платить за не используемые фишки от dyn.com/dns даже минимальную абонентку в год, как-то не хотелось. Для нашей задачи отлично подойдет самый минимальный функционал. Подробно расписывать процедуру регистрации домена и привязки его к сервису DynDNS в рамках данной статьи я не буду. Достаточно просто зарегистрироваться на сервисе и на странице freedns.afraid.org/domain найти пункт «Add A Domain into FreeDNS», после чего добавить в качестве DNS у вашего регистратора следующие ns-сервера:
NS1.AFRAID.ORG
NS2.AFRAID.ORG
NS3.AFRAID.ORG
NS4.AFRAID.ORG

При этом не стоит пугаться красного статуса Broken — если все нормально, он исчезнет сам в течение 24-х часов.

Далее нам необходимо выбрать и установить какой-либо Dynamic DNS клиент на MyBookLive. На самом деле, это задача не из легких, потому что подобных решений действительно огромное множество на Perl, Python, PHP, есть также отдельные демоны для *nix всех видов и мастей. Перед тем как найти подходящее решение, мне пришлось перепробовать достаточно много вариантов, но везде что-то не устраивало — то настройка через одно место, то стабильность работы не устраивает, то с выбранным сервером не совместим, то с версией протокола, то слишком неповоротливо. В итоге решил остановиться на самом маленьком, простом и незатейливом клиенте inadyn. Из плюсов — шустрая работа, очень маленький размер, совместимость с выбранным сервером, довольно гибкая настройка, поддержка крона, запуск в режиме демона и обновление IP через заданный интервал. Из минусов разве что отсутствие какого-либо GUI, и то это даже минусом назвать сложно для такой консольной утилитки.

Устанавливается она просто командой:
apt-get install inadyn

Также важное замечание что для работы inadyn может потребоваться curl, если он не был установлен. Решается так:
apt-get install curl

Далее нам необходимо войти под своим аккаунтом на freedns.afraid.org/dynamic и выбрать пункт Direct URL напротив домена, который мы привязывали ранее. Обратите внимание, что в строке браузера будет нечто подобное:
http://freedns.afraid.org/dynamic/update.php?OHphN3RsHY0SEFtZ1JrQ2V2Z1pTOjk2NzEwOTTVM1cc=

Нас интересует все, что стоит справа от ?. Это — хэш, действительный только для вашего домена (значения в примере изменены). Скопируйте его куда-нибудь, он нам вскоре понадобится.
Теперь создаем конфигурационный файл inadyn командой:
nano /etc/inadyn.conf

в который вставляем необходимые настройки и сохраняем:
--username <имя_пользователя>
--password <пароль>
--update_period_sec 60
--forced_update_period 120
--alias <имя_домена>,<хэш>
--background
--dyndns_system default@freedns.afraid.org
--syslog

Кому интересно, расшифровка
  • username — здесь указываем имя пользователя, с которым регистрировались на freedns.afraid.org
  • password — пароль оттуда же
  • update_period_sec — частота проверки и обновления (если менялся) IP в секундах
  • forced_update_period — частота принудительного обновления IP в секундах
  • alias — строка, в которой через запятую указываем наш домен и его хэш, который мы записывали ранее
  • background — указание исполнять в фоновом режиме
  • строку dyndns_system default@freedns.afraid.org оставляем без изменений, она говорит программе с каким сервером идет работа информацией (указывает на внутренний протокол обмена)
  • syslog — события пишем в системный лог


Теперь нам нужно добавить inadyn в крон как автоматическое событие при перезагрузке, чтобы каждый раз при перезагрузке MyBookLive, она стартовала автоматически. Для этого:
crontab -e

Добавляем строку:
@reboot /usr/sbin/inadyn

Чтобы проверить работоспособность программки после наших манипуляций, можно перезагрузить MBL командой
reboot

Затем подождать 3-5 минут пока он перезагрузится и стартует, после чего проверить процессы:
ps -A | grep inadyn

Нам останется только проверить доступность нашего майбука по имени домена командой ping:
ping <yourdomain.com>

Если все прошло нормально, и отправленные пакеты доходят, можно смело заходить на yourdomain.com/owncloud и радоваться большому выполненному делу.
При настройке десктопных и мобильных клиентов owncloud, в качестве адреса нужно указывать полностью строку yourdomain.com/owncloud, чтобы они понимали где находится наш /owncloud/.

P.S. за время написания статьи, методом проб и ошибок, пришлось один раз делать полный программный сброс к заводским настройкам и два раза разбирать устройство чтобы воскресить (по инструкции отсюда), поэтому очень прошу, отнестись ко всем предостережения серьезно, с пониманием собственной ответственности и возможности испортить железку и потерять информацию. Также, не забывайте, что MyBookLive прежде всего, просто бюджетный nas, и использовать его в качестве полноценного сервера все же не стоит, для этого есть куда более подходящие решения.

P.P.S. о каких-то ошибках или неточностях, просьба писать в личных сообщениях. Тема лично мне очень интересна, и я не обладаю большими фундаментальными познаниями в администрировании Linux, так что замечания могут быть очень полезны. Вполне возможно, что статья будет еще дополняться, расширяться, а если она будет востребована, то возможно и обзаведется второй частью (есть еще несколько идей как можно прокачать MyBookLive)

Ответы на вопросы:


Вопрос: Нужно ли устанавливать apache? В статье об этом ни слова.
Ответ: Нет, apache на MyBookLive установлен по-умолчанию. При первом подключении, настройка происходит через веб-интерфейс по адресу: mybooklive.local. Важно, что при неправильном обновлении или модификации apache, можно лишиться веб-интерфейса и оказаться в ситуации, когда его невозможно будет запустить без сброса к заводским настройкам. Бездумно обновлять его также не стоит, т.к. можно наткнуться на неразрешимые зависимости, а на Lenny, да еще и под архитектуру PPC альтернативных вариантов не так много.

Вопрос: На какой версии прошивки проводился эксперимент?
Ответ: Все делалось на 02.42.03-027, но по идее, должно работать и с более ранними. К сожалению, информации по различным прошивкам нет.

Вопрос: Может ли Feature Pack Manager повлиять каким-либо образом на описанное в статье?
Ответ: По своей сути, fpkmgr — просто некий расширенный менеджер пакетов, который устанавливает тот набор пакетов, который выберет пользователь. На моем MBL спокойно работали параллельно Transmission из fpkmgr и owncloud. Возможно, есть какие-то пакеты, устанавливаемые при помощи fpkmgr, которые могут конфликтовать, но информацией об этом я пока не обладаю. Если кто-то сталкивался и напишет об этом, я включу замечание сюда.

Вопрос: После действий, описанных в статье, будет ли owncloud отключаться, когда MBL уходит в сон?
Ответ: Самое интересное, что судя по поведению светодиода, он-таки в сон уходил пока я не отключил энергосбережение. По факту работал с некоторой задержкой чтобы «проснуться» и показать содержимое owncloud при заходе из браузера, хотя технически этот аспект я не изучал. При отключенном энергосбережении все отлично работает.

Вопрос: Все сделал по инструкции, но при попытке доступа пишет что невозможно подключиться к серверу. Что делать?
Ответ: Для нормальной работы owncloud, необходимо пробросить на роутере порты 80 и 443. Как это сделать, подскажет гугл при запросе port-forwarding.

Материалы:
Tags: mybook livedebiandynamic dnsfreednsnasоблакоowncloud
Hubs: *nix
Total votes 72: ↑58 and ↓14 +44
Comments 68
Comments Comments 68

Popular right now