====== Nextcloud ======
===== Работа с occ =====
Перейти в каталог с **nextcloud**
/var/www/nextcloud
Выполнить команду **occ**
sudo -u www-data php occ {команда}
[[https://docs.nextcloud.com/server/28/admin_manual/configuration_server/occ_command.html|Источник]] для версии 28.х
==== Режим обслуживания ====
Включен
php occ maintenance:mode --on
Выключен
php occ maintenance:mode --off
==== Сброс пароль пользователя ====
sudo -u www-data php /path_to_nextcloud/occ user:resetpassword User_Login
==== Список пользователей ====
sudo -u www-data php /path_to_nextcloud/occ user:list
==== Для полного сканирования сервера ====
выполним команду с правили пользователя веб-сервера **www-datа**. Ключ **files:scan** ищет новые файлы и обновляет файловый кеш.
cd /var/www/nextcloudsudo -u www-data php occ files:scan --all
==== Для одного пользователя ====
например с именем username, команда немного отличается.
cd /var/www/nextcloudsudo -u www-data php occ files:scan username
При установленном nextcloud в контейнере
docker exec -it nextcloud sudo -u abc php /config/www/nextcloud/occ db:add-missing-indices
===== Не указан регион размещения этого сервера Nextcloud =====
что требуется для возможности проверки номеров телефонов без указания кода страны. Чтобы разрешить пользователям сервера указывать номера телефонов без указания кода страны, добавьте параметр «default_phone_region» с соответствующим кодом страны в соответствии с ISO 3166-1.
Добавить в **config.php**
'default_phone_region' => 'RU',
===== Модуль php-imagick в этом случае не поддерживает SVG =====
Для лучшей совместимости рекомендуется установить его.
apt install imagemagick
===== SAMBA не подхватывает шары =====
Есть два варианта
files:scan
каждую минуту через крон (не айс).\\
И есть недокументированная опция
'filesystem_check_changes' => 1
в конфиге и не нужен крон.
===== Если при регистрации вам надо, чтобы у пользователя уже был определённый набор файлов =====
Поместите их в директорию:
%CLOUD_ROOT%/core/skeleton
где **%CLOUD_ROOT%** — директория, в которую установлено облако.
==== Что бы отображался реальный IP адрес ====
в //Параметры сервера -> Журналирование// При нахождении Nextcloud за NGINX proxy maneger (NPM), необходимо в NPM в раздел Advanced необходимого хоста внести запись
add_header X-Frame-Options "SAMEORIGIN";
или для большей безопасности
proxy_hide_header Upgrade;
proxy_hide_header X-Powered-By;
add_header Content-Security-Policy "upgrade-insecure-requests";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cache-Control "no-transform" always;
add_header Referrer-Policy no-referrer always;
add_header X-Robots-Tag none;
,а в
nano /var/www/nextcloud/config/config.php
добавить
'trusted_proxies' =>
array (
0 => 'IP_address proxy',
),
'forwarded_for_headers' =>
array (
0 => 'HTTP_X_FORWARDED_FOR',
),
[[https://github.com/NginxProxyManager/nginx-proxy-manager/issues/674?ysclid=ldo3rtpnf4879823214|Источник]]
Что бы реаьный IP отражался и в журнале **nextcloud** и в **log** файлах сервера надо убрать настройки **Advanced**
add_header X-Frame-Options "SAMEORIGIN";
или
proxy_hide_header Upgrade;
proxy_hide_header X-Powered-By;
add_header Content-Security-Policy "upgrade-insecure-requests";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cache-Control "no-transform" always;
add_header Referrer-Policy no-referrer always;
add_header X-Robots-Tag none;
Добавить настройки **config.php**
'trusted_proxies' =>
array (
0 => 'IP_address proxy',
),
'forwarded_for_headers' =>
array (
0 => 'HTTP_X_FORWARDED_FOR',
),
Открыть
mcedit /etc/nginx/nginx.conf
добавить в раздел
http {
# ...
##
# Logging Settings
##
log_format specialLog '$remote_addr forwarded for $http_x_real_ip - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access-special.log specialLog;
проверим конфиг и перезагрузим nginx
nginx -t
nginx -s reload
[[https://www.oslogic.ru/knowledge/1020/kak-poluchit-realnyj-ip-adres-polzovatelya-v-nginx-za-obratnym-proksi-serverom-nginx/?ysclid=ldo3rveaav881598653|Источник]]
==== Русификация Nextcloud ====
'default_language' => 'ru',
'default_locale' => 'ru_RU',
'force_language' => 'ru',
'default_phone_region' => 'RU',
==== Модуль OPcache подсистемы PHP настроен некорректно ====
Дополнительная информация представлена в документации.
Буфер интернированных строк OPcache почти заполнен. Чтобы обеспечить эффективное кэширование повторяющихся строк, рекомендуется установить opcache.interned_strings_buffer в конфигурации PHP со значением выше, чем 8.
sudo nano /etc/php/8.1/fpm/php.ini
добавить
opcache.interned_strings_buffer=16
перезагрузить **fpm**
sudo systemctl restart php8.1-fpm
==== Установка списка файлов вместо dashboard ====
Следующая опция для тех, кто обновился выше 20 версии и при заходе на главную облака видит новый dashboard вместо знакомого списка файлов.
Исправляется просто добавлением в файл **config.php** следующей строки
'defaultapp' => 'files',
==== Настройка обратного прокси для доступа ====
Для доступа к файлам, используя обратный прокси, особых настроек делать не надо, достаточно в директиве proxy_pass указать IP сервера с Nextcloud. Однако, если вы используете клиент Nextcloud, то он при авторизации запустит окно браузера с IP сервера Nextcloud, а не его доменным именем. Чтобы это исправить, делаем следующее:
Для примера IP обратного прокси — 192.168.0.1, IP Nextcloud-сервера — 192.168.0.2
В файле nextcloud/config/config.php
'trusted_domains' =>
array (
0 => '192.168.0.2',
1 => '192.168.0.1',
),
'overwritehost' => 'domain.name.example.org',
'overwriteprotocol' => 'https',
'overwritewebroot' => '',
'overwritecondaddr' => '^192\.168\.0\.1$',
'overwrite.cli.url' => 'https://domain.name.example.org',
'trusted_proxies' =>
array (
0 => '192.168.0.1',
),
Таким образом, опция **trusted_proxies** исправляет проблему "//Заголовки обратного прокси настроены неправильно, либо вы подключены к серверу Nextcloud через доверенный прокси//"
===== Облако на сетевом диске по NFS =====
Этот пункт можно пропустить, если настраиваете облако на локальный диск, а не на отдельную машину с доступом по nfs
Ставим **nfs-client**
sudo apt install nfs-common -y
Монтируем папку **nfs**
sudo mkdir -p /nfs/nc
sudo mount your_host_ip:/папка_шары_nfs/ /nfs/nc
sudo ls -l /nfs/nc/
sudo df -h
sudo du -sh /nfs/nc/
Монтируем **nfs** при загрузке
sudo nano /etc/fstab
Добавим такую строку в конец файл
your_host_ip:/папка_шары_nfs/ /nfs/nc nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
===== Обновление NC =====
==== После установки 25.0.13 ====
потребовалось изменить в файле /etc/nginx/
add_header X-Robots-Tag none;
на
add_header X-Robots-Tag "noindex, nofollow" always;
==== 29 to 30 ====
//В настоящее время вы используете PHP 8.1.33. PHP 8.1 устарел с момента выхода Nextcloud 30. Nextcloud 32 может потребовать как минимум PHP 8.2. Пожалуйста, обновитесь до одной из официально поддерживаемых версий PHP, предоставляемых PHP Group, как можно скорее. За дополнительными сведениями обратитесь к [[https://www.php.net/supported-versions.php|документации]] ↗//
Рекомендуемая версия 8.2
NC на NGINX + php-fpm
Обновление
Сначала необходимо добавить репозитории для PHP 8.2:
sudo apt-get install ca-certificates apt-transport-https software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
Теперь посмотрим перечень пакетов php, которые установлены в системе:
sudo apt list --installed php8*
Все эти пакеты нужно будет обновить до версии 8.2. Запускаем установку обновленных пакетов:
sudo apt install -y php8.2-apcu php8.2-bcmath php8.2-bz2 php8.2-cli php8.2-common php8.2-curl php8.2-fpm php8.2-gd php8.2-gmp php8.2-igbinary php8.2-imagick php8.2-imap php8.2-intl php8.2-ldap php8.2-mbstring php8.2-opcache php8.2-pgsql php8.2-readline php8.2-redis php8.2-smbclient php8.2-xml php8.2-zip php8.2 php8.2-msgpack php8.2-memcached
После установки новой версии PHP не забываем скорректировать лимиты по потреблению памяти. Для сервера NextCloud рекомендуется установить потолок в 1 ГБ:
sudo nano /etc/php/8.2/fpm/php.ini
memory_limit = 1024M
Теперь отключим PHP 8.1 и включим PHP 8.2
mcedit /etc/nginx/sites-available/MY_SITE
Изменить на
upstream php-handler {
#server 127.0.0.1:9000;
server unix:/run/php/php8.2-fpm.sock;
Раскомментировать в
mcedit /etc/php/8.2/fpm/pool.d/www.conf
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Расскомментировать строку в
mcedit /etc/php/8.2/fpm/php.ini
opcache.interned_strings_buffer = 16
Перезапустить NGINX и PHP-pfm
systemctl restart nginx
systemctl restart php8.2-fpm
===== Полезные ссылки =====
[[https://docs.reconn.ru/software/nextcloud/nextcloud_installation/|Установка Nextcloud]]
[[https://kurazhov.ru/nextcloud-tuning/?ysclid=mgwiakbpzx718534201|Тюнинг Nextcloud]]
[[https://itproblog.ru/%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8-php-%D0%B4%D0%BB%D1%8F-nextcloud/?ysclid=mgwgc4627l927789795|Обновление php]]
[[https://blog.altuninvv.ru/linux/debian/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-php-83-%D0%BD%D0%B0-debian-12-bookworm-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F-debsuryorg?ysclid=mgwgccoysl251720218|Установка PHP 8.3 на Debian 12 Bookworm после блокировки репозитория deb.sury.org]]