Nextcloud — облачный сервис для организации локального и удалённого доступа к данным.
Приступим к первоначальным настройкам сервера и дальнейшей установке и настройке Nextcloud
Устанавливаем утилиту chrony для установки корректного времени на сервере, а это, в свою очередь, повлияет на правильность временных меток при создании и изменении файлов в облаке.
apt install chrony
стартуем chrony
systemctl enable chrony
устанавливаем правильный часовой пояс
timedatectl set-timezone Europe/Moscow
(у меня время по Москве)
Качаем и устанавливаем пакет СУБД
apt install mariadb-server mariadb-client
разрешаем автозапуск
systemctl enable mariadb
запускаем сервис
systemctl start mariadb
запускаем утилиту, чтобы задать пароль для суперпользователя mysql
mysqladmin -u root password
подключаемся к MariaDB, создаем базу данных и пользователя
mysql -u root -p
CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost IDENTIFIED BY 'nextcloud';
\q
Скачиваем и устанавливаем пакет с веб-сервером Apache
apt install apache2
создаем виртуальный домен и настраиваем его для работы с NextCloud (для этого создадим файл nextcloud.conf)
nano /etc/apache2/sites-enabled/nextcloud.conf
заполняем его данными (cloud.domen.ru меняем на свой домен)
<VirtualHost *:80> Define root_domain cloud.domen.ru ServerName ${root_domain} Redirect / https://${root_domain} </VirtualHost> <VirtualHost *:443> Define root_domain cloud.domen.ru Define root_path /var/www/nextcloud ServerName ${root_domain} DocumentRoot ${root_path} <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" </IfModule> <Directory ${root_path}> AllowOverride All Require all granted </Directory> </VirtualHost>
сохраняем файл - Ctrl+X
->
Shift+Y
->
Enter
.
включаем модули в Apache
a2enmod ssl rewrite headers env dir mime
Получаем сертификат от центра сертификации Let's Encrypt
На роутере делаем проброс 80 порта. Мы тем самым разрешим сделать запрос на проверку нашего сайта (cloud.domain.ru) центром сертификации Let's Encrypt.
Работаем под рутом!
Устанавливаем сертбот
apt install certbot python3-certbot-apache
Запрашиваем сертификат и настраиваем апач, изменяя записи для сайта nextcloud в файле /etc/apache2/sites-enabled/nextcloud.conf
certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d cloud.domain.ru
Проверяем возможность продления сертификата
certbot renew --dry-run
Запускаем редактирование задач cron
crontab -e
Указываем условие запуска (в 2:30). ВНИМАНИЕ! Обязательно перевести каретку на новую строку после ввода этой инструкции
30 2 * * * /usr/bin/certbot renew --quiet
После добавления этой строки сохраняем и закрываем файл.
Cron будет ежедневно проверять, подлежат ли обновлению какие-либо сертификаты, и обновлять их по мере необходимости.
Это гарантирует, что наш сервер Apache всегда использует действительные SSL-сертификаты, поддерживая безопасное подключение.
проверяем конфигурацию apache
apachectl configtest
если всё хорошо, то увидим ответ
Syntax OK
разрешаем автозапуск веб-сервера
systemctl enable apache2
перезапускаем веб-сервер
systemctl restart apache2
На момент написания статьи для NextCloud требовался PHP версии 8.2
Качаем и устанавливаем нужные пакеты
apt install php php-fpm php-common php-zip php-xml php-intl php-gd php-mysql php-mbstring php-curl php-imagick libapache2-mod-fcgid php-gmp php-bcmath libmagickcore-6.q16-6-extra
разрешаем в Apache модули для fcgi и php-fpm
a2enmod proxy_fcgi setenvif
и следом
a2enconf php8.2-fpm
открываем и настраиваем php.ini
nano /etc/php/8.2/fpm/php.ini
находим эти строки и меняем их
memory_limit = 512M opcache.enable_cli=1 opcache.interned_strings_buffer=32 opcache.revalidate_freq=1
перезапускаем Apache и php-fpm
systemctl restart apache2 php8.2-fpm
Скачиваем исходник для установки с последней версией портала
wget https://download.nextcloud.com/server/releases/latest.zip
распаковываем скачанный архив
unzip latest.zip
переносим содержимое архива в каталог /var/www
mv nextcloud /var/www
изменяем права доступа
chown -R www-data:www-data /var/www/nextcloud
Т.к. облако у меня в моей локальной сети, но оно так же будет видно снаружи по домену, и у меня стоит Mikrotik, я настроил DNS Static, чтобы находясь дома, я смог бы по имени домена заходить в облачное хранилище.
Заходим в winbox, далее IP > DNS. В открывшемся окне DNS Settings жмём кнопку Static. В открывшемся окне DNS Static, в поле Name вписываем свой домен, в Type указываем А, в Address вписываем айпи своего домашнего сервера.
После этого, находясь в одной локальной сети с облачным сервером, в браузере можно указать его доменное имя и зайти на сервер.
Открываем браузер и переходим по адресу https://cloud.domen.ru, где cloud.domen.ru - адрес облачного сервиса, который мы прописали в настройках apache.
На открывшейся странице указываем:
С установкой Nextcloud закончили.
sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Открываем конфигурационный файл nextcloud
nano /var/www/nextcloud/config/config.php
в самый конец файла, перед «);», добавляем
'default_phone_region' => 'RU',
Устанавливаем memcached и php-apcu
apt install memcached php-memcached php-apcu
разрешаем автозапуск
systemctl enable memcached
запускаем сервис кэширования
systemctl start memcached
перезапускаем Apache
systemctl restart apache2
Опять открываем конфигурационный файл nextcloud
nano /var/www/nextcloud/config/config.php
в самый конец файла, перед «);», добавляем
'filelocking.enabled' => true, 'memcache.locking' => '\\OC\\Memcache\\Memcached', 'memcache.local' => '\OC\Memcache\Memcached', 'memcache.distributed' => '\OC\Memcache\Memcached', 'memcached_servers' => [ [ '127.0.0.1', 11211 ], ],
Открываем в браузере Nextcloud, справа вверху жмём на круглую иконку пользователя, в открывшемся меню жмём на «Настройки», далее - «Основные параметры», в разделе «Фоновые задания» выбираем Cron.
Если Cron не установлен, устанавливаем его
apt install cron
Создаем новое задание от пользователя www-data
crontab -e -u www-data
В открывшемся редакторе текста, внизу добавляем
* * * * * /usr/bin/php /var/www/nextcloud/cron.php
Открываем конфигурационный файл PHP
nano /etc/php/8.2/fpm/php.ini
находим эти опции и изменяем их значения
output_buffering = 0 max_execution_time = 3600 max_input_time = 3600 post_max_size = 256G upload_max_filesize = 256G
перезапускаем Apache
systemctl restart apache2
задаем новое значение фрагментации загружаемых файлов
sudo -u www-data php /var/www/nextcloud/occ config:app:set files max_chunk_size --value 536870912
Настройку сервера производил по этим двум статьям:
https://www.dmosk.ru/miniinstruktions.php?mini=nextcloud-apache-ubuntu
https://www.linuxtuto.com/how-to-install-nextcloud-on-debian-12/
Вы должны авторизоваться, чтобы оставлять комментарии.
Установилось.
После установки выдает такое.: prnt.sc/fqVBwJ3uPQfS
Журнал содержит 10 записей об произошедших ошибках начиная с 23 мая 2024 г., 19:26:26
Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks. За дополнительными сведениями обратитесь к документации ↗.
В базе данных отсутствуют некоторые индексы. Так как создание таких индексов может занять достаточно продолжительное время, оно должно быть запущено вручную. Для создания индексов необходимо запустить команду «occ db:add-missing-indices» во время работы сервера Nextcloud. При созданных индексах, как правило, запросы к базе данных выполняются значительно быстрее. В таблице «mail_messages_strucanalyz_idx» отсутствует необязательный индекс «mail_messages». В таблице «mail_class_creat_idx» отсутствует необязательный индекс «mail_classifiers». В таблице «mail_acc_prov_idx» отсутствует необязательный индекс «mail_accounts». В таблице «mail_alias_accid_idx» отсутствует необязательный индекс «mail_aliases».
решение тут: help.nextcloud.com/t/some-indices-are-missing-in-the-database-how-to-add-them-manually/37852
Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks.
я его отключил и скорость загрузки увеличилась.
Надо дописать в статью настройку Redis.