Аналог функционала Owncloud — NextCloud

Posted by

Когда делаешь что-то для себя то получается намного практичнее чем ищешь в сети иШаги по установке NextCloud на Ubuntu Trustyнформацию как сделать что-то. Вот к примеру я, листая различные статьи стал натыкаться на аббревиатуру NextCloud и соответственно загорелся желанием разобрать самолично что это есть такое. Оказывается это ответвление от проекта owncloud который я использую для доступа к домашним заметкам. Может оно окажется более удобным или приятным в использовании чем OwnCloud.

Разбор шагов установки на Ubuntu Trusty

  • HDD = 70Gb (SATA)
  • RAM = 4Gb
  • CPU = 1процессор, 2 ядра

Подготавливаю систему:

ekzorchik@srv-host:~$ sudo rm -Rf /var/lib/apt/lists/

ekzorchik@srv-host:~$ sudo apt-get update && sudo apt-get upgrade -y

ekzorchik@srv-host:~$ sudo apt-get install linux-generic-lts-xenial linux-image-generic-lts-xenial -y
ekzorchik@srv-host:~$ sudo rm /etc/localtime

ekzorchik@srv-host:~$ sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ekzorchik@srv-host:~$ sudo reboot
ekzorchik@srv-host:~$ uname -a && lsb_release -a

Linux srv-host 4.4.0-57-generic #78~14.04.1-Ubuntu SMP Sat Dec 10 00:14:47 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description: .5 LTS

Release: 14.04

Codename: trusty

Устанавливаю Webсервер: Apache + MySQL + PHP

ekzorchik@srv-host:~$ sudo tasksel install lamp-server

  • New password for the MySQL «root» user: 712mbddr@
  • Repeat password for the MySQL «root» user: 712mbddr@

ekzorchik@srv-host:~$ sudo nano /etc/apache2/apache2.conf
ServerName srv-host

ekzorchik@srv-host:~$ sudo apt-get install libapache2-mod-php5 php5-gd php5-json php5-mysql php5-curl php5-intl php5-mcrypt php5-imagick unzip -y

Скачиваю самую последнюю версию пакета NextCloud:

ekzorchik@srv-host:~$ wget https://download.nextcloud.com/server/releases/nextcloud-11.0.0.zip

ekzorchik@srv-host:~$ unzip nextcloud-11.0.0.zip
ekzorchik@srv-host:~$ sudo mv nextcloud /var/www/html/

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

ekzorchik@srv-host:~$ mysql -u root -p712mbddr@
mysql> create user 'user_nextcloud'@'localhost' identified by '612mbddr@';

mysql> create database if not exists db_nextcloud;

mysql> grant all privileges on db_nextcloud.* to 'user_nextcloud'@'localhost' identified by '612mbddr@';

mysql> flush privileges;

mysql> exit;

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

ekzorchik@srv-host:~$ sudo unlink /etc/apache2/sites-available/000-default.conf

ekzorchik@srv-host:~$ sudo unlink /etc/apache2/sites-available/default-ssl.conf

ekzorchik@srv-host:~$ sudo unlink /etc/apache2/sites-enabled/000-default.conf

ekzorchik@srv-host:~$ sudo nano /etc/apache2/sites-available/nextcloud.conf

<VirtualHost *:80>

DocumentRoot "/var/www/html/nextcloud"

ServerName 10.7.8.122

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/html/nextcloud/>

Options +FollowSymlinks

AllowOverride All

<IfModule mod_dav.c>

Dav off

</IfModule>

SetEnv HOME /var/www/html/nextcloud

SetEnv HTTP_HOME /var/www/html/nextcloud

Satisfy Any

</Directory>

</VirtualHost>

ekzorchik@srv-host:~$ sudo a2ensite nextcloud.conf

ekzorchik@srv-host:~$ sudo service apache2 reload

Подгружаю модули:

ekzorchik@srv-host:~$ sudo a2enmod rewrite
ekzorchik@srv-host:~$ sudo a2enmod headers
ekzorchik@srv-host:~$ sudo a2enmod env
ekzorchik@srv-host:~$ sudo a2enmod dir
ekzorchik@srv-host:~$ sudo a2enmod mime
ekzorchik@srv-host:~$ sudo a2enmod setenvif
ekzorchik@srv-host:~$ sudo a2enmod ssl

Создаю каталог где будут храниться файлы собственного облака:

ekzorchik@srv-host:~$ sudo mkdir /var/www/html/nextcloud/data

ekzorchik@srv-host:~$ sudo chown -R www-data:www-data /var/www/html/nextcloud/

Теперь запускаю браузер и обращаюсь к URL вида: http://IP&DNS

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

This version of Nextcloud requires at least PHP 5.6.0
You are currently running 5.5.9-1ubuntu4. Please update your PHP version.

Хорошо, устанавливаю PHP 5.6 в систему с подключение сторонних репозитариев:

ekzorchik@srv-host:~$ sudo add-apt-repository ppa:ondrej/php

ekzorchik@srv-host:~$ sudo apt-get update && sudo apt-get install python-software-properties -y

ekzorchik@srv-host:~$ php -v

PHP 5.5.9-1ubuntu4.20 (cli) (built: Oct 3 2016 13:00:37)

Copyright (c) 1997-2014 The PHP Group

Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

ekzorchik@srv-host:~$ sudo apt-get install php5.6 php5.6-common php5.6-gd php5.6-json php5.6-curl php5.6-zip php5.6-xml php5.6-mbstring -y

ekzorchik@srv-host:~$ php -v

PHP 5.6.29-1+deb.sury.org~trusty+1 (cli)

Copyright (c) 1997-2016 The PHP Group

Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

ekzorchik@srv-host:~$ sudo service apache2 reload

Возвращаюсь к браузеру с открытой странице конфигурирования: http://IP&DNS

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

ekzorchik@srv-host:~$ sudo a2dismod php5

ekzorchik@srv-host:~$ sudo a2enmod php5.6

ekzorchik@srv-host:~$ sudo service apache2 restart

После снова возвращаюсь к открытой странице инсталляции: http://IP&DNS и вот он долгожданный установщик, а нет из скриншота ниже видно что в системе не хватает драйвера для взаимодействия php интерфейса и базы данных, до устанавливаю:

При открытии http://IP&DNS NextCloud не установлен пакет для работы с MySQLekzorchik@srv-host:~$ sudo apt-get install php5.6-mysql -y

ekzorchik@srv-host:~$ sudo service apache2 restart

После снова возвращаюсь к открытой странице инсталляции: http://IP&DNS и передо мной страница где нужно указать административного пользователя, его пароль, а также настройки подключения к базе данных:

Create an admin account:

  • Login: ekzorchik
  • Password: 712mbddr@

Data folder:

  • Path: /var/www/html/nextcloud/data

Configure the database:

  • Database user: user_nextcloud
  • Database password: 612mbddr@
  • Database name: db_nextcloud
  • Месторасположение базы: localhost

а после нажимаю кнопку Finish setup, а после страница преображается в административный интерфейс развернутого форка owncloud и выглядит это также как и OwnCloud:

Интерфейс NextCloud аналогичен OwnCloudПока конечно я в тестовой конфигурации погоняю данное приложение, а уже потом перейду на него, я за контроль и доверие только своему, а не вынесенному в облако. Предпочитаю все держать на своем контроле.

На этом все, нет не все, теперь нужно добавить доступ к хранилищу не через http, а https (зашифрованное соединение):

ekzorchik@srv-host:~$ openssl req -new -x509 -days 3650 -keyout nextcloud.key -out nextcloud.pem

writing new private key to ‘nextcloud .key’

Enter PEM pass phrase: 712mbddr@

Verifying — Enter PEM pass phrase: 712mbddr@

Common Name (e.g. server FQDN or YOUR name) []:10.7.8.122

ekzorchik@srv-host:~$ cp nextcloud.key{,.orig}

ekzorchik@srv-host:~$ openssl rsa -in nextcloud.key.orig -out nextcloud.key

Enter pass phrase for nextcloud.key.orig:712mbddr@

writing RSA key

ekzorchik@srv-host:~$ rm nextcloud.key.orig
ekzorchik@srv-host:~$ sudo cp nextcloud.pem /etc/ssl/certs/

ekzorchik@srv-host:~$ sudo cp nextcloud.key /etc/ssl/private/

ekzorchik@srv-host:~$ sudo chmod 0600 /etc/ssl/private/nextcloud.key
ekzorchik@srv-host:~$ sudo a2enmod ssl

ekzorchik@srv-host:~$ sudo nano /etc/apache2/sites-available/nextcloud-ssl.conf

<IfModule mod_ssl.c>

<VirtualHost _default_:443>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html/nextcloud

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on

SSLProtocol all -SSLv2

SSLCertificateFile /etc/ssl/certs/nextcloud.pem

SSLCertificateKeyFile /etc/ssl/private/nextcloud.key

<FilesMatch "\.(cgi|shtml|phtml|php)$">

SSLOptions +StdEnvVars

</FilesMatch>

<Directory /usr/lib/cgi-bin>

SSLOptions +StdEnvVars

</Directory>

</VirtualHost>

</IfModule>

ekzorchik@srv-host:~$ sudo a2ensite nextcloud-ssl
ekzorchik@srv-host:~$ sudo apache2ctl configtest

Syntax OK

ekzorchik@srv-host:~$ sudo service apache2 restart
Теперь обращаюсь уже к странице вида, где URL адрес принимает вид: https://IP&DNS

Доступ к хранилищу NextCloud только через httpsДа работает, но работает и так и так http & https нужно это дело поправить, оставить только https:

ekzorchik@srv-host:~$ sudo nano /etc/apache2/sites-available/nextcloud.conf

<VirtualHost *:80>

ServerName 10.7.8.122

Redirect permanent / https://10.7.8.122/

</VirtualHost>

ekzorchik@srv-host:~$ sudo nano /etc/apache2/sites-available/nextcloud-ssl.conf

<IfModule mod_ssl.c>

<VirtualHost _default_:443>

<IfModule mod_headers.c>

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html/nextcloud

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on

SSLProtocol all -SSLv2

SSLCertificateFile /etc/ssl/certs/nextcloud.pem

SSLCertificateKeyFile /etc/ssl/private/nextcloud.key

<FilesMatch "\.(cgi|shtml|phtml|php)$">

SSLOptions +StdEnvVars

</FilesMatch>

<Directory /usr/lib/cgi-bin>

SSLOptions +StdEnvVars

</Directory>

</IfModule>

</VirtualHost>

</IfModule>

ekzorchik@srv-host:~$ sudo service apache2 restart

После при обращении к URL странице хранилища произойдет автоматический редирект на требуемый URL вида: https://IP&DNS

Пока рано говорить стоит ли переходить с OwnCloud на NextCloud еще столько всего нужно проверить, но я не думаю что будет столь существенные отличия ведь это просто ответвление от исходного, а как я заметил шаги установки, необходимые пакеты, интерфейс все одно и тоже. Так что время покажет, а пока всё, с уважением автор блога — Олло Александр aka ekzorchik.