Облачное хранилище позволяет не только хранить данные, но и обеспечивать совместную работу с ними в NAS.


Возможные решения


Существует несколько вариантов облачных сервисов: NextCloud, Seafile, Pydio и т.д…
Ниже рассмотрена часть из них.


Реализации облачных сервисов.

OwnCloud



Реализован на PHP/Javascript.


Возможности:


  • Возможно расширять функционал, устанавливая приложения из репозитория облака.
  • Есть интеграция с офисом Collabora и OnlyOffice.
  • Возможно использовать существующие хранилища, такие как FTP, Swift, S3, Dropbox и т.п.,
    распределяя данные между ними и локальным облаком.
  • Шифрование на клиенте.
  • Возможность предоставлять файлы внешним пользователям по e-mail.
  • Есть автоматизация операций с файлами (например, автоматическое добавление тэгов).
  • LDAP.
  • Есть аудио плеер, музыкальная коллекция, галерея плагин чтения PDF.
  • Интеграция с Zimbra.
  • Есть календари, списки задач, текстовые редакторы и т.п.
  • Антивирус и защита от ransomware.
  • Двуфакторная аутентификация.
  • Возможность имперсонации под другого пользователя (с целью отладки).

NextCloud



Форк OwnCloud. Реализован на PHP/Javascript.


Возможности:


  • Хранение файлов с использованием обычных структур каталогов, или с использованием WebDAV.
  • Есть NextCloud Talk, через который возможно делать видеозвонки и видеоконференции.
  • Синхронизация между клиентами под управлением Windows (Windows XP, Vista, 7 и 8), Mac OS X (10.6 и новее) или Linux.
  • Синхронизация с мобильными устройствами.
  • Календарь (также как CalDAV).
  • Планировщик задач.
  • Адресная книга (также как CardDAV).
  • Потоковое мультимедиа (используется Ampache).
  • Поддерживает разные провайдеры авторизации: LDAP, OpenID, Shibboleth.
  • Двуфакторная авторизация.
  • Разделение контента между группами или используя публичные URL. Тонкая настройка правил.
  • Онлайн текстовый редактор с подсветкой синтаксиса и сворачиванием. Анонсирована поддержка онлайн-версий редакторов LibreOffice.
  • Закладки.
  • Механизм сокращения URL.
  • Фотогалерея.
  • Просмотрщик PDF (используется PDF.js)
  • Интеграция с Collabora и OnlyOffice.
  • Модуль логирования.
  • Возможность создания свои Web-сайтов (на PicoCMS).
  • Интеграция с Outlook и Thunderbird.
  • Интеграция клиента в Gnome.
  • Возможность использовать внешнее хранилище.
  • Полнотекстовый поиск.
  • Интеграция с антивирусом.

SparkleShare


Реализован на C#.


Возможности:


  • Версионирование.
  • Шифрование на клиенте.
  • Прозрачная синхронизация между несколькими пользователями: удалённые изменения появятся в локальном каталоге, выделенном для SparkleShare.

Особенности:


  • Использует git, как бэкэнд.

Seafile



Реализован на C/Javascript.


Возможности:


  • Файлы могут быть организованы в библиотеки, которые могут быть синхронизированы между устройствами.
  • Есть клиент, позволяющий создать локальный "диск", отображённый на облако.
  • Встроенное шифрование. Все файлы шифруются клиентом и хранятся в облаке зашифрованными.
  • Поддержка мобильных устройств.
  • HTTS/TLS шифрование.
  • Есть LDAP.
  • Тонкая настройка прав.
  • Версионирование файлов.
  • Возможность создания снимка каталога, к которому потом возможно вернуться.
  • Дедупликация.
  • Поддержка блокировки файлов.
  • Совместное редактирование файлов онлайн.
  • Антивирус.
  • Тонкая настройка прав.
  • Периодический бэкап через rsync.
  • WebDAV.
  • REST API.
  • Возможность интеграции с Collabora.

Особенности:


  • Быстрый и нетребовательный к ресурсам.
  • Считается надёжным.
  • Установка прав на подкаталоги поддерживается только в платной Pro версии.
  • Интеграция с антивирусом — только в Pro версии.
  • Аудит — только в Pro версии.
  • Полнотекстовый поиск — только в Pro версии.
  • Интеграция с S3 и Ceph — только в Pro версии.
  • Онлайн просмотр Doc/PPT/Excel — только в Pro версии.

Pydio



Реализован на PHP/Javascript.


Возможности:


  • Обмен файлами не только между пользователями, но и между несколькими экземплярами Pydio.
  • SSL/TLS шифрование.
  • WebDAV.
  • Возможность создать несколько рабочих пространств.
  • Обмен файлами с внешними пользователями, с тонкой настройкой обмена (например, прямые ссылки, пароль и т.п.).
  • Встроен офис Collabora.
  • Предосмотр и редактирование изображений.
  • Есть встроенный аудио и видео проигрыватель.

ProjectSend



Реализован на PHP/Javascript.


Возможности:


  • Возможно расшаривать файлы, как между конкретными пользователями, так и между группами.
  • Полный отчёт по операциям с файлами.
  • Возможность внешним пользователям загружать файлы (с целью обмена, например прикладывать баг-репорты).

SpiderOak



Возможности:


  • Экономия места в хранилище и времени выгрузки файлов за счёт дедупликации и внесения изменений в уже имеющиеся файлы (вместо перезаписи файлов целиком).
  • Настраиваемая мультиплатформенная синхронизация.
    DropBox для синхронизации создаёт специальную папку, в которую надо помещать все синхронизируемые файлы. SpiderOak может работать с любым каталогом.
  • Сохранение всех хронологических версий файлов и удаленных файлов
  • Совместное использование папок при помощи так называемых ShareRooms, на которые устанавливается пароль.
    Файлы, обновлённые на локальном компьютере, автоматически обновляются в хранилище. Пользователи извещаются об изменениях по RSS.
  • Получение файлов с любого подключенного к Интернету устройства.
  • Полное шифрование данных по принципу «нулевого знания».
  • Поддержка неограниченного количества устройств.
  • Шифрование данных на стороне клиента.
  • Двуфакторная аутентификация.

Особенности:


Закрытая проприетарная система.


С учётом того, что данное ПО платное и частично закрытое, его использование исключается.


Установка NextCloud


Изначально было желание использовать Seafile: серверная часть реализована на C, он эффективен и стабилен. Но выяснилось, что в бесплатной версии есть далеко не всё.


Потому, я попробовал Nextcloud и остался доволен. Он предоставляет больше возможностей и полностью бесплатен.


Посмотреть, как он работает в демо-режиме вы можете здесь.


Вот общие точки сопряжения между облачным хранилищем и системой:


  • /tank0/apps/cloud/nextcloud — хранилище облачного сервиса.
  • /tank0/apps/onlyoffice — данные офиса.
  • https://cloud.NAS.cloudns.cc — WEB интерфейс облачного сервиса.

Т.к. конфигурация NextCloud достаточно объёмна и состоит из нескольких файлов, я не буду приводить их здесь.


Всё, что нужно вы найдёте в репозитории на Github.


Там же доступна конфигурация для SeaFile.


Сначала установите и запустите NextCloud.


Для этого надо скопировать конфигурацию в каталог /tank0/docker/services/nextcloud и выполнить:


# docker-compose up -d

Будет собран новый образ на основе Nextcloud 13.0.7. Если вы хотите изменить версию базового образа, сделайте это в app/Dockerfile. Я использую версию 15, но стоит заметить, что в ней не работают многие плагины, такие как загрузчик ocDownloader и заметки, а также я ещё не восстановил работоспособность OnlyOffice.


Кардинальных отличий или сильного улучшения производительности я не заметил.


Ниже я считаю, что вы используете версию 13+.


Далее, зайдите в NextCloud и выбрав в меню справа вверху "Приложения", выполните установку необходимых плагинов.


Приложения


Потребуются обязательно:


  • LDAP user and group backend — сопряжение с LDAP.
  • External Storage Support — поддержка внешних хранилищ. Нужна будет далее, с целью интеграции NextCloud и общих файлов, а также сопряжения с внешними облачными хранилищами. Про настройку внешних хранилищ я расскажу в другой статье.
  • ocDownloader — загрузчик файлов. Расширяет функциональность облака. Docker образ специально пересобран так, чтобы он работал.
  • ONLYOFFICE — интеграция с офисом. Без этого приложения, файлы документов не будут открываться в облаке.
  • End-to-End Encryption — сквозное шифрование на клиенте. Если облако используют несколько пользователей, плагин необходим, чтобы удобно обеспечить безопасность их файлов.

Желательные приложения:


  • Brute-force settings — защита от подбора учётных данных. NextCloud смотрит в Интернет, потому лучше установить.
  • Impersonate — позволяет администратору заходить под другими пользователями. Полезно для отладки и устранения проблем.
  • Talk — видеочат.
  • Calendar — говорит сам за себя, позволяет вести календари в облаке.
  • File Access Control — позволяет запрещать доступ к файлам и каталогам пользователям на основе тэгов и правил.
  • Checksum — позволяет вычислять и просматривать контрольные суммы файлов.
  • External sites — создаёт ссылки на произвольные сайты на панельке вверху.

Особенности контейнера:


  • Установлен загрузчик Aria2.
  • Установлен загрузчик Youtube-DL.
  • Установлены inotify-tools.
  • Увеличены лимиты памяти для PHP.
  • Web-сервер настроен под лучшую работу с LDAP.

Замечу, что если вы установите версию 13+, но потом решите обновиться на версию 15, это и многое другое вы сможете сделать с помощью утилиты occ.


LDAP


Настройка LDAP не тривиальна, потому я расскажу подробнее.


Зайдите в "Настройки->Интеграция с LDAP/AD".
Добавьте сервер 172.21.0.1 с портом 389.
Логин: cn=admin,dc=nas,dc=nas.
NextCloud может управлять пользователями в базе LDAP и для этого ему потребуется администратор.



Нажимайте кнопку "Проверить конфигурацию DN" и, если индикатор проверки зелёный, кнопку "Далее".


Каждый пользователь имеет атрибут inetOrgPerson и состоит в группе users_cloud.


Фильтр будет выглядеть так:


(&(|(objectclass=inetOrgPerson))(|(memberof=cn=users_cloud,ou=groups,dc=nas,dc=nas)))

Нажимайте "Проверить базу настроек и пересчитать пользователей", и если всё корректно, должно быть выведено количество пользователей. Нажимайте "Далее".


На следующей странице будет настроен фильтр пользователей, по которому NextCloud их будет искать.


Фильтр:


?(&(objectclass=inetOrgPerson)(uid=%uid))

На этой странице надо ввести логин какого-либо пользователя и нажать "Проверить настройки".
Последний раз "Далее".


Тут нажмите "Дополнительно" и проверьте, что поле "База дерева групп" равно полю "База дерева пользователей" и имеет значение dc=nas,dc=nas.


Вернитесь в группы и установите в поле "Только эти классы объектов" галочку напротив groupOfUniqueNames.


Итоговый фильтр здесь такой:


(&(|(objectclass=groupOfUniqueNames)))

Поле "Только из этих групп" я не устанавливал, т.к. хочу увидеть в интерфейсе NextCloud всех пользователей, а те кто не входит в группу users_cloud, отсеиваются фильтром на предыдущем этапе.


OnlyOffice



OnlyOffice — это прекрасный кроссплатформенный офисный пакет, который поддерживает работу с документами MS Office. Он бесплатный и открытый, также как и LibreOffice и также способен работать, как сервер.


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


Также он из коробки интегрируется с NextCloud.


Кстати, есть и Desktop версия OnlyOffice, в том числе под Linux. В общем, намучавшись с тяжёлой и нестабильной Collabora (это LibreOffice), я выбрал OnlyOffice и пока вполне доволен.


Конфигурация OnlyOffice доступна на Github и ниже, под спойлером.


На Github есть конфигурация и для Collabora.


/tank0/docker/services/office/onlyoffice/docker-compose.yml
version: '2'

# https://helpcenter.onlyoffice.com/ru/server/docker/document/docker-installation.aspx

networks:
  onlyoffice:
    driver: 'bridge'
  docker0:
    external:
      name: docker0

services:
  onlyoffice-redis:
    container_name: onlyoffice-redis
    image: redis
    restart: always
    networks:
      - onlyoffice
    expose:
      - '6379'

  onlyoffice-rabbitmq:
    container_name: onlyoffice-rabbitmq
    image: rabbitmq
    restart: always
    networks:
      - onlyoffice
    expose:
      - '5672'

  onlyoffice-postgresql:
    container_name: onlyoffice-postgresql
    image: postgres
    environment:
      - POSTGRES_DB=onlyoffice
      - POSTGRES_USER=onlyoffice
    networks:
      - onlyoffice
    restart: always
    expose:
      - '5432'
    volumes:
      - /tank0/apps/onlyoffice/postgresql_data:/var/lib/postgresql

  onlyoffice-documentserver-data:
    container_name: onlyoffice-documentserver-data
    image: onlyoffice/documentserver:latest
    environment:
      - ONLYOFFICE_DATA_CONTAINER=true
      - POSTGRESQL_SERVER_HOST=onlyoffice-postgresql
      - POSTGRESQL_SERVER_PORT=5432
      - POSTGRESQL_SERVER_DB_NAME=onlyoffice
      - POSTGRESQL_SERVER_USER=onlyoffice
      - RABBITMQ_SERVER_URL=amqp://guest:guest@onlyoffice-rabbitmq
      - REDIS_SERVER_HOST=onlyoffice-redis
      - REDIS_SERVER_PORT=6379
    stdin_open: true
    restart: always
    networks:
      - onlyoffice
    volumes:
       - /tank0/apps/onlyoffice/document-server-data/data:/var/www/onlyoffice/Data
       - /tank0/apps/onlyoffice/document-server-data/logs:/var/log/onlyoffice
       - /tank0/apps/onlyoffice/document-server-data/cache:/var/lib/onlyoffice/documentserver/App_Data/cache/files
       - /tank0/apps/onlyoffice/document-server-data/files:/var/www/onlyoffice/documentserver-example/public/files
       - /usr/share/fonts

  onlyoffice-documentserver:
    image: onlyoffice/documentserver:latest
    depends_on:
      - onlyoffice-postgresql
      - onlyoffice-redis
      - onlyoffice-rabbitmq
      - onlyoffice-documentserver-data
    environment:
      - ONLYOFFICE_DATA_CONTAINER_HOST=onlyoffice-documentserver-data
      - BALANCE=uri depth 3
      - EXCLUDE_PORTS=443
      - HTTP_CHECK=GET /healthcheck
      - EXTRA_SETTINGS=http-check expect string true
      - JWT_ENABLED=true
      - JWT_SECRET=<JWT_SECRET_TOKEN>
      # Uncomment the string below to redirect HTTP request to HTTPS request.
      #- FORCE_SSL=true
      - VIRTUAL_HOST=office.*
      - VIRTUAL_PORT=80
      - VIRTUAL_PROTO=http
      - CERT_NAME=NAS.cloudns.cc
    stdin_open: true
    restart: always
    networks:
      - onlyoffice
      - docker0
    expose:
      - '80'
    volumes:
      - /tank0/apps/onlyoffice/document-server/logs:/var/log/onlyoffice
      - /tank0/apps/onlyoffice/document-server/data:/var/www/onlyoffice/Data
      - /tank0/apps/onlyoffice/document-server/lib:/var/lib/onlyoffice
      - /tank0/apps/onlyoffice/document-server/db:/var/lib/postgresql
    volumes_from:
      - onlyoffice-documentserver-data

Поясню некоторые моменты:


  • Вам надо изменить <JWT_SECRET_TOKEN> на свой, также как и NAS на имя своей DNS зоны.
  • HTTPS здесь не требуется включать, потому что хотя офис и виден снаружи, обмен с ним идёт через обратный прокси, который работает с пользователем исключительно по HTTPS. Так построена архитектура NAS.

Теперь надо поднять офис:


docker-compose up -d

И, если всё работает, по адресу office.NAS.cloudns.cc будет следующая страница:


Экран сервера OnlyOffice


Затем, в настройках NextCloud требуется выбрать Пункт "Администрирование->ONLYOFFICE" и прописать в первых двух полях адрес сервера документов: https://office.NAS.cloudns.cc/ и ваш JWT token.


В третьем поле надо прописать адрес облака.


JWT токен возможно сгенерировать, например здесь.


Если сервер настроен правильно, в меню создания документов облака появятся дополнительные пункты для офисных документов, а .docx файлы будут открывать в офисе.


Выводы


Облачное хранилище является центральным звеном для взаимодействия пользователей между собой и другими сервисами.


В этой роли NextCloud весьма удобен и обладает широким функционалом.


У него есть свои в процессе обновления между версиями, но в целом, это хранилище возможно рекомендовать.

Комментарии (46)


  1. moonoviy
    05.01.2019 16:25
    +1

    Есть ли хоть у чего-то из вышеперечисленного работа с мобильными платформами iOS и Андроид?


    1. artiom_n Автор
      05.01.2019 16:28

      Конечно. Наверняка у большинства, хотя я на это и не обращал внимания, т.к. мне не особенно требуется. Как минимум, у NextCloud, OwnCloud и SeaFile.


    1. sizziff
      05.01.2019 17:01
      +1

      У Nextcloud есть андроид клиент. Работу оценю где то на 3.5-4 балла.
      Добавлю немного от себя про Nextcloud:
      + Файлы хранятся в нативной линуксовой FS. В seafile — в своем каком то блочном формате. Я для себя решил что возможность восстановления информации в случае чего, для меня важнее чем плюшки производительности проприетарной seafile, по этому как и автор, выбрал Nextcloud. Да, в результате дома поселился мини сервак на десктопной платформе (mini ATX), при этом, сейчас я могу подключить 4 диска 3,5" и два m.2. т.е., для домашнего сервера(в отличие от intel NUC) я имею неплохо масштабируемую систему.
      -Минус как мне кажется один: Надо быть «немножечко» Linux админом.


      1. artiom_n Автор
        05.01.2019 18:43

        Файлы хранятся в нативной линуксовой FS.

        Да, но могут быть зашифрованы, при включении шифрования на сервере (не говоря уже о сквозном), хотя структура каталогов при этом всё-равно сохраняется.


        -Минус как мне кажется один: Надо быть «немножечко» Linux админом.

        Seafile тоже этого не отменяет.


  1. avg
    05.01.2019 18:40
    +2

    Мой инстанс Nextcloud в docker-compose успешно пережил апгрейд до версии 15, однако и заметки, и OnlyOffice работают как ни в чём не бывало.


    Для заметок имеет смысл использовать QOwnNotes, который умеет интеграцию с nextcloud и git, а еще способен (через скрипт, который ставится из его собственного репозитория) шифровать-дешифровывать заметки pgp ключом одним кликом мыши.


    1. artiom_n Автор
      05.01.2019 18:41
      +1

      Про OnlyOffice пока не скажу, я просто ещё не разбирался, что там сломалось при обновлении, а вот заметки слетели потому, что плагин QuickNotes не поддерживается в 15 версии.
      Про QOwnNotes учту. Спасибо.


    1. inkvizitor68sl
      05.01.2019 20:02

      Для заметок лучше использовать standardnotes.org (со своим сервером синхронизации и web-аппом).


      1. artiom_n Автор
        05.01.2019 21:15

        По сравнению с чем и почему лучше?


        1. inkvizitor68sl
          05.01.2019 21:22
          +1

          По сравнению со всем.
          Заметки должны быть кроссплатформенными и (желательно) полностью self-hosted, с оффлайн-работой и синхронизацией в фоне. У SN всё это есть.

          QOwnNotes — это всё же, скорее, про ведение личной вики или вроде того. При этом на андроиде (в nextcloud notes, например) теряется часть фич. В SN (так как клиенты все «свои») такого не происходит.


          1. artiom_n Автор
            05.01.2019 21:24

            Ну, если используется онлайновый сервис (в том числе свой), не обязательна кросс-платформенность и наличие клиента.
            Но ok, посмотрю в эту сторону. Заметками я пока серьёзно не занимался, всё ограничилось установкой плагина в NextCloud.


            1. inkvizitor68sl
              05.01.2019 21:28

              > не обязательна кросс-платформенность и наличие клиента.
              Мобильные браузеры пока не доросли =)
              Приложенька у SN намного удобнее вебморды на телефоне (впрочем, по мне она так удобнее любых других заметочников под андроид, кроме разве что blackberry notes под BB10).

              Но это именно «заметочник» — text-only (по крайней мере, в бесплатной версии). Что забавно — бывает и платная self-hosted версия, там появляются файлы, аттачи и тд.


      1. vikarti
        07.01.2019 13:05

        С ним есть как плюсы так и большие проблемы:

        • мало мальски крупная заметка — открывается на андроиде (на Samsung Galaxy Note 9(!) — с заметной задержкой (а с некоторыми из редакторов — не открывается вообще). Если заметок хотя бы несколько сотен — при открытии списка лаги. Что же будет на более слабых андроид-девайсах?
        • Поиск внутри заметки — базовая вещь но есть только в одном из редакторов (Minimal Markdown)
        • масс-операций в принципе нет (вот тестирую я импорт из Evernote и надо стереть заметки — удалять только по одной)(ну да — по их манифесту подразумевается что это 3rd-party разработчики видимо будут делать)

        Но да — зато все открыто и в исходниках, и видно что автор очень серьезно озаботился и безопасностью и вопросом а как сделать чтобы проект существовал — долго.


        1. inkvizitor68sl
          08.01.2019 04:13

          > с заметной задержкой
          Это последствия шифрования, кстати. Если не регаться и использовать offline-версию — то работает намного быстрее. Но я просто не пишу длинных заметок, а ~10k символов на K1 открываются быстро.

          > Поиск внутри заметки
          Внезапно обнаружил, что его действительно нет =) Не обращал внимания. В браузере ^f работает, а на телефоне не пригождалось.

          > надо стереть заметки — удалять только по одной
          Вот как раз удаление есть массовое.
          Extensions в вебе -> batch manager -> выделить заметки, появляется кнопка удалить. С другой стороны, бесплатно больше ничего в extensions не положили =)

          > чтобы проект существовал — долго
          На самом деле тут даже неважно, что проект долго просуществует, тут важнее то, что self-hosted просуществует ровно столько, сколько он нужен будет.
          А то меня эти закрытия тудушников и заметочников за жизнь утомили уже, честно говоря.


  1. Firz
    05.01.2019 19:15

    Не совсем FairPlay, но через кастомный загрузчик, можно на свое железо установить Synology DSM с довольно богатым софтовым функционалом, при этом простой и понятный интерфейс даже для обычного юзера(естественно, через консоль или docker вообще что угодно сделать/запустить можно). Один только аналог dropbox из коробки с клиентами под Win/Mac/Linux/iOS/Android заслуживает отдельного плюса.
    Существенный минус только один — поддержку чужого железа(изначально операционка работает только на NAS-ах Synology) делают энтузиасты через кастомные загрузчики.


    1. artiom_n Автор
      05.01.2019 21:14

      Но зачем?
      Вопрос про то, надо ли это использовать уже был. И я понял, что от "специально обученных" дистрибутивов лучше уйти к системе общего назначения, плюс специфичные дополнения (в данном случае — это OMV).


      1. Firz
        05.01.2019 21:39

        Так OMV такая же специально обученная система, вопрос больше в том, кому что нравится, ну + сила привычки со старых времен, когда той же OMV еще даже не было.


        1. artiom_n Автор
          05.01.2019 21:40

          Ну как сказать. OMV, в основном, не ограничения накладывает, а добавляет возможности. А в основе я имею полноценный Debian, на который ставлю OMV пакетом.


  1. FreeManOfPeace
    05.01.2019 22:09
    +1

    Если говорить только о хранении данных почему бы не использовать Resilio Sync (ранее BitTorrent Sync) или Syncthing.
    На мой взгляд куда более практичное и универсальное решение если надо зеркалировать одни и те же данные на несколько компьютеров, можно и без отдельного сервера, так же Resilio Sync пробивает провайдерский NAT без всяких лишних телодвижений. В общем одни сплошные плюсы мне видятся


    1. artiom_n Автор
      05.01.2019 22:36

      Я смотрел в их сторону и, прежде всего, это системы для синхронизации. BTSync (тот, который Resilio) вообще закрытый и платный с урезанной Free версией. Да и «пробивать NAT» мне не требуется, это уже обсуждалось.

      Syncthing — действительно неплохая штука. Но всё-таки, её применимость в случае наличия централизованного сервера, несколько сомнительна (а цикл статей именно этому посвящён).

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

      В случае же центрального хранилища, оно является эталоном и, в плюс, возможно обеспечить сервисы на базе сохранённых данных в NAS (тот же медиа-сервер).
      При этом, с учётом того, что такие данные, как учебное видео, музыка и git-репозитории всё-равно хранятся на нескольких компьютерах, по сути приходим к тому же, что делает Syncthing.
      Плюс к тому, я могу с устройств, где нет клиентов Syncthing и подобных, всегда получить доступ к своим файлам.


      1. FreeManOfPeace
        06.01.2019 06:52

        Это системы только для синхронизации, о чём я написал.

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

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

        Касательно центрального хранилища это выглядит больше как корпоративное решение.


        1. artiom_n Автор
          06.01.2019 12:08

          Ну ok, та же синхронизация с центральным хранилищем, только с использованием P2P.
          В облаке работать удобнее.
          А для того, чтобы файлы не пропадали, я систему резервного копирования доделываю.


  1. Arris
    05.01.2019 22:50

    Nextcloud в докере. Зачем? Зачем так извращаться?

    Статья была бы интересной, если бы было более подробное сравнение сервисов. Но половина статьи о том «как настроить свой сервер».


    1. artiom_n Автор
      05.01.2019 23:19
      +1

      Зачем, очевидно: увеличить изоляцию. Это позволяет усилить безопасность, а также избежать конфликтов зависимостей между разными сервисами, причём базируется это на официальном образе NextCloud, и они сами предоставляют такой вариант.


      В чём здесь вы увидели извращение?


      Статья была бы интересной, если бы было более подробное сравнение сервисов. Но половина статьи о том «как настроить свой сервер».

      Оно не подробное. Наверное потому, что статья одна из цикла о том, как настроить свой сервер.


      1. kolu4iy
        06.01.2019 00:06
        +2

        Если вам поломают nextcloud, то данные тоже будут в руках злоумышленника, независимо от изоляции облака от хоста. А целостность хоста… Она точно настолько важна?


        1. artiom_n Автор
          06.01.2019 00:56

          Не все данные, а только общие данные и часть данных пользователей, репозитории сюда не входят.


      1. Arris
        06.01.2019 10:57

        Просто для справки: я, начитавших таких вот советов про «повысить изоляцию» и «усилить безопасность», поднял nextcloud на своем домашнем сервере именно в докер-контейнере.

        Ну, я получил скорость установки простейшего плагина около минуты. Дождаться конца установки плагина офиса у меня не хватило терпения.

        А еще возня с пробрасыванием конфига, с рестартом сервера, с вот этим всем.

        А потом я плюнул и поднял nextcloud на виртуальном хосте (сначала apache, потом nginx).

        Рассказать вам насколько все стало быстрее работать или не надо?

        P.S. Да и вообще, какой мне толк от докер-контейнеров, если системы и софт в них собраны под универсальный какой-попало процессор и какую-попало какую-нибудь x64 архитектуру. Все выгоды от компиляции специально под мой проц теряются.


        1. artiom_n Автор
          06.01.2019 12:15

          Ну, я получил скорость установки простейшего плагина около минуты. Дождаться конца установки плагина офиса у меня не хватило терпения.

          Но у меня-то всё работает быстро, и при этом, я имею все плюсы докера. Кроме того, докер — не виртуальная машина, а уровень изоляции, типа "глубокой" песочницы, т.е. он не вносит серьёзных накладных расходов. При этом, стоит заметить, что в моём случае докер использует в качестве бэк-энда ZFS, и тоже самое было бы без докера.


          А еще возня с пробрасыванием конфига, с рестартом сервера, с вот этим всем.

          Я не заметил: у меня всё это делается легко и просто.


          Рассказать вам насколько все стало быстрее работать или не надо?

          Расскажите. Возможно, проблема не в скорости, а в том, что в процессе установки приложение с ошибкой падало (да у Nextcloud бывает такая проблема). Это не говорит, что в докере оно медленнее работает: у вас оно просто не работало по каким-то причинам.


          P.S. Да и вообще, какой мне толк от докер-контейнеров, если системы и софт в них собраны под универсальный какой-попало процессор и какую-попало какую-нибудь x64 архитектуру. Все выгоды от компиляции специально под мой проц теряются.

          Похоже, что вы не особенно хорошо понимаете, что такое Docker.
          Во-первых, большая часть NextCloud реализована на PHP, и узкое место стоит искать в реализации, а не в интерпретаторе.
          Во-вторых, если вы не используете Gentoo-based, ваш интерпретатор также собран без оптимизаций под конкретную платформу.
          В-третьих, при желании вы можете собрать персональный Dcoker образ с включенными для вас оптимизациями, но вот стоит ли это делать, вопрос дискуссионный.


          1. Arris
            06.01.2019 13:10

            а уровень изоляции, типа «глубокой» песочницы, т.е. он не вносит серьёзных накладных расходов

            спасибо, я в курсе.

            а в том, что в процессе установки приложение с ошибкой падало (да у Nextcloud бывает такая проблема).

            Почему же ровно тот же nextcloud вне докера работал без ошибок и никуда не падал? :)

            И да, в логах ошибок не было. Просто все было ооооооооооооочень неторопливо.

            Во-первых, большая часть NextCloud реализована на PHP, и узкое место стоит искать в реализации, а не в интерпретаторе.

            Ну да, разумеется, то, что интерпретатор тоже внутри контейнера, вас не смущает? И собран он под какую-попало платформу.

            Gentoo-based, ваш интерпретатор также собран без оптимизаций под конкретную платформу.

            Вот как раз Gentoo то я и использую :) Поэтому я знаю, о чем говорю :)

            И, как по синтетическим тестам, так и по реальным прирост примерно в 22-25%.

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

            Этот уровень красноглазия я возьму когда-нибудь, но не в этом году.


            1. artiom_n Автор
              06.01.2019 13:38

              Почему же ровно тот же nextcloud вне докера работал без ошибок и никуда не падал? :)

              Потому что таймауты другие.


              И да, в логах ошибок не было. Просто все было ооооооооооооочень неторопливо.

              1. Из вашего предыдущего комментария, я заметил, что вы сначала использовали Apache, а потом перешли на nginx. Не из-за скорости ли? И что было в контейнере?
              2. Docker ограничивает capabilities. И приложение, например, не сможет что-то изменить через sysctl. В случае NextCloud, это может быть критично для Redis. Обратите внимание на строчку в конфиге sysctl с комментарием "Redis requirement". Это сделано для NextCloud. В 3 формате docker-compose возможно прямо в конфиге прописывать capabilities, но т.к. я использую старый, сделал это через sysctl.
              3. По аналогии выше, могут быть сходные причины с другими компонентами. Ну и ваш Gentoo никто не отменял. У вас же при компиляции интерпретатора наверняка включены оптимизации под вашу платформу. Либо пересоберите контейнер и сравните, либо нивелируйте разницу соответствующим железом.

              И, как по синтетическим тестам, так и по реальным прирост примерно в 22-25%.

              Так а что вы хотите? Это нормально. Если для вас это критично в случае NextCloud (не работает быстро, нагрузка слишком большая и т.п.), и вы не можете решить проблему "горизонтальным масштабированием", наращивая мощности, решите оптимизацией.


              Ну да, разумеется, то, что интерпретатор тоже внутри контейнера, вас не смущает? И собран он под какую-попало платформу.

              Нет, потому что именно так и должно быть. А собран он под x86_64. Большинство операционных систем тоже не пересобирается из сорцов. Это просто не требуется. Потому что многократная сборка компонента может занять времени больше, чем выигрыш от тех 20% увеличения производительности.


              Немного лирики

              Понятно, что есть много нюансов. К примеру, если вы спите ночью, и в этом время проходят обновления, то для вас это может быть не критично (если у вас несколько компьютеров, а не датацентр из гетерогенного железа, который сожрёт гигаватт на перекомпиляции, либо потребует оплаты труда пары архитекторов для организации централизованного обновления). И стоит вспомнить о том, что 20-25% — нетипичный выигрыш, а вот проблем за счёт того, что тестирование продукта, скорее всего, производится разработчиками с выключенными оптимизациями, возможно огребсти.


              1. Arris
                06.01.2019 13:56

                Изначально апач был везде — и в контейнере, и на хосте. На nginx я перешел уже сильно после той истории. На nginx я в конечном счете перешел именно из-за скорости, но к истории он отношения не имеет.

                net.core.somaxconn = 511

                Строчку вижу. В конечном счете мне пришлось добавить такую же к себе, но связано это было не с nextcloud (он прекрасно жил без неё), а для vagga+redis.

                Либо пересоберите контейнер и сравните, либо нивелируйте разницу соответствующим железом.…
                в случае NextCloud (не работает быстро, нагрузка слишком большая и т.п.)


                почувствуйте разницу: nextcloud в докере ставил плагины примерно по полторы минуты. nextcloud вне докера, на чистом хосте ставил плагины примерно за 5-7 секунд. Ну то есть чисто по отзывчивости — нажал install plugin, засек время до появления строчки installed.

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

                Ну так уж и многократная…

                Зависит от задачи, впрочем.


                1. artiom_n Автор
                  06.01.2019 14:46

                  почувствуйте разницу: nextcloud в докере ставил плагины примерно по полторы минуты. nextcloud вне докера, на чистом хосте ставил плагины примерно за 5-7 секунд. Ну то есть чисто по отзывчивости — нажал install plugin, засек время до появления строчки installed.

                  Вероятно, это не проблема с производительностью Docker, а конкретно проблема с производительностью NextCloud в Docker на вашей платформе.


                  1. Arris
                    06.01.2019 15:18

                    Разумеется, о чем и речь.

                    Что там внутри контейнера? Убунта, веб-сервер, связка плагинов, собранных как попало, PHP какой попало, сервер СУБД тоже какой попало. Не удивительно, что оно всё вместе тоже работает как попало.


                    1. artiom_n Автор
                      06.01.2019 15:37

                      Да почему «как попало»? С этой связкой разработчики и тестируются. Опять же: УМВР, пусть и не всегда идеально.


                    1. inkvizitor68sl
                      08.01.2019 04:22

                      Там скорее проблема в overlayfs/aufs — они медленные, особенно поверх hdd. Ну и в прочих подобных вещах.
                      ЗЫ — проще дома в cgroups-nspawn всё запускать.


                      1. artiom_n Автор
                        08.01.2019 11:42

                        Напомню, что в случае NAS, там ZFS бэкэнд.


                      1. Arris
                        08.01.2019 12:26

                        У меня докер все держит на BTRFS, отдельный раздел, разумеется


                        1. artiom_n Автор
                          08.01.2019 12:30

                          Вряд ли я что-то могу сказать о её производительности, но вот с учётом надёжности и вероятности дальнейшей поддержки, я бы поостерёгся использовать BTRFS.


                          1. Arris
                            08.01.2019 13:00

                            Я многое читал на эту тему — и мнения диаметрально противоположные были.

                            Я решил довериться профессионалам — мейнтейнерам Gentoo.

                            Уберут поддержку, пометят её как нерекомендуемую — пересоздам раздел (благо LVM), перекомпилирую ядро без BTRFS, перестану пользоваться.


                            1. artiom_n Автор
                              08.01.2019 18:27

                              RHEL, например, с 2017 поддержку остановил, да и как-то плохо у них сейчас насчёт перспектив вообще.


  1. winduzoid
    06.01.2019 11:47

    В бесплатной версии Seafile есть поддержка LDAP.


    1. artiom_n Автор
      06.01.2019 12:19

      Да, похоже вы правы. Ставил давно, забыл, что конкретно не хватало. Вероятно, одна из причин — отсутствие разграничения прав на подкаталоги.


  1. artiom_n Автор
    06.01.2019 21:02
    -1

    Весьма доставляет то, как меняется оценка данной статьи (и я неоднократно подобное наблюдал): от 0 до 6, затем 7, потом снова 6, опять 7, снова 6, потом 9.
    Видимо, негодующие хомячки, картинке мира которых не соответствуют мои комментарии в других статьях, пытаются «заминусовать» тут и срут в карму, предполагая, что они хуже сделают мне.
    Это мило, и как бы им не хотелось обратного, сие очень по-русски, в связи с чем вспоминается старый анекдот:

    > Американский форум. Задаёшь вопрос, потом тебе отвечают.
    Израильский форум. Задаёшь вопрос, потом тебе задают вопрос.
    Русский форум. Задаёшь вопрос, потом тебе долго рассказывают, какой ты мудак.


    1. Arris
      08.01.2019 12:32

      Гадание по динамике кармы на хабре вредно для здоровья и кармы. Верьте мне, я пробовал. :)

      Минусуют, я полагаю, за банальщину (я писал выше — «настройка сервера от нуба для нубов»). И, я, честно, тоже поставил бы минус. За то, что половина статьи про банальщину. Ничего личного.

      Совет: если это статья из цикла — ставьте в начале статьи индекс со ссылками.


  1. rtzra
    07.01.2019 10:18

    Я сейчас параллельно установил Nextcloud и Syncthing — чтобы понять какой более подходит под мои нужды. Как ни странно, после сравнения пришел к выводу что это разные проекты для решения разных задач и они оба мне подходят :-) Syncthing оказался более удобным именно для синхронизации файлов между устройствами (при этом быстрее Resilio), а Nextcloud неплох как средство командного взаимодействия, к тому же в нем есть контакты и прочие полезные вещи.


    1. artiom_n Автор
      07.01.2019 11:14

      Собственно, про это говорилось. А для именно командного взаимодействия (работы групп в рамках проектов) имеется несколько другой класс систем.


  1. dobergroup
    08.01.2019 18:45

    А какой компонент использует inotify-tools и ffmpeg?