Привет, Хабр! Меня зовут Александр Фикс, я менеджер по развитию бизнеса КРОК Облачные сервисы. Сегодня поговорим о тренде локализации, о том, что происходит на рынке файлообменников с уходом западных решений и какие альтернативные продукты есть у бизнеса в данный момент.

Мы проанализировали возможные варианты, собрали текущие проблемы и требования корпоративных пользователей и решили представлять Nextcloud как сервис из Облака КРОК. Подробно расскажу о возможностях такого решения, покажу его архитектуру, интерфейс и подсвечу преимущества.

Локализация: новый тренд и наш ответ

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

Все больше компаний хочет локализовать свою инфраструктуру — запрос за прошлый год вырос в 2,5 раза. С весны 2022 мы реализовали более 30 подобных проектов. Львиная доля поступающих к нам запросов касается файлообменников. Раньше компании вовсю пользовались OneDrive и аналогами, но сейчас у многих такой возможности больше нет. И здесь есть несколько выходов из сложившейся ситуации: 

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

  1. Перейти на отечественные продукты. Они активно перепрофилируются под нужды бизнеса, но первоначально создавались как B2C-решения и обладают характерными ограничениями и особенностями. В их числе проблемы с интеграцией, зависимость от экосистемы и т. д. Не все компании готовы с этим мириться.

  1.  Использовать open source-решения и самостоятельно поднять файлообменник на собственной инфраструктуре или на арендованном сервере. 

  2. В принципе многое такое ПО уже достаточно зрелое для корпоративного использования, но требует самостоятельного внедрения, отладки, обслуживания и постоянной поддержки по SLA. Для многих это проблема.

Nextcloud в Облаке КРОК — что-то на удобном 

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

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

Пришлось снова “изобретать велосипед”, точнее, делать собственный сервис на базе облачной платформы КРОК и популярного опенсорсного Nextcloud. Так мы можем взять все сложности по поддержке и администрированию облака на себя и предоставлять клиентам удобную платформу будто из коробки, которую можно брать и пользоваться, как в старые добрые времена. Снабженный правильными плагинами и скриптами Nextcloud не уступает по функциональности зарубежным сервисам.

Мы запустили сервис в конце 2022 года, и у нас уже более 20 клиентов. Это компании разных масштабов: от 50 пользователей и до рекордного количества в 12 тыс. человек. В основном клиенты мигрируют с OneDrive.

Архитектура нашего решения 

Залить Nextcloud на виртуалку для личного использования сравнительно несложно, но сделать так, чтобы он без проблем обслуживал целую компанию –  задачка со звездочкой: требуется проработать архитектуру, развернуть кластер баз данных, кластер приложений, интегрировать их с S3. Сравнивать просто некорректно.

Мы уже переделывали две таких корпоративных инсталляции с нуля и знаем, о чем говорим. Без должной настройки Nextcloud вроде и работает, но склонен тупить под высокой нагрузкой, зависать и радовать пользователей разнообразными ошибками. Пользоваться им в таком состоянии, мягко говоря, проблематично. Там возникает целый ряд вопросов к ручкам PHP, PHP-FPM и NGINX, но без прикрученного к системе мониторинга найти и исправить конкретные проблемы практически невозможно. Нужна взрослая архитектура с централизованным логированием. Поэтому для развертывания Nextcloud в Облаке КРОК мы выделили архитекторов, которые собаку съели в работе с приложениями на базе LAMP-стека.

Конфигурация нашего сервиса, включая балансировщиков запросов, растянута на три наших дата-центра в России. 

Nextcloud поддерживает работу с объектным хранилищем S3, и, таким образом, убивает сразу двух зайцев. Во-первых, использует уже готовый, быстрый и  масштабируемый до любых размеров кластер,. Во-вторых, позволяет заказчику экономить, ведь S3 – это еще и дешевое хранилище. С этим подходом связан ряд архитектурных особенностей: в S3 хранятся только файлы, а метаданные размещаются в Galera-кластере, основанном на MariaDB, так как S3 – это плоское объектное хранилище, по умолчанию в нем нет каталогов и подкаталогов.

За ускорение запросов отвечает выделенный кластер кеширования. Также предусмотрен кластер Elasticsearch для поисковой аналитики. Для дополнительной защиты доступ ко всем компонентам Nextcloud происходит через jump host.

Все это плотно обложено метриками на базе prometheus с grafana и alertmanager, и централизованного логирования ELK. К ним прикручены алерты, которые в режиме реального времени поступают службе поддержки.

Кроме того, хочется отметить, что мы тестируем обновления Nextcloud перед тем, как раскатывать их на прод. Так, например, выяснилось, что в версии  27.0.0 не работает функция создания групп в веб-интерфейсе. Эту версию пришлось пропустить.

Что касается отказоустойчивости, S3 уже обеспечивает резервирование данных, однако мы решили реализовать и дополнительные бэкапы. Например, на случай, если нужно восстановить файлы, которые пролежали в корзине Nextcloud более 90 дней или, например, были безвозвратно удалены обиженным сотрудником. Так как мы используем S3, файлы хранятся там без метаданных, это плоская структура, которая не соотносится с структурированной моделью хранилищ информации. Чтобы сделать бэкап, мы собираем файлы с метаданными, складываем их в отдельном месте, и затем бэкапим, например, средствами облачного NetBackup или при помощи скриптов собственной разработки. Дополнительно обезопасить файлообменник можно при помощи интеграции с антивирусом.

Сценарий внедрения Nextcloud

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

Сценарий развертывания сервиса выглядит так: 

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

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

Перенести файлы проще всего силами пользователей. Мы пишем документацию и короткую инструкцию, а пользователь устанавливает Nextcloud на локальный компьютер и заливает все необходимые файлы. Если заказчик может выгрузить бэкап своего файлового хранилища, возможна и централизованная миграция. Однако в случае использования OneDrive, особенно с Office 365, это затруднительно.

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

Базовая инсталляция системы занимает два-три дня. Процесс налажен и основная трудность — подобрать плагины и скрипты под потребности конкретного клиента. 

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

Возможности Nextcloud в Облаке КРОК

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

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

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

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

Сервис позволяет делиться с пользователями корневыми папками и при этом гибко настраивать права на доступ к папкам внутри этого каталога. Например, можно дать доступ к папке тимлиду, а внутри создать папку персонально для каждого подчиненного. Никаких проблем с количеством вложенных папок нет. Есть интеграции со службами каталогов, как зарубежными (AD), так и отечественными, например, ALD Pro, настройка двухфакторной аутентификации, SSO (single sign-on).

С Nextcloud работают онлайн-редакторы, при необходимости мы можем подключить к сервису  Р7 или МойОфис. Доступно редактирование файлов docx, xlsx и pptx. По умолчанию история изменения хранится пол года.

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

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

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

Одна из особенностей нашего решения — кастомизация размеров пространства. Альтернативные сервисы зачастую предоставляют фиксированный объем, который нельзя гибко менять в зависимости от потребностей. А у нас можно выбрать любой размер хранилища для каждого пользователя либо группы и платить за тот объем, который утилизирован данными пользователя. То есть если мы выделили 200 ГБ пользователю, а он занял только 20 ГБ, то и платить нужно только за 20.

В заключение

Бизнес в срочном порядке ищет альтернативы продуктам ушедших с рынка компаний. В этой ситуации легко представить себе ситуацию, в которой руководство хватается за первый попавшийся, но далеко не самый оптимальный вариант. Однако нам кажется, что к локализации следует подходить с трезвой головой и долгосрочными планами. Так, даже при помощи open source-решений можно сделать сервис, который будет как минимум не хуже “чем раньше”. Потому мы и вкладываем так много сил и экспертизы в Nextcloud в Облаке КРОК. Очевидно, тренд на локализацию облачной инфраструктуры будет сохраняться, и мы к этому готовы.

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


  1. Aquahawk
    31.08.2023 13:20
    +7

    меня дико вштырил syncthing, всё, больше мне ничего не надо. Оно синхронизирует папки, и делает это хорошо. Я правда не использую их систему промежуточных серверов и меш связность, а в во всех клиентах прописал ip сервера.


    1. quarus
      31.08.2023 13:20
      +1

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


    1. kulhaker478
      31.08.2023 13:20

      Оно синхронизирует папки, и делает это хорошо

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


      1. Aquahawk
        31.08.2023 13:20

        у меня подключены винды он семёрки до 10, андроиды два разных, ipad, linux. Из глюка сижел ситауацию пропадения папки если её в пинде преименовать так чтобы изменился только регист, тогда он её удалил совсем и это имхо жесткий баг. Но есть история, плюс документы я на сервере в гит коммичу из syncthing


    1. jaroslau
      31.08.2023 13:20

      Плюсану syncthing.

      Работает много лет на Windows, Android и Linux. Вбил в себя привычку не переименовывать директории чисто ради смены регистра букв. Если уж очень надо, то делаю через промежуточное имя. На телефоне прописан серый IP сервера и синкаться только в домашнем Wi-Fi, меня устраивает такой сценарий. На ноутах синк всегда.

      Бэкап делаю в одной точке, на Linux сервере.


  1. vesper-bot
    31.08.2023 13:20

    Интересно, какой механизм SSO реализуется nextcloud'ом в вашей схеме. Мы пытаемся воевать с kerberos с переменным успехом, хотелось бы узнать, сумели ли вы победить что-то подобное у себя.


    1. Yurets_Ogurets
      31.08.2023 13:20

      Зачем Kerberos? В Nextcloud есть LDAP, можно сделать AAA через Active Directory.


      1. DaemonGloom
        31.08.2023 13:20
        -1

        Суть SSO в том, чтобы ввести пароль один раз (при входе в комп) и дальше всё работало без запросов логинов/паролей.


  1. kolabaister
    31.08.2023 13:20

    А кроме описанных вариантов онлайн-редакторов ничего?


    1. Yurets_Ogurets
      31.08.2023 13:20
      +1

      В nextcloud есть Colabora (Libreoffice), Only Office, Microsoft office Online.


      1. kolabaister
        31.08.2023 13:20

        Я знаю какие бывают) Интересно какие предоставляет и поддерживает крок.

        У каждого есть нюансы.


  1. bel1k0v
    31.08.2023 13:20

    Ну теперь понятно, зачем вам PHP, могли бы и перезвонить всё-таки, пообщались бы. Стесняетесь?


  1. veryboringman
    31.08.2023 13:20
    +3

    Nextcloud - это тормоз кривой, настоящие герои используют owncloud переписанный на Go!


    1. TheRaven
      31.08.2023 13:20

      Это еще что за зверь такой?


      1. veryboringman
        31.08.2023 13:20
        +2

        https://owncloud.com/news/ready-steady-go/

        Nextcloud в свое время отпочковался от ownCloud, но новая команда переписала ownCloud на Go и он теперь работает быстрее и в нем меньше глюков, чем в Nextcloud.
        В частности на ownCloud перешел CERN.


        1. MiraclePtr
          31.08.2023 13:20

          В мануалах они по-прежнему требуют устанавливать в систему PHP. Что-то не понятно.


          1. veryboringman
            31.08.2023 13:20
            +1

            Смотрите на ownCloud Infinite Scale:

            https://owncloud.com/news/infinite-scale-4-released/


            1. Mr_Boshi
              31.08.2023 13:20

              Я только недавно со стаком Nextcloud разобрался, сделал отдельно контейнер с СУБД, контейнер с редисом для кеширования и контейнер с cron для фоновых задач. Ну плюс еще контейнер с collabora-сервером. А в примерах ocis для docker-compose вижу кроме самого ocis только всякую обвязку типа реверс-прокси, identity provider-ов всяких.. Неужели и правда ему не нужно ничего из того, что обычно в стаке с Nextcloud ставят? Или надо искать исчерпывающий стак где-то на стороне?


              1. veryboringman
                31.08.2023 13:20
                +1

                ownCloud Infinite Scale - это вообще один бинарник, который нужно запустить :) Больше ничего для начала работы не нужно.


              1. schebotar
                31.08.2023 13:20
                +1

                Тоже заинтересовался и сегодня за 10 минут поднял.

                Выглядит здорово, работает быстро. Но в наличии вроде как только синхронизация файлов, даже контактов и календаря нет. Хотя последние можно и в Baïkal держать.

                Из печального: мне нужной федерации пока нет. Ресурсов для функционала многовато потребляет. Привык видеть go-сервисы менее прожорливыми.


                1. MiraclePtr
                  31.08.2023 13:20

                  Ресурсов для функционала многовато потребляет

                  Прям больше чем старый ownCloud?


                  1. schebotar
                    31.08.2023 13:20
                    +1

                    Активно использует кэширование в оперативной памяти. Если на маленьком VPS крутить для личного пользования жрало до 800-900 Мб.

                    Но можно ограничить https://doc.owncloud.com/ocis/next/deployment/services/s-list/storage-system.html#caching


  1. Kahelman
    31.08.2023 13:20

    Не совсем понял про S3 хранилище. Это наш ответ Амазоне одну но без блек джека и ш…? Слепили из того что было, поэтому метаданные не поддерживаются и приходится устраивать пляски с бубном?


    1. rindazzz
      31.08.2023 13:20
      +1

      Подразумевается хранилище, которое наружу показывает Amazon S3 API, который открыт и фактически является стандартом. Конкретные реализации есть как опенсорсные, так и проприетарные.


  1. AlexeevEugene
    31.08.2023 13:20

    2fa не реализован? Что-то пропустил


    1. Mr_Boshi
      31.08.2023 13:20

      В NC 2fa есть, добавляется плагином (приложением) Two-Factor TOTP Provider.


  1. verRaR
    31.08.2023 13:20
    -1

    Это же буквально переработка ALD pro для Астры, только в другой обложке, да вы сделали совместимость даже и идею сложно придумать новую, но функционал практически идентичен, только работа с носом, но работа без ФО это прям зачёт


  1. trabl
    31.08.2023 13:20

    Недавно делал заказ по автоматизации развёртывания в proxmox, с помощью Ansible и docker compose. Может кому пригодится - https://github.com/stavropolsky/install_nextcloud_server

    И вот тоже неплохая статья - https://habr.com/ru/articles/689612/