Установка Nextcloud на Synology. Настройка OnlyOffice и External storage
В данном посте я хотел бы рассмотреть способ установки персонального облака на домашний сервер Synology при помощи Docker, поделиться своими ошибками и опытом использования в повседневной жизни. Я буду признателен, если более опытные пользователи habr также поделятся своим опытом и расскажут, как им помог Nextcloud в повседневной жизни или какие трудности в установке ими были пройдены.
Знакомство с Docker
С покупкой небольшого домашнего сервера Synology DS718+ в 2017 году я подсел на постоянную оптимизацию. Приложений из центра пакетов мне оказалось мало и так я дошел до Docker.
Docker — это приложение для виртуализации, которое дает вам
возможность запускать в DSM тысячи контейнеров, созданных разработчиками
со всего мира. Установить его можно из центра пакетов Synology.
Установка Docker
Запустите Центр пакетов
Нажмите на приложение Docker
Нажмите «Установить», чтобы установить приложение Docker на Synology NAS.
Выберите том для установки из раскрывающегося меню. Затем нажмите «Далее», как показано на снимке экрана ниже.
Нажмите «Применить»
Установка приложения может занять несколько секунд. Как только она завершится, Вы сможете нажать «Открыть», чтобы открыть приложение Docker.
Перед началом я рекомендую пробежаться по руководству к Docker от Synology. Это поможет сформировать общее представление об основных элементах интерфейса.
Установка Nextcloud
Существует множество способов установки контейнера на Synology. Каждый из них обладает как плюсами, так и минусами. И я рекомендую изучить их самостоятельно в будущем, однако в рамках данной статьи я намерен придерживаться максимально простого пути.
Установка через приложение Docker
Для поиска контейнеров, нам необходимо перейти во вкладку «Реестр» и ввести в поисковую строку «Nextcloud»
Мы рассмотрим установку контейнера linuxserver/nextcloud (второй в списке) через веб интерфейс. В отличии от официального контейнера nextcloud (первый в списке), он уже включает в себя базу данных SQLite, nginx и php.
Щелкаем правой кнопкой мышки по контейнеру linuxserver/nextcloud и нажимаем «Загрузить это изображение».
Выбираем последнюю версию с тегом «latest» из раскрывающегося списка и нажимаем «Выбрать»
Загрузка может заняться несколько минут. После ее окончания в левом боковом меню выбираем вкладку «Образ» и находим в списке nextcloud. Выбираем нажатием клавиши и нажимаем клавишу «Запустить» в верхнем меню.
В появившемся окне вводим имя нашего контейнера и жмем кнопку дополнительные настройки.
В разделе «Дополнительные настройки» ставим галочку напротив «Включить автоматический перезапуск»
Далее переходим в раздел «Том» и добавляем две папки формата:
/path/to/config:/config и /path/to/data:/data.
Во вкладке «Сеть» оставляем без изменений выбранную сеть.
Во вкладке «Настройки портов» пробрасываем порт из контейнера в Synology NAS. Вводим любые незанятые порты, отличные от 443 и 80. В своем примере я использую 441 и 79.
Далее переходим во вкладку «Защита окружающей среды». Здесь с помощью иконки »+» нам необходимо добавить следующие переменные и значения:
PUID=1000
PGID=1000
TZ=Europe/Moscow
Нажимаем кнопку «Применить» → «Далее» → «Применить»
Наш контейнер успешно создан и доступен во вкладке бокового меню «Контейнер».
Чтобы войти в наш контейнер, нам нужно не забыть пробросить порты. На данном этапе подразумевается, что Вы уже настроили внешний доступ для NAS и разобрались с port forwarding. Если нет, то подробней об этом можно почитать в документации synology здесь. После этого вводим в веб браузере адрес контейнера https://nameserver:441 и создаем учетную запись администратора. База данных по умолчанию доступна SQLite. Нажимаем «Создать». Загрузка может занять некоторое время, после чего страница перенаправит нас на стартовую страницу.
На этом этапе мы уже можем использовать наше облако. Загрузка файлов может быть сделана через веб интерфейс или через официально приложение для MacOS, Windows и Linux. Прошу обратить внимание, что клиент для MacOS хранит данные локально и мной пока не был найден способ это обойти. Надеюсь в грядущем обновлении это будет исправлено.
Настройка nextcloud
Список доверенных имен
Первая проблема с которой мы сталкиваемся — это ошибка при попытке входа извне.
Для ее решения нам необходимо внести наше доменное имя в файл 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Запускаем наш контейнер и открываем Nextcloud в браузере. Переходим в «Настройки» → «Внешнее хранилище» и выбираем из списка «Локально». Указываем имя папки, которую будет отображать Nextcloud, указываем расположение и нажимаем на галочку.
Далее нам необходимо войти с 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»
Для установка нам потребуется onlyoffice/documentserver (первый в списке). Щелкаем правой кнопкой мышки по контейнеру onlyoffice/documentserver и нажимаем «Загрузить это изображение».
Выбираем последнюю версию с тегом «latest» из раскрывающегося списка и нажимаем «Выбрать»
Загрузка может заняться несколько минут. После ее окончания в левом боковом меню выбираем вкладку «Образ» и находим в списке onlyoffice. Выбираем нажатием клавиши и нажимаем клавишу «Запустить» в верхнем меню.
Во всплывающем окне задаем имя нашему контейнеру и нажимам на кнопку «Дополнительные настройки»
В первой вкладке ставим галочку напротив поля «Включить автоматический перезапуск»
Далее переходим во вкладку «Том». Здесь необходимо добавить две папки: «data» и «logs»
Во вкладке «Сеть» оставляем без изменений выбранную сеть.
Во вкладке «Настройки портов» пробрасываем порт из контейнера в Synology NAS. Вводим любые незанятые порты, отличные от 443 и 80. В своем примере я использую 319 и 320.
Нажимаем кнопку «Применить» → «Далее» → «Применить»
Наш контейнер успешно создан и доступен во вкладке бокового меню «Контейнер».
После успешной установки необходимо отредактировать файл config.php и исправить список доменных имен, однако Nextcloud позволяет добавить только https сервер onlyoffice. Для запуска под https есть два варианта настройки: через добавление сертификата в контейнере и использование встроенный функционал synology, а именно обратный прокси. Второй вариант мне кажется более простым и интересным. С помощью данного метода можно настроить любой контейнер под https без особых усилий и иметь прямой доступ по имени.
Для этого нам нужно перейти в «Панель управления» Synology и выбрать «Портал приложений» → «Обратный прокси». Нажимаем «Создать»
В появивишемся окне задаем описание, указываем источник и место назначения.
Не забудьте поменять порт назначения, если указывали другой.
Примечание. Имя хоста задается в формате 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 и нажимаем «Скачать и включить»
Переходим в «Настройки» → «Onlyoffice», указываем адрес ONLYOFFICE Docs и нажимаем «Сохранить».
Не забудьте настроить форматы, которые будут открываться через OnlyOffice и вперед к использованию! :)