Как установить Nextcloud на Debian 12

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

В статье разберём, как установить Nextcloud на виртуальный выделенный сервер под управлением Debian 12.

Как установить Nextcloud на Debian 12

Nextcloud – серверное веб-приложение, реализованное на языке PHP, в котором вся служебная информация и пользовательские данные сохраняются в СУБД MySQL либо MariaDB. Доступ к системе осуществляется через веб-сервер, в роли которого выступает Apache или Nginx. Без предварительной установки и корректной настройки этих компонентов запуск Nextcloud невозможен, поскольку приложение не сможет обрабатывать запросы и взаимодействовать с базой данных.

По этой причине установку Nextcloud на собственном VPS необходимо начать с подготовки базового веб-окружения. Как правило, для этого используют один из двух классических стеков: LAMP или LEMP. Оба варианта обеспечивают необходимый набор технологий для стабильной работы веб-приложений на PHP.

В рамках данного примера установка Nextcloud будет выполняться на виртуальном сервере с уже развёрнутым стеком LEMP – Linux, Nginx, MariaDB, PHP. Процесс его установки и первичной настройки подробно рассмотрен в соответствующей статье нашего справочника. В настоящей статье мы исходим из того, что веб-сервер, PHP и сервер базы данных уже готовы к работе.

Создание базы данных и подготовка PHP

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

$ sudo mysql -u root -p

В нашем примере:

  • nextcloud – название базы данных;
  • nextclouduser – имя пользователя базы данных;
  • P@ssword – пароль пользователя базы данных.
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'P@ssword';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

На сервере уже установлен стек LEMP, включающий PHP-FPM и поддержку MySQL/MariaDB. Поэтому необходимо будет установить дополнительные PHP-модули, которые используются Nextcloud. Эти расширения требуются для корректной работы веб-интерфейса, системы приложений, обработки файлов и API:

$ sudo apt install php-xml php-mbstring php-zip php-curl php-gd php-imagick php-intl php-bz2 php-gmp

По окончании установки проверьте версию PHP:

$ php -v

Вывод версии PHP

В конфигурации LEMP PHP запускается как отдельная служба PHP-FPM и обрабатывает запросы от Nginx через FastCGI. Проверить корректность установки PHP можно также при помощи вывода на экран текущего состояния данной службы:

$ systemctl status php8.2-fpm

В выводе не должно содержаться сообщений о каких-либо ошибках.

Вывод состояния службы PHP-FPM

Далее необходимо внести изменения в основной конфигурационный файл PHP для режима PHP-FPM. В нём задаются глобальные параметры работы PHP, применяемые ко всем PHP-скриптам, обслуживаемым службой php8.2-fpm:

$ sudo nano /etc/php/8.2/fpm/php.ini

Ниже приведён пример рекомендуемых значений параметров PHP для Nextcloud. При необходимости адаптируйте их под ресурсы сервера и предполагаемые нагрузки.

memory_limit = 512M
upload_max_filesize = 2G
post_max_size = 2G
max_execution_time = 360
date.timezone = Europe/Moscow

После внесения изменений закройте файл с сохранением изменений и перезапустите службу PHP-FPM:

$ sudo systemctl restart php8.2-fpm

Установка Nextcloud

Перед установкой Nextcloud загрузите утилиту для загрузки файлов и утилиту для распаковки ZIP-архивов. Изначально они отсутствуют в образе Debian 12, но потребуются на следующих шагах:

$ sudo apt install wget unzip

По окончании установки перейдите в директорию /var/www/:

$ cd /var/www/

Находясь там загрузите ZIP-архив с последней актуальной версией Nextcloud:

$ sudo wget https://download.nextcloud.com/server/releases/latest.zip

Дождитесь окончания загрузку и затем разархивируйте ZIP-архив:

$ sudo unzip latest.zip

Затем назначьте полученный каталог nextcloud и все его файлы пользователю и группе www-data, под которыми веб-сервер и PHP-FPM имеют право читать и записывать данные:

$ sudo chown -R www-data:www-data nextcloud

Также установите соответствующие права доступа на данный каталог и всё его содержимое, чтобы веб-сервер мог корректно работать с Nextcloud:

$ sudo chmod -R 750 nextcloud

После чего удалите загруженный ZIP-архив, поскольку он больше не нужен:

$ sudo rm latest.zip

Настройка конфигурации Nginx для Nextcloud

На следующем этапе создайте конфигурационный файл виртуального хоста Nginx, в котором будут заданы параметры работы сайта Nextcloud – домен, корневая директория, обработка PHP и правила доступа:

$ sudo nano /etc/nginx/sites-available/nextcloud.conf

В данный файл вставьте следующее содержимое, заменив vash-domain.ru на имя вашего домена:

server {
    listen 80;
    server_name vash-domain.ru;

    root /var/www/nextcloud;
    index index.php index.html;

    client_max_body_size 2G;
    fastcgi_buffers 64 4K;

    location / {
        try_files $uri $uri/ /index.php$request_uri;
    }

    location ~ \.php(?:$|/) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location ~ /\. {
        deny all;
    }

    location /.well-known {
        allow all;
    }
}

Закройте файл с сохранением изменений и активируйте сайт:

$ sudo ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/

После чего проверьте корректность синтаксиса Nginx:

$ sudo nginx -t

Если ошибок нет, вывод команды должен выглядеть следующим образом:

Вывод проверки синтаксиса Nginx

После чего перезапустите конфигурацию Nginx:

$ sudo systemctl reload nginx

Подключение к веб-интерфейсу Nextcloud

Чтобы подключиться к веб-интерфейсу Nextcloud, необходимо открыть доступ к серверу для протокола HTTP. Для этого добавьте в брандмауэр UFW разрешающее правило для предустановленного профиля HTTP:

$ sudo ufw allow http

Затем откройте браузер и перейдите на http://vash-domain.ru, где вместо vash-domain.ru введите доменное имя, привязанное к вашему серверу, либо его IP-адрес. На открывшейся стартовой странице укажите:

  • имя нового пользователя, который будет администратором Nextcloud;
  • пароль нового пользователя;
  • имя пользователя базы данных, добавленного в систему при создании базы данных в MariaDB;
  • пароль данного пользователя;
  • название базы данных.

После чего нажмите Установить для запуска процесса первоначальной настройки Nextcloud.

Подключение к веб-интерфейсу Nextcloud

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

Выбор приложений для установки - Как установить Nextcloud на Debian

Далее система предложит настроить виджеты.

Настройка виджетов - Как установить Nextcloud на Debian

И в результате браузер откроет дашборд Nextcloud.

Дашборд Nextcloud - Как установить Nextcloud на Debian

Настройка HTTPS-доступа к Nextcloud

Для защиты веб-интерфейса Nextcloud рекомендуется вместо протокола HTTP использовать более безопасный HTTPS с бесплатными TLS-сертификатами Let’s Encrypt. Выпуск и продление сертификатов выполняется с помощью утилиты Certbot, которая автоматически интегрируется с веб-сервером Nginx, вносит необходимые изменения в его конфигурацию и настраивает принудительный редирект всех HTTP-запросов на защищённое HTTPS-соединение. Это обеспечивает шифрование передаваемых данных, защиту учётных записей пользователей и соответствие базовым требованиям безопасности при работе с веб-приложением.

Следует отметить, что установка TLS-сертификата от Let’s Encrypt возможна только на сайт, доступ к которому осуществляется через его доменное имя. При этом не получится произвести настройку HTTPS-подключения с использованием данного сертификата, если сайт доступен только через IP-адрес сервера, на котором он установлен. Следовательно, предварительно необходимо привязать имя домена к IP-адресу сервера. Такую привязку можно произвести при помощи специальной DNS-записи, которая называется A-запись. Настройка A-записи осуществляется на сайте-регистраторе вашего домена.

Для настройки HTTPS-доступа сначала установите утилиту Certbot и плагин для неё, который позволяет автоматически получать и продлевать TLS-сертификаты Let’s Encrypt, а также настраивать конфигурацию Nginx:

$ sudo apt install certbot python3-certbot-nginx

Также, чтобы получить доступ к веб-ресурсу по протоколу HTTPS, откройте доступ для него через брандмауэр UFW:

$ sudo ufw allow https

После чего запустите процедуру получения TLS-сертификата при помощи утилиты Certbot:

$ sudo certbot --nginx

В процессе своей работы утилита произведёт следующие действия:

  • попросит указать адрес электронной почты для отправки уведомлений о возможных проблемах с сертификатом;
  • попросит согласиться с условиями лицензионного соглашения;
  • предложит дать разрешение на использование вашего адреса электронной почты для подписания на новости EFF – некоммерческой организации и партнёра-основателя проекта Let’s Encrypt, от которого можно отказаться;
  • спросит, в отношении какого именно домена вы производите настройку доступа по HTTPS;
  • после чего зарегистрирует для вашего домена аккаунт в Let’s Encrypt, запросит сертификат и в случае успешного прохождения проверки домена на валидность получит сертификат, установит его и настроит конфигурацию Nginx для работы с HTTPS.
Работа утилиты Certbot - Как установить Nextcloud на Debian

Проверка HTTPS-доступа к Nextcloud

Убедиться в успешной настройке HTTPS-доступа можно открыв браузер и перейдя на страницу веб-интерфейса Nextcloud.

Подключение у веб-интерфейсу Nextcloud по протоколу HTTPS

Проверить корректность установки TLS-сертификата можно также при помощи команды:

$ sudo certbot certificates

Проверка сертификата при помощи утилиты Certbot

Let’s Encrypt выдаёт сертификаты на 90 дней. В Debian 12 автообновление уже настроено через systemd. Проверить настройки автообновления можно при помощи команды:

$ sudo certbot renew --dry-run

Проверка автообновления сертификата при помощи утилиты Certbot

Вам также может понравиться