Установка и настройка Nextcloud в Ubuntu 18.04

Nextcloud – это форк ownCloud, сервер для общего доступа к файлам и централизованного удалённого хранения документов. Приложение во многом напоминает Dropbox.

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

Этот мануал поможет установить Nextcloud на сервер Ubuntu 18.04.

Требования

  • Сервер Ubuntu 18.04, настроенный по этому мануалу.
  • Доменное имя (опционально). Для защиты трафика мы будем использовать сертификат SSL. Если у вас будет зарегистрированное доменное имя, вы сможете получить бесплатный сертификат от сервиса Let’s Encrypt. Если у вас нет домена, вы можете создать самоподписанный сертификат.

Установка Nextcloud

Мы установим Nextcloud с помощью системы упаковки snappy. Эта система доступна в Ubuntu 18.04 по умолчанию, она позволяет организациям поставлять программное обеспечение вместе со всеми зависимостями и конфигурацией в автономных блоках с автоматическим обновлением. Это означает, что вместо отдельной установки и настройки веб-сервера и базы данных и настройки приложения Nextcloud можно просто установить пакет snap, который автоматически обрабатывает базовые зависимости.

Чтобы загрузить пакет snap для Nextcloud, введите:

sudo snap install nextcloud

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

snap changes nextcloud
ID   Status  Spawn               Ready               Summary
2    Done    today at 16:12 UTC  today at 16:12 UTC  Install "nextcloud" snap

Команда сообщает, что установка была завершена успешно.

Сбор дополнительной информации о Nextcloud Snap

Если вам нужна дополнительная информация о snap-пакете Nextcloud, вы можете использовать несколько команд.

Команда snap info может выдать описание, доступные команды управления Nextcloud, а также установленную версию и отслеживаемый канал snap:

snap info nextcloud

Snap-пакеты могут определять интерфейсы, которые они поддерживают, что дает доступ к определенным возможностям или уровням. Например, snap-пакеты, которые должны действовать как сетевые клиенты, должны иметь интерфейс network. Чтобы узнать, какие интерфейсы использует этот snap, введите:

snap interfaces nextcloud
Slot           Plug
:network       nextcloud
:network-bind  nextcloud
-              nextcloud:removable-media

Чтобы узнать все сервисы и приложения, которые предоставляет этот snap, вы можете взглянуть на файл определения snap.yaml:

cat /snap/nextcloud/current/meta/snap.yaml

Здесь вы можете увидеть отдельные компоненты, включенные в snap, что может пригодиться при отладке.

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

Существует несколько разных способов настройки snap Nextcloud. В этом мануале вместо веб-интерфейса для создания администратора мы используем командную строку: это позволит отключить окно, в котором страница регистрации администратора будет доступна для всех, кто посещает IP-адрес вашего сервера или доменное имя.

Чтобы настроить Nextcloud с новой учетной записью администратора, используйте команду nextcloud.manual-install. Вы должны ввести имя пользователя и пароль в качестве аргументов:

sudo nextcloud.manual-install 8host password

Если все правильно, Nextcloud выдаст сообщение:

Nextcloud is not installed - only a limited number of commands are available
Nextcloud was successfully installed

Теперь, когда Nextcloud установлен, нужно настроить доверенные домены, чтобы Nextcloud отвечал на запросы, используя доменное имя или IP-адрес сервера.

Настройка доверенных доменов

При установке из командной строки Nextcloud ограничивает обработку запросов по именам хостов. По умолчанию сервис реагирует только на запросы, сделанные на имя хоста localhost. Мы будем обращаться к Nextcloud через доменное имя или IP-адрес сервера, поэтому нам нужно настроить этот параметр, чтобы принять такие запросы.

Чтобы уточнить текущие настройки, запросите массив trusted_domains:

sudo nextcloud.occ config:system:get trusted_domains
localhost

В настоящее время единственным значением в массиве является localhost. Добавьте запись для имени или IP-адреса вашего сервера:

sudo nextcloud.occ config:system:set trusted_domains 1 --value=example.com
System config value trusted_domains => 1 set to string example.com

Снова запросите доверенные домены:

sudo nextcloud.occ config:system:get trusted_domains
localhost
example.com

Теперь в массиве две записи.

Если вам нужно настроить другой способ доступа к экземпляру Nextcloud, вы можете добавить дополнительные домены или адреса, перезапустив команду config:system:set и добавив в нее индекс («1» в первой команде) с измененным значением –-value.

Защита интерфейса Nextcloud через SSL

Если у вас есть доменное имя, связанное с вашим сервером Nextcloud, snap Nextcloud позволит вам получить и настроить доверенный сертификат SSL от Let’s Encrypt. Если у сервера Nextcloud нет домена, Nextcloud может настроить самоподписанный сертификат, который будет шифровать веб-трафик, но не сможет проверить подлинность сервера.

Следуйте соответствующему разделу.

1: SSL-сертификат от Let’s Encrypt

Если у вас есть домен, лучше всего получить бесплатный доверенный сертификат от центра Let’s Encrypt.

Сначала откройте в брандмауэре порты, которые Let’s Encrypt использует для проверки прав на домен. Это сделает страницу входа в Nextcloud общедоступной, но у вас уже есть учетная запись администратора, потому никто не сможет получить доступ к установке.

sudo ufw allow 80,443/tcp

Запросите сертификат Let’s Encrypt:

sudo nextcloud.enable-https lets-encrypt

Вам будет предложено принять условия использования сертификатов:

In order for Let's Encrypt to verify that you actually own the
domain(s) for which you're requesting a certificate, there are a
number of requirements of which you need to be aware:
In order to register with the Let's Encrypt ACME server, you must
agree to the currently-in-effect Subscriber Agreement located
here:
https://letsencrypt.org/repository/
By continuing to use this tool you agree to these terms. Please
cancel now if otherwise.
You must have the domain name(s) for which you want certificates
pointing at the external IP address of this machine.
Both ports 80 and 443 on the external IP address of this machine
must point to this machine (e.g. port forwarding might need to be
setup on your router).
Have you met these requirements? (y/n)

Чтобы продолжить, введите у.

Затем нужно предоставить адрес электронной почты.

Please enter an email address (for urgent notices or key recovery): your_email@domain.com

В конце нужно ввести домен сервера Nextcloud:

Please enter your domain name(s) (space-separated): example.com

После этого запрос на сертификат будет отправлен в Let’s Encrypt, и при условии, что все хорошо, для немедленного внедрения SSL экземпляр Apache будет перезапущен автоматически.

Attempting to obtain certificates... done
Restarting apache... done

Теперь вы можете войти в Nextcloud.

2: Самоподписанный SSL-сертификат

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

Чтобы создать самоподписанный сертификат и настроить Nextcloud для его поддержки, введите:

sudo nextcloud.enable-https self-signed
Generating key and self-signed certificate... done
Restarting apache... done

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

Теперь, когда интерфейс защищен, откройте веб-порты в брандмауэре, чтобы разрешить доступ к веб-интерфейсу:

sudo ufw allow 80,443/tcp

После этого можно войти в Nextcloud.

Вход в веб-интерфейс Nextcloud

Теперь, когда Nextcloud настроен, откройте свое доменное имя или IP-адрес сервера в веб-браузере:

https://example.com

Примечание: Если вы установили самоподписанный сертификат SSL, ваш браузер может показать предупреждение о том, что соединение небезопасно, потому что сертификат сервера не подписан доверенным центром сертификации. Это нормальное поведение для самоподписанных сертификатов, поэтому можно просто принять предупреждение, чтобы перейти на сайт.

Поскольку вы уже настроили учетную запись администратора из командной строки, вы попадете на страницу входа в Nextcloud. Введите учетные данные администратора в форму входа.

Нажмите кнопку Log in, чтобы войти в веб-интерфейс Nextcloud.

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

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

Теперь установка Nextcloud завершена и защищена. Вы можете самостоятельно исследовать интерфейс, чтобы узнать больше о функциях этой системы.

Заключение

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

Изучите интерфейс и дополнительные функции, установите плагины Nextcloud – их можно найти здесь.

Tags: , ,
  • Vladimir V

    Установил по вашему мануалу. все отлично работает. но только до перезагрузки сервера. Как настроить автоматический запуск nextcloud после перезагрузки ?

    • Vladimir V

      отвечу сам себе, вдруг еще кому то поможет. лечится с помощью:
      $ sudo snap disable nextcloud
      $ sudo snap enable nextcloud

  • Игорь Данилов

    Сделал всё по мануалу. Что-то не въеду. Нужен апачи или Никс? Как в .conf указать на корневую папку некстклауд? Ведь через снап не добавилась дерриктория в /var/www/

  • Антон

    Спасибо за инструкцию все заработало, а как установить на этот же сервер collabora online?

  • mm

    Не могу найти куда можно прописать

    Header always set Strict-Transport-Security «max-age=15552000; includeSubDomains»

    подскажите пожалуйста,я запутался в этом snap

  • KomsaDiman

    Добрый день, подскажите а как обновить nextcloud?

  • fantomas2000

    Ваша команда для добавления доверенного домена у меня не сработала, добавил всё вручную командой:
    sudo nano /var/www/html/nextcloud/config/config.php

    Дописал свой ddns username.ddns.net в trusted_domains таким образом

    trusted_domains’ =>
    array (
    0 => ‘localhost’,
    1 => ‘username.ddns.net ‘,

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

  • fantomas2000

    Наверно у меня одного не работает команда nextcloud в командной строке
    Сделал ssl по оф. мануалу
    a2enmod ssl

    a2ensite default-ssl

    service apache2 reload

    После этого смог авторизоваться через приложение