Nextcloud: не только хранилище

Автор: Евгений Голышев

Статья была опубликована в 233-м выпуске журнала Linux Format. По истечении двух месяцев с момента публикации статьи материал публикуется в нашем блоге.

Nextcloud – это платформа, которая позволяет развернуть на своих вычислительных мощностях альтернативу сразу нескольким коммерческим сервисам. В арсенале этой платформы имеются средства для синхронизации контактов, календарей, списков дел и SMS между различными устройствами, а также голосовые и видеозвонки. Однако Nextcloud – это в первую очередь платформа для создания Dropbox-подобного хранилища на своем собственном сервере. В данной статье я хочу рассказать о том, что предлагает Nextcloud 13, и от каких публичных сервисов можно отказаться прямо сейчас; но для начала немного истории.

Сначала был ownCloud

Nextcloud начинался как проект под названием ownCloud и сейчас является его логическим продолжением. ownCloud был анонсирован на конференции Camp KDE 2010 и стартовал в рамках инициативы KDE Social Desktop (о которой подробно рассказыва-
лось в LXF122). Проект задумывался как свободный аналог закрытых решений, самыми известными из которых на тот момент были Dropbox и Ubuntu One.

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

Однако выбранная компанией бизнес-модель, предполагавшая наличие двух версий платформы – Community Edition и Enterprise Edition, в основном требовала концентрации на коммерче­ской версии платформы Enterprise Edition, с целью получения максимальной прибыли: это задача любого бизнеса, и дело тут не в цинизме. Разработчики испытывали сильный дискомфорт, поскольку сложно было уделять внимание одной версии без ущерба для другой. И 2 июня 2016 г. ключевые разработчики проекта приняли решение форкнуть ownCloud с целью его альтернативного развития. Новый проект, получивший имя Nextcloud, вобрал в себя все коммерче­ские функции, ранее доступные в ownCloud Enterprise Edition. Более того, вскоре после форка была создана компания Nextcloud GmbH, с целью предоставления коммерче­ской техниче­ской поддержки всем тем, кто использует платформу на производстве или создает собственные продукты на базе Nextcloud. Таким образом, разработчикам теперь не надо разрываться между двумя версиями платформы, а текущая бизнес-модель компании стала ближе по духу к философии свободного программного обеспечения.

Почему Nextcloud популярен

Не секрет, что сейчас Nextcloud является одним из популярнейших представителей серверного программного обеспечения. Тем не менее, когда разработчики ownCloud только пришли на рынок со своим продуктом, на первых порах он не был востребован широким кругом пользователей, но немного позднее произошли несколько независимых друг от друга событий, которые сильно подогрели интерес сообщества сначала к ownCloud, а затем и к Nextcloud. Вот, на мой взгляд, наиболее значимые из них.

  • Откровения Эдварда Сноудена в 2013-м году заставили многих задуматься о том, что необходимо полностью или частично ограничить себя в использовании публичных Интернет-сервисов.
  • Одноплатный компьютер Raspberry Pi, появившийся в 2012-м году, породил целую волну достаточно мощных устройств, которые могут использоваться в качестве сервера и в буквальном смысле доступны каждому. К примеру, сегодня легко можно найти 50-долларовый одноплатник с 4-х ядерным процессором, 2 ГБ ОЗУ и нативной поддержкой SATA. Этого будет вполне достаточно для того, чтобы построить на базе Nextcloud полноценный NAS и обслуживать десяток пользователей.
  • Некоммерческий удостоверяющий центр Let’s Encrypt в конце 2015-го года начал выдавать TLS-сертификаты всем желающим.

Первое событие стало отличным источником мотивации, а последние два в несколько раз снизили затраты на приобретение и сопровождение домашнего сервера. Несмотря на то, что по очевидным причинами решение на базе Raspberry Pi и Nextcloud является медленным и ненадежным, оно очень популярно в силу своей простоты.

Установка Nextcloud

Пришло время установить Nextcloud и начать обзор его возможностей. Возможности платформы – это основная тема статьи, а установка является скорее ее побочной частью. Таким образом, для того чтобы не погружаться в установку сильно глубоко, я предлагаю развернуть Nextcloud посредством Docker. Для этих целей я специально подготовил проект MMB, который поможет развернуть платформу на машине на базе 32-битного процессора ARM (Raspberry Pi, Orange Pi, Banana Pi и т.д.) или 64-битного процессора x86 (рабочие станции и серверы). Я уже описывал установку Nextcloud при помощи MMB в одной из предыдущих статей.

Apps: модульная природа Nextcloud

Сначала ownCloud задумывался как свободный аналог Dropbox и Ubuntu One, но 30-го января 2012-го года вышел ownCloud 3.0 с поддержкой так называемых приложений (apps), которые существенно расширяли базовый функционал платформы, превращая ее в Dropbox-подобное хранилище на стероидах. С тех пор было выпущено большое количество как официальных, так и сторонних приложений. Сейчас, такие функции Nextcloud, как голосовые и видеозвонки, синхронизации контактов, календарей, списков дел и SMS между различными устройствами, а также много других возможностей, реализованы именно в виде приложений. Казалось бы, что может быть проще, чем открыть PDF-файл, не покидая веб-интерфейс платформы. Но даже такая функция не предусмотрена базовой версий Nextcloud и реализована в виде отдельного приложения.
Nextcloud делит приложения на те, которые сразу доступны после установки, и на те, которые необходимо предварительно активировать. Так, сразу после установки Nextcloud и создания учетной записи администратора, такие приложения, как галерея, видеопроигрыватель и просмотрщик документов в формате PDF, будут доступны сразу. Дело в том, что эти приложения считаются относительно простыми, т.к. не требуют изменения базы данных, и могут быть молча активированы без видимых последствий для всей платформы. Однако, такие приложения, как Calendar и Contacts (синхронизация календарей и контактов между различными устройствами), требуют внесения изменений в базу данных, что уже является чем-то серьезным. Активация таких приложений должна быть инициирована администратором платформы. Все приложения, которым будет посвящена оставшаяся часть статьи потребуют активации после установки Nextcloud, поэтому кликните на том месте, где должна быть аватарка (в правом верхнем углу экрана), и в появившемся меню выберите Приложения (Apps). Затем в списке Ваши приложения (Your apps) найдите Calendar, Contacts, Notes, Phone Sync и Talk и нажмите напротив каждого из них Включить (Enable). А теперь я предлагаю перейти к обзору основных возможности Nextcloud – синхронизация файлов между различными устройствами, а затем рассмотреть каждое из этих приложений по отдельности.

File Sync

Nextcloud – это в первую очередь Dropbox-подобное хранилище, поэтому его основные задачи – организация приватного или общего доступа к файлам, синхронизация их между различными устройствами и т.д. Доступ к файлам может быть организован как через веб-интерфейс, так и через клиенты. Официальные клиенты доступны для всех популярных мобильных и настольных операционных систем. Более того, Nextcloud предоставляет доступ к файлам по протоколу WebDAV, поэтому для работы с хранилищем достаточно возможностей штатного файлового менеджера. WebDAV (Web-based Distributed Authoring and Versioning) представляет собой расширение протокола HTTP. Его основной задачей является предоставление клиентам возможности монтирования разделяемых ресурсов (shares) поверх HTTP так, чтобы их поведение принципиально не отличалось от таких сетевых файловых систем, как NFS или SMB. Однако стоит заметить, что по сравнению с файловыми менеджерами со встроенной поддержкой WebDAV официальные клиенты предлагают расширенные возможности работы с хранилищем. Поэтому я настоятельно рекомендую установить клиенты Nextcloud на все свои устройства для удобства работы с платформой.

Calendar и Contacts

Приложение Calendar не уступает конкуренту от Google.

Синхронизация календарей и контактов между различными устройствами являются одной из самых востребованных возможностей после синхронизации файлов. Как ни странно, Google давно преуспел в решении этой задачи, а Nextcloud предлагает в лице приложений Calendar и Contacts альтернативу известному сервису. Эти приложения организуют доступ к календарям и контактам по протоколам CalDAV и CardDAV, которые являются расширениями WebDAV (см. выше). Существует достаточно много клиентов, поддерживающих эти протоколы, но среди них нет официального. Тем не менее, разработчики Nextcloud рекомендуют использовать свободный клиент под названием DAVdroid, поддерживающий сразу оба протокола. DAVdroid позволяет синхронизировать штатные календарь и записную книжку в операционной системе с сервером. При этом синхронизация является двухсторонней, т.е., например, любое изменение на сервере приводит к изменению в штатном календаре, и наоборот.
Для того чтобы начать синхронизации, сначала установите на мобильное устройство DAVdroid и официальный клиент Nextcloud. Затем запустите последний, авторизуйтесь, перейдите в настройки приложения и выберете в меню «Синхронизировать календарь и контакты» (Sync calendar & contacts). После этого запустится DAVdroid и вам потребуется ввести только пароль от учетной записи Nextcloud, т.к. все остальные параметры для подключения к DAV-серверу будут предзаполнены. На первых порах DAVdroid будет задавать много вопросов. Он спросит, нужно ли отключить оптимизацию батареи, предложит установить приложение OpenTask для синхронизации ко всему прочему еще и списка задач, потребует разрешение на доступ к штатному календарю и записной книжке. Отнеситесь к этому с пониманием. После того как настройка будет закончена, вы сможете указывать в DAVdroid, какие из существующих календарей синхронизировать с сервером, а также создавать новые. К этому моменту DAVdroid установлен и настроен, поэтому не составит никакого труда заставить его синхронизировать штатную записную книжку с сервером.

Phone Sync

Приложение Phone Sync – единая точка сбора SMS со всех ваших устройств.

Примечательно, что Google, будучи разработчиком Android, не предлагает решение доступное прямо «из коробки» в своей операционной системе для синхронизации SMS с удаленным сервером. Очевидно, что это достаточно редкая необходимость, востребованная в узких кругах. Тем не менее, эта задача решается достаточно изящно посредством SMS Backup+ – свободного приложения под Android, которое позволяет синхронизировать SMS с gmail’овским ящиком. Однако, несмотря на то, что решение выглядит красиво, в качестве хранилища используется неподконтрольный пользователю публичный сервис, поэтому я расскажу об альтернативном подходе, который предлагает Nextcloud. Для этих целей в арсенале платформы есть официальное приложение и мобильный клиент под названием Nextcloud SMS. Клиент ставится на все мобильные устройства, которые требуется синхронизировать с сервером, но к счастью или сожалению, синхронизация SMS с сервером не является двусторонней, как например, в случае синхронизации календарей и записной книжки. Таким образом, каждое новое сообщение, приходящее на устройство, синхронизируется с сервером, но удаление этого сообщения на сервере, не приводит к его удалению на устройстве.

Notes

Приложение Notes отлично дополняет арсенал платформы функ­цией ведения
заметок.

Возможность ведения заметок в Nextcloud присутствует, но по своим возможностям не дотягивает ни до Google Keeps, ни тем более до Evernote. Однако, функция реализована в платформе настолько просто и красиво, что мало кого оставит равнодушным. Дело в том, что каждая заметка представляет собой обычный текстовый файл, а приложение и официальный мобильный клиент Nextcloud Notes являются простыми редакторами этих файлов. Таким образом, заметки автоматически получают в свое распоряжение все возможности платформы: шифрование, общий доступ, версионирование и т.д. При этом для пользователя все максимально прозрачно, т.е. он работает с сущностью «заметка», а не «файл».

Talk

Приложение Talk претендует на звание лучшей альтернативы Skype и Hangouts.

Возможность совершения голосовых и видеозвонков уже существует в Nextcloud достаточно давно, но она была признана готовой только в 13-й версии платформы, и теперь известна всему миру под именем Nextcloud Talk. В арсенале платформы есть как официальное приложение, так и клиенты под Android и iOS. Стратегической целью разработчиков является обеспечение паритета в функциональности с такими известными в этой области решениями, как Skype и Hangouts. Однако, на данный момент возможности мобильных клиентов немного отстают от того, что предлагает приложение, ограничиваясь только голосовыми и видеозвонками. Тем не менее, платформа предлагает следующие возможности:

  • end-to-end шифрование. Даже в случае компрометации сервера данные не поддаются анализу, т.к. шифруются на стороне клиента.
  • Возможность организации групповых аудио и видеоконференций.
  • Возможность приглашения участников, у которых нет учетных записей в системе.
  • Возможность предоставления доступа к содержимому экрана.

К особенностям платформы можно отнести организацию канала связи при помощи WebRTC и кодирование звука и видео с помощью H.265.
Для использования Nextcloud Talk в локальной сети не требуется никакой настройки, однако от него в этом случае будет мало толка. Для полноценного общения через Интернет понадобятся STUN- и TURN-сервер. STUN (Session Traversal Utilities for NAT) позволяет установить прямое соединение между двумя и более участниками, находящимися за NAT. Официальное приложение по умолчанию использует для этих целей stun.nextcloud.com:443, поэтому в ряде случаев от администратора Nextcloud не требуется никаких действий. Тем не менее, STUN-сервера может оказаться недостаточно, и первым сигналом этому будет черный экран при установлении соединения между участниками. Дело в том, что STUN-сервер бессилен, если участники находятся за так называемым симметричным NAT. В этом случае на помощь приходит TURN-сервер. TURN (Traversal Using Relay NAT) расширяет возможности STUN, позволяя установить прямое соединение между двумя и более участниками, которые находятся за симметричным NAT. Возможно в недалеком будущем ситуация изменится, но сейчас TURN-север необходимо поднимать для своих нужд самостоятельно. Для этих целей я настоятельно рекомендую использовать coturn. Для того чтобы собрать и запустить свежую версию coturn, я предлагаю снова обратиться к MMB.

Заключение

Nextcloud имеет богатую историю и такой же богатый список возможностей, и я думаю, что у меня получилось уделить достаточное количество внимания как первому, так и второму. Основная мысль, которую я хотел выразить в этой статье, заключается в том, что Nextcloud способен решать широкий спектр различных задач, которые выходят далеко за рамки хранилища файлов в стиле Dropbox. Таким образом, если вы обзаведетесь сервером на базе Nextcloud, перед вами откроются большие возможности, которые будут расти от релиза к релизу платформы. Основной недостаток и главное преимущество Nextcloud являются двумя сторонами одной медали: для того чтобы ваш экземпляр платформы всегда оставался безопасным и находился в актуальном состоянии, вам необходимо самостоятельно следить за выходом обновлений и своевременно их устанавливать, не забывая перед этим делать резервные копии базы данных и т.д., но это необходимое условие для того, чтобы всегда держать все свои данные под контролем. Удачного хакинга и не забывайте, что с великой силой приходит великая ответственность.

Leave a Reply

Your email address will not be published. Required fields are marked *