Linux

Установка NextCloud на Ubuntu 16.04 + LEMP

Представляем вашему вниманию подробную инструкцию по настройке NextCloud (с установкой плагинов и ssl-сертификатов для реализации защищенного https-протокола)
Nextcloud — пакет клиент-серверного программного обеспечения для создания облачного хранилища. Функционально программное обеспечение аналогично DropBox, Яндекс.Диск и GoogleDrive, но при этом является отрытым ПО и может быть установлено на вашем сервере и интегрироваться с сервисами компании, такими как Active Directory.

Функционал облачного хранилища может быть расширен при помощи плагинов и при некотором желании из облачного хранилища можно построить небольшую CRM.

Nextcloud, является форком ownCloud и на данный момент развивается гораздо активнее исходного проекта.

Подготовка LEMP-окружения для установки NextCloud

Использование PHP-FPM и Nginx по сравнению со связкой Apahe и ModPHP на тестах дало повышение производительности облачного хранилища на 25%. Установка Next Cloud с использованием Web-сервера Apache и типового модуля mod_php уже рассматривалась нами в статье Установка NextCloud на Ubuntu 16.04 + LAMP

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

Обратите внимание, что установка проводится в окружение LTS-версии Ubuntu server 16.04.3, а комментарии и уточнения принимаются только при использовании аналогичного окружения.

Установка пакетов необходимых для создания LEMP-окружения в Ubuntu server

Начнем с установки Mysql-сервера:

После установки произведите предварительную настройку безопасности, задав удаление демо-данных, анонимных пользователей и назначение пароля для супер-пользователя root, для этого используйте команду:

Следующим этапом создайте пользователя и базу данных с которой будет работать облачное хранилище. Типовые Mysq-команды для создания пользователя и назначения прав доступа к базе мы уже рассматривали в статье Создание базы и пользователя MySQL с полными правами на Centos 6

Переходим к настройке окружения PHP-FPM + Nginx и как обычно устанавливаем необходимые пакеты:

В случае установки на Ubuntu Server, после установки пакетов будет автоматически настроена минимальная среда настроенная на выполнение PHP-скриптов и отдачу статических страниц из каталога /var/www/html/. Технически, мы можем оставить такое поведение «по умолчанию» и настроить виртуальный-хост который будет обслуживать выполнение web-приложения NextCloud и для этого, прежде всего создаем каталог для хранения php-файлов NextCloud:

И файл конфигурации /etc/nginx/sites-available/next-cloud.conf который будет выполнять обработку скриптов в этом каталоге:

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

Для активации созданного конфигурационного файла необходимо создать символическую ссылку из каталога sites-available в каталог sites-enabled и перезапустить web-сервер Nginx:

Установка и настройка web-приложения NextCloud

Скачайте архив содержащий стабильную версию сервера NextCloud с официального сайта https://nextcloud.com/install/#instructions-server и распакуйте в каталог созданный в предыдущем разделе:

Дальнейшая настройка производится с использованием web-интерфейса и вам необходимо перйти в браузере по адресу http://10.253.0.78/.
Данный адрес прописан в разделе server_name конфигурационного файла nginx и вам надо будет заменить его на ip-адрес вашего сервера на котором вы производите настройку.

Установка и настройка NextCloud

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

Установка и настройка NextCloud

Используя созданный логин/пароль администратора авторизуйтесь в системе и перейдите в интерфейс администрирования системы.

Установка и настройка NextCloud

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

Установка и настройка NextCloud

Настройка планировщика CRON

Так как я в некотором роде перфекционист, то я не могу смотреть на эти предупреждения и сейчас мы будем их исправлять, а начнем мы с планировщика CRON который необходимо переключить в режим Cron и добавить в файл /etc/crontab запись:

Если все настроено корректно, то в графе «Фоновые задания» последнее выполнение не должно превышать 15 минут.

Устранение ошибки: PHP был установлен неверно. Запрос getenv(«PATH») возвращает пустые результаты

Эта ошибка устраняется довольно просто и вам потребуется только в файле /etc/php/7.0/fpm/pool.d/www.conf раскомментировать строку:

Так же вам необходимо перезапустить демона php-fpm командой:

Устранение ошибки: Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache

На выбор предлагается два вида кэширования, на базе memcached и на базе Redis, причем решение с использованием Redis позволяет избавиться от эффекта «File Locking» который очень активно проявляется в крупных многопользовательских установках с организованными общими каталогами отделов.
Устанавливаем memcached-сервер и PHP-модуль для подключения к memcached:

Активируем PHP-модуль apcu:

Проверяем, что memcached работает и принимает подключения:

Добавляем параметры в конфигурацию config/config.php:

Таким образом мы настроили работу с системой кэширования memcached, но нам требуется система кеширования на базе redis и настраивается она не намного сложнее и позволяет решить проблему с Lock-файлами.

Устанавливаем redis:

Добавляем в конфигурационный файл:

Таким образом мы заменили Memcache на Redis, но обратите внимание, что в распределенных кластерах NextCloud бы можете использовать одновременно Redis и memcached и для работы в таком режиме изменения в конфигурации будут выглядеть следующим образом:

Как вы видите в такой конфигурации качестве локального кэша теперь используется Redis, а для распределенной системы облачных хранилищ используется Memcached.
Обратите внимание, что существует некоторая вероятность того, что после подключения модулей кеширования ваш сайт не откроется, а в логах Nginx будет пусто, на самом деле NextCloud переопределеяет лог для хранения ошибок в каталог /next-cloud/data/nextcloud.log и причину ошибки надо искать там.
Например, при ряде внедрений при установленном и включенном модуле Redis мы получали ошибку:

Эта проблема решается сборкой модуля при помощи pecl:

Конечно с механихмами кэширования есть еще несколько особенностей, но этой теме тогда модно уделить отдельную статью.

И в завершение последняя ошибка: Вы зашли на этот сайт через HTTP. Мы настоятельно рекомендуем настроить ваш сервер на использование HTTPS

NextCloud желательно должен иполнятся в отдельном LXC-контейнере для безопасности, а за проксирование запросов из интернет к контейнеру и шифрование трафика отвечает отдельный Nginx и его конфигурация максимально простая:

Как вы видите, Nginx на фронт-сервере принимает подключения на портах 80 и 443, после чего перенаправляет все не шифрованные подключения на порт 443 (HTTPS), а все подключения на HTTPS-порт он защищает сертификатом от Let’s encrypt и направляет на Lxc-контейнер в котором мы собственно и производим настройку.
При первом обращении по доменному имени вам будет предложено добавить домен в доверенные:

Установка и настройка NextCloud

Основные нюансы предварительного конфигурирования NextCloud

Наш NextCloud-сервер практически настроен и готов к работе, но есть еще несколько нюансов на которые необходимо обратить внимание. Настроив эти казалось бы «мелочи», вы в дальнейшем сохраните свое время и нервы.

Настройка персонального оформления

Измените название вашего хранилища и фоновое изображение на странице авторизации придав ему «корпоративный стиль», для этого перейдите в раздел «Администрирование» -> «Темы оформления».

Установка и настройка NextCloud

Данные настройки прежде всего изменяют вид окна авторизации в системе и например в нашем случае у нас получилось «унифицированное оформление» с центральным сайтом.

Установка и настройка NextCloud

Настройка подключения к почтовому серверу

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

Я не рекомендую устанавливать облачное хранилище напрямую на почтовый сервер и в наших внедрениях мы всегда используем отдельную учетную запись электронной почты для облачного хранилища и спользование протокола SMTP с авторизацией и шифрованием при работе с этой учетной запись.

Для настройки такого режима работы перейдите в раздел «Администрирование» -> «Дополнительные настройки» и выберите в способах отправки режим SMTP. Естественно, что вам потребуется указать логин/пароль учетной записи и адрес почтового сервера.

Установка и настройка NextCloud

Настройка максимального размера выгружаемого файла

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

Для увеличения максимального размера выгружаемого файла измените следующие параметры в конфигурации Nginx и PHP-FPM:

 

Ограничения для новых пользователей облачного хранилища

По умолчанию, для новых пользователей не задана квота по используемому месту, что может вызвать быстрый расход доступного дискового пространства. Обязательно перейдите в раздел «Администрирование» -> «Пользователи» и нажмите значок шестерни в левом нижнем углу подписанный «Настройки». В открывшемся списке вы сможете установить квоту по умолчанию для нового пользователя.

Установка и настройка NextCloud

Рекомендуемые плагины NextCloud

В отличие от Google-диск, Yandex.Диск у облачного хранилища NextCloud в запасе имеется огромное количество плагинов. Плагины облачного хранилища NextCloud доступны в разделе «Настройка» -> «Приложения».

Установка и настройка NextCloud

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

Начнем, мы с плагина из раздела «Отключенные приложения» (это означает, что плагин установлен по умолчанию но отключен) под названием «External user support». Это приложение позволяет использовать для авторизации пользователей почтовый сервер или Samba, проще говоря аутентификация пользователей проводится средствами этих сервисов дополнительно к внутренней авторизации.

External user support

Приложение не предполагает административного интерфейса и поле его активации необходимо внести правки в конфигурационный файл NextCloud, что потребует FTP или SSH доступ к файлам облачного хранилища. Так же обратите внимание, что для использования Samba или IMAP серверов для авторизации пользователей потребует установить и активировать дополнительные PHP-модули:

В конфигурацию добавьте массив источников данных авторизации и например для IMAP-сервера запись выглядит следующим образом:

Обратите внимание на используемую опцию ssl/novalidate-cert, она отключает проверку валидности сертификатов при доступе к почтовому серверу в рамках интранета по ip-адресу. В случае если взаимодействие с локальным почтовым сервером проиходит без использования SSL-сертификатов (например при VPN-тунелировании SSL-шифрование трафика выглядит излишним) используйте параметры подключения без блока /ssl/novalidate-cert.

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

Установка и настройка NextCloud

Плагин «Contacts»

Описание плагина можно найти по адресу: https://apps.nextcloud.com/apps/contacts. После включения приложения доступ к контактам возможен сразу в панели быстрого доступа рядом с файлами.

Установка и настройка NextCloud

Помимо управления контактами, позволяет реализовать удаленный доступ к личным контактам по протоколу CardDAV. Настроив взаимодействие по протоколу CardDAV вы можете легко синхронизировать контакты NextCloud с мобильным телефоном под управлением любой популярной ОС.

Для получения доступа к url контактов нажмите на значок шестеренки в модуле контакты.

Установка и настройка NextCloud

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

Android-приложение доступно в PlayMarket бесплатно: https://play.google.com/store/apps/details?id=org.dmfs.carddav.sync&hl=ru&rdid=org.dmfs.carddav.sync

Плагин «Calendar»

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

Установка и настройка NextCloud

Хотя с синхронизацией CalDav для андройд не все так однозначно. Есть платное приложение CalDav-Sync за 89 рублей и приратка на 4pda, причем приратка похоже с вирусами. Вобщем не рискуйте и просто купите за 89 рублей, не такие большие деньги.

Путь для синхронизации будет всегда один https://cloud.help-me-24.com/remote.php/dav/ и отличаться только по логин/пароль. Естественно, что вы можете строить общие календари и создавать разного рода общие календари для отделов.

Плагин для организации общего хранилища паролей «Passman»

Подробное описание плагина можно найти по адресу: https://apps.nextcloud.com/apps/passman.

Очень удобное приложение напоминающее KeepassX но с web-интерфейсом. Для обеспечения повышенной безопасности дополнительно шифрует хранилище, но мне видится несколько методов как можно сломать этот уровень защиты если сервер вам не пренадлежит, поэтому используйте это приложение только если сервер вам полностью подконтролен.

И в конце заметки, хотел бы обратить ваше внимание на удобное приложение для платформы Android которое позволяет удобно работать с файлами из облака на мобильном устройстве. Ссылка на страницу в маркете: https://play.google.com/store/apps/details?id=com.nextcloud.client&rdid=com.nextcloud.client

2 комментария к записи “Установка NextCloud на Ubuntu 16.04 + LEMP

  1. Если пишешь статью или инструкцию…. ПИШИ С УСТАНОВКИ ВСЕХ КОМПОНЕНТОВ С ЧИСТОГО OC!!!!
    Начни с установки aptitude и его настройки

  2. Всё очень доступно и хорошо написано.
    Я немного не понял, «шифрование трафика отвечает отдельный Nginx и его конфигурация максимально простая:» — то нужно устанавливать новых NGinx?
    Если можно пошагово подробнее.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *