От ownCloud к Nextcloud

  • 13.04.2019
27 июля 2012 в 07:49

ownCloud, делаем своё собственное защищённое облако

  • Облачные сервисы

ownCloud представляет собой Open Source решение для организации своего собственного dropbox-подобного хранилища файлов. Кроме, собственно, синхронизации файлов доступны так же дополнительные возможности, как то: синхронизация контактов, календарей (наличествует поддержка CalDAV) и задач, фотогалерея, проигрыватель аудио (с поддержкой протокола Ampache). Сервис работает в многопользовательском режиме, есть функционал общих папок.

Клиенты синхронизации доступны для Windows / Mac / Linux / Android, версия для iOS, по заверениям разработчиков, в финальной стадии. Наличествует достаточно интересная, но пока экспериментальная функция External Storage, позволяющая монтировать Dropbox и GDrive в папку с ownCloud.

Важной для меня функцией в Android-клиенте является Instant Upload, автоматически загружающий видео и фотографии в облако сразу после съёмки, аналогично клиенту Dropbox.

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

В качестве хостинга можно выбрать VDS или домашний сервер на антресоли.

Рассмотрим вариант с «домашним сервером».

В качестве железки выбран простенький неттоп, операционная система - Ubuntu Server 12.04, прямой ip и доменное имя. Храниться данные будут в зашифрованном LVM-разделе, доступ клиентов к серверу организован поверх SSL.

  • Устанавливаем «голый» ubuntu server 12.04, в процессе установки не забываем про LVM-encrypted с устойчивой к подбору парольной фразой.
  • Устанавливаем необходимые пакеты:
    apt-get install apache2 php5 php5-common php5-gd php5-sqlite curl libcurl3 libcurl3-dev php5-curl
  • Скачиваем ownCloud:
    wget download.owncloud.org/releases/owncloud-4.0.5.tar.bz2
    (ссылку на последнюю версию можно взять непосредственно на сайте проекта) и распаковываем его:
    tar -xjf owncloud-4.0.5.tar.bz2
  • Копируем папку с ownCloud в корень web-сервера:
    cp -r owncloud /var/www/
  • Создаём необходимые папки
    mkdir /var/www/owncloud/data
    и меняем их владельца на www-data
    chown -R www-data:www-data /var/www/owncloud/apps
    chown -R www-data:www-data /var/www/owncloud/config
    chown -R www-data:www-data /var/www/owncloud/data
  • Редактируем /etc/apache2/sites-enabled/000-default
    Здесь AllowOverride=All в разделе «Directory /var/www»
  • Включаем модули rewrite, headers и ssl в apache:
    a2enmod rewrite && a2enmod headers && a2enmod ssl
  • Устанавливаем openssl:
    apt-get install openssl (вероятно, уже установлен)
    генерируем самоподписанные сертификаты и размещаем их по соответствующим папкам:
    openssl genrsa -des3 -out server.key 1024
    mv server.key server.key.old
    openssl rsa -in server.key.old -out server.key
    openssl req -new -key server.key -out cert.csr
    openssl x509 -req -days 365 -in cert.csr -signkey server.key -out cert.crt
    mv cert.crt /etc/ssl/certs/
    mv server.key /etc/ssl/private/
  • Редактируем /etc/apache2/sites-available/default-ssl
    Указываем в SSLCertificateFile сгенерированный ранее сертификат /etc/ssl/certs/cert.crt, а в SSLCertificateKeyFile свой ключ /etc/ssl/private/server.key
    Не забываем также указать имя домена и сайта.
  • Указываем апачу основной сайт:
    a2ensite default-ssl
  • Рестартим апач:
    service apache2 reload
    На этом этап установки завершён, далее нужно будет настроить, собственно owncloud.
  • Заходим по адресу yourip.address/owncloud , принимаем самоподписанный сертификат, проходим все необходимые шаги (точнее, всего один шаг) по настройке ownCloud. Попадаем в достаточно приятный веб-интерфейс.
  • Далее устанавливаем на компьютерах/смартфонах клиенты. Настройка клиента сводится к указанию адреса owncloud - yourip.address/owncloud , вводу имени и пароля и конечной папки на компьютере. Не забываем в адресе указать https, а не http.

На практике работает всё очень похоже с dropbox - заливаешь файл, он «расползается» по всем клиентам. Снимаешь на камеру Android-смартфона - изображение или видео через некоторое время попадает на компьютер. Особо хочу отметить, что Android-клиент поддерживает общесистемную функцию Easy Share Action, потому практически из любого приложения файл можно поместить в ownCloud.

OwnCloud имеет встроенную поддержку WebDAV, потому на большинстве десктопных ОС можно обойтись вообще без клиентского приложения (в случае, если например неважна синхронизация, а нужен только доступ к файлам). Непосредственно на сервере данные хранятся в виде обычных файлов и, если включить фантазию и засучить рукава, можно совместить ownCloud с FTP/AFP/Samba-сервером, организовать автоматическое скачивание торрентов посредством rtorrent, а в корпоративных средах открываются поистине безграничные возможности организации доступа к файлам. В общем, всё ограничивается вашей фантазией.

Функционал легко расширяется с помощью дополнительных плагинов (Applications в терминологии ownCloud). Например, в случае физической невозможности зашифровать диск сервера можно воспользоваться плагином Encryption, тогда всё содержимое облако будет зашифровано встроенными средствами.

Объём хранилища ограничен только вашим жёстким диском. Облако в 2Tb - не вопрос. Поддержка версионности файлов наличествует. Один десктопный клиент, кстати, может подключаться к нескольким ownCloud облакам одновременно.

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

У данного решения с LVM-encrypted диском есть один недостаток - в случае перезагрузки мы потеряем удалённый доступ к серверу, поскольку при загрузке система будет просить парольную фразу для расшифровки диска на физической консоли. Так же из недостатков замечено, что при активной работе клиентов сервис апача на сервере неслабо отъедает процессорные ресурсы.

В итоге у нас получилось свой Dropbox с защищённым доступом и дамами, с клиентами под распространённые платформы. ownCloud, фактически, даёт возможность воспользоваться многими приятностями облачных технологий не требуя ответную жертву в виде приватности.

От себя всячески желаю проекту дальнейшего развития и процветания.

Я написал эту статью, чтобы помочь собрать разрозненные куски информации по теме «ownCloud и Nextcloud». К нам на сайт часто попадают по запросам «owncloud vs. nextcloud» и «сравнение owncloud с nextcloud». Безусловно, я не могу точно сказать, что хотят найти люди, используя эти поисковые запросы, но пообщавшись с нашими пользователями и почитав комментарии к нашим статьям, у меня сложилась в голове картина, что люди немного сбиты с толку наличием двух похожих друг на друга решений. Они хотят сделать выбор, но так, чтобы потом не было за него мучительно больно. Так появилась достаточно длинная статья, которая стремится осветить эту тему с разных сторон. Однако многое из сказанного здесь может показаться читателю избыточным, особенно если он просто хочет найти ответ на простой вопрос: «Что использовать, ownCloud или Nextcloud?». Таким образом, я сейчас постараюсь ответить на этот вопрос, а потом расскажу подробно обо всем остальном.

То, что произошло с ownCloud, напоминает чуть более известную историю раскола проекта OpenOffice.org на, собственно, сам OOo и LibreOffice. Подавляющее большинство пользователей сразу мигрировали на LibreOffice, а остальные остались на OOo, и оставались на нем до тех пор, пока не стало очевидно, что этот проект находится в глубокой стагнации. Вряд ли можно найти более подходящую аналогию для того, чтобы описать ситуацию, которая сложилась вокруг ownCloud. Все ключевые разработчики этого проекта ушли работать над Nextcloud, который ответвился от оригинальной кодовой базы ownCloud 2-го июня 2016-го года. ownCloud все еще находится на плаву, но вся движуха теперь происходит в Nextcloud. За пару лет моих наблюдений могу сказать, что Nextcloud развивается в лучших традициях ownCloud Community Edition, свободной версии платформы. Изменилось только имя. Дальше можно долго рассказывать о причинах раскола и к чему он привел, но думаю, что основная мысль понятна — будущее за Nextcloud. А теперь обо всем по порядку.

Становление ownCloud

Проект ownCloud был анонсирован на конференции Camp KDE 2010 и стартовал в рамках инициативы KDE Social Desktop (о которой, кстати, подробно рассказывалось в в 122-м выпуске журнала Linux Format). Он задумывался как свободный аналог закрытых решений, самыми известными из которых в то время были Dropbox и Ubuntu One. В качестве языка программирования для нового проекта был выбран PHP. Во время моего первого знакомства с ownCloud вопрос «А почему же все-таки PHP?» занимал меня меньше всего. Позднее, я сильно удивился, когда узнал из блога основателя проекта, Фрэнка Карличека (Frank Karlitschek), что выбор был вполне осознанным . Несмотря на плохую репутацию языка, разработчики отдали ему предпочтение из-за того, что
* PHP является очень популярным: он хорошо знаком большинству разработчиков и его можно найти почти на каждом сервере;
* PHP является «языком сценариев» в том смысле, что в нем отсутствует этап сборки, как в компилирующих языках программирования, за счет чего запуск проектов на PHP, по мнению разработчиков, становится еще проще;
* PHP является достаточно быстрым в умелых руках, что видно по таким проектам, как Facebook и Wikipedia;
* на PHP написано огромное количество кода, которое можно переиспользовать, что очень важно для такого проекта, как ownCloud.

Не все из вышеперечисленного звучит убедительно, но мне кажется, что очень сложно категорически с чем-то из этого не согласиться.
Разработчикам потребовалось полгода на то, чтобы подготовить первую стабильную версию со знаковым номером 1.0, которая вышла 24-го июня 2010-го года. Еще примерно через полгода в США была зарегистрирована компания ownCloud Inc. с целью упрощения привлечения инвестиций и финансирования ключевых разработчиков проекта. Это событие ознаменовало превращение ownCloud в полностью самостоятельный проект (напомню, что с самого начала он развивался в рамках проекта KDE).

Укрепление позиций ownCloud

ownCloud всегда развивался очень быстро. Тремя яркими примерами, которые пришлись на один год, стали возможность установки сторонних приложений из каталога apps.owncloud.com, запуск коммерческой версии платформы и выход десктопного клиента для синхронизации файлов с облачным хранилищем. Однажды Фрэнк Карличек, основатель ownCloud, сказал , что проект заполняет существенный пробел в мире свободного программного обеспечения, т.к. защищает наши персональные данные. Но этого, к сожалению, не достаточно для распространения проекта в широких кругах, поэтому наличие на заре ownCloud полноценного клиента для синхронизации файлов было необходимым для роста популярности проекта. Кстати, запуск каталога приложений также положительно сказался на популярности ownCloud, т.к. разбавил сообщество пользователей независимыми разработчиками.

Когда ownCloud стал развиваться в рамках коммерческой компании, у разработчиков появились обязательства и ответственность перед инвесторами и клиентами в дополнении к обязательствам и ответственности, которые у них уже были перед пользователями свободной версии платформы. Коммерческая версия ownCloud развивалась согласно модели Open Core, при которой в свободном доступе распространялась только базовая часть системы ownCloud Community Edition, а расширенные функции поставлялись в рамках продукта ownCloud Enterprise Edition. (Одним из первых, кто предложил термин Open Core, стал создатель MySQL, а позднее и MariaDB, Майкл Видениус (Michael Widenius). Тем не менее, этот термин на первых порах , но позднее зарекомендовал себя как неплохой способ монетизации свободного программного обеспечения.) Какое-то время все шло хорошо, но в один прекрасный момент основатель проекта покинул ownCloud Inc. недовольный тем, что компания уделяет мало внимания сообществу и ставит в качестве первоочередной цели отстаивание своих коммерческих интересов. Это привело к расколу проекта.

Появление Nextcloud

Nextcloud появился 2-го июня 2016 года в результате ответвления (или форка) от кодовой базы ownCloud 9 с целью независимого развития платформы, которая была бы лишена известных недостатков. Так, к примеру, больше не требовалось подписание соглашения о передаче имущественных прав на код для упрощения участия в разработке нового проекта представителей сообщества. Более того, в Nextcloud 9, которая стала первой версий платформы выпущенной после форка, были включены многие расширенные возможности, которые поставлялись в рамках ownCloud Enterprise Edition. Также было выпущено собственное клиентское приложение под Android для синхронизации файлов, которое, в отличии от оригинального, стало бесплатным в Google Play. Позднее было выпущено приложение под iOS , которое также стало бесплатным в AppStore. Все это, а также многое другое, говорит о том, что разработчики новой платформы отказалась от модели Open Core и решили распространять весь enterprise-функционал открыто. В рамках коммерческой компании Nextcloud GmbH было решено предоставлять коммерческую техническую поддержку всем тем, кто использует платформу в продакшене или создает собственные продукты на базе Nextcloud. Эту модель давно использует компания Red Hat, зарабатывая таким образом больше $2 млрд в год, и разработчики Nextcloud решили последовать ее примеру.

Nextcloud сегодня

Еще во времена ownCloud платформа превратилась в нечто большее, чем средство для создания облачного хранилища данных на собственных вычислительных мощностях. По функционалу Nextcloud не уступает популярным облачным сервисам вроде Google Docs , Google Calendar , Delicious , а также имеет важное преимущество — сохранность приватных данных. Клиенты для синхронизации файлов заслуживают особое внимание. Они не только не уступают клиентам для Dropbox и других подобных сервисов, но и возможно даже в чем-то превосходят их, но это исключительно субъективное замечание. Когда мы презентовали свой собственный продукт на базе Nextcloud, мы были удивлены насколько сильный положительный эффект оказывает мобильный клиент на зрителей, которые не знакомы с платформой. Возможно дело в том, что люди до сих пор не ожидает такого хорошего качества от свободного программного обеспечения.

Заключение

В данный статье я попытался рассказать об эволюции ownCloud, и о том, как проект превратился в Nextcloud, коснулся темы принципиальных различий двух проектов, а также ответил на наиболее часто задаваемый, по моему опыту, вопрос: «Что использовать, ownCloud или Nextcloud?».

P.S. Наша команда использовала для собственных нужд сначала ownCloud, а затем успешно мигрировала на Nextcloud, и пользуется им до сих пор. Полученный от использования платформы опыт, позволил нам двинуться дальше и создать свой собственный продукт на базе Nextcloud. Мы с удовольствием делимся опытом в своих публикациях на Пикабу, Хабре и в русскоязычной версии Linux Format, а также предлагаем коммерческую техническую поддержку. По всем вопросам пишите на .

На днях пробовал ownCloud, NextCloud и Seafile.
ownCloud / Nextcloud:
Серверная часть написана на PHP + БД (точно умеет работать с mysql и sqlite).
Для фронтенда обязательно иметь Apache2+php или nginx+php.
Без настройки redis в помощь - тормозной просто до невозможности. С redis все становится на много лучше. Все операции по сканированию и проверке идут через крон, который по умолчанию запускается раз в 15 минут (кстати, при установке серверной части - не предупреждают о том, что это нужно сделать).

Все клиенты работают через WebDAV это просто супер-минус :
Так как при синхронизации клиент сканирует по очереди все серверные папки, отправляя кучу запросов. Каждый файл при загрузке отправляется тоже отдельным запросом со всеми накладными расходами - в результате куча маленьких файлов синхронизируется просто невыносимо долго (10гб мелких файлов на сервер с 1Гбит линком может отправляться 10-20часов). Все это, в случае краша просто останавливается.
А крашнуться может по разным причинам (перечислю то, что было у нас):

  • При загрузке больших файлов может отвалиться и nginx и php-fpm. Почему они не загружает их по умолчанию частями - это странно. При том, что вебдав это поддерживает.
  • php-fpm может крашуться, если придется отдать очень много файлов в одной папке (так и не получилось вылечить).
  • Крашится из-за ограничений линукс (255 байт на имя файла) - например, на маке файлы могут иметь более длинное имя.
  • От монтирование того же самого WebDAV в finder MacOS можно сразу отказаться, работает очень медленно и нестабильно. При этом при монтировании через Cloudmounter все ок. В Linux с монтированием тоже все ок.

После каждого краша синхронизатор просто останавливается. Через какое-то время перезапускается, опять доходит до ошибки и опять останавливается. Я конечно понимаю, если нужно каждому юзеру выделить 1-5 гб места, то наверное все ок, но когда дизайнерам надо засинхронизировать 200Гб макетов и программистам по 5-20гб мелких файлов, то это решение можно смело обойти стороной.

Единственный плюс owncloud/nextcloud это то, что он файлы хранит файлами.

Интересно то, что не смотря на то, что вроде вся опенсорс тусовка ушла в nextcloud, в owncloud сейчас есть и виртуальная ФС и diff синхронизация, чего все еще нет в nextcloud.

Seafile
Разработчики говорят, что ядро сервера написано на C и оно очень быстрое. Остальное похоже написано на питоне. В качестве БД использует MySQL или sqlite.
Для фронтенда можно использовать apache2 или nginx. А можно подсоединяться по IP.

Первый день тестируем. Пока вообще все на столько хорошо, что даже не верится. 10Гб мелких файлов засинхронизировал вообще без всяких вопросов и ошибок менее чем за 1 час.

Файлы хранятся в какой-то собственной структуре, это минус, но есть утилита seaf-fsck , которая, в случае беды может экспортнуть все файлы. Не получится так сделать только с зашифрованными библиотеками. Но никто не мешает настроить резервирование базы и данных на отдельное хранилище или по крайней мере хранить все на райд-массивах, чтоб обезопасить себя.

Остановимся пока на Seafile. Скорость и глючность Nextcloud/owncloud своlит все его плюсы на нет.

Open-source аналоге Dropbox и других облачных сервисов хранения информации, написанном на PHP и предоставляющем платформу для синхронизации, хранения и шаринга файлов, а также контактов и календаря, что привлекло множество пользователей, которым нужно комплексное решение уровня iCloud, но выносить свои данные на чужие сервера не хочется. ownCloud же может быть установлен на любом принадлежащем вам сервере и вы можете установить политики доступа так, как удобно вам, а не внешней компании.

Проект ownCloud начал свою работу три года назад, когда Фрэнк Карлишек обнаружил полное отсутствие альтернатив проприетарным решениям облачного хранения данных. Сейчас в проекте участвует с разной интенсивностью около 800000 человек, он находится уже на пятом крупном релизе и переведен на 42 языка. Также есть коммерческий спин-офф для корпоративных пользователей с соответствующим функционалом.

Одной из интересных “фишек” является возможность синхронизации не только с устройствами, но и с другими облачными платформами – в частности, Dropbox, Google Drive или даже просто FTP-сервер. Соединение работает на чтение и запись, позволяя использовать сторонние хранилища так как вам этого захочется. Например, для того чтобы расширить объем пространства доступного в ownCloud. Разработчики подчеркивают такие возможности как одно из ключевых преимуществ, так как в отличие от сервисов, главная задача которых – привязать пользователя к себе и получать с него абонплату, ownCloud не привязан к какому-то конкретному хранилищу, а совместимость с ними и возможность использования их в качестве подключаемых хранилищ – важное преимущество над проприетарными платформами.

Коммерческий спин-офф построен на основе открытого проекта, но также содержит поддержку технологий, которые широко применяются в бизнес-сегменте. В частности, поддержка БД MS SQL и Oracle, подключение к групповым корпоративным сетевым протоколам, сертифицированные мобильные клиенты. Коммерческая версия специально ориентирована на те организации, которые заинтересованы в контроле над своими данными и обработке их на локальных мощностях.

Пятая версия ownCloud приносит с собой важные изменения сразу в нескольких областях: интеграции, производительности и интерфейсе. Большинство пользователей увидит, конечно же, в основном последнее. Интерфейс полностью переработан, обновлены все приложения (в том числе календарь и контакты), добавлена возможность проигрывания музыки, видеофайлов и просмотра PDF из облака. Это не революционные изменения, но они поддерживают ownCloud на уровне конкурентов. Более значительны изменения, не заметные глазу – например, новая система БД учетных записей, позволяющая логиниться с помощью разных типов учетных записей (например, UNIX и LDAP) одновременно, что позволяет встроить ownCloud в существующую инфраструктуру. Также был переработан механизм кеширования, что улучшит отзывчивость и полнотекстовая система поиска по файлам.

Поздравляю, тебе досталась, возможно, первая в мире статья, в которой системы персонального файлохранилища, разворачиваемые на домашних серверах и NAS’ах, не называют «персональным облаком». На этом радости не заканчиваются - мы сравним лучшие продукты этого класса. В качестве бонуса мы поговорим о нескольких интересных устройствах, на базе которых можно все это богатство разворачивать с максимальным комфортом.

Есть очень простой способ понять, нужно ли тебе поднимать собственное хранилище, или же можно обратиться к услугам Dropbox. Стоимость дисков в пересчете на терабайт достигает 50 долларов в рознице. Железо может быть самым разным, от старого ПК до Raspberry Pi или традиционного NAS. Стоимость аренды облачного пространства в пересчете на три года (при том что средняя длительность службы современных дисковых накопителей значительно больше этого периода) существенно превышает эту сумму на один-два порядка (так, недавно появившийся у Dropbox «бизнес-аккаунт» будет стоить 750 долларов за терабайт, причем число участников ограничено пятью). Таким образом, если тебе нужно иметь доступ к большим объемам данным или же организовать хранилище для группы пользователей - это однозначно твой путь.

BitTorent Sync

В BitTorrent Sync используется подход, принципиально отличный от других систем. Синхронизация построена на основе децентрализованного peer-to-peer протокола. Если файл доступен сразу на нескольких устройствах, они могут передавать его одновременно, достигая при этом максимально возможной скорости. Для начала синхронизации каталога необходимо через веб-интерфейс указать каталог и сгенерировать для него секретный 20-байтный ключ, который одновременно и определяет права доступа (ключ может давать полные права или права только на чтение, при этом синхронизация с другими устройствами будет односторонней), и уникально идентифицирует этот каталог. На другом устройстве с установленным BitTorrent Sync теперь необходимо выбрать локальную папку и указать этот код (на мобильном устройстве можно отсканировать QR-код непосредственно с экрана компьютера). Все. Не требуется указывать никаких адресов сервера - устройства с одним и тем же кодом найдут друг друга автоматически. Для этого используется несколько механизмов: поиск в локальной сети с помощью широковещательных пакетов, пиры могут обмениваться друг с другом информацией о других известных им пирах, пир может быть задан статически указанием адреса и порта, может быть использована DHT либо BitTorrent трекер-сервер, который пиры уведомляют о своей доступности и который может быть ими использован для проксирования трафика при невозможности установить прямое соединение.

Безопасность

При передаче файлы шифруются (AES-128) и не сохраняются на каких-либо устройствах, кроме тех, что были авторизованы пользователем. Для взаимной аутентификации устройств используется SRP. Сама компания BitTorrent хотя и имеет доступ к статистике сервиса, но заявляет, что никакие данные пользователей ей принципиально не могут быть доступны.

Совместимость

Работает под OS X, Windows (начиная с XP), Linux (включая платформы ARM и PowerPC), FreeBSD, Android, iOS.

Установка

Под Ubuntu самое простое - поставить из репозитория, всего тремя строчками

$ sudo add-apt-repository ppa:tuxpoldo/btsync $ sudo apt-get update $ sudo apt-get install btsync

При этом нужно учесть, что BTSync будет запускаться под пользователем root и новые файлы будут создаваться с правами root. Проверим:

$ ps ax|grep btsync 8413 ? Sl 0:04 /usr/lib/btsync/btsync-daemon --nodaemon --config /etc/btsync/debconf-default.conf

Для настройки синхронизации каталогов необходимо зайти на страницу http://localhost:8888 . На ней доступно добавление/удаление каталогов, показывается их размер и статус синхронизации, можно посмотреть секретный код каталога и сгенерировать его заново (все клиенты со старым ключом потеряют к нему доступ). Также можно задать имя устройства, которое будет отображаться на других клиентах, порт (по умолчанию он выбирается случайным при запуске), установить ограничения на скорость загрузки и выгрузки, включить UPnP и сменить пароль доступа к веб-интерфейсу. Для других настроек необходимо заглянуть в конфигурационный файл (в Ubuntu лежит здесь):

$ sudo nano /etc/btsync/debconf-default.conf

Если в него были внесены изменения, сервис нужно перезапустить:

$ btsync-restart

Примеры конфигурационных файлов лежат здесь:

$ ls /etc/btsync/samples/ complex.conf simple.conf user-new.conf user-old.jdoe.conf

В случае если BitTorrent Sync не может синхронизировать какой-то файл (это можно понять по тому, что в веб-интерфейсе, несмотря на то что устройство подключено к каталогу, постоянный объем данных постоянно остается несинхронизированным), необходимо заглянуть в журнал. По умолчанию в Ubuntu его размещение - /var/lib/btsync/sync.log . Если процесс синхронизации нужно запускать под текущим пользователем, можно установить другой пакет:

$ sudo apt-get install btsync-user

В этом случае настройки будут доступны (после запуска) по адресу http://localhost:8888. Установка BitTorrent Sync, к примеру, на WD My Book Live ненамного сложней. Сначала нужно загрузить и распаковать архив:

# mkdir ~/btsync && cd ~/btsync # wget http://btsync.s3-website-us-east-1.amazonaws.com/btsync_powerpc.tar.gz # tar -xvf btsync_powerpc.tar.gz

Создадим конфигурационный файл по умолчанию:

# ./btsync --dump-sample-config > btsync.conf

Добавим файл автозапуска:

# nano /etc/init.d/btsync #! /bin/sh # /etc/init.d/btsync case "$1" in start) /root/btsync/btsync --config /root/btsync/btsync.conf ;; stop) killall btsync ;; *) echo "Usage: /etc/init.d/btsync {start|stop}" exit 1 ;; esac exit 0

# chmod 755 /etc/init.d/btsync # update-rc.d btsync defaults

И стартуем:

# /etc/init.d/btsync start

Обязательно нужно сменить пароль для доступа через веб, а лучше запретить веб-доступ с помощью конфигурационного файла.


Выводы

Поскольку центрального хранилища в BTSync нет, все участники равны, и, если две группы участников некоторое время выйдут из синхронизации, потом будет сложно разобраться в том, какая из версий основная. Синхронизация через HTTP/HTTPS не поддерживается (в конце концов, это же торрент-протокол), поэтому далеко не всегда он сможет пройти через сетевые экраны, и в современной защищенной корпоративной среде ему приходится туго. Нет возможности дать общий доступ к отдельному файлу/каталогу через веб. Администрирование большого количества каталогов и устройств затруднено. Невозможно дать доступ для синхронизации к каталогу, находящемуся внутри уже синхронизируемого каталога. Недостатки BTSync - нельзя синхронизировать подпапку уже синхронизированной папки. BitTorrent Sync производит отличное впечатление профессионально сделанного сервиса и прекрасно покрывает задачи синхронизации огромных объемов данных между любым количеством пользователей при сравнительно небольшом количестве синхронизируемых каталогов и в не очень закрытых сетях. Он удобен в установке и использовании и надежен. Но функционал его строго ограничен, и это решение может оказаться не очень подходящим для более сложных задач.

OwnCloud

OwnCloud - одна из самых старых, развитых и наиболее известных систем. Она распространяется в исходных кодах и предоставляет очень широкий функционал: хранилище файлов с версионированием, календарь, задачи, контакты, новости, закладки, просмотр документов, музыкальные и фотогалереи, синхронизация всего этого с настольными компьютерами и мобильными устройствами, совместный доступ через веб, поиск по содержимому файла. Использование в качестве внешних хранилищ Dropbox, FTP, S3, WebDAV. Возможность написания собственных плагинов. Поддержка LDAP. Это далеко не полный перечень того, что может OwnCloud. Функционально она превосходит многие бесплатные сервисы, в том числе предоставляемые Google (Mail, Calendar, Contacts, Tasks, покойный уже Reader и другие), но при этом может быть полностью развернута в своей сети. Также поддерживается шифрование на серверной стороне.


Клиент для синхронизации использует протокол HTTP/HTTPS и поддерживает прокси, соответственно, будет работать в большинстве корпоративных сетей через сетевые экраны и прокси. Конечно, синхронизация будет медленнее, чем у BitTorrent Sync, зато он работает практически везде. Пользователи могут не только предоставлять доступ к файлам и папкам через веб, но и раздавать их зарегистрированным пользователям для синхронизации, при этом они будут доступны в папке Shared. К сожалению, не поддерживается синхронизация между серверами и нет горячего резервирования из коробки. Можно только сделать резервную копию. Хотя в случае отказа сервера на клиентских устройствах копии сохранятся, в схеме с центральным хотелось большей надежности, чем дает ручное восстановление из бэкапа при отказе.

Совместимость

Работает под Windows, OS X, Linux, iOS, Android. Сервер можно поднять даже под OpenWRT, и она заработает (хотя и не быстро) даже на домашнем маршрутизаторе, есть версия для ARM (ни то, ни другое Dropbox никогда не планировал даже для клиента). Поддерживается широким перечнем коммерческих сетевых хранилищ: WD My Book Live, QNAP, Synology… К сожалению, официальные клиенты OwnCloud для мобильных устройств платные, но, поскольку сервер поддерживает открытые протоколы (WebDAV для доступа к файлам, CalDAV - для календаря и так далее), использовать только их необязательно. Написан OwnCloud на PHP, и для его развертывания на выбор доступен широкий выбор стандартных средств: веб-серверы Apache, nginx, lighttpd и другие, базы данных SQLite, MySQL, PostgreSQL и другие.

Установка

Сервер ставится просто (хотя в репозиториях Ubuntu 13.04 и есть пакет OwnCloud, но он старой версии): Добавляем ключи:

$ wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_13.04/Release.key $ sudo apt-key add - < Release.key $ sudo sh -c "echo "deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_13.04/ /" >> /etc/apt/sources.list.d/owncloud.list" $ sudo apt-get update

И ставим:

$ sudo apt-get install owncloud

Если нужно установить только клиент, то:

$ sudo apt-get install owncloud-client

Поставили сервер - открыли в браузере http://localhost/owncloud . В окне первого запуска нужно указать, что будет использоваться SQLite (не рекомендуется, если пользователей больше одного, но для пробы вполне подойдет), имя-пароль администратора - и вуаля! В клиенте необходимо для начала синхронизации указать адрес сервера. На самом деле нужно проверить и подправить еще несколько параметров. По умолчанию PHP ограничен максимальный размер загружаемых файлов. В файле /etc/php5/apache2/php.ini нужно изменить параметры uploadmax filesize и postmax size, задав их, скажем, равными 2 и 2,2 Гб соответственно:

$ sudo nano /etc/php5/apache2/php.ini # upload_max_filesize = 500 MB upload_max_filesize = 2 GB # post_max_size = 600 MB post_max_size = 2.2 GB

И рестартовать Apache:

$ sudo service apache2 restart

Также не помешает проверить, что в настройках Apache разрешено использование файлов.htaccess и mod_rewrite: убедиться, что в разделе /var/www файла виртуальных хостов Apache (как правило, /etc/apache2/sites-enabled/000-default) AllowOverride установлен в All, выполнить a2enmod rewrite и a2enmod header и рестартовать Apache (подробнее см.). Безусловно, веб-сервер будет необходимо переключить на работу по HTTPS. Модификации конфигурационных файлов, необходимые при применении nginx вместо Apache, приведены .

Безопасность

Данные между клиентом и сервером передаются по протоколу HTTPS (если, конечно, он включен). Шифрование файлов, как уже отмечалось, поддерживается только на серверной стороне. Это значит, что тот, кто контролирует сервер, может получить к ним доступ.


Выводы

При всей уникальности функционала OwnCloud впечатление сильно портят различные недоработки и баги. Когда клиент после штатного обновления внезапно начинает пересинхронизировать 300 Мб файлов или когда ошибка в конфигурации внешнего WebDAV-хранилища приводит к тому, что веб-интерфейс становится полностью недоступен, и единственное средство это исправить - корректировка базы данных прямыми SQL-запросами, сложно решиться доверить ему действительно ценные данные.

AeroFS

AeroFS предназначен для синхронизации файлов и предоставления к ним общего доступа. Обмен данными идет между устройствами напрямую, сервер используется для управления и администрирования пользователей; поддерживается версионирование фалов. Попробовать AeroFS можно без развертывания сервера, воспользовавшись облачным сервисом, который в бесплатной версии поддерживает до трех участников (teammates) и одного внешнего пользователя (collaborator) без ограничений на объем (так как файлы не хранятся на сервере) и количество устройств на одного пользователя.


Совместимость

Сервер Team Server работает под Windows, Linux, OS X. Клиент AeroFS Desktop поддерживает Windows, Linux, OS X, Android.

Безопасность

По заявлению разработчиков, все данные, передаваемые между устройствами, шифруются с помощью AES-256-CBC. Файлы не хранятся на серверах, хотя могут проксироваться через relay-сервер, если устройствам не удалось установить прямое соединение друг с другом. Подробнее .

Установка

Для установки клиента под Ubuntu необходимо загрузить deb-пакет и установить его:

$ sudo dpkg -i aerofs-installer.deb

Затем нужно запустить Applications → Internet → AeroFS. При щелчке правой кнопкой мыши на появившейся в трее иконке появится меню, похожее на меню Dropbox. В настройках можно задать свое имя и имя компьютера, локальный каталог для синхронизации, ограничить полосу пропускания и так далее. Также с его помощью можно предоставить общий доступ к каталогу, указав список почтовых адресов тех, кому дается доступ. При нажатии на кнопку «Network Diagnostics…» можно просмотреть список компьютеров, доступных для данного устройства. Есть клиенты для работы в командной строке: aerofs-cli - демон и aerofs-sh - работа в интерактивном режиме. Аналогичная процедура нужна для установки сервера:

$ sudo dpkg -i aerofsts-installer.deb

Запустим:

$ aerofsts

В появившемся окне зададим почтовый адрес администратора сервера, его пароль и имя сервера. Выберем, где будем хранить данные, на локальном диске или Amazon S3. Для локального диска укажем папку, в которой будут храниться данные, и их вид: с сохранением файловой структуры или в сжатом виде. Во втором случае можно достичь значительной экономии дискового пространства, но доступ к файлам можно будет получить только с помощью утилит, идущих в комплекте с сервером.

По завершении начальной настройки сервер автоматически синхронизирует локальный каталог с другими устройствами, идентифицировав пользователя AeroFS по почтовому адресу, введенному при настройке. При этом, хотя и установленный локально, сервер будет являться частью облака AeroFS и на него будут распространяться ограничения бесплатной версии (три участника и один внешний пользователь). В системном трее появится точно такая же иконка, как у клиента, отличающаяся выпадающим меню. В нем будет пункт Manage Team, ведущий на страницу администрирования, и не будет Pause syncing for an hour и Invite a friend to AeroFS.

Как и в случае с клиентом, для сервера есть варианты для работы из командной строки: aerofsts-cli и aerofsts-sh.

Выводы

Если число пользователей, требующих разных прав доступа, никогда не превысит трех (число устройств, напомним, не ограничено), можно присмотреться к Seafile поближе - сервис очень простой и удобный, хотя и ограниченный по функциональности. Если же пользователей может в перспективе стать больше, то начиная с четырех придется платить по 10 долларов в месяц за каждого (!) участника (число внешних пользователей при этом будет неограниченным).

Seafile

Seafile создан китайскими разработчиками и распространяется в исходных кодах. Он позиционируется как средство синхронизации файлов и совместной работы для команд. Seafile, как и OwnCloud, использует центральное хранилище, к которому подключаются клиенты. Серверная часть существует в двух редакциях: Open Source и Professional. Пользователи профессиональной версии, кроме технической поддержки, получают дополнительные функции, такие как возможность использовать Amazon S3 в качестве хранилища файлов, WebDAV, поиск файлов, предварительный просмотр для файлов doc и ppt, масштабирование, повышенную доступность и улучшенную интеграцию с почтой. Профессиональная версия доступна также для персонального использования с ограничением до пяти пользователей. Поскольку Seafile позиционируется не только как сервис файловой синхронизации, но и как средство совместной работы, в нем предусмотрены такие инструменты, как встроенная вики, ведение списков задач, общий доступ к файлам через веб, онлайн-просмотр файлов с дискуссиями, управление учетными записями и группами, поддержка LDAP, обмен сообщениями.


Seafile основан на модифицированной под задачи файловой синхронизации модели Git. Основным понятием в Seafile является библиотека (аналог Git-репозитория), которая соответствует группе каталогов. В отличие от Git, файлы разделяются на блоки для более эффективной передачи по сети и хранения. Для начала синхронизации нужно загрузить библиотеку с сервера к себе на диск. При необходимости можно создавать sub-library для подкаталогов. Можно не только давать права пользователям и группам на синхронизацию библиотек, но и открывать общий доступ через веб как к отдельным файлам, так и к каталогам с правами только на чтение или и на чтение, и на запись. В качестве сервера баз данных Seafile может использовать SQLite, MySQL, PostgreSQL, веб-серверы Apache и nginx. Воспользоваться Seafile можно и без установки своего сервера - облачный сервис Seacloud, построенный на основе Seafile, в бесплатном тарифном плане предоставляет 1 Гб бесплатного дискового пространства и 5 Гб включенного трафика. Для оценки возможностей, предоставляемых Seafile, можно ознакомиться с демо-версией .

Совместимость

Сервер работает под Linux (существует специальная версия для Raspberry Pi) и Windows. Клиенты для настольных систем есть для Windows XP, 7, Vista, Linux (как апплеты, так и терминальные), Mac OS X 10.6+. Мобильные клиенты работают на Android и iPad/iPhone.

Безопасность

Библиотеке при ее создании можно задать пароль, с которым она будет зашифрована алгоритмом AES-128. Также на основе пароля генерируется специальный токен, который будет потом использоваться сервером для проверки возможности доступа к библиотеке. После задания пароль изменить нельзя, можно только создать новую библиотеку. Дальнейшее шифрование/дешифрование файлов с использованием пароля, по утверждению авторов, осуществляется только на клиентской стороне. Обмен между клиентом и сервером также шифруется AES-128.

Установка клиента

Зарегистрируемся в сервисе seacloud.cc. На странице загрузки выберем версию клиента, соответствующую нашей системе. Для Ubuntu это deb-пакет, устанавливаемый обычным способом, например:

$ sudo -i seafile_1.8.1_amd64

Запустим:

$ seafile-applet

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

Выставляем настройки
синхронизации

Если у Windows-клиента предусмотрена возможность автозапуска, то под Linux нужно вручную, скажем, добавить запуск апплета в cron:

$ crontab -e

Добавить строку:

@reboot /usr/bin/seafile-applet

Поэкспериментировав с клиентским приложением, подключенным к Seacloud, продолжим с серверной частью. Для установки сервера необходимо загрузить архив со страницы http://seafile.com/en/download/ и разархивировать его:

$ mkdir haiwen $ mv seafile-server_* haiwen $ cd haiwen $ tar -xzf seafile-server_*

$ mkdir installed $ mv seafile-server_* installed

Установить дополнительные пакеты:

$ sudo apt-get update $ sudo apt-get install python2.7 python-setuptools python-simplejson python-imaging sqlite3

Запустить установщик

$ cd seafile-server-* $ ./setup-seafile.sh $ ulimit -n 30000

и ответить на несколько вопросов, подтвердив в конце правильность данных:

This is your config information: server name: server-name server ip/domain: 192.168.1.1 server port: 10001 seafile data dir: /home/alykoshin/haiwen/seafile-data seafile port: 12001 httpserver port: 8082 If you are OK with these configuration, press to continue.

Обратите внимание, что адрес/домен должен быть именно тем адресом или доменом, по которому к нему будут обращаться клиенты, то есть если у сервера несколько адресов (приватный и публичный), работать с ним клиенты смогут только по одному из них. И еще пара ответов:

This is your seahub admin username/password admin user name: [email protected] admin password: ************** If you are OK with these configuration, press to continue.

Для запуска сервера необходимо стартовать два сервиса: $ ./seafile.sh start $ ./seahub.sh start

Синхронизация в про-
цессе

После запуска сервера администрирование доступно по адресу http://localhost:8000/. Для входа необходимо указать почтовый адрес и пароль, введенные при установке. Новые пункты System Admin и Workspace в верхней строке предоставляют доступ к системному администрированию и уже привычному рабочему пространству Seafile соответственно. Создадим новую библиотеку и загрузим ее. В открывшемся веб-интерфейсе локального клиента мы увидим обе библиотеки, и с seacloud.cc, и с нашего локального сервера.

Seafile показывает
статус нашей папки

Автоматический запуск можно настроить аналогично настройке автозапуска BitTorrent Sync под WD My Book Live выше. Подробнее установка описана в интернете .

Резервное копирование

Если нет необходимости организовать синхронизацию, а нужен механизм для резервных копий, можно взглянуть в сторону CrashPlan, с помощью которого можно настроить бесплатный бэкап, например, на компьютер приятеля, и, наоборот, с его компьютера - на твой. CrashPlan не предоставляет возможность развернуть у себя свой сервер, и за резервное копирование в облако придется платить.

Amazon Glacier

Чуть больше года назад Amazon запустила облачный сервис под названием Glacier (ледник), предназначенный для хранения резервных копий, с крайне низкой стоимостью хранения данных (1 цент за гигабайт данных) и большим временем доступа к сохраненной на нем информации - несколько часов. В целом Glacier очень интересный вариант для резервного хранения, однако при оценке общих затрат на него следует учитывать, что Амазон взимает плату не только за хранение, но и за передачу данных и запросы к хранилищу. Для его использования можно применять утилиту s3sync, с помощью которой настраивается синхронизация в облачное хранилище S3, и уже в нем настроить политику переноса данных в Glacier. Альтернативой s3sync является файловая система s3fs, которая позволяет удаленно смонтировать bucket S3.

Домашние сетевые хранилища

WD My Book Live и WD My Book Live Duo

Тем, кто не хочет играть в конструктор и собирать сетевой накопитель самостоятельно, стоит посмотреть на продвигаемые как персональное облачное хранилище продукты Western Digital. My Book Live содержит один жесткий диск емкостью 1, 2, 3 Tб и порт гигабитного Ethernet. В накопителе My Book Live Duo находятся два жестких диска суммарной емкостью 4, 6, 8 Тб, которые можно либо использовать в нерезервируемой конфигурации, либо зеркалировать в массив RAID 1. Кроме того, в него добавлен USB-порт, которого нет в версии с одним диском. Тихий, небольшой, стильно выглядящий, напоминающий дизайном толстую (очень) черную книгу. Внутри - процессор ARM и полнофункциональный Debian. В Сети можно найти много инструкций по установке и настройке на нем многих популярных программ.

Raspberry Pi

С Raspberry Pi нельзя добиться скоростей, доступных настоящим NAS’ам и домашним серверам. Для серьезных жестких дисков понадобится дополнительное питание, а для подключения будут доступны только USB-порты, никаких SATA/eSATA. Однако у «малинки» есть ощутимое преимущество - ее поддерживают разработчики почти всех описываемых в статье продуктов. В большинстве случаев проблем не возникнет и с двумя другими платформами, но Raspberry Pi остается явным фаворитом.

Seagate GoFlex Net/Home

Решение от Seagate - это брендированная версия популярного на Западе, но почти неизвестного у нас семейства Pogoplug. Во многом это похоже на то, что предлагает Western Digital. Версия Net позволяет установить два фирменных диска объемом от 0,5 до 1,5 Тб каждый, версия Home поставляется сразу с диском и замены не предполагает. Внутри - полноценная NAS-платформа от Marvel с процессором, работающим на частоте 1,2 ГГц и 128 Мб памяти. Доступен гигабитный Ethernet-разъем и один USB-порт. Очень легко перепрошивается на Arch Linux, также совместим с последними версиями Debian.

Заключение

Каждый из четырех инструментов синхронизации и совместной работы с файлами, рассмотренных в статье, имеет положительные и отрицательные стороны. Описанные программы не единственные - за рамками обзора остался, к примеру, SparkleShare, использующий систему контроля версий Git. Идеального инструмента, к сожалению, среди них нет. Однако можно точно сказать, что с их помощью можно избавиться от Dropbox-зависимости и развернуть собственный приватный сервис с несопоставимо большим объемом и за существенно меньшие деньги, не подвергая свои приватные данные рискам хранения на внешнем хостинге.

Покажи эту статью друзьям.