Установка Nextcloud на Synology. Настройка OnlyOffice и External storage

В данном посте я хотел бы рассмотреть способ установки персонального облака на домашний сервер Synology при помощи Docker, поделиться своими ошибками и опытом использования в повседневной жизни. Я буду признателен, если более опытные пользователи habr также поделятся своим опытом и расскажут, как им помог Nextcloud в повседневной жизни или какие трудности в установке ими были пройдены.

Знакомство с Docker

С покупкой небольшого домашнего сервера Synology DS718+ в 2017 году я подсел на постоянную оптимизацию. Приложений из центра пакетов мне оказалось мало и так я дошел до Docker.

Docker — это приложение для виртуализации, которое дает вам
возможность запускать в DSM тысячи контейнеров, созданных разработчиками
со всего мира. Установить его можно из центра пакетов Synology.

Установка Docker

Запустите Центр пакетов

2a78ad458d0e35e3a5422f56ea2539d5.png

Нажмите на приложение Docker

bf31e1a4ec6776e891fe1d26761d179c.png

Нажмите «Установить», чтобы установить приложение Docker на Synology NAS.

530087b4b731ffc18b87d617cfdeb19e.png

Выберите том для установки из раскрывающегося меню. Затем нажмите «Далее», как показано на снимке экрана ниже.

535e7e530fa11cecbabf796f8ccb60db.png

Нажмите «Применить»

026c590cbc09d1228c84c2b98f79dc37.png

Установка приложения может занять несколько секунд. Как только она завершится, Вы сможете нажать «Открыть», чтобы открыть приложение Docker.

08f63654b0fd880d5e43462fb5b9155c.png

Перед началом я рекомендую пробежаться по руководству к Docker от Synology. Это поможет сформировать общее представление об основных элементах интерфейса.

Установка Nextcloud

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

Установка через приложение Docker

Для поиска контейнеров, нам необходимо перейти во вкладку «Реестр» и ввести в поисковую строку «Nextcloud»

506b1e8b500c8c7bb4d3d0c74ccbf481.png

Мы рассмотрим установку контейнера linuxserver/nextcloud (второй в списке) через веб интерфейс. В отличии от официального контейнера nextcloud (первый в списке), он уже включает в себя базу данных SQLite, nginx и php.

Щелкаем правой кнопкой мышки по контейнеру linuxserver/nextcloud и нажимаем «Загрузить это изображение».

a2adb309c6b6fc35cebfbcb08fecce85.png

Выбираем последнюю версию с тегом «latest» из раскрывающегося списка и нажимаем «Выбрать»

74518a07527fca65f890db1d5ca3ace0.png

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

182f202567a63f4a655752e59d664f16.png

В появившемся окне вводим имя нашего контейнера и жмем кнопку дополнительные настройки.

860858cf0c9dcc19a4304890eaf7f3d4.png

В разделе «Дополнительные настройки» ставим галочку напротив «Включить автоматический перезапуск»

772d3994babbd61242f92ef8947898cb.jpg

Далее переходим в раздел «Том» и добавляем две папки формата:
/path/to/config:/config и /path/to/data:/data.

eb5e00a99c86c4666cada1905ea6fa80.png

Во вкладке «Сеть» оставляем без изменений выбранную сеть.

Во вкладке «Настройки портов» пробрасываем порт из контейнера в Synology NAS. Вводим любые незанятые порты, отличные от 443 и 80. В своем примере я использую 441 и 79.

cfe19b335ace19f8d5d4b95fca3dea68.png

Далее переходим во вкладку «Защита окружающей среды». Здесь с помощью иконки »+» нам необходимо добавить следующие переменные и значения:

PUID=1000
PGID=1000
TZ=Europe/Moscow

901de6564c5dc395e2bb960413856c5a.png

Нажимаем кнопку «Применить» → «Далее» → «Применить»

Наш контейнер успешно создан и доступен во вкладке бокового меню «Контейнер».

Чтобы войти в наш контейнер, нам нужно не забыть пробросить порты. На данном этапе подразумевается, что Вы уже настроили внешний доступ для NAS и разобрались с port forwarding. Если нет, то подробней об этом можно почитать в документации synology здесь. После этого вводим в веб браузере адрес контейнера https://nameserver:441 и создаем учетную запись администратора. База данных по умолчанию доступна SQLite. Нажимаем «Создать». Загрузка может занять некоторое время, после чего страница перенаправит нас на стартовую страницу.

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

Настройка nextcloud

Список доверенных имен

Первая проблема с которой мы сталкиваемся — это ошибка при попытке входа извне.

83852ea0b92eddd8022afe74c5b9f63a.png

Для ее решения нам необходимо внести наше доменное имя в файл config.php. Для этого нам потребуется подключиться к нашему Synology NAS по SSH. Убедитесь, что доступ активен и указан порт, а в случае подключение извне — проброшен порт. Подробней о настройке доступа с root правами вы можете прочесть здесь.

Входим в наш докер контейнер

docker exec -it namecontainer sh

Имя контейнера можно посмотреть с помощью команды docker ps. Далее открываем файл config.php

vi /config/www/nextcloud/config/config.php

Находим параметр 'trusted_domains' и добавляем туда новый домен. Должно получиться так

  'trusted_domains' =>
    array (
    0 => 'localip:yourport',
    1 => 'domainname:yourport', ),

Готово! Теперь в наше облако можно заходить извне.

Лимит загрузки

По умолчанию, лимит загрузки одного файла установлен на 512 мегабайт. Чтобы его увеличить, нужно отредактировать файлы php.ini и config.php.

Для этого нам необходимо войти в наш докер контейнер (см. выше) и ввести команду:

vi ./etc/php7/php.ini

Здесь ищем и редактируем следующие параметры, предварительно нажав «i» на клавиатуре:

max_execution_time=0 #(строка 388)
max_input_time=-1 #(строка 398)
memory_limit=-1 #(строка 409)
post_max_size=50G #(строка 694)
upload_max_filesize=50G #(строка 846)

Укажите значение параметров, которые подходят Вам, затем нажмите «Esc» на клавиатуре и введите »: wq» для сохранения изменений.

Аналогично делаем для config.php

vi ./config/www/nextcloud/config/config.php

Добавляем

'session_lifetime' => 60 * 60 * 24,  
'session_keepalive' => true,

После внесения изменений сохраняем.

Подключение внешних дисков

Еще одна замечательная возможность Nextcloud — это подключение внешних служб хранения. Для этого нам понадобится нажать на иконку профиля в правом верхнем углу и перейти в «Приложения» → «Ваши приложения», находим расширение External Storage и нажимаем «Включить».

Чтобы добавить внешнюю службу, нам необходимо перейти в «Настройки» → «Внешнее хранилище» и выбрать из выпадающего списка один из доступных вариантов:

  • Amazon S3

  • FTP

  • Nextloud

  • SFTP

  • SMB/CIFS

  • WebDAV

  • Локально

  • OpenStack

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

Подключение папки из Synology NAS

Для того, чтобы Nextcloud мог увидеть папку на Вашем Synology, первым делом необходимо смонтировать эту папку в наш контейнер. Сделать это можно через графический интерфейс приложения Docker. Останавливаем наш контейнер, нажимаем по нему правой кнопкой мыши и выбираем «Том» → «Добавить папку». Указываем нужную нам папку и нажимаем «Выбрать». В поле «Путь для подключения» укажите как эта папка будет называться в Nextcloud.

Примечание. Путь для подключения должен быть указан как /имя/имя. В случае с /имя Nextcloud не видит папку.

Добавление папки tempДобавление папки temp

Запускаем наш контейнер и открываем Nextcloud в браузере. Переходим в «Настройки» → «Внешнее хранилище» и выбираем из списка «Локально». Указываем имя папки, которую будет отображать Nextcloud, указываем расположение и нажимаем на галочку.

71416b81161f0695351fd7d538b7f6c4.png

Далее нам необходимо войти с root правами в контейнер. Для подключения вводим:

docker exec -it namecontainer sh

Затем отредактируем владельца и права доступа нашей папки

chown -R abc:abc /shared/temp
chmod 0750 /shared/temp

На данном этапе мы сможем увидеть файлы, которые хранятся в нашей папке. Однако для более стабильной работы рекомендуется настроить сканирование с помощью cron. Подробней об этом можно прочитать здесь. По умолчанию для linuxserver/nextcloud оно уже настроено. Проверить это можно с помощью команды:

crontab -u root -l

В случае если Вы захотите внести изменения в интервал сканирования, то Вам понадобится команда:

crontab -u root -e

Синхронизация календаря и контактов с IOS/AOS

Мне очень нравится календарь Nextcloud и я часто пользуюсь им при планировании своего расписания. Его можно легко интегрировать в стандартное приложение мобильного устройства.

Для IOS

Откройте «Настройки» → «Календарь» → «Учетные записи» → «Учетные записи» → «Другое» → «Учетная запись CalDAV» и укажите имя сервера, пользователя и пароль.

Для Android

  • Установите DAVx5 на свое устройство

  • Откройте приложение «Nextcloud» → «Настройки» → «Синхронизировать календарь и контакты»

  • Авторизуйтесь в с DAVx5

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

  • Коснитесь значка учетной записи DAVx5 и выберите какие данные вы хотите синхронизировать

Установка OnlyOffice

На мой взгляд, лучшим дополнением для Nextcloud является именно OnlyOffice — пакет сервисов для работы с документами, который поддерживает более 20+ форматов, обеспечивает совместную работу и интеграцию с популярными облаками. Установить его можно из библиотеки приложений Docker.

Установка OnlyOffice через приложение Docker

Для поиска контейнеров, нам необходимо перейти во вкладку «Реестр» и ввести в поисковую строку «OnlyOffice»

4b8a78d765e553be6d60dcc191eac8c5.png

Для установка нам потребуется onlyoffice/documentserver (первый в списке). Щелкаем правой кнопкой мышки по контейнеру onlyoffice/documentserver и нажимаем «Загрузить это изображение».

3804061e4a396c99f4422a80b4cab03a.png

Выбираем последнюю версию с тегом «latest» из раскрывающегося списка и нажимаем «Выбрать»

e5f5458134ed96ee03383a0509286df2.png

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

Во всплывающем окне задаем имя нашему контейнеру и нажимам на кнопку «Дополнительные настройки»

33fde8718d43bf8cf696c1b265e4d77e.png

В первой вкладке ставим галочку напротив поля «Включить автоматический перезапуск»

faab7b8d217f58a174d33fff58987e1a.png

Далее переходим во вкладку «Том». Здесь необходимо добавить две папки: «data» и «logs»

4104becb9dee96ef50c1d41d0426c9ab.png

Во вкладке «Сеть» оставляем без изменений выбранную сеть.

Во вкладке «Настройки портов» пробрасываем порт из контейнера в Synology NAS. Вводим любые незанятые порты, отличные от 443 и 80. В своем примере я использую 319 и 320.

0d58caa9a8325b6703b444148671bfa6.png

Нажимаем кнопку «Применить» → «Далее» → «Применить»

Наш контейнер успешно создан и доступен во вкладке бокового меню «Контейнер».

После успешной установки необходимо отредактировать файл config.php и исправить список доменных имен, однако Nextcloud позволяет добавить только https сервер onlyoffice. Для запуска под https есть два варианта настройки: через добавление сертификата в контейнере и использование встроенный функционал synology, а именно обратный прокси. Второй вариант мне кажется более простым и интересным. С помощью данного метода можно настроить любой контейнер под https без особых усилий и иметь прямой доступ по имени.

Для этого нам нужно перейти в «Панель управления» Synology и выбрать «Портал приложений» → «Обратный прокси». Нажимаем «Создать»

В появивишемся окне задаем описание, указываем источник и место назначения.

56a4a1f9d0e93ed786ed1948a46f1152.png

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

Примечание. Имя хоста задается в формате name.nameserver.synology.me

Нажимаем «ОК»

Аналогичную операцию необходимо проделать для Nextcloud.

Обратите внимание, что для того чтобы не создавать сертификат вручную, в настройках сертификата synology должно быть имя формата »*.nameserver.synology.me». Подробней об этом можно прочитать здесь. Также на вашем роутере должен быть проброшен порт 443 и настроен NAT Loopback (в некоторых роутерах это происходит автоматически).

Готово! Теперь контейнер onlyoffice доступен по прямой ссылке https://homeserver.nameserver.synology.me и можно переходить к редактированию файла config.php

Для этого заходим под root в контейнер Nextcloud

docker exec -it namecontainer sh

Имя контейнера можно посмотреть с помощью команды docker ps. Далее открываем файл config.php

vi /config/www/nextcloud/config/config.php

Добавляем параметр 'allow_local_remote_servers'

'allow_local_remote_servers' => true,

И редактируем список доверенных имен с помощью параметра 'trusted_domains', добавляя в него новую строчку

'trusted_domains' =>
array (
0 => '192.168.XX.XX:port',
1 => 'nextcloud.nameserver.synology.me',
2 => 'homeoffice.nameserver.synology.me',
),

Не забудьте поменять зачения на свои, затем нажмите «Esc» на клавиатуре и введите »: wq» для сохранения изменений.

Следующим шагом нам необходимо скачать и включить расширение OnlyOffice в списке Приложений Nextcloud. Для этого откроем Nextcloud в браузере, в правом верхнем углу нажимаем на иконку профиля и выбираем «Приложения». Находим расширение OnlyOffice и нажимаем «Скачать и включить»

430f289a18ba7a1a2e95aac28bfbfc3f.png

Переходим в «Настройки» → «Onlyoffice», указываем адрес ONLYOFFICE Docs и нажимаем «Сохранить».

b01981b4fe0bdba94e9787ba6a8493f4.png

Не забудьте настроить форматы, которые будут открываться через OnlyOffice и вперед к использованию! :)

© Habrahabr.ru