Не удалось создать файл на основе шаблона nextcloud
Рассмотренные примеры подойдут для Linux Ubuntu версий 16, 18 и 20.
Ротация логов сайта Nginx
Так как логи сайта выведены из стандартного места хранения логов и файл отвечающего за легирование сайтов уже нестроен, согласно предыдущей статьи LEMP сервер на Calculate Linux, то нам достаточно добавить одну строчку:
Другие с доступом
In order to find out if a file or folder is accessible to others through sharing of a superior folder hierarchy level, click on Others with access in the sharing tab:
The list shows all users, groups, chats etc. that the current object has been given access to through sharing of a superior folder in the hierarchy:
Click on the three dots to:
посмотреть, кто инициировал общий доступ
увидеть, где был инициирован общий ресурс (нажмите, чтобы перейти к каталогу, если у вас есть доступ к нему)
отменить первоначальный доступ (возможно только владельцу общего ресурса)
Эта информация видна только владельцу файла/папки, или публикуется с правами совместного доступа.
Федерация общего доступа позволяет вам монтировать общие папки с удаленных серверов Nextcloud, создавая собственное облако Nextcloud. Вы можете создавать прямые ссылки для пользователей на других серверах Nextcloud.
Расположение файлов для работы SSL от Let’s Encrypt
Перейдем в папку с сервисом и выведем информацию о тот что находится в папке:
Назначение папок и файлов:
- live — в этой папке находятся все необходимые файлы для работы ssl разбитые папками на каждый ресурс для которого получались ключи,
- renewal — параметры которые будут использованы при продлении сертификата,
- options-ssl-nginx.conf — необходимые параметры которые необходимо указать в файле настройки nginx,
- ssl-dhparams.pem — файл параметров Диффи-Хеллмана необходимый для лучшей безопасности при работе сайта с SSL.
Внимание! В случае если вам необходимо сменить тип получения сертификата необходимо запустить заново команду «certbot certonly» и указать необходимые параметры для нужного домена и файл отвечающий за параметры продления сертификата будет обновлен в папке renewal!
Нагрузочное тестирование
«Как дела с нагрузкой?» — спросите вы напоследок.
Наш инстанс сервиса крутится на ~ 6Gb Ram + 6CPU в виртуальной машине среди других VM.
При пике нагрузки на сеть — оперативной памяти использовалось чуть более 2.5Gb, процессор забит не был, а отдача в среднем была около 5Gbit/s (рекорд — доходило и до 8Gbit/s).
Единственное, что заметили — при отдаче сверх 6Gbit/s во внешний мир, у нас периодически отваливается web-интерфейс, но сами загрузки у пользователей продолжают идти.
пользователи или группы на федеративных серверах Nextcloud
Some options may not be available due to administrative configuration. See administrator documentation for details.
Подготовка системы
Синхронизируем время.
Устанавливаем утилиту chrony:
apt-get install chrony
Выставляем нужный часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время.
Разрешаем запуск демона chrony:
systemctl enable chrony
4 комментариев для статьи “ NextCloud установка на Nginx ”
Как в целом впечатление о продукте? У меня давно витают мысли перейти с яндекс диска на свое сетевое хранилище. Но всегда смущает, что яндекс работает стабильно и предсказуемо, я всегда могу получить доступ к данным, а опенсорсные программы возможно не обладают такой же стабильностью и надежностью. Но реально я их не проверял еще, руки не доходят.
Начинал я с OwnCloud. После тестирования NextCloud однозначно могу сказать что удобств и расширений в NextCloud больше. Есть нюансы в настройке про которые расскажу в следующей статье. Обновления проходят без проблем… Ну а по функционалу и возможностей мне нравится больше чем Yandex.Disk. Примантировал в NextCloud свои все Yandex диски и все теперь в одном месте 😉 Есть там система видео звонков между пользователей, чат, привязка календарей всех популярных, групповые всякие политики, подключение хоть к LDAP хоть к AD….. А стабильность он в руках пользователя только… с кривыми руками и самые стабильные программы ломаются 🙂
Подключение яндекс дисков к своему хранилищу очень удобно. Не знал об этой возможности. Надо будет попробовать.
Привет, Хабр! Хочу поделиться немного нетривиальным кейсом по настройке NextCloud в качестве сервиса по созданию защищенных ссылок, для прямого скачивания данных с подключенного сетевого smb\cifs-диска. Опишу решения нюансов, с которыми столкнулся во время настройки.
Зачем это надо?
Удобная доставка контента конечному пользователю, минуя возню с FTP и невозможность (из-за NDA) воспользоваться публичными сервисами и облаками для передачи файлов (BTsync, Google-\Mail-\Yandex-Disk\Dropbox\etc).
Настройка доступа к базам PostgreSQL
Настройки ниже необходимы если вы планируйте подключатся к базам данных с других компьютеров в локальной сети посредством программы pgAdmin 4 версии.
За доступ отвечают параметры в файле /etc/postgresql-9.6/pg_hba.conf. В моем случае мне необходимо чтобы доступ был разрешен только с моего компьютера в локальной сети. Произведем корректировку файла:
Помимо того что надо добавить доступ в iptables для 5432 необходимо внести изменения в файл /etc/hosts. Добавим нужные данные с учетом что ip адрес сервера 192.168.0.141:
Перезагрузим сервис баз данных:
Проверим какие порты работают:
Достаточно указать в pgAdmin4 сервер 192.168.0.141, порт 5432, данные пользователя posgres для подключения и удобно работать с базами данных.
Добавление пользователя
Создать нового пользователя можно командой:
sudo -u www-data php /var/www/nextcloud/occ user:add admin
* где admin — имя учетной записи.
Создание новой федерации
Общий доступ к федерации включен по умолчанию. Выполните следующие действия, чтобы создать новый общий ресурс с другими серверами Nextcloud или ownCloud:
Файл настройки NextCloud для работы с SSL Nginx
Исходя из всего сказанного выше мой файл настройки получил такой вид:
Проверим сторонними ресурсами как установился наш SSL-сертификат.
-
— cервис проверки настройки SSL, — сервис проверки SSL но более детальный.
Ошибка при установке на MariaBD
При попытке установки на базу данных MariaDB вы получите ошибку:
«General error: 1665 Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED»
Для избавления от этой ошибки необходимо отредактировать конфигурационный файл /etc/mysql/my.cnf отвечающий за настройки базы.
После перезагрузки MariaDB установка пройдёт без ошибок.
Настройка nextcloud
Итак, Nextcloud уже установлен, зависимости поставлены, а в сервисе заведен один внутренний юзер, который создался во время установки.
Шаг первый. Подготовка шаблона аккаунтов сотрудников.
Поскольку у нас будет не один сотрудник в системе, а постепенно их количество будет меняться — если заранее не настроить шаблон создаваемого пользователя — у каждого будет в домашней папке несколько файлов-примеров. Хорошо что по этому поводу у nextcloud есть отдельная настройка — skeleton files, которая настраивается в config.php.
То есть, можно создать пустую папку и указать в конфиге полный путь к ней.
Шаг Второй. Делаем пользователей «read-only»
Шаг третий — заранее чиним ZipStreamer
ZipStreamer — библиотека, используемая в бекенде NextCloud, она служит для создания архивов «на лету», то есть во время скачивания пачки файлов.
Это связано с тем, что по этой кнопке система в режиме реального времени создает и отдает вам на скачивание архив (в большинстве случаев .zip, в редких кейсах — .tar)
Кстати, в силу особенности этой технологии, возобновление приостановленных загрузок в этом случае невозможно.
Похожее поведение есть у и аналогичных сервисов: Google Drive, Яндекс.Диск, и т.д.
Проблема кроется в том, что по неизвестным причинам, заложенная в NextCloud логика переключения zip в zip64 сбоит, и при случае, если в папке больше 65536 файлов, и\или их общий вес будет превышать 4гб — скорее всего вы столкнетесь с проблемой, что скачанный файл будет либо побит, либо загрузка будет прерываться после скачанных 4гб.
Поскольку у нас 100% 64хбитная система, то мы принудительно говорим библиотеке использовать 64х-битный режим. «Решение в лоб».
В официальном образе происходит при каждом запуске контейнера некий Integrity Check и из одного места в другое распаковываются оригинальные файлы поверх установленных( из /usr/src/nextcloud/* в /var/www/html/*).
Поэтому просто в лоб замапить файл в условном /var/www не получится — при запуске файл либо перетрется оригиналом, либо контейнер запустится и упадет сразу с ошибкой.
Так что мы подменяем патченым файлом исходный в папке /usr/src/nextcloud/lib/private/ еще при сборке в CI нашего форкнутого образа. Получается, наш поправленный файл будет гарантированно всегда использоваться.
Эти манипуляции, по крайней мере при использовании докер-образа, в Панели Администрирования точно завалят вам встроенную проверку на подлинность, имейте это ввиду.
Но лично нас пока это устроило.
Шаг четвертый — настраиваем параметры ссылок
В параметрах публикации настраиваем правила так, как будет удобно. Например, делаем обязательную защиту паролем и ставим обязательный срок жизни.
Шаг пятый — подключаем сетевой диск
Шаг шестой — запускаем пользователей через LDAP
Теперь, когда мы все подготовили — ставим из маркетплейса плагин, и сразу после подключаем LDAP. В нашей системе, мы давали доступ сотрудникам, которые находятся в группе NextcloudAccess. Можете сделать аналогично.
3. Не настроена система кеширования
Для решения проблемы мы должны установить и настроить одно из средств кэширования:
Мы рассмотрим два последних варианта.
Redis
Устанавливаем сам Redis Server и модуль php:
apt-get install redis-server php-redis
* в случае установки сервера Redis на отдельный сервер, необходимо выполнить на сервере Nextcloud только установку php-redis.
systemctl restart php7.4-fpm
Открываем конфигурационный файл для nextcloud:
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
),
Memcached
Выполняем установку модуля для php и сам сервис memcached:
apt-get install memcached php-memcached
После разрешаем его автозапуск:
systemctl enable memcached
systemctl restart php7.4-fpm
После этого открываем конфигурационный файл для nextcloud:
.
'memcache.local' => '\\OC\\Memcache\\Memcached',
'memcache.distributed' => '\\OC\\Memcache\\Memcached',
'memcached_servers' =>
array (
0 =>
array (
0 => 'localhost',
1 => 11211,
),
),
.
Внутренние общие ресурсы для пользователей и групп
При совместном использовании с пользователями, группами, кругами или участниками Конференции права на файлы и содержимое папок регулируются:
В качестве общего ресурса вы можете настроить, хотите ли вы автоматически принимать все входящие общие ресурсы и добавлять их в корневую папку, или если вы хотите, чтобы каждый раз вас спрашивали, хотите ли вы принять или отклонить общий ресурс.
For adjusting the acceptance setting, go to Settings > Personal > Sharing:
2. В системе не установлены рекомендуемые модули PHP
Данная ошибка устраняется в зависимости от списка модулей, которых не хватает системе. Чаще всего, подходит команда:
dnf install php-
apt-get install php-gmp php-bcmath
После перезапускаем php-fpm:
systemctl restart php7.4-fpm
Добавление базы PosgreSQL
Добавим базу и пользователя для облачного ресурса NextCloud:
Всё хорошо. Необходимая база и пользователь созданы. Осталось проверить подключение к базе выполнив команду:
Базу данных настроили можно переходить к дальнейшим этапам установки свободного облачного сервиса Nextcloud.
Windows
Для начала необходимо включить службу «Веб-клиент». Для этого открываем от администратора командную строку и вводим команды:
sc config webclient start= auto
net start webclient
* первая команда включит автозапуск службы; вторая — запустит ее.
После открываем командную строку от пользователя и создаем сетевой диск командой:
Например, для нашей настройки:
Ограничение на копирование файла с webdav
В Windows при попытке скопировать большой файл с папки webdav, мы можем получить ошибку «Ошибка 0x800700DF: Размер файла превышает установленное ограничение, сохранение файла невозможно.»:
Для решения проблемы необходимо на клиенте разрешить больший объем для загрузки файлов. Это делается в реестре — ветка HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters, параметр FileSizeLimitInBytes. Для примера, если задать значение 4294967295 (максимально возможное), то мы получим ограничение в 4 Гб.
Также можно воспользоваться командой:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters" /v FileSizeLimitInBytes /t REG_DWORD /d 4294967295 /f
* команду нужно запускать в консоли, запущенной от администратора. В данном примере мы задаем также ограничение в 4 Гб.
Подключение папки nextcloud по webdav
Мы можем подключить пользовательские данные nextcloud в качестве сетевого диска или раздела. Рассмотрим процесс для Windows и Linux.
Установка Nextcloud
Устанавливаем пакет unzip:
apt-get install unzip
Заходим на страницу nextcloud и копируем ссылку на скачивание последней версии программы:
Переходим во временную папку и скачиваем исходник для установки, воспользовавшись скопированной ссылкой:
* на момент обновления инструкции последняя версия была 22.
Распаковываем скачанный архив:
И переносим содержимое архива в каталог /var/www:
mv nextcloud /var/www
Задаем права доступа:
chown -R www-data:www-data /var/www/nextcloud
Задаем логин и пароль для администратора. В качестве базы данных выбираем MySQL/MariaDB (если предлагается выбор) и вводим в качестве логина, пароля и базы nextcloud.
Оптимизируем работу базы данных:
sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Тюнинг после установки
Для корректной работы системы выполним дополнительную настройку. После входа в nextcloud под администратором, переходим в настройки для пользователя:
В разделе «Параметры сервера» переходим в Основные сведения:
В разделе «Проверка безопасности и параметров» мы можем увидеть список проблем:
Рассмотрим процесс решения некоторых из них.
Заключение
Всё, после всех этих нехитрых, но местами не самых очевидных манипуляций — сервис работает, диск подключен, сотрудники добавлены, а пользователи качают и довольны.
Установка Let`s Encrypt для Calculate и Gentoo
Установим сам certbot обеспечивающий работу с сертификатами от Let`s Encrypt:
Установим расширения для получения сертификатов средствами nginx:
Внимание! В моем варианте облачное хранилище уже настроено так чтобы доступ к ресурсу был как с локальной сети так и с интернета!Первый раз раз можно получить сертификат, используя временный веб сервер самого certbot (пункт 2), но после начала работы сайта придется повторить действие по получению сертификата для перенастройки файла отвечающего за автоматическое продление сертификата!
Обязательно указывайте правильный и рабочий почтовый ящик чтобы в последствии в случае неудачного продления сертификата получать такое письмо с предупреждением:
В результате успешной установки мы получим необходимые файлы которые необходимо прописать в файл настройки Nginx для сайта. Ниже я расскажу что и как прописать в файл настройки сайта а сейчас остановлюсь на автоматической продлении и основных моментах работы этого сервиса.
Сброс пароля
При необходимости сбросить пароль пользователя, можно воспользоваться командой:
sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin
* где admin — учетная запись пользователя, чей пароль хотим сбросить.
Установка NextCloud
Установка с исходных кодов с сайта разработчика производится в три этапа:
- Создание необходимых путей и загрузка файлов,
- Создание фала конфигурации Nginx для работы облачного ресурса,
- Внесение необходимых поправок в конфигурацию сервисов для корректной работы NextCloud.
Публичная ссылка делится
Вы можете делиться файлами и папками через публичные ссылки.
Для общих папок каталог доступны несколько параметров:
Только для чтения, чтобы разрешить просмотр и скачивание
Allow upload and editing
With File drop, the sharee can only upload files to a folder without seeing the files that are already in that folder.
Hide download hides the download buttons and the default browser right-click options in order to make downloading for the sharee harder
Защита паролем
Установить срок действия автоматически отключит общий доступ
Примечание для получателя
Отменить общий доступ
Добавить еще одну ссылку, чтобы создать несколько общедоступных ссылок с разными правами
For public file shares, you may allow editing the file with one of Nextcloud’s collaborative editing solutions:
Password protection as well as file expiration are not propagated using Federated File Sharing in current Nextcloud releases. This will be adjusted in Nextcloud 22.
Предварительная подготовка
Создадим необходимые папки:
Перейдем в папку и скачаем последнюю версию NextCloud:
Назначим необходимые права:
Добавление публичного общего ресурса в ваш Nextcloud
Надеюсь, ни для кого не секрет, что вследствие определённых причин интернет начал сильно преображаться. Например, привычные сервисы становятся недоступны в силу блокировок или собственного решения компании о прекращении предоставления услуг в отдельных регионах.
На данный момент предлагаю остановить своё внимание на организации доступного хранилища и работе с онлайн-документами. Что обычно для этого используется пользователями?
Хранение и обмен документами:
Если вдруг нужна инструкция по установке Nextcloud, то подсмотреть, например, для FreeBSD можно здесь. Я же хочу уделить внимание возможности замены ставших для многих уже привычными, облачных сервисов совместной работы с офисными документами.
После длительных поисков и раздумий было решено остановить своё внимание на продукте ONLYOFFICE, являющемся автономным сервером и имеющем дополнительное приложение, позволяющее интегрировать создание/редактирование документов в рабочую среду Nextcloud.
И если с установкой приложения в Nextcloud всё предельно просто, оно устанавливается через внутренний магазин и из настроек для запуска нужно указать только адрес (где расположен сервер документов), то с настройкой серверной части есть несколько не очень очевидных нюансов, на разбор которых ушло приличное количество времени.
Здесь, пожалуй, стоить сделать небольшое отступление и пояснить суть моего выбора. Ведь есть же Nextcloud Office, и устанавливается он из встроенного магазина приложений буквально в несколько кликов. Но при выборе, на чём остановиться в постройке собственной рабочей среды, было одно немаловажное отличие этих двух продуктов, перевесившее в пользу именно ONLYOFFICE.
А разница тут довольно принципиальная. Если Nextcloud Office — это по своей сути тот же LibreOffice со своими плюсами / минусами и тараканами в плане совместимости с форматированием в документах, созданных с использованием MS Office, то пакет ONLYOFFICE — уже обещает максимальную совместимость по формату.
Приведу цитату с сайта разработчиков:
«ONLYOFFICE заточен на работу с *.docx, *.xlsx и *.pptx и обладает максимальной совместимостью с форматами MS Office. Это буквально означает, что все объекты, которые есть в редакторах ONLYOFFICE, были созданы в соответствии со стандартами MS Office (Это четыре тома и более семи тысяч страниц). Мы уже много сделали, но, конечно, много всего ещё предстоит добавить.»
За много лет накопилось огромное количество текстовой документации в формате *.doc/*.docx и не меньшее количество таблиц с данными и расчётами в формате *.xls/*.xlsx, заниматься переделыванием в новый формат совершенно не было никакого желания, собственно это и определило, на чём остановить свой выбор.
Что ж, пора приступать к увлекательному процессу установки и настройки. Не стоит забывать и тот момент, что описывается установка бесплатной версии «community edition», сервер которой, естественно, имеет свои ограничения, однако и такого функционала вполне достаточно для небольшого коллектива в 10-15 человек. Собственно, ограничение связано с максимальным количеством одновременных подключений (не более 20) и отсутствием мобильных веб-редакторов, а также технической поддержки.
Самая большая проблема, с которой я столкнулся в процессе установки, это то, что document server не совмещается на одном сервере с Nextcloud, если только специально не использовать Docker. В моём распоряжении виртуализация, и поэтому всё это было небольшой проблемой, но времени отняло немало, пока я понял это и нашёл подтверждение на форуме.
Для установки ONLYOFFICE Document server Community Edition был настроен виртуальный сервер на основе Ubuntu 20.04LTS. Разработчики рекомендуют использовать Debian, Ubuntu или любой другой совместимый дистрибутив с ядром не ниже версии 3.13.
И вот, собственно, пошаговое руководство по установке.
Первым делом обновляем данные о пакетах:
Помимо прочих компонентов, для нормальной работы требуется наличие в системе работающего веб-сервера Nginx. Выполним для этого ряд действий:
Необходимые изменения в конфигурационные файлы будут внесены автоматически при выполнении последующих этапов установки.
Устанавливаем совместимую с дистрибутивом базу данных PostgreSQL:
После успешной установки необходимо создать саму базу данных и пользователя. Стоит обратить особое внимание, что имя пользователя базы данных обязательно должно быть — onlyoffice, а вот пароль (password) можно указать любой, главное — его не забыть. Он понадобится на этапе установки самого сервера.
Устанавливаем дополнения веб-сервера nginx-extras:
Для выполнения самой установки нужно сделать ещё ряд подготовительных действий. Добавить в систему ключ PGP и подключить репозиторий:
Обновляем пакетный менеджер:
Устанавливаем пакет стандартных шрифтов майкрософт:
И собственно сама установка ONLYOFFICE Documentserver'а. Вот при выполнении этого этапа и будет запрошен пароль доступа к создаваемой ранее базе данных.
Собственно, на данном моменте уже можно проверить работоспособность. Зайдя в браузере по адресу настраиваемого сервера, мы должны увидеть следующее:
Здесь внизу есть кнопка [GO TO TEST EXAMPLE], по которой можно запустить тестовые документы и проверить работоспособность. Но для этого сначала нужно выполнить:
И теперь можно убедиться в работоспособности сервера и оценить интерфейс.
Главное, после проверки работоспособности не забыть выключить тестовые файлы:
С установкой серверной части закончено, и пора приступать к настройке клиентской. Здесь всё просто. Заходим в Nextcloud (под аккаунтом администратора), открываем магазин приложений > аккаунт > приложения, в поиске вводим ONLYOFFICE и устанавливаем. После переходим в аккаунт > настройки и в левом меню в разделе «Параметры сервера» ищем пункт ONLYOFFICE.
Здесь в поле «Адрес» ONLYOFFICE Docs пишем адрес сервера, который настраивали на предыдущих шагах, и ниже нажимаем сохранить.
Видим в правом верхнем углу надпись: «Настройки были успешно обновлены (версия 7.0.1.37)», что свидетельствует об успешно установленном соединении с сервером. Помимо этого, ниже на странице появились и дополнительные настройки, позволяющие выбрать типы документов, доступные для редактирования.
Выбираем нужные и ещё раз жмём сохранить. На этом основная настройка завершена. Теперь в меню создания нового файла появились дополнительные пункты для создания файлов текстового редактора / таблиц / презентаций.
Останавливаем веб-сервер Nginx:
Далее нужно скопировать файл конфигурации из шаблона ds-ssl.conf.tmpl и внести ряд изменений:
Остаётся только отредактировать файл /etc/onlyoffice/documentserver/nginx/ds-ssl.conf заменив > на путь к файлу SSL сертификата и > на путь к файлу приватного ключа SSL сертификата.
Для начала создадим приватный RSA ключ, который будет использоваться для создания сертификатов CSR или CRT:
В данном случае ds.local — имя, присвоенное серверу документов в локальной сети, по которому можно на него зайти через браузер с других компьютеров.
Теперь создадим сертификат CSR:
В процессе выполнения команды потребуется ввести ряд дополнительных данных, таких как код страны, страна, город, компания, расположение, доменное имя (в данном случае это и есть ds.local), адрес электронной почты.
И последним шагом создадим самоподписанный сертификат CRT:
Для использования самоподписаных сертификатов с Nextcloud в файл конфигурации config.php нужно добавить следующую строчку:
Безопасности это, конечно, системе не добавит, но для локального использования вполне подойдёт. Также нужно скопировать сертификат на машину с установленным Nextcloud и импортировать его, используя консоль. Выполнять команду нужно в корневом каталоге, где расположены файлы Nextcloud.
Вот, собственно, и все действия необходимые для базовой локальной настройки интеграции пакета ONLYOFFICE в Nextcloud.
Сказать, что это было сложно? Нет, всё достаточно просто, когда знаешь, что делаешь. А вот полезность полученного результата сложно недооценить как для использования в работе небольшого коллектива, так и в домашнем применении. Единственное, что осталось нерешённым, так это то, как совместить оба пакета на одном сервере?
Если вдруг кто-то знает решение, то очень интересно было бы узнать, как это осуществить. В сети я нашёл только информацию о том, что так можно делать только на разных серверах.
Введение
Ранее я описывал как настраивать NGINX на web сервер CentOS 7 и LEMP сервер на Calculate Linux на основе последнего материала произведу настройку NextCloud. Обновление облачного хранилища производится средствами самого ресурса и поэтому выполним установку из исходных файлов с сайта разработчика. NextCloud будет работать в локальной сети. Для удобства работы откроем доступ с сети интернет и подключим свободный сертификат SSL от компании Let`s Encrypt. В качестве базы данных будем использовать PostgreSQL.
Linux
Установим клиент davfs2. Действия будут немного различаться в зависимости от дистрибутива Linux.
а) Ubuntu / Debian:
apt-get install davfs2
б) CentOS / Red Hat:
yum install davfs2
Теперь мы можем примонтировать
После ввода команды, система попросит нас ввести логин и пароль от учетной записи Nextcloud:
Username: user
.
Password:
После каталог будет примонтирован.
Для постоянного монтирования серез fstab, открываем файл:
После открываем файл:
И добавляем строку:
/mnt user password
* где /mnt — предполагаемый каталог, куда мы будем монтировать данные; user и password — логин и пароль от учетной записи в Nextcloud.
Создадим своё облачное хранилище NextCloud под управление Nginx на базе дистрибутива CSS от Calculate Linux. Принцип установки и настройки подойдет для любого другого дистрибутива Linux. Совместная работа с файлами с любого браузера.
4. Не указан регион размещения этого сервера Nextcloud
Для решения проблемы открываем конфигурационный файл nextcloud:
Настройка сервера баз данных
В качестве СУБД используем MariaDB.
apt-get install mariadb-server
Разрешаем автозапуск и стартуем сервис:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для суперпользователя mysql:
mysqladmin -u root password
Подключаемся к MariaDB, создаем базу данных и пользователя:
> CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost IDENTIFIED BY 'nextcloud';
Что мы хотим получить в конечном итоге:
- Только сотрудники могут заходить в наш сервис и только через ActiveDirectoty\LDAP, точно так же как заходят на офисный пк, в Jira, Confluence, Nexus и пр.
- После авторизации в веб интерфейсе NextCloud, сотруднику должен быть подключен наш сетевой диск, с точно такими же правами, как это происходит при заходе с рабочего компьютера.
- При первом входе в NextCloud — у каждой учетной записи создаются файлы-примеры в домашнем каталоге, которые занимают места на диске. По хорошему, от этого надо избавиться.
- Сотрудник не должен иметь возможность загружать что-либо, как на подключенный диск, так и в аккаунт NextCloud .*Это просто наша хотелка, на самом деле — она не обязательная.
- Сотрудник может создавать временные ссылки, защищенные паролем на любые доступные ему ресурсы — будь то папка или отдельный файл. А также управлять ими (ссылками) — отзывать, менять срок жизни и прочее.
- Конечному пользователю, кому отправлена защищенная ссылка, достаточно её открыть и ввести пароль, чтобы получить возможность скачать расшаренные ему данные.
1. Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ
Открываем на редактирование файл:
Меняем настройку для memory_limit:
systemctl restart php7.4-fpm
Работа с пользователями из UNIX-Shell
В состав nextcloud входит php-скрипт occ, с помощью которого можно управлять сервисом из командной строки Linux.
Запрос getenv(«PATH») для NextCloud
Для избежания ошибки в последующем после установки NextCloud сразу внесем необходимое изменение.
Определим пути в системе:
Развёртка и настройка зависимостей
Для начала, нам надо иметь отдельную виртуалку или сервер, где можно установить операционную систему, и после — NextCloud.
На Хабре есть не одна статья, посвященная развёртке системы и сервиса.
AlexanderS достаточно хорошо и подробно описал процесс от установки системы до самой настройки облака (включая актуализацию статей по годам). Не вижу смысла в очередной раз это всё повторять.
1. Так как мы подключаем в NextCloud сетевой диск, то нам понадобятся пакеты в систему: smbclient, libsmbclient , php-ldap, и php-smbclient.
Если вы тоже используете докер, то напомню — официальный образ не имеет на борту пакетов для работы с samba и вам лучше создать форк, установив их в своем Dockerfile. И, согласно документации, установка пакета php-smbclient внутри их образа немного отличается от классического “apt install package”.
2. Из-за особенностей настроек нашего сервера samba (отключена поддержка smb1), на машине с nextcloud, в файлах /etc/samba/smb.conf и /usr/share/samba/smb.conf пришлось поменять строки, отвечающие за протокол:
В ином случае, nextcloud так и не смог подключиться к диску.
Автоматическое продление сертификатов Let’s Encrypt
Ручное обновление всех сертификатов сводится к вводу в командной строке команды:
Для проверки работы сервиса но без обновления сертификатов достаточно указать команду:
В случае успешной проверки нам достаточно создать файл в необходимой папке и указать необходимый код:
Согласно этого кода в 4.30 каждый понедельник будет производится получение новых ssl сертификатов взамен старым, если их пора обновлять, с записью лога в файл и последующая перезагрузка сервиса Nginx.
Файл лога будет выглядеть:
В моем случае была попытка обновить 2 сертификата, но они актуальны и замена не производилась.
Настройка Nginx для Nextcloud
Создадим файл для работы NextCloud под управлением сервиса Nginx:
Получение SSL от Let`s Encrypt
Ранее я описывал более подробно про получение и продление бесплатный трехмесячных сертификатов SSL. Ниже я лишь опишу получение и продление сертификатов со спецификой для дистрибутивов на базе Gentoo.
Установка и настройка PostgreSQL
В будущем я напишу более детальную статью о том как работать с PostgreSQL. Ниже я лишь опишу основные моменты которые необходимы для работы NextCloud с этой базой данных.
Установим базу данных PostgreSQL командой:
Настроим базу выполнив команду:
В выводе указана вся основная информация.
Запустим сервис PostgreSQL:
Добавим в автозагрузку:
Создадим пароль для пользователя posgres:
Запуск установки NextCloud
Параметры PHP OPcache для Nextcloud
Для избежания ошибки в последующем после установки NextCloud сразу внесем необходимое изменение.
Внесем изменения в файл php.ini:
После всех настроек перед непосредственном запуском установки NextCloud необходимо проверить, перезапустить Nginx и Php-fpm:
Установка и настройка веб-сервера
Устанавливаем PHP, PHP-FPM и необходимые для работы nextcloud модули:
apt-get install php php-fpm php-common php-zip php-xml php-intl php-gd php-mysql php-mbstring php-curl php-imagick
* путь к данной папке зависит от установленной версии php. В данном примере это 7.4.
Снимаем комментарии со следующей строки:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
Разрешаем автозапуск php-fpm и перезапускаем его:
systemctl enable php7.4-fpm
systemctl restart php7.4-fpm
* php7.4-fpm зависит от версии установленного php.
NGINX
Nextcloud можно развернуть на NGINX или Apache. В данной инструкции будем использовать первый.
apt-get install nginx
Создаем виртуальный домен и настраиваем его для работы с облачным сервисом:
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
client_max_body_size 10G;
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 = /core/templates/403.php;
error_page 404 = /core/templates/404.php;
location = /robots.txt allow all;
log_not_found off;
access_log off;
>
location ~ ^/(data|config|\.ht|db_structure\.xml|README) deny all;
>
location / rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
>
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ expires modified +30d;
access_log off;
>
>
Создаем каталог для хранения сертификатов и переходим в него:
openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=nextcloud.dmosk.ru/CN=nextcloud"
После установки php мог установиться и запуститься apache. Отключаем его:
systemctl stop apache2
systemctl disable apache2
Проверяем конфигурацию nginx, завершаем его автозапуск и перезапускаем сервис:
systemctl enable nginx
systemctl restart nginx
Предисловие
Наш офис имеет определенную инфраструктуру, в неё входит в том числе и ActiveDirectory, в которой у нас находятся сотрудники, состоящие в группах.
Во время сеанса работы за ПК, после логина, средствами настроенных политик, у каждого сотрудника монтируется сетевой диск. Через него время-от-времени идет обмен данными. В диске есть определенная структура папок, права на которые настроены через эти самые группы. Каждый видит то, что ему позволено настройками.
Обычно, для отдачи данных во внешний мир — поднимается, либо отдельный FTP, либо данные выгружаются на уже имеющийся. Признаюсь, это далеко не всегда удобно — как минимум, создание и управление временными логинами и паролями (например, когда партнёрам нужно отдать готовый контент), контроль места на FTP-сервере, ручная выгрузка на FTP-сервер перед “отправкой”.
В какой-то момент нам потребовалось иметь возможность напрямую отдавать конечным пользователям данные во внешний мир именно с нашего сетевого диска и, желательно, чтобы это было относительно безопасно: можно создать ссылку для скачивания (у нее имелось время жизни, пароль, разграничение прав на исходные данные и так далее).
На такую идею нас натолкнули одни из партнеров, так как у них имелся внутренний сервис, но там он был самописным.
Готовых вариантов с ходу в поисковике не нашлось (если у вас есть оные на примете — отпишитесь, пожалуйста в комментариях), а тратить потенциально много человеко-часов на разработку с нуля, тестирование и поддержку — не было желания и ресурсов ни у кого. Да и зачем изобретать велосипед, если зачастую все уже придумано до. Так на ум и пришел сервис NextCloud, который умеет подключать к себе внешние ресурсы.
Речь пойдет о последней стабильной, на данный момент версии — 19, но наш метод настройки подойдет и для более ранних версий — мы изначально реализовали это на 16 версии и потом постепенно обновлялись. Недавно я как раз поднимал его с нуля на последней (19), и опираясь на неё пишу статью.
Результат
Установка и работа своего облачного хранилища средствами свободного программного обеспечения была основная задача статьи и она успешно реализована. Было желание описать в этой статье более подробную настройку, но статья стала получатся слишком большая и было решено рассказать про детальную настройку NextCloud в следующей статье. Будет затронуто описанием установки самых популярных расширений для удобной работы облачного ресурса NextCloud.
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Присоеденяйтесь к общению Telegram чате
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Учавствуйте в проекте "Команда ADMINS"
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.
Читайте также: