Nextcloud

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Nextcloud - облачное хранилище файлов.

Установка

Для работы Nextcloud необходим настроенный web-сервер.
Необходимые пакеты:

apache2
apache2-mod_php5
apache2-mod_ssl
apache2-mod_fcgid
php5
php5-zip
php5-dom
php5-mbstring
php5-gd2
php5-curl
php5-pdo
php5-xmlreader
php5-openssl
php5-fileinfo

Это можно сделать с помощью команды:

# apt-get install apache2 apache2-mod_php5 apache2-mod_ssl apache2-mod_fcgid php5 php5-zip php5-dom php5-mbstring php5-gd2 php5-curl php5-pdo php5-xmlreader php5-openssl php5-fileinfo

Рассмотрим установку Nextcloud на сервер c Apache2 с помощью web-установщика.
У web-сервера должны быть права на запись в директорию с файлом setup-nextcloud.php
Права можно назначить, временно, добавив пользователя apache2 в группу webmaster:

# usermod -a -G webmaster apache2
# systemctl restart httpd2

Зайдите на сайт https://nextcloud.com/install/ в раздел Download -> Web-installer и скачайте в корень вашего web-сервера /var/www/html файл setup-nextcloud.php:

# cd /var/www/html/
# wget https://download.nextcloud.com/server/installer/setup-nextcloud.php

Далее переходим по ссылке:

http://your_web_server_adress/setup-nextcloud.php

И следуем инструкциям установщика. По умолчанию Nextcloud устанавливается в подпапку /var/www/html/nextcloud После установки удалим пользователя apache2 из группы webmaster:

# gpasswd -d apache2 webmaster

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

# apt-get install php5-apcu memcached php5-memcached

Добавляем службу memcached в автозагрузку и стартуем ее:

# systemctl enable memcached
# systemctl start memcached

Добавим в config.php (находится в папке /var/www/html/nextcloud/config/) следующие строки:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
             array('localhost', 11211),
                            ),

Теперь создадим конфигурационный файл нашего сайта и настроим SSL-доступ
Включим 443 порт:

# a2enport https

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

openssl genrsa -des3 -out nextcloud-domain-ca.key 2048

2. Создаем и зашифровываем ключом корневого хранилища корневой сертификат, сертификат издателя сертификатов:

openssl req -new -x509 -days 3650 -key nextcloud-domain-ca.key -out nextcloud-domain-ca.crt

3. Создаем ключ веб-сервера, который вы намерены защитить сертификатом:

openssl genrsa -des3 -out nextcloud.key 1024

4. Создаем запрос на подписание сертификата веб-сервера:

openssl req -new -key nextcloud.key -out nextcloud.csr

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

openssl x509 -req -in nextcloud.csr -out nextcloud.crt -sha1 -CA nextcloud-domain-ca.crt -CAkey nextcloud-domain-ca.key -CAcreateserial -days 3650

6. Apache2 будет требовать при запуске пароль к ключу веб-сервера. Если это вам не нужно, сделайте страховую копию ключа веб-сервера:

cp nextcloud.key nextcloud.key.dist

и очистите пароль ключа веб-сервера командой:

openssl rsa -in nextcloud.key.dist -out nextcloud.key

7. Создадим цепочку сертификатов CA-bundle:

cat nextcloud.crt nextcloud-domain-ca.crt > nextcloud.ca-bundle

8. В итоге у нас будут следующие файлы:

nextcloud.crt - сертификат нашего сервера
nextcloud.csr - запрос на сертификат
nextcloud.key - ключ сертификата нашего сервера
nextcloud.ca-bundle - ca-bundle файл нашего сайта
nextcloud-domain-ca.crt - корневой сертификат
nextcloud-domain-ca.key - ключ корневого сертификата


Скопируем стандартный конфигурационный файл:

# cd /etc/httpd2/conf/sites-available/
# cp default_https.conf nextcloud.conf

Ваш конфигурационный файл должен содержать следующие строки:

<VirtualHost *:443>
                DocumentRoot "/var/www/html/nextcloud"
                ServerName 10.10.10.10:443
                ServerAdmin webmaster@example.com
                ErrorLog "/var/log/httpd2/error_log"
                TransferLog "/var/log/httpd2/access_log"
                SSLEngine on
                SSLProtocol all -SSLv2
                SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
                SSLCertificateFile "/root/ssl/nextcloud.crt"
                SSLCertificateKeyFile "/root/ssl/nextcloud.key"
                SSLCertificateChainFile "/root/ssl/nextcloud.ca-bundle"
                SSLCACertificateFile "/root/ssl/nextcloud-domain-ca.crt"
                <IfModule mod_headers.c>
                      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
                </IfModule>
                <Directory /var/www/html/nextcloud>
                        AllowOverride All
                </Directory>
</VirtualHost>

Добавим наш сайт в разрешенные, разрешим нужные модули и перезапустим web-сервер:

# a2ensite nextcloud
# a2enmod ssl
# a2enmod headers
# a2enmod env
# a2enmod rewrite
# a2enmod mime
# a2enmod dir 

# systemctl restart httpd2