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

Введение

В данной инструкции мы развернем Nextcloud версию на Apache, из официального репозитория nextcloud:production-apache.

Как базы данных будем использовать:

  • PostgreSQL
  • Redis

Установим все контейнеры, подключим бесплатный домен Duck DNS, добавим SSL.

Также обсудим и устраним часто встречающиеся ошибки и многое другое..

Установка контейнеров

Установка контейнера PostgreSQL

Для работы Nextcloud нам потребуется СУБД. как установить PostgreSQL, создать базу, пользователя и дать привилегии описано в соответствующей статье.

Соберу данные:

  • Адрес PostgreSQL – ИПСЕРВЕРА:5432
  • Пароль от PostgreSQL – Password
  • Имя созданной базы данных – nextcloud
  • Имя пользователя базы данных – nextclouduser
  • Пароль от базы данных – Password

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

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

Переходим на вкладку DOCKER, внизу находим и нажимаем кнопку Add container

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

  • Name: произвольное название контейнера
  • 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 5
Настройка контейнера NextCloud (часть 1)

Параметры, которые оставляем как есть:

  • Extra Parameters:
  • Post Arguments:
  • CPU Pinning:
  • Network Type: Bridge
  • Console shell command: Shell
  • Privileged: OFF
Nextcloud – создаем свое личное облако на unRAID 6.8.3 6
Настройка контейнера NextCloud (часть 2)

Далее спускаемся ниже и создаем пути нажав кнопку:

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

Добавить Путь, Порт, Переменную…

Host Path 1 – указывает, где будут хранится системные данные:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 8
Настройка контейнера NextCloud (часть 3)

Host Path 2 – указывает, где будут хранится данные пользователей:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 9
Настройка контейнера NextCloud (часть 4)

Host Path 3 – указывает, где будут хранится папка настроек:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 10
Настройка контейнера NextCloud (часть 5)

WebUI – порт веб интерфейса NextCloud:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 11
Настройка контейнера NextCloud (часть 6)

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

Nextcloud – создаем свое личное облако на unRAID 6.8.3 12
Настройка контейнера NextCloud (часть 7)

После заполнения и проверки всех данных нажимаем APPLY

Начнется установка контейнера с заданными параметрами:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 13
Настройка контейнера NextCloud (часть 8)

Если все хорошо, то видим надпись “The command finished successfully!

Нажимаем DONE

Установка NextCloud из WebUI

Переходим к следующему этапу, для этого переходим в WebUI контейнера:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 14
Настройка контейнера NextCloud (часть 8)

Нас встречает окно в котором необходимо:

  • Cоздать аккаунт администратора, в примере Admin/Password
  • Каталог с данными оставляем без изменений
  • В роли базы данных выбираем PostgreSQL и заполняем данными из пункта подготовки
  • Желательно снять чекбокс на “Установить рекомендуемые приложения“, все необходимое установим потом

Нажать кнопку “Завершить установку“:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 15
Установка NextCloud в WebUI

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

Nextcloud – создаем свое личное облако на unRAID 6.8.3 16
Окно приветствия NextCloud

Можно ознакомиться с функционалом данного комбайна, навигация происходит по клику на стрелки. Контейнер NextCloud успешно установлен.

Проверка безопасности и параметров

Переходим в Настройки -> Общие сведения:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 17
Настройки -> Общие сведения (с ошибкой индексов)

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

В базе данных отсутствуют некоторые индексы

Данная ошибка встречает нас даже при чистой установки с нуля.

Чтобы исправить, необходимо в терминале unRAID вписать команду:

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

Где Nextcloud – имя контейнера, то самое, которое задавали при установке контейнера. Регистр тут играет роль.

В моем случае будет:


Linux 4.19.107-Unraid.
Last login: Sun Jan 17 00:52:53 +0300 2021 on /dev/pts/0.
root@unRAID:~# docker exec --user www-data NextCloudProd-test 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.
Adding cards_abiduri index to the cards table, this can take some time...
cards table updated successfully.
Check indices of the cards_properties table.
Check indices of the calendarobjects_props table.
Check indices of the schedulingobjects table.
Check indices of the oc_properties table.
root@unRAID:~# 

После этого, закрываем консоль и обновляем страницу в WebUI:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 18
Настройки -> Общие сведения (без ошибок индексов)

Предупреждения о текущей конфигурации

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

Nextcloud – создаем свое личное облако на unRAID 6.8.3 19
Предупреждение о текущей конфигурации

Для устранения проходим весь раздел “Подключаем бесплатный домен Duck DNS”

Результат:

Nextcloud – создаем свое личное облако на unRAID 6.8.3 20
Все проверки пройдены

Подключаем бесплатный домен Duck DNS

Получаем бесплатный домен

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

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

Проходим регистрацию на duckdns.org и закрепляем за собой свободный домен вида:

domain.duckdns.org

Где domain – произвольный свободный вариант.

В моем случае я создал:

cloudnextcloud.duckdns.org

Добавляем Proxy Host в Nginx Proxy Manager

Далее, потребуется Nginx Proxy Manager(NPM) с помощью которого мы свяжем локальный IP контейнера NextCloud и домен на Duck DNS

Переходим в WebUI контейнера NPM, в открывшемся окне добавляем новую конфигурацию нажав Add Proxy Host.

На этом этапе необходимо заполнить три вкладки:

  • Details – содержит имя домена, схему(http), IP сервера unraid, порт контейнера nextcloud
  • SSL – запрашиваем SSL сертификат
  • Advanced – делаем доверенным передачу по CardDav и CalDav
location /.well-known/carddav {
    return 301 $scheme://$host/remote.php/dav;
}

location /.well-known/caldav {
    return 301 $scheme://$host/remote.php/dav;
}

После этого нажимаем SAVE, итоговый результат на скриншотах:

В некоторых ситуациях, при создании нового хоста, ползунки отключаются. После создания заходим и проверяем, включаем все как в примере выше

Заходим в облако по домену

Теперь пройдя по моего бесплатному домену https://cloudnextcloud.duckdns.org

Попадаю на страницу своего облака:

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

Система сообщает нам, что домен не прописан как доверенный в config.php

Редактирование Config.php

Воспользуемся любым удобным файловым менеджером, я рекомендую Cloud Commander

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

Файл конфигурации расположен по пути:

/mnt/user/appdata/nextcloud/config

Вносим изменения в “trusted_domains“:

  'trusted_domains' => 
  array (
    0 => 'cloudnextcloud.duckdns.org',
  ),

Затем:

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

Добавляем:

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

Результат должен выглядеть следующим образом:

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

Остальные данные остаются без изменений. Сохраняем изменения и обновляем страницу https://cloudnextcloud.duckdns.org

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

Подключаем Redis

Для ускорения облака устанавливаем контейнер Redis

Скорректируем параметры config.php, меняем:

<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',

на

<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => '192.168.31.100',
    'port' => 6379,
  ),

Где

  • 192.168.31.100 – IP сервера
  • 6379 – Порт Redis

Сохраняем изменения и проверяем результат, открываем консоль контейнера Redis

Пишем команду:

redis-cli

Затем:

MONITOR

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

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

Настройки NextCloud

Параметры пользователя

Личная информация

Убедившись, что установка прошла гладко, наигравшись вдоволь с примерами файлов, переходим в Настройки.

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

Nextcloud – создаем свое личное облако на unRAID 6.8.3 28
Настройки “Личная информация”

Итог

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

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