Настройка config.php в Nextcloud: полное руководство администратора

Раздел: Администрирование PHP -> Конфигурация PHP-приложений

Файл config/config.php является основным конфигурационным файлом Nextcloud. Он создается автоматически во время установки или может быть создан на основе config.sample.php. В нем хранятся параметры подключения к базе данных, настройки кеширования, почты, доверенных доменов и множество других параметров. Правильная настройка этого файла обеспечивает стабильную и безопасную работу облачного хранилища.

Основное решение: ручное редактирование config.php

Наиболее эффективный способ настройки - отредактировать файл config.php напрямую. После первоначальной установки файл уже содержит минимальные настройки. Для изменения параметров необходимо открыть файл в текстовом редакторе, внести изменения и сохранить. Перед редактированием рекомендуется создать резервную копию.

Пример базового файла config.php:


<?php
$CONFIG = array (
  'instanceid' => 'oc…',
  'passwordsalt' => '…',
  'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => 'cloud.example.com',
  ),
  'datadirectory' => '/var/www/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '…',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'nextclouduser',
  'dbpassword' => '…',
  'installed' => true,
);

Nextcloud config config php (config.php в nextcloud)

Пояснение ключевых параметров:

  • trusted_domains - массив доменов, с которых разрешен доступ. Если не указать актуальный домен, пользователь получит ошибку "Неверный домен".
  • datadirectory - путь к каталогу данных. Должен быть доступен для чтения и записи веб-серверу.
  • dbtype, dbname, dbhost, dbuser, dbpassword - параметры подключения к базе данных. Частая ошибка - указание неправильного типа базы (sqlite, mysql, pgsql).

Типичные проблемы:

  • Файл config.php недоступен для чтения веб-сервером - необходимо установить владельца (www-data, nginx) и права 640 или 644.
  • Синтаксическая ошибка (пропущенная запятая, лишняя скобка) - после редактирования файл перестает парситься. Проверить можно командой php -l config/config.php.
  • Изменения не вступают в силу - возможно, используется кеш опкода (opcache). После изменения файла нужно очистить opcache или перезапустить веб-сервер.

Как изменить настройки без прямого редактирования файла?

Nextcloud предоставляет консольную утилиту occ, которая позволяет управлять конфигурацией через команды. Команда occ config:system:set изменяет значения в массиве $CONFIG. Пример:

sudo -u www-data php occ config:system:set trusted_domains 2 --value=cloud.example.org

Wp config php (config.php в wordpress)

Эта команда добавляет третий доверенный домен. Если параметр является массивом, нужно указывать индекс. Для обычных строковых параметров индекс не требуется:

sudo -u www-data php occ config:system:set datadirectory --value=/mnt/data

Config php mysql (конфигурация mysql в php)

Просмотреть текущие настройки можно командой occ config:list.

Проблемы: необходимо указывать корректный индекс массива; если индекс уже занят, значение перезапишется. Нельзя изменить параметры, которых нет в стандартном массиве (например, вложенные массивы). Также команда требует выполнения из корневой директории Nextcloud и с правами пользователя, от которого работает веб-сервер.

Как настроить Nextcloud через переменные окружения?

Для гибкой настройки, особенно в контейнеризированных средах (Docker), Nextcloud поддерживает чтение переменных окружения с префиксом NEXTCLOUD_. Например, переменная NEXTCLOUD_TRUSTED_DOMAINS задает доверенные домены через запятую. Пример в docker-compose.yml:

environment:
  - NEXTCLOUD_ADMIN_USER=admin
  - NEXTCLOUD_ADMIN_PASSWORD=secret
  - NEXTCLOUD_TRUSTED_DOMAINS=localhost,cloud.example.com
  - NEXTCLOUD_DATADIRECTORY=/var/www/html/data

Config php https (настройка https в config.php)

При запуске контейнера образ Nextcloud автоматически применяет эти переменные к config.php. Список поддерживаемых переменных описан в документации образа.

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

Как настроить кеширование для повышения производительности?

Nextcloud поддерживает несколько типов кеша. Для локального кеша часто используется APCu, для распределенного - Redis или Memcached. Пример настройки Redis:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
  'host' => 'localhost',
  'port' => 6379,
  'timeout' => 0,
  'password' => '',
),

Include config php (подключение config.php через include)

При использовании Redis необходимо убедиться, что сервер Redis запущен и доступен. APCu требует установки модуля PHP apcu.

Проблемы: несовместимость версий APCu и PHP (APCu может отсутствовать). Redis с паролем - нужно указать правильно. Если Redis недоступен, Nextcloud может работать медленно или выдавать ошибки. Также нельзя одновременно использовать APCu и другой локальный кеш.

Как настроить отправку почты через SMTP?

Для отправки уведомлений и писем Nextcloud использует параметры в config.php. Пример настройки SMTP:

'mail_smtpmode' => 'smtp',
'mail_smtphost' => 'smtp.gmail.com',
'mail_smtpport' => 587,
'mail_smtpsecure' => 'tls',
'mail_smtpauth' => true,
'mail_smtpname' => 'user@gmail.com',
'mail_smtppassword' => 'app-password',
'mail_from_address' => 'noreply',
'mail_domain' => 'example.com',

Php config где (расположение config.php)

Параметр mail_smtpsecure может быть 'tls', 'ssl' или пустым. Порт 587 обычно используется для TLS, 465 для SSL. Для Gmail рекомендуется использовать пароль приложения.

Проблемы: неправильные учетные данные (особенно для Gmail при включенной двухфакторной аутентификации). Сертификаты SSL могут быть самоподписанными, тогда нужно установить 'mail_smtpstreamcontext' => [...] для отключения проверки. Также почтовый сервер может блокировать подключения.

Как разрешить доступ через прокси и задать доверенные домены?

Если Nextcloud работает за обратным прокси (nginx, Apache), необходимо указать доверенные прокси и базовый URL. Пример:

'trusted_proxies' => array('192.168.1.100', '10.0.0.1'),
'overwritewebroot' => '/nextcloud',
'overwrite.cli.url' => 'https://cloud.example.com',
'overwriteprotocol' => 'https',

Admin config php (административный config.php)

Параметр trusted_proxies содержит IP-адреса прокси-серверов, которые могут изменять заголовки X-Forwarded-*. Без этого Nextcloud не сможет определить корректный URL. overwriteprotocol и overwritewebroot нужны, если прокси переопределяет протокол или путь.

Проблемы: неправильное указание IP прокси (особенно при использовании Docker, где IP может меняться). Если не настроить trusted_proxies, Nextcloud будет показывать 'Неверный URL' или циклические перенаправления. Также необходимо проверить, что прокси передает правильные заголовки (X-Forwarded-Host, X-Forwarded-Proto).

Как увеличить лимиты памяти и времени выполнения?

Для обработки больших файлов или миграций может потребоваться увеличить лимиты PHP прямо в config.php (они переопределяют php.ini). Пример:

'memory_limit' => '512M',
'max_execution_time' => 3600,
'upload_max_filesize' => '2G',
'post_max_size' => '2G',

Эти параметры действуют только для процессов Nextcloud. Однако для CLI-команд (occ) лимиты могут быть другими, их лучше задавать в php.ini или при вызове.

Проблемы: некоторые серверы (например, shared hosting) могут запрещать изменение лимитов из PHP. Значения могут быть проигнорированы, если в php.ini установлены более жесткие ограничения.

Расширенные примеры конфигурации Nextcloud

Ниже приведены развернутые примеры настройки различных аспектов Nextcloud через config.php и командную строку.

Полный пример config.php с комментариями

Пример
<?php
$CONFIG = array (
  // Основные параметры
  'instanceid' => 'ocxxxxxxxxxxxx',
  'passwordsalt' => '...',
  'trusted_domains' => array (
    0 => 'localhost',
    1 => 'cloud.example.com',
    2 => 'cloud.internal',
  ),
  'datadirectory' => '/mnt/nextcloud-data',
  'dbtype' => 'mysql',
  'dbname' => 'nextcloud',
  'dbhost' => 'db.example.com:3306',
  'dbuser' => 'nextcloud',
  'dbpassword' => 'secure_password',
  'installed' => true,
  // Кеширование
  'memcache.local' => '\OC\Memcache\APCu',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => array(
    'host' => 'redis.example.com',
    'port' => 6379,
    'timeout' => 1.5,
    'password' => 'redis_secret',
  ),
  // Почта
  'mail_smtpmode' => 'smtp',
  'mail_smtphost' => 'smtp.mailgun.org',
  'mail_smtpport' => 587,
  'mail_smtpsecure' => 'tls',
  'mail_smtpauth' => true,
  'mail_smtpname' => 'postmaster@example.com',
  'mail_smtppassword' => '...',
  'mail_from_address' => 'noreply',
  'mail_domain' => 'example.com',
  // Прокси и URL
  'trusted_proxies' => array('10.0.0.1', '10.0.0.2'),
  'overwritewebroot' => '/',
  'overwrite.cli.url' => 'https://cloud.example.com',
  'overwriteprotocol' => 'https',
  // Лимиты
  'memory_limit' => '1G',
  'max_execution_time' => 7200,
  'upload_max_filesize' => '4G',
  'post_max_size' => '4G',
  // Дополнительно
  'log_type' => 'file',
  'logfile' => '/var/log/nextcloud.log',
  'loglevel' => 2,
);

Настройка почты с самоподписанным сертификатом (SSL контекст)

Пример
'mail_smtpmode' => 'smtp',
'mail_smtphost' => 'mail.example.com',
'mail_smtpport' => 465,
'mail_smtpsecure' => 'ssl',
'mail_smtpauth' => true,
'mail_smtpname' => 'nc@example.com',
'mail_smtppassword' => '...',
'mail_smtpstreamcontext' => array(
  'ssl' => array(
    'verify_peer' => false,
    'verify_peer_name' => false,
    'allow_self_signed' => true,
  ),
),

Этот пример отключает проверку сертификата SMTP-сервера. Используйте только для внутренних серверов или отладки.

Добавление значения в массив через occ

Пример
sudo -u www-data php occ config:system:set trusted_domains 3 --value=staging.example.com
sudo -u www-data php occ config:system:set trusted_domains --index-remove=2

Первая команда добавляет новый домен с индексом 3. Вторая удаляет элемент с индексом 2.

Пример docker-compose с переменными окружения для Nextcloud

Пример
version: '3'
services:
  nextcloud:
    image: nextcloud:stable
    environment:
      - NEXTCLOUD_ADMIN_USER=admin
      - NEXTCLOUD_ADMIN_PASSWORD=adminpass
      - NEXTCLOUD_TRUSTED_DOMAINS=localhost,cloud.example.com
      - NEXTCLOUD_DATADIRECTORY=/var/www/html/data
      - NEXTCLOUD_OVERWRITEPROTOCOL=https
    volumes:
      - nextcloud_data:/var/www/html/data
      - nextcloud_config:/var/www/html/config
    ports:
      - 8080:80
volumes:
  nextcloud_data:
  nextcloud_config:

При использовании volume для config изменения, сделанные через веб-интерфейс или occ, сохраняются.

Для проверки примененных настроек можно выполнить внутри контейнера:

Пример
docker exec -it nextcloud php occ config:list system
...
  "trusted_domains" => [
    0 => "localhost",
    1 => "cloud.example.com"
  ],
  "datadirectory" => "/var/www/html/data",
...

Config.php в Nextcloud - comments

En
Nextcloud config config php (php)