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
В открывшемся окне заполняем данные, активировав подробный вид задействовав ползунок в правом верхнем углу
- 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]/
Параметры, которые оставляем как есть:
- Extra Parameters:
- Post Arguments:
- CPU Pinning:
- Network Type: Bridge
- Console shell command: Shell
- Privileged: OFF
Далее спускаемся ниже и создаем пути нажав кнопку:

Добавить Путь, Порт, Переменную…
Host Path 1 – указывает, где будут хранится системные данные:
Host Path 2 – указывает, где будут хранится данные пользователей:
Host Path 3 – указывает, где будут хранится папка настроек:
WebUI – порт веб интерфейса NextCloud:
После добавления каждого пункта, нажимаем SAVE, после всех манипуляций должно выглядеть так:
После заполнения и проверки всех данных нажимаем APPLY
Начнется установка контейнера с заданными параметрами:
Если все хорошо, то видим надпись “The command finished successfully!“
Нажимаем DONE
Установка NextCloud из WebUI
Переходим к следующему этапу, для этого переходим в WebUI контейнера:
Нас встречает окно в котором необходимо:
- Cоздать аккаунт администратора, в примере Admin/Password
- Каталог с данными оставляем без изменений
- В роли базы данных выбираем PostgreSQL и заполняем данными из пункта подготовки
- Желательно снять чекбокс на “Установить рекомендуемые приложения“, все необходимое установим потом
Нажать кнопку “Завершить установку“:

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

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

Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Соответственно необходимо часто посещать данную вкладку и своевременно устранять появляющиеся там предупреждения, обычно они возникают после крупных обновлений, в которых произошли крупные изменения или добавление нового функционала.
В базе данных отсутствуют некоторые индексы
Данная ошибка встречает нас даже при чистой установки с нуля.
Чтобы исправить, необходимо в терминале 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:

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

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

Подключаем бесплатный домен 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
Попадаю на страницу своего облака:

Система сообщает нам, что домен не прописан как доверенный в 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',
Результат должен выглядеть следующим образом:

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

Подключаем 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
Параметры пользователя
Личная информация
Убедившись, что установка прошла гладко, наигравшись вдоволь с примерами файлов, переходим в Настройки.
Задаем языковые параметры, аватар, региональные стандарты по своему усмотрению:

Итог
На момент написания статьи версия Nextcloud production 20.0.5
Ветка продакшн является самой стабильной, именно ее я рекомендую использовать на постоянной основе. Обновление версии происходит вместе с обновлением контейнера. Вручную или из настроек запускать никаких процессов, кроме обновления приложений(плагинов) не требуется.
Доброго Вам. Доступ из сети на облако доступно только с белым IP ? Или можно использовать динамический IP, по аналогии с Синелоджи ?
Возможно использование DDNS с динамическим IP, но он должен быть однозначно белым, серые не видны из мира.
Добрый день, что если использовать готовые докеры с Apps? в сети все мануалы на инглише которые, ставят готовые докеры. Я просто не очень в линуксах..
Вкладка APPS содержит уже готовые(с уже вбитыми параметрами) контейнеры, их ставить можно и в большинстве случаев этого хватает и стартуют они без проблем.
Данный мануал описывает установку nextcloud из репозитория production(именно этот вариант считаю самым стабильным и беспроблемным с точки зрения “поставил и забыл”).
Спасибо за статью!
Если будет возможность, добавьте еще про свой High-performance backend сервер отдельный под Talk.
А данная статья не подходит?
NextCloud Talk – видеоконференции и чат на Unraid 6.8.3
По умолчанию Talk peer-to-peer соединение использует. Если более 4-5 человек в чате, то уже заметные лаги и отключения происходят.
Есть официальный репозиторий для поднятия своего сервера, чтобы все подключения через него обрабатывались. (https://github.com/strukturag/nextcloud-spreed-signaling)
Я уже пробовал настроить, пока не вышло. Сервер поднялся вроде, но из NextCloud нет доступа. Пока еще руки не дошли с этим всем разобраться полноценно.
делаю всё как у вас но у меня жутко тормозит nextcloud
дело в mariadb скорее всего
Устанавливать БД и некст полностью на HDD категорически не рекомендуется. Исходя из проб некоторых пользователей, могу точно сказать, что это не работает.
Некст постоянно в бд лазит и много тянет всякого, а когда база на hdd, это довольно медленно происходит, это приводит к разнообразным тормозам.
Все установил по Вашей инструкции. Все стало работать, но появилась проблема с некоторыми файлами.
1. Не могу удалить файлы по умолчанию, которые уже были там.
2. Не загружаются некоторые файлы. Например html, doc могу загрузить, а pdf или картинки нет.
Нужно больше информации, возможно каким-то образом были нарушены права.
Это изначально после установки, или через некоторое время?
Что делали? В чат телеграм лучше обратиться со скринами.
Уже обращался. Все установлено правильно. Но где то есть затык.
Установлено все на стороннем хостинге. В Руцентре. Полного доступа к серверу нет, отсюда и логи не могу выдернуть.