Это старая версия документа!
Содержание
Установка Nextcloud
Базовая настройка сервера
Подключаем к нашему серверу по SSH:
ssh root@<IP-адрес сервера>
Меняем язык сервера на Русский:
dpkg-reconfigure locales
Обновляем систему и устанавливаем базовый софт
Обновляем список пакетов и обновляем систему:
apt update && apt upgrade
Устанавливаем Базовый софт:
apt install apt-transport-https ca-certificates curl htop sudo zip unzip wget
Создаём нового пользователя и добавляем его в группу Sudo
Создаём пользователя:
adduser kirill
Добавляем нашего пользователя в группу sudo:
usermod -aG sudo kirill
Перезагружаем сервер:
reboot
Снова подключаемся к нашему серверу по SSH, но только не под пользователем Root, а под пользователем, которого мы только что создали:
ssh kirill@<IP-адрес сервера>
Установка Веб-сервер Apache
Устанавливаем Apache:
sudo apt install apache2
Добавляем Apache в автозагрузку:
sudo systemctl enable apache2
Запускаем Apache:
sudo systemctl start apache2
Смотрим статус:
sudo systemctl status apache2
Установка PHP для Nextcloud
Добавляем ключ репозитория:
sudo apt install lsb-release ca-certificates curl apt-transport-https
sudo curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
Добавляем репозиторий:
sudo 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'
Обновляем список пакетов в репозиториях:
sudo apt update
Установка PHP 8.4 для NextCloud
sudo apt install php php-common php-bcmath php-curl php-gd php-gmp php-imap php-igbinary php-imagick php-intl php-json php-mbstring php-xml php-zip libapache2-mod-php php-mysql
sudo apt install php-apcu php-bz2 php-cli php-fpm php-memcached php-pear php-soap memcached
sudo apt install libmagickcore-dev librsvg2-bin ffmpeg
Настройка php.ini
Проверяем текущие значения:
grep -E "upload_max_filesize|post_max_size|memory_limit|max_execution_time" /etc/php/8.4/apache2/php.ini
Увеличиваем лимит:
sudo sed -i 's/^upload_max_filesize.*/upload_max_filesize = 4G/; s/^post_max_size.*/post_max_size = 4G/; s/^memory_limit.*/memory_limit = 1024M/; s/^max_execution_time.*/max_execution_time = 3600/; s/^;max_input_vars.*/max_input_vars = 3600/; s/^max_input_time.*/max_input_time = 3600/' /etc/php/8.4/apache2/php.ini
Установка MariaDB для Nextcloud из Официального репозитория Debian
Устанавливаем MariaDB:
sudo apt install mariadb-server mariadb-client
Установка MariaDB 11.4 из Официального репозитория MariaDB
Добавляем ключ репозитория:
sudo apt-get install apt-transport-https curl
sudo mkdir -p /etc/apt/keyrings
sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
Добавляем репозиторий:
sudo nano /etc/apt/sources.list.d/mariadb.sources
# MariaDB 11.4 repository list - created 2025-11-01 12:08 UTC # https://mariadb.org/download/ X-Repolib-Name: MariaDB Types: deb # deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details. # URIs: https://deb.mariadb.org/11.4/debian URIs: https://mirror.docker.ru/mariadb/repo/11.4/debian Suites: bookworm Components: main Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp
Обновляем список пакетов в репозиториях:
sudo apt update
Устанавливаем MariaDB
sudo apt install mariadb-server mariadb-client
Первоначальная настройка MariaDB
Делаем первоначальную настройку базы данных MariaBD:
sudo mariadb-secure-installation
Отвечаем yes / y на следующие вопросы безопасности:
| Вопрос | Ответ Да/Нет |
|---|---|
| Введите текущий пароль для пользователя root? | Ничего не вводим, нажимаем Enter |
| Переключиться на аутентификацию unix_socket? | Y / n: y |
| Установить пароль root? | Y / n: y |
| Удалить анонимных пользователей? | (Нажмите y - Y для Yes, любой другой символ для No): y |
| Запретить вход в систему удаленно? | (Нажмите y - Y для Yes, любой другой символ для No): y |
| Удалить тестовую базу данных и получить доступ к ней? | (Нажмите y - Y для Yes, любой другой символ для No): y |
| Обновить таблицы привилегий сейчас? | (Нажмите y - Y для Yes, любой другой символ для No): y |
Создаём базу для Nextcloud
Подключаемся к Mysql:
sudo mariadb -u root -p
Создаём новую базу:
CREATE DATABASE nextcloud;
Создаём пользователя базы данных, и назначаем все права доступа:
GRANT ALL ON nextcloud.* TO 'nextcloud_user'@'localhost' IDENTIFIED BY 'password';
Сохраняем изменения:
FLUSH PRIVILEGES;
Выходим из базы данных:
EXIT;
Настраиваем Apache
Установите права доступа на директорию www:
sudo chmod -R 775 /var/www
sudo chown -R $USER:$USER /var/www
Добавляем нашего пользователя в группу www-data:
sudo usermod -aG www-data $USER
Добавляем пользователя www-data в группу нашего пользователя:
sudo usermod -aG $USER www-data
Создаём новый виртуальный хост
Сначала отключим хост по умолчанию:
sudo a2dissite 000-default
Переходим в директорию /var/www:
cd /var/www
Создаём новый каталог:
mkdir nextcloud
Переходи в созданный каталог:
cd nextcloud
Скачиваем Nextcloud:
wget https://download.nextcloud.com/server/releases/nextcloud-31.0.12.zip
Распаковываем архив с Nextcloud:
unzip nextcloud-31.0.12.zip
Удаляем скаченный архив latest.zip, он нам больше не понадобиться:
rm nextcloud-31.0.12.zip
Переименовываем директорию nextcloud в public_html: mv nextcloud public_html
Меняем владельца на www-data: sudo chown -R www-data:www-data public_html
Создаём конфигурационный файл нового хоста: sudo nano /etc/apache2/sites-available/nextcloud.conf
Приводим конфиг к следующему виду:
<VirtualHost *:80> ServerName cloud.kirmolpc.ru ServerAlias www.cloud.kirmolpc.ru ServerAdmin admin@localhost DocumentRoot /var/www/nextcloud/public_html <Directory /var/www/nextcloud/public_html> AllowOverride All Require all granted Redirect permanent / https://cloud.kirmolpc.ru/ </Directory> <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomain> </IfModule> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Включаем хост следующей командой:
sudo a2ensite nextcloud
Активируем дополнительные модули Apache:
sudo a2enmod rewrite headers env dir mime
Перезапускаем Apache:
sudo systemctl restart apache2
Проверяем загрузку модулей Apache:
sudo apache2ctl -M
Установка Certbot SSL-сертификата
Устанавливаем Certbot:
sudo apt install certbot python3-certbot-apache
Устанавливаем SSL-на наш домен:
sudo certbot --apache
Отредактируем файл конфигурации ssl:
sudo nano /etc/apache2/sites-available/nextcloud-le-ssl.conf
Закомментируем или удаляем строчку, иначе, будет циклическое перенаправление на странице:
#Redirect permanent / https://cloud.kirmol.ru/
Перезапускаем Apache:
sudo systemctl restart apache2
Переходим по нашему домену, и завершаем настройку Nextcloud https://cloud.kirmolpc.ru/
Редактируем файл /config/config.php:
sudo nano /var/www/nextcloud/public_html/config/config.php
Добавляем ваш регион и время обслуживания:
0 => 'localhost', 'maintenance_window_start' => 1, 'default_phone_region' => 'RU',
Пример:
<?php $CONFIG = array ( 'instanceid' => 'occptqnm24ic', 'passwordsalt' => 'mwnnKZt7a0y6/Ll+Sh/G8X2Y/J7wtu', 'secret' => 'FO9N2Uk4zUib3CPWPxC/1YcF6bq8R4C590jQ9VJb9ijKcEMm', 'trusted_domains' => array ( 0 => 'localhost', 1 => 'cloud.kirmol.ru', ), 'datadirectory' => '/var/www/nextcloud/public_html/data', 'dbtype' => 'mysql', 'version' => '31.0.7.1', 'overwrite.cli.url' => 'https://cloud.kirmol.ru', 'dbname' => 'nextcloud', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'oc_', 'mysql.utf8mb4' => true, 'dbuser' => 'nextcloud_user', 'dbpassword' => 'g4f1y6fg#f6t', 'installed' => true, 'maintenance_window_start' => 1, 'default_phone_region' => 'RU', );
Настройка Memcache
Устанавливаем Memcache и Модуль PHP Memcache:
sudo apt install memcached php8.4-memcached
Добавляем в файл /config/config.php:
sudo nano /var/www/nextcloud/public_html/config/config.php
'memcache.local' => '\OC\Memcache\Memcached', 'memcache.distributed' => '\OC\Memcache\Memcached', 'memcached_servers' => [ [ '127.0.0.1', 11211 ], ],
Настройка PHP-FPM в связке с Apache
Устанавливаем, если не установлен:
sudo apt install php8.4-fpm
Проверяем, что PHP-FPM запущен:
sudo service php8.4-fpm status php-fpm8.4 -v ls -la /var/run/php/php8.4-fpm.sock
Запускаем PHP-FPM:
sudo a2enmod mpm_event proxy_fcgi setenvif
sudo a2enconf php8.4-fpm
Перезапускаем Apache, чтобы перезапустить все модули и применить новую конфигурацию:
sudo systemctl restart apache2
Проверяем нашу конфигурацию:
grep -E "upload_max_filesize|post_max_size|memory_limit|max_execution_time|max_input_vars|max_input_time" /etc/php/8.4/fpm/php.ini
Задаём лимиты:
sudo sed -i 's/^upload_max_filesize.*/upload_max_filesize = 4G/; s/^post_max_size.*/post_max_size = 4G/; s/^memory_limit.*/memory_limit = 1024M/; s/^max_execution_time.*/max_execution_time = 3600/; s/^;max_input_vars.*/max_input_vars = 3600/; s/^max_input_time.*/max_input_time = 3600/' /etc/php/8.4/fpm/php.ini
Обновляем конфигурацию PHP-FPM:
sudo nano /etc/php/8.4/fpm/pool.d/www.conf
С этих:
pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3
На эти:
pm.max_children = 64 pm.start_servers = 16 pm.min_spare_servers = 16 pm.max_spare_servers = 32
Проверяем текущие значения:
grep -E "pm.max_children|pm.start_servers|pm.min_spare_servers|pm.max_spare_servers" /etc/php/8.4/fpm/pool.d/www.conf
Поменяем текущие значения на нужные нам:
sudo sed -i 's/^pm.max_children = .*/pm.max_children = 64/; s/^pm.start_servers = .*/pm.start_servers = 16/; s/^pm.min_spare_servers = .*/pm.min_spare_servers = 16/; s/^pm.max_spare_servers = .*/pm.max_spare_servers = 32/' /etc/php/8.4/fpm/pool.d/www.conf
или
sudo sed -i 's/^pm.max_children = .*/pm.max_children = 70/; s/^pm.start_servers = .*/pm.start_servers = 20/; s/^pm.min_spare_servers = .*/pm.min_spare_servers = 20/; s/^pm.max_spare_servers = .*/pm.max_spare_servers = 60/' /etc/php/8.4/fpm/pool.d/www.conf
Перезапускаем PHP-FPM, чтобы применились новые значения:
sudo service php8.4-fpm restart
Указываем Apache использования PHP-FPM:
Для HTTP:
sudo nano /etc/apache2/sites-available/nextcloud.conf
Для HTTPS:
sudo nano /etc/apache2/sites-available/nextcloud-le-ssl.conf
<FilesMatch ".php$"> SetHandler "proxy:unix:/var/run/php/php8.4-fpm.sock|fcgi://localhost/" </FilesMatch>
Перезапускаем Apache:
sudo systemctl restart apache2
