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

В конфигурации LEMP PHP запускается как отдельная служба PHP-FPM и обрабатывает запросы от Nginx через FastCGI. Проверить корректность установки PHP можно также при помощи вывода на экран текущего состояния данной службы:
$ systemctl status php8.2-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:
$ 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.

Настройка 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.

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

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

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