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

Подготовка

Для установки Nextcloud нам потребуется создать базу данных, как это сделать описано в статье о MariaDB, данные буду использовать:

  • Адрес MariaDB — ИПСЕРВЕРА:3307
  • Пароль от MariaDB — Password
  • Имя созданной базы данных — userbase
  • Имя пользователя базы данных — user
  • Пароль от базы данных — userpass

Установка

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

Переходим на вкладку DOCKER, внизу находим и нажимаем кнопку Nextcloud – создаем свое личное облако на unRAID 6.8.3 6

В открывшемся окне заполняем данные, активировав подробный вид задействовав ползунок в правом верхнем углу Nextcloud – создаем свое личное облако на unRAID 6.8.3 7

  • Name: произвольное название контейнера, у меня MyNextcloud
  • Repository: репозиторий контейнера, nextcloud:production-apache
  • Docker Hub URL: ссылка на докер хаб, https://registry.hub.docker.com/_/nextcloud
  • Icon URL: ссылка на иконку, https://decatec.de/wp-content/uploads/2017/08/nextcloud_logo.png
  • WebUI: доступ из локальной сети, http://[IP]:[PORT:446]/
Nextcloud – создаем свое личное облако на unRAID 6.8.3 8
Настройка контейнера, часть 1

Далее спускаемся ниже и добавляем недостающие пункты нажав Nextcloud – создаем свое личное облако на unRAID 6.8.3 9

  • Host Path 1: системные данные nextcloud, должны лежать в appdata, у меня /mnt/user/appdata/mynextcloud
  • Host Path 2: данные пользователей nextcloud, могут лежать как в appdata, так и в отдельной шаре, у меня /mnt/user/appdata/mynextcloud/data
  • WebUI Port: свободный порт, у меня 446
  • Host Path 3: данные плагинов nextcloud, должны лежать в appdata, у меня /mnt/user/appdata/mynextcloud/apps
  • Host Path 4: файлы конфигурации nextcloud, должны лежать в appdata, у меня /mnt/user/appdata/mynextcloud/config

После добавления каждого пункта, нажимаем SAVE, после всех манипуляций должно выглядеть так:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 15
Настройка контейнера, часть 2

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

Nextcloud – создаем свое личное облако на unRAID 6.8.3 16

Нажимаем DONE, переходим на вкладку DOCKER и видим рабочий контейнер, далее переходим в WebUI

Nextcloud – создаем свое личное облако на unRAID 6.8.3 17

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

Nextcloud – создаем свое личное облако на unRAID 6.8.3 18

Далее нас встречает окно приветствия, закрываем крестиком и видим, что установка прошла успешно, аккаунт создан и система наполнила его файлами для примера.

Если при первом запуске возникает ошибка с постоянным обновлением страницы, но необходимо вычистить кеш и куки браузера

Убедившись, что установка прошла гладко, наигравшись вдоволь с примерами файлов, переходим в Настройки -> Общие сведения. Там нас поджидают предупреждения и всяческие ошибки конфигурации, которые следует устранить.

Устранение ошибок production 17.0.7

Nextcloud – создаем свое личное облако на unRAID 6.8.3 21

Для начала избавимся от ошибки несоответствия индексов, для этого вернемся на страницу unraid сервера, и откроем окно консоли нажав в верхнем правом углу значок Nextcloud – создаем свое личное облако на unRAID 6.8.3 22

В терминале вводим команду:docker exec --user www-data MyNextcloud php occ db:convert-filecache-bigint


Linux 4.19.107-Unraid.
Last login: Thu Jul 16 15:06:10 +0300 2020 on /dev/pts/1.
root@unRAID:~# docker exec --user www-data MyNextcloud php occ db:convert-filecache-bigint
Following columns will be updated:
* mounts.storage_id
* mounts.root_id
* mounts.mount_id
This can take up to hours, depending on the number of files in your instance!
root@unRAID:~#

После применения, обновив страницу с ошибками Nextcloud, увидим, что она исчезла.

Nextcloud – создаем свое личное облако на unRAID 6.8.3 23

Оставшаяся ошибка более глобальная и ее решение свяжу с привязкой установленного Nextcloud облака к домену вида nextcloud.mydomain.ru

Привязка домена

Для доступа к облаку из сети интернет необходимо помимо наличия выделенного белого IP адреса, купить домен в собственное пользование или обзавестись им на Duck DNS. Из соображений безопасности я не буду показывать настройки личного домена и буду использовать домен вида https://cloudnextcloud.duckdns.org

Nextcloud – создаем свое личное облако на unRAID 6.8.3 24

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

Nextcloud – создаем свое личное облако на unRAID 6.8.3 25

Теперь необходимо связать Nextcloud с этим доменом, а также выдать ему сертификат безопасности SSL. В этом нам поможет Nginx Proxy Manager(NPM), и если он еще не установлен, то рекомендую ознакомиться со статьей.

Заходим в NPM, выбираем Proxy Hosts -> Add Proxy Host, и настраиваем следующим образом:

  • Domain Names: имя которое мы получили от duck dns, cloudnextcloud.duckdns.org
  • Sheme: схема, http
  • Forward Hostname / IP: ИП контейнера, посмотреть можно на вкладке DOCKER, у меня 192.168.31.100
  • Forward Port: ПОРТ контейнера, подсмотреть можно на вкладке DOCKER, у меня 446
Nextcloud – создаем свое личное облако на unRAID 6.8.3 26

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

Nextcloud – создаем свое личное облако на unRAID 6.8.3 27

На вкладке Advanced вписываем:

location = /.well-known/carddav {
        return 301 https://cloudnextcloud.duckdns.org/remote.php/dav;
    }

    location = /.well-known/caldav {
        return 301 https://cloudnextcloud.duckdns.org/remote.php/dav;
    }
Nextcloud – создаем свое личное облако на unRAID 6.8.3 28

Нажав SAVE, если все введено верно, то в списке Proxy Hosts появится новая запись со статусом онлайн. У NPM, не всегда применяются настройки с первого раза, чтобы удостовериться в правильности, необходимо нажав на три точки справа от созданой записи пройтись по вкладкам, активировать ползунки и нажать SAVE.

Теперь при переходе на домен https://cloudnextcloud.duckdns.org будет окно Nextcloud с записью о доступе через не доверенный домен.

Настройка config.php

Для внесения изменений, необходимо отредактировать файл config.php, расположен он по пути /mnt/user/appdata/mynextcloud/config

Сделать это можно любым доступным файловым менеджером WinSCP, или CloudCommander. Не стоит забывать про резервные копии данных и если есть сомнения, сохраните копию рядом.

Добавляем строки:

1 => 'cloudnextcloud.duckdns.org',
'overwritehost' => 'cloudnextcloud.duckdns.org',
'overwriteprotocol' => 'https',

Заменяем

'overwrite.cli.url' => 'http://192.168.31.100:446',

на

'overwrite.cli.url' => 'https://cloudnextcloud.duckdns.org',

Пример сравнения на скрине:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 31

После замены файла, обновляем страницу https://cloudnextcloud.duckdns.org/

Нас встречает окно ввода данных пользователя.

Nextcloud – создаем свое личное облако на unRAID 6.8.3 32

Авторизуемся используя данные, которые указывали при установке:

  • Логин: Admin
  • Пароль: adminpass

Переходим в Настройки -> Общие сведения, и видим, что ошибок нет, все проверки пройдены.

Nextcloud – создаем свое личное облако на unRAID 6.8.3 33

Итог

На момент написания статьи версия Nextcloud production 17.0.7

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

Переход с production на stable

После перехода на другую ветку откат и понижение версии не представляется возможным. Рекомендуется сделать бекап.

Переходим на вкладку DOCKER, находим контейнер Nextcloud, нажав левой кнопкой мыши по иконке, выбираем Edit

Nextcloud – создаем свое личное облако на unRAID 6.8.3 34

В открывшемся окне необходимо заменить значение Repository:

nextcloud:production-apache

на

nextcloud:apache

После изменений, применяем настройки нажав APPLY

Nextcloud – создаем свое личное облако на unRAID 6.8.3 35

Нажимаем DONE, на вкладке DOCKER запускаем контейнер, в WebUI будет информация об обновлении на актуальную версию.

Nextcloud – создаем свое личное облако на unRAID 6.8.3 36

На момент обновления крайняя стабильная версия – 19.0.1

Прокручиваем в самый низ, и нажимаем кнопку прочитав предупреждение – “Перед продолжением убедитесь, что вы сделали резервную копию базы данных, каталога конфигурации и каталога с данными”

Nextcloud – создаем свое личное облако на unRAID 6.8.3 37

Получаем ошибку вида – “Updates between multiple major versions are unsupported” это значит необходимо подправить config.php

Где он и как его редактировать описано выше в разделе настройка config.php

Необходимо заменить номер версии, а именно:

у меня был production 17.0.7 – в конфиге будет 'version' => '17.0.7.1',

ставлю stable 19.0.1 – в конфиге будет 'version' => '19.0.1.1',

Сохраняем изменения, заходим в Nextcloud через домен – https://cloudnextcloud.duckdns.org и запускам обновление нажав на кнопку.

Устранение ошибок stable 19.0.1

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

Nextcloud – создаем свое личное облако на unRAID 6.8.3 38

По аналогии с предыдущими исправлениями описанными выше, открываем терминал и по очереди вводим:

docker exec --user www-data MyNextcloud php occ db:add-missing-indices

затем

docker exec --user www-data MyNextcloud php occ db:add-missing-columns

в консоли это выглядит так:


Linux 4.19.107-Unraid.
Last login: Fri Jul 17 23:03:34 +0300 2020 on /dev/pts/1.
root@unRAID:~# docker exec --user www-data MyNextcloud php occ db:add-missing-indices
Check indices of the share table.
Check indices of the filecache table.
Check indices of the twofactor_providers table.
Check indices of the login_flow_v2 table.
Check indices of the whats_new table.
Check indices of the cards table.
Check indices of the cards_properties table.
Check indices of the calendarobjects_props table.
Adding calendarobject_calid_index index to the calendarobjects_props table, this can take some time...
calendarobjects_props table updated successfully.
Check indices of the schedulingobjects table.
Adding schedulobj_principuri_index index to the schedulingobjects table, this can take some time...
schedulingobjects table updated successfully.
Check indices of the oc_properties table.
Adding properties_path_index index to the oc_properties table, this can take some time...
oc_properties table updated successfully.
root@unRAID:~# docker exec --user www-data MyNextcloud php occ db:add-missing-columns
Check columns of the comments table.
Adding additional reference_id column to the comments table, this can take some time...
Comments table updated successfully.
root@unRAID:~#

Обновляем страницу общих настроек и видим успешный результат.

Nextcloud – создаем свое личное облако на unRAID 6.8.3 39

На этом обновление и исправления пройдены успешно, можно пользоваться.