Введение
Добрый день, Уважаемые коллеги!
В этой статье я хочу описать как установить NextCloud на Debian11.
Что такое NextCloud
NextCloud – это аналог Dropbox, который можно развернуть на собственном VPS и сделать облако для хранения файлов — фотографий, видео и любых других. Приложение можно использовать для совместной работы и конфиденциального обмена файлами, настраивая уровни доступа для каждого пользователя. Также с помощью отдельного мобильного приложения NextCloud Talk можно также совершать голосовые и видеозвонки.
Примеры использования
— Облако для хранения фотографий и видео
— Обмен конфиденциальными документами
— Совместная работа над документами (ONLYOFFICE NextCloud)
Возможности Nextcloud
— Хранение любых файлов
— Права доступа для пользователя или группы
— Совместимость с Windows, macOS и Linux
— Приложения для iOS и Android
— Интерфейс на русском языке
— Интеграция с Microsoft Outlook
— История изменений, откат к предыдущим версиям
Подготовка к установке
Первым делом обновляем операционную систему.
apt update&& apt upgrade -y
после обновления устанавливаем Apache:
apt install apache2 -y
Меняем файл конфигурации апача:
nano/etc/apache2/apache2.conf
В конец файла дописываем следующее:
ServerName IP-адрес сервера
ServerName адрес сайта
Нажимаем сочетание клавиш Ctrl+S потом Ctrl+X.
Включаем модули Apache ssl, перезапись и заголовки:
a2enmod ssl rewrite headers
Перезапускаем Apache:
systemctl restart apache2
Проверяем модули:
apachectl -M | egrep "ssl|rewrite|headers"
Результат должен быть вот таким:
Устанавливаем и настраиваем PHP.
Устанавливаем дополнительные пакеты:
apt -y install lsb-release ca-certificates curl
curl-sSLo/usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Подключаем репозиторий PHP:
sh-c'echo"deb[signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Обновим индексы пакетов в системе.
apt update
Устанавливаем пакеты PHP и дополнительные модули PHP для NextCloud:
apt install -y php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu
Устанавливаем дополнительно еще один пакет:
apt install -y libmagickcore-dev
редактируем файл /etc/php/8.0/apache2/php.ini (вместо цифры 8.0 может быть 8.2 зависит от того какая версия будет актуальной на момент установки)
nano /etc/php/8.2/apache2/php.ini
Для базового развертывания nextcloud измените параметры по умолчанию, используя следующую конфигурацию.
file_uploads = On
allow_url_fopen = On
memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M
max_execution_time = 300
display_errors = Off
date.timezone = Europe/Moscow
output_buffering = Off
Раскомментируйте параметр, чтобы загрузить расширение opcache:
zend_extension=opcache
В разделе [opcache] и раскомментируем или добавляем следующую конфигурацию:
...
....
.....
opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1
Нажимаем Ctrl+S и потом Ctrl+x
Перезапускаем апач:
systemctl restart apache2
Установка и настройка MariaDB
apt install mariadb-server mariadb-client -y
Включаем службу mariadb и прописываем её в автозагрузку:
systemctl enable--now mariadb.service
Делаем первоначальную настройки базы данных mariadb:
mysql_secure_installation
Будет предложено ввести пароль root mariadb. Нажимаем Enter:
Появится вопрос. Вводим “Y” чтобы включить аутентификацию unix_socket.
После чего нам предложат сменить пароль для root для доступа к базе данных. Нажимаем “Y”.
Вводим надежный пароль для базы данных, после чего нажмите Enter, потом повторите ввод пароля и еще раз нажмите Enter (!!!Запомните этот пароль!!!).
Появится предложение удалить анонимных пользователей (Нажимаем “Y”):
Нам предложат отключить возможность удалённого подключения из под root’а (нажимаем “Y”):
Далее нам предложат удалить тестовые базы данных (отвечаем “Y”):
Далее попросят подтвердить всю введённую информацию (нажимаем “Y”):
При успешном исходе вы увидите вот такую картину:
Создаём базу данных и пользователя для NextCloud
Входим в оболочку mariadb:
mysql -u root -p
На запрос пароля введите пароль, созданный при первоначальной настройке базы данных.
Послу ввода пароля вы увидите вот такую командную строку:
Создаём базу данных:
CREATE DATABASE nextcloud_db;
Вот таким будет результат выполнения команды:
Создаём пользователя для базы данных (где nxt_user – это имя создаваемого пользователя, а StrongPassword– это ваш надёжный пароль):
CREATE USER nxt_user IDENTIFIED BY 'StrongPassword';
Результат выполнения выглядит так:
Выдаём привилегии созданному пользователю на доступ и запись к созданной базе данных:
GRANT ALL PRIVILEGES ON nextcloud_db.* TO nxt_user;
Результат выполнения команды:
Перезагружаем все права доступа к таблицам, чтобы применить новую конфигурацию к базе данных:
FLUSH PRIVILEGES;
Результат выполнения команды:
Теперь можно выйти из оболочки управления, введите команду:
quit;
Переходим в каталог /var/www/:
cd/var/www/
Скачиваем последнюю версию исходного кода NextCloud (проверить какая версия последняя можно по адресу https://download.nextcloud.com/server/releases/ на момент написания статьи последней являлась версия 27.1.2)
curl -o nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-27.1.2.zip
Устанавливаем распаковщик:
apt install unzip-y
После установки распаковщика, распакуйте скачанный архив командой:
unzip nextcloud.zip
После распаковки архива в каталоге /var/www/ появится папка nextcloud, проверить это можно командой:
ls -ls
Результат выполнения команды:
Устанавливаем права на папку /var/www/nextcloud командой:
chown -R www-data:www-data nextcloud
Теперь мы готовы создать SSL Letsencrypt и настроить виртуальный хост Apache для Nextcloud.
Генерация SSL Letsencrypt
Устанавливаем инструмент certbot командой:
apt install certbot-y
После завершения установки создаём каталог для авторизации letsencrypt, при помощи команды:
mkdir -p /var/lib/letsencrypt/.well-known
Меняем права на папку командами:
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
Переходим в каталог /etc/apache2/conf-available/ и создаём конфигурацию well-known.conf командами:
cd /etc/apache2/conf-available/
nano well-known.conf
В открытый файл нужно скопировать следующие строки:
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
Сохраните и выйдите из файла Нажмите Ctrl+S, а потом Ctrl+X.
Активируем новую конфигурацию командой:
ln -s /etc/apache2/conf-available/well-known.conf /etc/apache2/conf-enabled/
Проверяем конфигурацию апача и перезапускаем его командами:
apachectl configtest
systemctl restart apache2
Если ошибок нет, то мы готовы сгенерировать SSL Letencrypt с плагином webroot. Вводим команду:
certbot certonly --agree-tos --webroot -w /var/lib/letsencrypt/ -d имя вашего домена
Будет запрошен ваш email, введите свой email и нажмите Enter, дальше на все вопросы отвечайте “Y”
Результат выполнения команды на рисунке ниже:
Настраиваем виртуальный хост Apacheдля NextCloud
Переходим в каталог /etc/apache2/sites-available/ командой:
cd /etc/apache2/sites-available/
Создаём новую конфигурацию nextcloud.conf командой:
nano nextcloud.conf
В открывшийся файл вставьте следующий текст:
<VirtualHost *:80>
ServerName files.domain-name.io
ServerAlias www.files.domain-name.io
# auto redirect HTTP to HTTPS
Redirect permanent / https://files.domain-name.io/
</VirtualHost>
<VirtualHost *:443>
ServerName files.domain-name.io
ServerAlias www.files.domain-name.io
DocumentRoot /var/www/nextcloud/
Protocols h2 http/1.1
# auto redirect www to non-www
<If "%{HTTP_HOST} == 'www.files.domain-name.io'">
Redirect permanent / https://files.domain-name.io/
</If>
# log files
ErrorLog /var/log/apache2/files.domain-name.io-error.log
CustomLog /var/log/apache2/files.domain-name.io-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/files.domain-name.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/files.domain-name.io/privkey.pem
# HSTS
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
</VirtualHost>
Во всём файле замените domain-name.io на имя вашего домена
Сохраните и выйдите из файла, для этого нажмите Ctrl+S, а затем Ctrl+X.
Активируем созданную конфигурацию командой:
a2ensite nextcloud.conf
Проверяем новую конфигурацию апача и если нет ошибок, то перезагружаем службу апача. Делаем это командами:
apachectl configtest
systemctl restart apache2
Результат выполнения команды:
Ну вот мы и готовы установить NextCloud.
Переходим на сайт
Нас встречает окно первоначальной настройки:
Заполняем все поля.
Нажимаем установить и ждём.
Появится предложение установить рекомендованные приложения:
Нажимаем «Установить рекомендуемые приложения» и ждём завершения установки.
После завершения установки вы увидите вот такую заставку:
Поздравляю! Вы установили NextCloud на свой сервер!