Заметки о решаемых задачах АйТишников

Сделал - запиши. Нашёл - сохрани :)

Прошу прощения за рекламу на сайте. Я постарался сделать это максимально ненавязчиво и по минимуму. При чтении заинтересовавших вас статей она не будет вам мешать.
И если есть возможность поставить мой сайт в исключения у блокировщика рекламы, я буду очень признателен вам.

Установка и настройка Nextcloud в Debian 12

Установка и настройка Nextcloud в Debian 12

 

 

 

Инструкция по установке Nextcloud + Apache на Dedian 12 Bookworm.

 

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

Скачиваем и устанавливаем пакет с веб-сервером 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

Установка PHP

На момент написания статьи для 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

Установка Nextcloud

Скачиваем исходник для установки с последней версией портала

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.

На открывшейся странице указываем:

  • Логин администратора
  • Пароль администратора
  • Каталог с данными (тут надо указать каталог на том носителе, который мы хотим использовать для хранения облачных файлов пользователей. У меня под это дело выделен рейд-массив и права на каталог должны быть выставлены для www-data)
  • Имя базы данных — nextcloud
  • Пароль базы данных — nextcloud
  • Логин пользователя БД — nextcloud

С установкой Nextcloud закончили.

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

 

05 декабря 2023, 09:48    Александр Linux 0    7954 +1

 

 

 

 



Комментарии ()

  1. Local Host 30 мая 2024, 22:25 # 0
    Спасибо за мануал.
    Установилось.

    После установки выдает такое.: 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».
    1. Local Host 30 мая 2024, 22:33 # 0
      1. Local Host 30 мая 2024, 22:57 # 0
        единственное что по крону что то не то.

        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.
        1. Local Host 30 мая 2024, 23:50 # 0
          мне кажется memcache это лишняя настройка.
          я его отключил и скорость загрузки увеличилась.
          1. Александр 23 сентября 2024, 11:43 # +1
            Да, я тоже после тормозов и зависаний удалил memcache и перешёл на Redis.
            Надо дописать в статью настройку Redis.
            1. Local Host 15 января 2025, 06:41 # 0
              Буду признателен.
          2. Local Host 28 января 2025, 22:09 # 0
            привет. еще не обновили статью под redis кеширование?

            Вы должны авторизоваться, чтобы оставлять комментарии.