Представлен релиз открытой платформы Seafile 2.1, предназначенной для создания сервиса облачного хранения данных, организации совместной работы и синхронизации данных. По своей сути Seafile напоминает сервис Dropbox, но отличающегося возможностью развёртывания на собственном подконтрольном оборудовании и использованием технологий Git. Помимо базовых функций хранения на удалённом сервере и обеспечения синхронизации данных между компьютерами, Seafile предоставляет гибкие возможности по организации совместной работы с контентом.
Для удобства совместной работы поддерживается создание рабочих областей, в которых члены группы могут размещать произвольную информацию, интересную для участников группы. Наборы файлов могут объединяться в библиотеки, к которым может открываться доступ для отдельных пользователей или групп, а также публичный доступ. Для отслеживания изменения файлов в областях совместного доступа, предусмотрена возможность отправки уведомлений членам группы. Каждая библиотека воспринимается как отдельное хранилище и может синхронизироваться между машинами пользователя по отдельности.
Клиентская часть поддерживает обеспечение синхронизации данных между локальной директорией и определённой библиотекой в облачном хранилище. В web-интерфейсе поддерживаются функции предварительного просмотра и редактирования различных типов файлов, возможность обсуждения файлов с участниками группы, функции ведения списков задач, средства управления проектами, Wiki для совместного создания контента.
Код проекта написан на языке Python и распространяется под лицензией GPLv3, для хранения метаданных может применяться SQLite или MySQL. Кроме серверной части, параллельно развиваются десктоп-клиент для синхронизации файлов, web-интерфейс SeaHub и мобильные клиенты Seadroid и Seafile-iOS для платформ Android и iOS. Готовые бинарные сборки клиентской части сформированы для Ubuntu, Windows, OS X, Android и iOS. Сборки сервера доступны для Debian, Ubuntu, CentOS/RHEL, Raspberry Pi и Windows.
Новый выпуск примечателен следующими улучшениями:
- Улучшен web-интерфейс: переработана система навигации, выполнена чистка от нагромождений, проведена работа по упрощению работы, изменено оформление модуля для вывода уведомлений, добавлена поддержка размещения ссылок для организации совместного доступа, добавлен ввод капчи при входе для защиты от атак по подбору пароля, расширены возможности интерфейса для администратора и добавлены гибкие настройки для кастомизации;
- Изменено оформление графического интерфейса для десктоп-систем;
- Подготовлены средства для упрощения начала работы новыми пользователями: обеспечено автоматическое создание персональной библиотеки при первом входе (по умолчанию в библиотеке размещено руководство пользователя, но администратор может на своё усмотрение изменить предлагаемый по умолчанию состав).
В сервер встроены страницы online-помощи.
- Реализована поддержка доступа к хранилищу через WebDAV и монтирование с использованием FUSE-модуля (через FUSE пока поддерживается только доступ на чтение);
На уровне хранения данных библиотеки представлены в форме, напоминающей Git-репозитории. Данная особенность даёт возможность использования версионного контроля, в том числе поддержку доступа к прошлым редакциям хранимого контента, возможность отследить все внесённые изменения (кто, когда и что менял), вернуть прошлое состояние файла или восстановить случайно удалённый файл. Для обеспечения конфиденциальности данных поддерживается шифрование на стадии до отправки информации на сервер (администрация сервера не сможет просмотреть содержимое, не зная пароля). Передача данных между клиентом и сервером ведётся с использованием шифрования.
В основе Seafile лежат технологии, применяемые в системе управления исходными текстами Git. При этом Seafile не зависит от Git и самостоятельно реализует нужные методы, которые упрощены и переработаны для выполнения задач автоматической синхронизации данных, обеспечения возобновления передачи данных в случае разрыва соединения и поддержки различных бэкендов хранения на стороне сервера. Данные хранятся с разбиением на блоки, что повышает эффективность хранения и даёт возможность ускорения передачи файлов за счёт параллельной загрузки блоков с разных серверов хранения.