На днях пробовал 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ит все его плюсы на нет.