В этом руководстве показано, как установить NextCloud на Ubuntu 20.04 LTS с веб-сервером Apache.
Что такое NextCloud?
NextCloud — это бесплатное облачное хранилище с открытым исходным кодом. Функционально он похож на Dropbox. Проприетарные облачные хранилища (Dropbox, Google Drive и т. д.) удобны, но имеют свою цену: их можно использовать для сбора личных данных, поскольку ваши файлы хранятся на их компьютерах. Если вы беспокоитесь о конфиденциальности, вы можете переключиться на NextCloud, который вы можете установить на свой частный домашний сервер или на виртуальный частный сервер (VPS). Вы можете загрузить свои файлы на свой сервер через NextCloud, а затем синхронизировать эти файлы со своим настольным компьютером, ноутбуком или смартфоном. Таким образом, вы полностью контролируете свои данные.
Возможности NextCloud
- Бесплатно и с открытым исходным кодом
- Сквозное шифрование, означающее, что файлы могут быть зашифрованы на клиентских устройствах перед загрузкой на сервер, поэтому даже если кто-то украдет ваш сервер, он не сможет прочитать ваши файлы.
- Может быть интегрирован с онлайн-офисным пакетом (Collobora Online, OnlyOffice), чтобы вы могли создавать и редактировать файлы doc, ppt, xls непосредственно из NextCloud.
- Магазин приложений содержит сотни приложений для расширения функциональности (например, приложение календаря, приложение для контактов, приложение для создания заметок, приложение для видеоконференций и т. д.).
- Клиент синхронизации доступен для Linux, macOS, Windows, iOS и Android.
Предварительные требования
NextCloud написан на языке программирования PHP. Чтобы следовать этому руководству, вам сначала нужно установить стек LAMP в Ubuntu 20.04.
Вы можете установить NextCloud на свой домашний сервер или VPS (виртуальный частный сервер). Вам также потребуется доменное имя, чтобы позже вы могли включить HTTPS для шифрования HTTP-трафика. Nextcloud можно установить без доменного имени, но это действительно не имеет смысла, если вы не шифруете HTTP-соединение для предотвращения отслеживания. Теперь давайте установим NextCloud.
Шаг 1: Загрузите NextCloud в Ubuntu 20.04
Войдите на свой сервер Ubuntu 20.04. Затем загрузите zip-архив NextCloud на свой сервер. На момент написания этой статьи последняя стабильная версия — 23.0.3. Возможно, вам потребуется изменить номер версии. Вы можете запустить следующую команду, чтобы загрузить его на свой сервер.
wget https://download.nextcloud.com/server/releases/nextcloud-23.0.3.zip
После загрузки распакуйте архив с помощью unzip.
sudo apt install unzip
sudo unzip nextcloud-21.0.1.zip -d /var/www/
Параметр -d указывает целевой каталог. Веб-файлы NextCloud будут извлечены в /var/www/nextcloud/. Затем нам нужно изменить владельца этой директории на www-data, чтобы веб-сервер (Apache) мог писать в эту директорию.
sudo chown www-data:www-data /var/www/nextcloud/ -R
Шаг 2: Создайте базу данных и пользователя для Nextcloud на сервере базы данных
Войдите на сервер базы данных с помощью следующей команды. Поскольку MariaDB теперь использует плагин unix_socket для аутентификации пользователя, нет необходимости вводить пароль root для MariaDB. Нам просто нужно префикс команды mysql с sudo.
sudo mysql
Затем создайте базу данных для Nextcloud. В этом учебнике имя базы данных nextcloud. Вы можете использовать любое имя, которое вам нравится.
create database nextcloud;
Создайте пользователя базы данных. Опять же, вы можете использовать предпочитаемое имя для этого пользователя. Замените your-password предпочитаемым паролем.
create user nextclouduser@localhost identified by 'your-password';
Предоставьте этому пользователю все привилегии в базе данных nextcloud.
grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'your-password';
flush privileges;
exit;
Шаг 3: Создайте виртуальный хост Apache для Nextcloud
Создайте файл nextcloud.conf в каталоге /etc/apache2/sites-available/ с помощью текстового редактора командной строки, такого как Nano.
sudo nano /etc/apache2/sites-available/nextcloud.conf
Скопируйте и вставьте следующий текст в файл. Замените nextcloud.example.com предпочитаемым вами субдоменом. Не забудьте создать запись DNS A для этого поддомена в редакторе зон DNS. Если у вас нет настоящего доменного имени, я рекомендую перейти на NameCheap, чтобы купить его. Цена низкая, и они дают защиту конфиденциальности whois бесплатно на всю жизнь.
<VirtualHost *:80>
DocumentRoot "/var/www/nextcloud"
ServerName nextcloud.example.com
ErrorLog ${APACHE_LOG_DIR}/nextcloud.error
CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined
<Directory /var/www/nextcloud/>
Require all granted
Options FollowSymlinks MultiViews
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any
</Directory>
</VirtualHost>
Включим наш виртуальный хост
sudo a2ensite nextcloud.conf
Выполните следующую команду, чтобы включить необходимые модули Apache.
sudo a2enmod rewrite headers env dir mime setenvif ssl
Запустим тест конфигурации Apache
sudo apache2ctl -t
Если синтаксис в порядке, перезагрузите Apache, чтобы изменения вступили в силу.
sudo systemctl restart apache2
Шаг 4: Установите и включите модули PHP
Выполните следующие команды, чтобы установить модули PHP, необходимые или рекомендуемые NextCloud.
sudo apt install imagemagick php-imagick libapache2-mod-php7.4 php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp
Перзагрузите Apache что бы использовать модули
sudo systemctl reload apache2
Шаг 5. Включите HTTPS
Теперь вы можете получить доступ к мастеру веб-установки Nextcloud в своем веб-браузере, введя доменное имя для вашей установки Nextcloud. Прежде чем вводить какую-либо конфиденциальную информацию, мы должны включить безопасное соединение HTTPS в Nextcloud. Мы можем получить бесплатный сертификат TLS от Let’s Encrypt. Установив клиент Let’s Encrypt (certbot) из репозитория Ubuntu 20.04.
Установим Certbot для apache
sudo apt install certbot python3-certbot-apache
Убедимся что у нас присутствуют конфиг файлы для наших сайтов в /etc/apache2/sites-available и в файрволле открыты необходимые для работы протокола HTTPS порты TCP, после чего запустим нашего
sudo certbot --apache
Скрипт задаст нам некотоыре вопросы, на которые нужно будет дать ответы, так же перечислит сайты для кторых обнаружены конфиг файлы на веб сервере и предложит редиректить соединения с 80 порта на 443 по умолчанию (я рекомендую выбрать именно такой вариант). Далее будут сгенерированны SSL сертификаты для выбранных сайтов или для всех сайтов если мы укажем такую опцию, а так же скрипт настроит периодичную проверку сертификатов на предмет истечения срока действия и перегенерацию.
Было обнаружено, что Certbot не может автоматически добавлять заголовок HSTS в файл конфигурации Apache для Nextcloud. Если вы хотите включить HSTS (HTTP Strict Transport Security), отредактируйте файл.
sudo nano /etc/apache2/sites-enabled/nextcloud-le-ssl.conf
Затем мы можем добавить следующую строку в блок сервера SSL, чтобы включить заголовок HSTS.
Header always set Strict-Transport-Security "max-age=31536000"
Сохраните и закройте файл. Затем отправьте текст конфигурации Apache.
sudo apache2ctl -t
Если тест прошел успешно, перезагрузите Apache, чтобы изменения вступили в силу.
sudo systemctl reload apache2
Шаг 6: Завершите установку в веб-браузере
Теперь вы можете получить доступ к мастеру веб-установки Nextcloud, используя соединение HTTPS. Чтобы завершить установку, вам необходимо создать учетную запись администратора, ввести путь к папке данных Nextcloud, ввести сведения о базе данных, созданной на шаге 2. Папка данных — это место, где хранятся файлы пользователей. В целях безопасности лучше всего разместить каталог данных за пределами корневого веб-каталога Nextcloud. Поэтому вместо хранения файлов пользователей в /var/www/nextcloud/data/ мы можем изменить его на /var/www/nextcloud-data. который можно создать с помощью следующей команды:
sudo mkdir /var/www/nextcloud-data
Затем убедитесь, что у пользователя Apache (www-data) есть разрешение на запись в каталог данных.
sudo chown www-data:www-data /var/www/nextcloud-data -R
На этом основная настройка завершается, далее по тексту статьи будут расматриваться небольшие правки, модификации, тюнинг и решение возможных проблем.
Как сбросить пароль пользователя Nextcloud из командной строки
Если вы потеряли пароль своей учетной записи администратора и не настроили доставку электронной почты в Nextcloud, вам необходимо сбросить пароль, выполнив следующую команду на своем сервере. Замените nextcloud_username своим настоящим именем пользователя.
sudo -u www-data php /var/www/nextcloud/occ user:resetpassword nextcloud_username
Есть и другие команды, которые могут оказаться полезными. Список доступных команд
sudo -u www-data php /var/www/nextcloud/occ
или
sudo -u www-data php /var/www/nextcloud/console.php
Шаг 7: Увеличьте лимит памяти PHP
Ограничение памяти PHP по умолчанию составляет 128 МБ. NextCloud рекомендует 512 МБ для лучшей производительности. Чтобы изменить лимит памяти PHP, отредактируйте файл php.ini.
sudo nano /etc/php/7.4/apache2/php.ini
Найдите строку
memory_limit = 128M
Измените значение
memory_limit = 512М
Перезагрузите Apache что бы применить настройки
sudo systemctl reload apache2
Если на вашем сервере есть файл /etc/php7.4/fpm/php.ini, это означает, что на вашем сервере также работает PHP-FPM. Я также рекомендую изменить memory_limit в PHP-FPM.
sudo nano /etc/php/7.4/fpm/php.ini
Найдите параметр memory_limit и измените значение. После сохранения файла перезагрузите PHP-FPM, чтобы изменения вступили в силу.
sudo systemctl reload php7.4-fpm
Шаг 8: Настройте кэширующего сервера Redis для NextCloud
Если вы перейдете к настройкам NextCloud -> общие сведения, вы можете увидеть следующее предупреждение:
No memory cache has been configured. To enhance your performance please configure a memcache if available.
Мы включим кэширование памяти для nextCloud с помощью Redis. Выполните следующую команду, чтобы установить сервер Redis из репозитория Ubuntu.
sudo apt install redis-server
Проверим версию Redis
redis-server -v
Пример вывода:
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=66bd629f924ac924
Далее проверим, запущен ли Redis
sudo
systemctl status redis
Если сервер остановлен, запускаем
sudo systemctl start redis-server
Включаем автозапуск службы при старте системы
sudo systemctl enable redis-server
Чтобы настроить Redis в качестве кеша для nextCloud, нам нужно установить расширение PHP для взаимодействия с Redis.
sudo apt install php-redis
Проверяем включилось ли расширение
php --ri redis
Результат
Redis Support => enabled
Redis Version => 5.1.1
Мы видим, что расширение Redis включено. Если он не включен, выполните следующую команду:
sudo phpenmod redis
Вам также может потребоваться перезагрузить Apache, если расширение Redis по-прежнему не включено.
sudo systemctl reload apache2
Далее поправим конфигурационный файл NextCloud
sudo nano /var/www/nextcloud/config/config.php
Добавьте следующие строки над );
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),
Сохраняем и закрываем файл. Далее перезапускаем Apache и PHP-FPM
sudo systemctl restart apache2 php7.4-fpm
Теперь снова перейдите в настройки NextCloud -> общие сведения и обновите веб-страницу, предупреждение о кэшировании памяти должно исчезнуть.
Добавление отсутствующих индексов (Adding Missing Indexes)
Если вы видите следующее сообщение на странице «Настройки NextCloud -> общие сведения»,
The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically.
Необходимо вручную добавить эти индексы. Перейдите в корневой веб-каталог Nextcloud.
cd /var/www/nextcloud/
Выполните следующую команду, чтобы добавить индексы в базу данных Nextcloud.
sudo -u www-data php occ db:add-missing-indices
Теперь, если вы обновите страницу «Настройки NextCloud -> общие сведения», предупреждение об отсутствующих индексах должно исчезнуть.
Увеличить предельный размер загружаемого файла
Если вы используете модуль Apache PHP для запуска PHP-скрипта, то ограничения на размер загружаемого файла нет. Если вы используете PHP-FPM для запуска скрипта PHP, вам необходимо изменить ограничение размера файла. Максимальный размер файла по умолчанию для загрузки в PHP-FPM составляет 2 МБ. Чтобы увеличить ограничение размера загрузки, отредактируйте файл конфигурации PHP.
sudo nano /etc/php/7.4/fpm/php.ini
Найдите строку
upload_max_filesize = 2M
Измените значение, например на 1024
Перезапустите PHP-FPM
sudo systemctl restart php7.4-fpm