Completed
Push — master ( b3200b...966b88 )
by
unknown
28:55
created
config/config.sample.php 2 patches
Indentation   +2733 added lines, -2733 removed lines patch added patch discarded remove patch
@@ -29,2737 +29,2737 @@
 block discarded – undo
29 29
 $CONFIG = [
30 30
 
31 31
 
32
-	/**
33
-	 * Default Parameters
34
-	 *
35
-	 * These parameters are configured by the Nextcloud installer, and are required
36
-	 * for your Nextcloud server to operate.
37
-	 */
38
-
39
-
40
-	/**
41
-	 * This is a unique identifier for your Nextcloud installation, created
42
-	 * automatically by the installer. This example is for documentation only,
43
-	 * and you should never use it because it will not work. A valid ``instanceid``
44
-	 * is created when you install Nextcloud.
45
-	 *
46
-	 * 'instanceid' => 'd3c944a9a',
47
-	 */
48
-	'instanceid' => '',
49
-
50
-	/**
51
-	 * The salt used to hash all passwords, auto-generated by the Nextcloud
52
-	 * installer. (There are also per-user salts.) If you lose this salt, you lose
53
-	 * all your passwords. This example is for documentation only, and you should
54
-	 * never use it.
55
-	 *
56
-	 * @deprecated This salt is deprecated and only used for legacy-compatibility,
57
-	 * developers should *NOT* use this value for anything nowadays.
58
-	 *
59
-	 * 'passwordsalt' => 'd3c944a9af095aa08f',
60
-	 */
61
-	'passwordsalt' => '',
62
-
63
-	/**
64
-	 * Secret used by Nextcloud for various purposes, e.g., to encrypt data. If you
65
-	 * lose this string, there will be data corruption.
66
-	 */
67
-	'secret' => '',
68
-
69
-	/**
70
-	 * Your list of trusted domains that users can log into. Specifying trusted
71
-	 * domains prevents host header poisoning. Do not remove this, as it performs
72
-	 * necessary security checks.
73
-	 * You can specify:
74
-	 *
75
-	 * - The exact hostname of your host or virtual host, e.g., demo.example.org.
76
-	 * - The exact hostname with permitted port, e.g., demo.example.org:443.
77
-	 *   This disallows all other ports on this host
78
-	 * - Use * as a wildcard, e.g., ubos-raspberry-pi*.local will allow
79
-	 *   ubos-raspberry-pi.local and ubos-raspberry-pi-2.local
80
-	 * - The IP address with or without permitted port, e.g., [2001:db8::1]:8080
81
-	 *   Using TLS certificates where commonName=<IP address> is deprecated
82
-	 */
83
-	'trusted_domains' => [
84
-		'demo.example.org',
85
-		'otherdomain.example.org',
86
-		'10.111.112.113',
87
-		'[2001:db8::1]'
88
-	],
89
-
90
-	/**
91
-	 * The validity domain for cookies, for example '' (cookies will be sent only
92
-	 * the domain that defined it, e.g. 'demo.example.org'), 'demo.example.org'
93
-	 * (cookies will be valid for the domain and all subdomains), ...
94
-	 *
95
-	 * Defaults to '' (safe option)
96
-	 */
97
-	'cookie_domain' => '',
98
-
99
-	/**
100
-	 * Where user files are stored. The SQLite database is also stored here, when
101
-	 * you use SQLite.
102
-	 *
103
-	 * Default to ``data/`` in the Nextcloud directory.
104
-	 */
105
-	'datadirectory' => '/var/www/nextcloud/data',
106
-
107
-	/**
108
-	 * The current version number of your Nextcloud installation. This is set up
109
-	 * during installation and update, so you shouldn't need to change it.
110
-	 */
111
-	'version' => '',
112
-
113
-	/**
114
-	 * Identifies the database used with this installation. See also config option
115
-	 * ``supportedDatabases``
116
-	 *
117
-	 * Available:
118
-	 *  - sqlite3 (SQLite3)
119
-	 *  - mysql (MySQL/MariaDB)
120
-	 *  - pgsql (PostgreSQL)
121
-	 *
122
-	 * Defaults to ``sqlite3``
123
-	 */
124
-	'dbtype' => 'sqlite3',
125
-
126
-	/**
127
-	 * Your host server name, for example ``localhost``, ``hostname``,
128
-	 * ``hostname.example.com``, or the IP address.
129
-	 * To specify a port, use ``hostname:####``; for IPv6 addresses, use the URI notation ``[ip]:port``.
130
-	 * To specify a Unix socket, use ``localhost:/path/to/directory/containing/socket`` or
131
-	 * ``:/path/to/directory/containing/socket``, e.g., ``localhost:/run/postgresql/``.
132
-	 */
133
-	'dbhost' => '',
134
-
135
-	/**
136
-	 * The name of the Nextcloud database, which is set during installation. You
137
-	 * should not need to change this.
138
-	 */
139
-	'dbname' => 'nextcloud',
140
-
141
-	/**
142
-	 * The user that Nextcloud uses to write to the database. This must be unique
143
-	 * across Nextcloud instances using the same SQL database. This is set up during
144
-	 * installation, so you shouldn't need to change it.
145
-	 */
146
-	'dbuser' => '',
147
-
148
-	/**
149
-	 * The password for the database user. This is set up during installation, so
150
-	 * you shouldn't need to change it.
151
-	 */
152
-	'dbpassword' => '',
153
-
154
-	/**
155
-	 * Prefix for the Nextcloud tables in the database.
156
-	 *
157
-	 * Default to ``oc_``
158
-	 */
159
-	'dbtableprefix' => 'oc_',
160
-
161
-	/**
162
-	 * Enable persistent connections to the database.
163
-	 * This setting uses the "persistent" option from Doctrine DBAL, which in turn
164
-	 * uses the PDO::ATTR_PERSISTENT option from the PDO driver.
165
-	 */
166
-	'dbpersistent' => '',
167
-
168
-	/**
169
-	 * Specify read-only replicas to be used by Nextcloud when querying the database
170
-	 */
171
-	'dbreplica' => [
172
-		['user' => 'nextcloud', 'password' => 'password1', 'host' => 'replica1', 'dbname' => ''],
173
-		['user' => 'nextcloud', 'password' => 'password2', 'host' => 'replica2', 'dbname' => ''],
174
-	],
175
-
176
-	/**
177
-	 * Add request ID to the database query in a comment.
178
-	 *
179
-	 * This can be enabled to assist in mapping database logs to Nextcloud logs.
180
-	 */
181
-	'db.log_request_id' => false,
182
-
183
-	/**
184
-	 * Indicates whether the Nextcloud instance was installed successfully; ``true``
185
-	 * indicates a successful installation, and ``false`` indicates an unsuccessful
186
-	 * installation.
187
-	 *
188
-	 * Defaults to ``false``
189
-	 */
190
-	'installed' => false,
191
-
192
-
193
-	/**
194
-	 * User Experience
195
-	 *
196
-	 * These optional parameters control some aspects of the user interface. Default
197
-	 * values, where present, are shown.
198
-	 */
199
-
200
-	/**
201
-	 * This sets the default language on your Nextcloud server, using ISO_639-1
202
-	 * language codes such as ``en`` for English, ``de`` for German, and ``fr`` for
203
-	 * French. The default_language parameter is only used when the browser does
204
-	 * not send any language, and the user hasn’t configured their own language
205
-	 * preferences.
206
-	 *
207
-	 * Nextcloud has two distinguished language codes for German, 'de' and 'de_DE'.
208
-	 * 'de' is used for informal German and 'de_DE' for formal German. By setting
209
-	 * this value to 'de_DE', you can enforce the formal version of German unless
210
-	 * the user has chosen something different explicitly.
211
-	 *
212
-	 * Defaults to ``en``
213
-	 */
214
-	'default_language' => 'en',
215
-
216
-	/**
217
-	 * With this setting, a language can be forced for all users. If a language is
218
-	 * forced, the users are also unable to change their language in the personal
219
-	 * settings. If users shall be unable to change their language, but users have
220
-	 * different languages, this value can be set to ``true`` instead of a language
221
-	 * code.
222
-	 *
223
-	 * Defaults to ``false``
224
-	 */
225
-	'force_language' => 'en',
226
-
227
-	/**
228
-	 * This sets the default locale on your Nextcloud server, using ISO_639
229
-	 * language codes such as ``en`` for English, ``de`` for German, and ``fr`` for
230
-	 * French, and ISO-3166 country codes such as ``GB``, ``US``, ``CA``, as defined
231
-	 * in RFC 5646. It overrides automatic locale detection on public pages like
232
-	 * login or shared items. User's locale preferences configured under "personal
233
-	 * -> locale" override this setting after they have logged in.
234
-	 *
235
-	 * Defaults to ``en``
236
-	 */
237
-	'default_locale' => 'en_US',
238
-
239
-	/**
240
-	 * With this setting, it is possible to reduce the languages available in the
241
-	 * language chooser. The languages have to be set as array values using ISO_639-1
242
-	 * language codes such as ``en`` for English, ``de`` for German, etc.
243
-	 *
244
-	 * For example: Set to ['de', 'fr'] to only allow German and French languages.
245
-	 */
246
-	'reduce_to_languages' => [],
247
-
248
-	/**
249
-	 * This sets the default region for phone numbers on your Nextcloud server,
250
-	 * using ISO 3166-1 country codes such as ``DE`` for Germany, ``FR`` for France, …
251
-	 * It is required to allow inserting phone numbers in the user profiles starting
252
-	 * without the country code (e.g., +49 for Germany).
253
-	 *
254
-	 * No default value!
255
-	 */
256
-	'default_phone_region' => 'GB',
257
-
258
-	/**
259
-	 * With this setting, a locale can be forced for all users. If a locale is
260
-	 * forced, the users are also unable to change their locale in the personal
261
-	 * settings. If users shall be unable to change their locale, but users have
262
-	 * different languages, this value can be set to ``true`` instead of a locale
263
-	 * code.
264
-	 *
265
-	 * Defaults to ``false``
266
-	 */
267
-	'force_locale' => 'en_US',
268
-
269
-	/**
270
-	 * This sets the default timezone on your Nextcloud server, using IANA
271
-	 * identifiers like ``Europe/Berlin`` or ``Pacific/Auckland``. The default
272
-	 * timezone parameter is only used when the timezone of the user cannot be
273
-	 * determined.
274
-	 *
275
-	 * Defaults to ``UTC``
276
-	 */
277
-	'default_timezone' => 'Europe/Berlin',
278
-
279
-	/**
280
-	 * ``true`` enables the Help menu item in the user menu (top right of the
281
-	 * Nextcloud Web interface). ``false`` removes the Help item.
282
-	 */
283
-	'knowledgebaseenabled' => true,
284
-
285
-	/**
286
-	 * ``true`` embeds the documentation in an iframe inside Nextcloud.
287
-	 * ``false`` only shows buttons to the online documentation.
288
-	 */
289
-	'knowledgebase.embedded' => false,
290
-
291
-	/**
292
-	 * ``true`` allows users to change their display names (on their Personal
293
-	 * pages), and ``false`` prevents them from changing their display names.
294
-	 */
295
-	'allow_user_to_change_display_name' => true,
296
-
297
-	/**
298
-	 * The directory where the skeleton files are located. These files will be
299
-	 * copied to the data directory of new users. Set empty string to not copy any
300
-	 * skeleton files. If unset and templatedirectory is an empty string, shipped
301
-	 * templates will be used to create a template directory for the user.
302
-	 * ``{lang}`` can be used as a placeholder for the language of the user.
303
-	 * If the directory does not exist, it falls back to non-dialect (from ``de_DE``
304
-	 * to ``de``). If that does not exist either, it falls back to ``default``
305
-	 *
306
-	 * Defaults to ``core/skeleton`` in the Nextcloud directory.
307
-	 */
308
-	'skeletondirectory' => '/path/to/nextcloud/core/skeleton',
309
-
310
-	/**
311
-	 * The directory where the template files are located. These files will be
312
-	 * copied to the template directory of new users. Set empty string to not copy any
313
-	 * template files.
314
-	 * ``{lang}`` can be used as a placeholder for the language of the user.
315
-	 * If the directory does not exist, it falls back to non-dialect (from ``de_DE``
316
-	 * to ``de``). If that does not exist either, it falls back to ``default``
317
-	 *
318
-	 * To disable creating a template directory, set both skeletondirectory and
319
-	 * templatedirectory to empty strings.
320
-	 */
321
-	'templatedirectory' => '/path/to/nextcloud/templates',
322
-
323
-	/**
324
-	 * User session
325
-	 */
326
-
327
-	/**
328
-	 * Lifetime of the remember login cookie. This should be larger than the
329
-	 * session_lifetime. If it is set to 0, remember me is disabled.
330
-	 *
331
-	 * Defaults to ``60*60*24*15`` seconds (15 days)
332
-	 */
333
-	'remember_login_cookie_lifetime' => 60 * 60 * 24 * 15,
334
-
335
-	/**
336
-	 * The lifetime of a session after inactivity.
337
-	 *
338
-	 * The maximum possible time is limited by the session.gc_maxlifetime php.ini setting
339
-	 * which would overwrite this option if it is less than the value in the config.php
340
-	 *
341
-	 * Defaults to ``60*60*24`` seconds (24 hours)
342
-	 */
343
-	'session_lifetime' => 60 * 60 * 24,
344
-
345
-	/**
346
-	 * The timeout in seconds for requests to servers made by the DAV component (e.g., needed for federated shares).
347
-	 */
348
-	'davstorage.request_timeout' => 30,
349
-
350
-	/**
351
-	 * The timeout in seconds for synchronizing address books, e.g., federated system address books (as run by `occ federation:sync-addressbooks`).
352
-	 *
353
-	 * Defaults to ``30`` seconds
354
-	 */
355
-	'carddav_sync_request_timeout' => 30,
356
-
357
-	/**
358
-	 * The limit applied to the synchronization report request, e.g. federated system address books (as run by `occ federation:sync-addressbooks`).
359
-	 */
360
-	'carddav_sync_request_truncation' => 2500,
361
-
362
-	/**
363
-	 * `true` enables a relaxed session timeout, where the session timeout would no longer be
364
-	 * handled by Nextcloud but by either the PHP garbage collection or the expiration of
365
-	 * potential other session backends like Redis.
366
-	 *
367
-	 * This may lead to sessions being available for longer than what session_lifetime uses but
368
-	 * comes with performance benefits as sessions are no longer a locking operation for concurrent
369
-	 * requests.
370
-	 */
371
-	'session_relaxed_expiry' => false,
372
-
373
-	/**
374
-	 * Enable or disable session keep-alive when a user is logged in to the Web UI.
375
-	 * Enabling this sends a "heartbeat" to the server to keep it from timing out.
376
-	 *
377
-	 * Defaults to ``true``
378
-	 */
379
-	'session_keepalive' => true,
380
-
381
-	/**
382
-	 * Enable or disable the automatic logout after session_lifetime, even if session
383
-	 * keepalive is enabled. This will make sure that an inactive browser will log itself out
384
-	 * even if requests to the server might extend the session lifetime. Note: the logout is
385
-	 * handled on the client side. This is not a way to limit the duration of potentially
386
-	 * compromised sessions.
387
-	 *
388
-	 * Defaults to ``false``
389
-	 */
390
-	'auto_logout' => false,
391
-
392
-	/**
393
-	 * Enforce token authentication for clients, which blocks requests using the user
394
-	 * password for enhanced security. Users need to generate tokens in personal settings
395
-	 * which can be used as passwords on their clients.
396
-	 *
397
-	 * Defaults to ``false``
398
-	 */
399
-	'token_auth_enforced' => false,
400
-
401
-	/**
402
-	 * The interval at which token activity should be updated.
403
-	 * Increasing this value means that the last activity on the security page gets
404
-	 * more outdated.
405
-	 *
406
-	 * Tokens are still checked every 5 minutes for validity
407
-	 * max value: 300
408
-	 *
409
-	 * Defaults to ``60``
410
-	 */
411
-	'token_auth_activity_update' => 60,
412
-
413
-	/**
414
-	 * Whether the brute force protection shipped with Nextcloud should be enabled or not.
415
-	 *
416
-	 * Disabling this is discouraged for security reasons.
417
-	 *
418
-	 * Defaults to ``true``
419
-	 */
420
-	'auth.bruteforce.protection.enabled' => true,
421
-
422
-	/**
423
-	 * Whether the brute force protection should write into the database even when a memory cache is available
424
-	 *
425
-	 * Using the database is most likely worse for performance, but makes investigating
426
-	 * issues a lot easier as it's possible to look directly at the table to see all
427
-	 * logged remote addresses and actions.
428
-	 *
429
-	 * Defaults to ``false``
430
-	 */
431
-	'auth.bruteforce.protection.force.database' => false,
432
-
433
-	/**
434
-	 * Whether the brute force protection shipped with Nextcloud should be set to testing mode.
435
-	 *
436
-	 * In testing mode, brute force attempts are still recorded, but the requests do
437
-	 * not sleep/wait for the specified time. They will still abort with
438
-	 * "429 Too Many Requests" when the maximum delay is reached.
439
-	 * Enabling this is discouraged for security reasons
440
-	 * and should only be done for debugging and on CI when running tests.
441
-	 *
442
-	 * Defaults to ``false``
443
-	 */
444
-	'auth.bruteforce.protection.testing' => false,
445
-
446
-	/**
447
-	 * Brute force protection: maximum number of attempts before blocking
448
-	 *
449
-	 * When more than max-attempts login requests are sent to Nextcloud, requests
450
-	 * will abort with "429 Too Many Requests".
451
-	 * For security reasons, change it only if you know what you are doing.
452
-	 *
453
-	 * Defaults to ``10``
454
-	 */
455
-	'auth.bruteforce.max-attempts' => 10,
456
-
457
-	/**
458
-	 * Whether the rate limit protection shipped with Nextcloud should be enabled or not.
459
-	 *
460
-	 * Disabling this is discouraged for security reasons.
461
-	 *
462
-	 * Defaults to ``true``
463
-	 */
464
-	'ratelimit.protection.enabled' => true,
465
-
466
-	/**
467
-	 * Size of subnet used to normalize IPv6
468
-	 *
469
-	 * For Brute Force Protection and Rate Limiting, IPv6 addresses are truncated using subnet size.
470
-	 * It defaults to /56, but you can set it between /32 and /64
471
-	 *
472
-	 * Defaults to ``56``
473
-	 */
474
-	'security.ipv6_normalized_subnet_size' => 56,
475
-
476
-	/**
477
-	 * By default, WebAuthn is available, but it can be explicitly disabled by admins
478
-	 */
479
-	'auth.webauthn.enabled' => true,
480
-
481
-	/**
482
-	 * Whether encrypted passwords should be stored in the database
483
-	 *
484
-	 * The passwords are only decrypted using the login token stored uniquely in the
485
-	 * clients and allow connecting to external storages, autoconfiguring mail accounts in
486
-	 * the mail app, and periodically checking if the password is still valid.
487
-	 *
488
-	 * This might be desirable to disable this functionality when using one-time
489
-	 * passwords or when having a password policy enforcing long passwords (> 300
490
-	 * characters).
491
-	 *
492
-	 * By default, the passwords are stored encrypted in the database.
493
-	 *
494
-	 * WARNING: If disabled, password changes on the user backend (e.g., on LDAP) no
495
-	 * longer log connected clients out automatically. Users can still disconnect
496
-	 * the clients by deleting the app token from the security settings.
497
-	 */
498
-	'auth.storeCryptedPassword' => true,
499
-
500
-	/**
501
-	 * By default, the login form is always available. There are cases (SSO) where an
502
-	 * admin wants to avoid users entering their credentials to the system if the SSO
503
-	 * app is unavailable.
504
-	 *
505
-	 * This will show an error. But the direct login still works with adding ?direct=1
506
-	 */
507
-	'hide_login_form' => false,
508
-
509
-	/**
510
-	 * If your user backend does not allow password resets (e.g., when it's a
511
-	 * read-only user backend like LDAP), you can specify a custom link, where the
512
-	 * user is redirected to, when clicking the "reset password" link after a failed
513
-	 * login attempt.
514
-	 * In case you do not want to provide any link, replace the URL with 'disabled'
515
-	 */
516
-	'lost_password_link' => 'https://example.org/link/to/password/reset',
517
-
518
-	/**
519
-	 * URL to use as target for the logo link in the header (top-left logo)
520
-	 *
521
-	 * Defaults to the base URL of your Nextcloud instance
522
-	 */
523
-	'logo_url' => 'https://example.org',
524
-
525
-	/**
526
-	 * Mail Parameters
527
-	 *
528
-	 * These configure the email settings for Nextcloud notifications and password
529
-	 * resets.
530
-	 */
531
-
532
-	/**
533
-	 * The return address that you want to appear on emails sent by the Nextcloud
534
-	 * server, for example ``[email protected]``, substituting your own domain,
535
-	 * of course.
536
-	 */
537
-	'mail_domain' => 'example.com',
538
-
539
-	/**
540
-	 * FROM address that overrides the built-in ``sharing-noreply`` and
541
-	 * ``lostpassword-noreply`` FROM addresses.
542
-	 *
543
-	 * Defaults to different FROM addresses depending on the feature.
544
-	 */
545
-	'mail_from_address' => 'nextcloud',
546
-
547
-	/**
548
-	 * Enable SMTP class debugging.
549
-	 * NOTE: ``loglevel`` will likely need to be adjusted too. See docs:
550
-	 *   https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/email_configuration.html#enabling-debug-mode
551
-	 *
552
-	 * Defaults to ``false``
553
-	 */
554
-	'mail_smtpdebug' => false,
555
-
556
-	/**
557
-	 * Which mode to use for sending mail: ``sendmail``, ``smtp``, ``qmail``, or ``null``.
558
-	 *
559
-	 * If you are using local or remote SMTP, set this to ``smtp``.
560
-	 *
561
-	 * For the ``sendmail`` option, you need an installed and working email system on
562
-	 * the server, with ``/usr/sbin/sendmail`` installed on your Unix system.
563
-	 *
564
-	 * For ``qmail``, the binary is /var/qmail/bin/sendmail, and it must be installed
565
-	 * on your Unix system.
566
-	 *
567
-	 * Use the string ``null`` to send no mails (disable mail delivery). This can be
568
-	 * useful if mails should be sent via APIs and rendering messages is not necessary.
569
-	 *
570
-	 * Defaults to ``smtp``
571
-	 */
572
-	'mail_smtpmode' => 'smtp',
573
-
574
-	/**
575
-	 * This depends on ``mail_smtpmode``. Specify the IP address of your mail
576
-	 * server host. This may contain multiple hosts separated by a semicolon. If
577
-	 * you need to specify the port number, append it to the IP address separated by
578
-	 * a colon, like this: ``127.0.0.1:24``.
579
-	 *
580
-	 * Defaults to ``127.0.0.1``
581
-	 */
582
-	'mail_smtphost' => '127.0.0.1',
583
-
584
-	/**
585
-	 * This depends on ``mail_smtpmode``. Specify the port for sending mail.
586
-	 *
587
-	 * Defaults to ``25``
588
-	 */
589
-	'mail_smtpport' => 25,
590
-
591
-	/**
592
-	 * This depends on ``mail_smtpmode``. This sets the SMTP server timeout, in
593
-	 * seconds. You may need to increase this if you are running an anti-malware or
594
-	 * spam scanner.
595
-	 *
596
-	 * Defaults to ``10`` seconds
597
-	 */
598
-	'mail_smtptimeout' => 10,
599
-
600
-	/**
601
-	 * This depends on ``mail_smtpmode``. Specify ``ssl`` when you are using SSL/TLS. Any other value will be ignored.
602
-	 *
603
-	 * If the server advertises STARTTLS capabilities, they might be used, but they cannot be enforced by
604
-	 * this config option.
605
-	 *
606
-	 * Defaults to ``''`` (empty string)
607
-	 */
608
-	'mail_smtpsecure' => '',
609
-
610
-	/**
611
-	 * This depends on ``mail_smtpmode``. Change this to ``true`` if your mail
612
-	 * server requires authentication.
613
-	 *
614
-	 * Defaults to ``false``
615
-	 */
616
-	'mail_smtpauth' => false,
617
-
618
-	/**
619
-	 * This depends on ``mail_smtpauth``. Specify the username for authenticating to
620
-	 * the SMTP server.
621
-	 *
622
-	 * Defaults to ``''`` (empty string)
623
-	 */
624
-	'mail_smtpname' => '',
625
-
626
-	/**
627
-	 * This depends on ``mail_smtpauth``. Specify the password for authenticating to
628
-	 * the SMTP server.
629
-	 *
630
-	 * Default to ``''`` (empty string)
631
-	 */
632
-	'mail_smtppassword' => '',
633
-
634
-	/**
635
-	 * Replaces the default mail template layout. This can be utilized if the
636
-	 * options to modify the mail texts with the theming app are not enough.
637
-	 * The class must extend ``\OC\Mail\EMailTemplate``
638
-	 */
639
-	'mail_template_class' => '\OC\Mail\EMailTemplate',
640
-
641
-	/**
642
-	 * Email will be sent by default with an HTML and a plain text body. This option
643
-	 * allows sending only plain text emails.
644
-	 */
645
-	'mail_send_plaintext_only' => false,
646
-
647
-	/**
648
-	 * This depends on ``mail_smtpmode``. Array of additional streams options that
649
-	 * will be passed to underlying Swift mailer implementation.
650
-	 * Defaults to an empty array.
651
-	 */
652
-	'mail_smtpstreamoptions' => [],
653
-
654
-	/**
655
-	 * Which mode is used for sendmail/qmail: ``smtp`` or ``pipe``.
656
-	 *
657
-	 * For ``smtp``, the sendmail binary is started with the parameter ``-bs``:
658
-	 *   - Use the SMTP protocol on standard input and output.
659
-	 *
660
-	 * For ``pipe``, the binary is started with the parameters ``-t``:
661
-	 *   - Read message from STDIN and extract recipients.
662
-	 *
663
-	 * Defaults to ``smtp``
664
-	 */
665
-	'mail_sendmailmode' => 'smtp',
666
-
667
-	/**
668
-	 * Proxy Configurations
669
-	 */
670
-
671
-	/**
672
-	 * The automatic hostname detection of Nextcloud can fail in certain reverse
673
-	 * proxy and CLI/cron situations. This option allows you to manually override
674
-	 * the automatic detection; for example, ``www.example.com``, or specify the port
675
-	 * ``www.example.com:8080``.
676
-	 */
677
-	'overwritehost' => '',
678
-
679
-	/**
680
-	 * When generating URLs, Nextcloud attempts to detect whether the server is
681
-	 * accessed via ``https`` or ``http``. However, if Nextcloud is behind a proxy
682
-	 * and the proxy handles the ``https`` calls, Nextcloud would not know that
683
-	 * ``ssl`` is in use, which would result in incorrect URLs being generated.
684
-	 * Valid values are ``http`` and ``https``.
685
-	 */
686
-	'overwriteprotocol' => '',
687
-
688
-	/**
689
-	 * Nextcloud attempts to detect the webroot for generating URLs automatically.
690
-	 * For example, if ``www.example.com/nextcloud`` is the URL pointing to the
691
-	 * Nextcloud instance, the webroot is ``/nextcloud``. When proxies are in use,
692
-	 * it may be difficult for Nextcloud to detect this parameter, resulting in
693
-	 * invalid URLs.
694
-	 */
695
-	'overwritewebroot' => '',
696
-
697
-	/**
698
-	 * This option allows you to define a manual override condition as a regular
699
-	 * expression for the remote IP address. For example, defining a range of IP
700
-	 * addresses starting with ``10.0.0.`` and ending with 1 to 3:
701
-	 * ``^10\.0\.0\.[1-3]$``
702
-	 *
703
-	 * Defaults to ``''`` (empty string)
704
-	 */
705
-	'overwritecondaddr' => '',
706
-
707
-	/**
708
-	 * Use this configuration parameter to specify the base URL for any URLs which
709
-	 * are generated within Nextcloud using any kind of command line tools (cron or
710
-	 * occ). The value should contain the full base URL:
711
-	 * ``https://www.example.com/nextcloud``
712
-	 * Please make sure to set the value to the URL that your users mainly use to access this Nextcloud.
713
-	 * Otherwise, there might be problems with the URL generation via cron.
714
-	 *
715
-	 * Defaults to ``''`` (empty string)
716
-	 */
717
-	'overwrite.cli.url' => '',
718
-
719
-	/**
720
-	 * To have clean URLs without `/index.php`, this parameter needs to be configured.
721
-	 *
722
-	 * This parameter will be written as "RewriteBase" on update and installation of
723
-	 * Nextcloud to your `.htaccess` file. While this value is often simply the URL
724
-	 * path of the Nextcloud installation, it cannot be set automatically properly in
725
-	 * every scenario and needs thus some manual configuration.
726
-	 *
727
-	 * In a standard Apache setup, this usually equals the folder that Nextcloud is
728
-	 * accessible at. So if Nextcloud is accessible via "https://mycloud.org/nextcloud",
729
-	 * the correct value would most likely be "/nextcloud". If Nextcloud is running
730
-	 * under "https://mycloud.org/", then it would be "/".
731
-	 *
732
-	 * Note that the above rule is not valid in every case, as there are some rare setup
733
-	 * cases where this may not apply. However, to avoid any update problems, this
734
-	 * configuration value is explicitly opt-in.
735
-	 *
736
-	 * After setting this value, run `occ maintenance:update:htaccess`. Now, when the
737
-	 * following conditions are met, Nextcloud URLs won't contain `index.php`:
738
-	 *
739
-	 * - `mod_rewrite` is installed
740
-	 * - `mod_env` is installed
741
-	 *
742
-	 * Defaults to ``''`` (empty string)
743
-	 */
744
-	'htaccess.RewriteBase' => '/',
745
-
746
-	/**
747
-	 * For server setups that don't have `mod_env` enabled or restricted (e.g., suEXEC),
748
-	 * this parameter has to be set to true and will assume mod_rewrite.
749
-	 *
750
-	 * Please check if `mod_rewrite` is active and functional before setting this
751
-	 * parameter, and you updated your .htaccess with `occ maintenance:update:htaccess`.
752
-	 * Otherwise, your Nextcloud installation might not be reachable anymore.
753
-	 * For example, try accessing resources by leaving out `index.php` in the URL.
754
-	 */
755
-	'htaccess.IgnoreFrontController' => false,
756
-
757
-	/**
758
-	 * The URL of your proxy server, for example, ``proxy.example.com:8081``.
759
-	 *
760
-	 * Note: Guzzle (the HTTP library used by Nextcloud) reads the environment
761
-	 * variables HTTP_PROXY (only for CLI requests), HTTPS_PROXY, and NO_PROXY by default.
762
-	 *
763
-	 * If you configure a proxy with Nextcloud, any default configuration by Guzzle
764
-	 * is overwritten. Make sure to set ``proxyexclude`` accordingly if necessary.
765
-	 *
766
-	 * Defaults to ``''`` (empty string)
767
-	 */
768
-	'proxy' => '',
769
-
770
-	/**
771
-	 * The optional authentication for the proxy to use to connect to the internet.
772
-	 * The format is: ``username:password``.
773
-	 *
774
-	 * Defaults to ``''`` (empty string)
775
-	 */
776
-	'proxyuserpwd' => '',
777
-
778
-	/**
779
-	 * List of hostnames that should not be proxied to.
780
-	 * For example: ``['.mit.edu', 'foo.com']``.
781
-	 *
782
-	 * Hint: Use something like ``explode(',', getenv('NO_PROXY'))`` to sync this
783
-	 * value with the global NO_PROXY option.
784
-	 *
785
-	 * Defaults to empty array.
786
-	 */
787
-	'proxyexclude' => [],
788
-
789
-	/**
790
-	 * Allow remote servers with local addresses, e.g., in federated shares, webcal services, and more
791
-	 *
792
-	 * Defaults to false
793
-	 */
794
-	'allow_local_remote_servers' => true,
795
-
796
-	/**
797
-	 * Deleted Items (trash bin)
798
-	 *
799
-	 * These parameters control the Deleted files app.
800
-	 */
801
-
802
-	/**
803
-	 * If the trash bin app is enabled (default), this setting defines the policy
804
-	 * for when files and folders in the trash bin will be permanently deleted.
805
-	 *
806
-	 * If the user quota limit is exceeded due to deleted files in the trash bin,
807
-	 * retention settings will be ignored and files will be cleaned up until
808
-	 * the quota requirements are met.
809
-	 *
810
-	 * The app allows for two settings, a minimum time for trash bin retention,
811
-	 * and a maximum time for trash bin retention.
812
-	 *
813
-	 * Minimum time is the number of days a file will be kept, after which it
814
-	 * *may be* deleted. A file may be deleted after the minimum number of days
815
-	 * has expired if space is needed. The file will not be deleted if space is
816
-	 * not needed.
817
-	 *
818
-	 * Whether "space is needed" depends on whether a user quota is defined or not:
819
-	 *
820
-	 *  * If no user quota is defined, the available space on the Nextcloud data
821
-	 *    partition sets the limit for the trashbin
822
-	 *    (issues: see https://github.com/nextcloud/server/issues/28451).
823
-	 *  * If a user quota is defined, 50% of the user's remaining quota space sets
824
-	 *    the limit for the trashbin.
825
-	 *
826
-	 * Maximum time is the number of days at which it is *guaranteed
827
-	 * to be* deleted. There is no further dependency on the available space.
828
-	 *
829
-	 * Both minimum and maximum times can be set together to explicitly define
830
-	 * file and folder deletion. For migration purposes, this setting is installed
831
-	 * initially set to "auto", which is equivalent to the default setting in
832
-	 * Nextcloud.
833
-	 *
834
-	 * Available values (D1 and D2 are configurable numbers):
835
-	 *
836
-	 * * ``auto``
837
-	 *     default setting. Keeps files and folders in the trash bin for 30 days
838
-	 *     and automatically deletes anytime after that if space is needed (note:
839
-	 *     files may not be deleted if space is not needed).
840
-	 * * ``D1, auto``
841
-	 *     keeps files and folders in the trash bin for D1+ days, delete anytime if
842
-	 *     space needed (note: files may not be deleted if space is not needed)
843
-	 * * ``auto, D2``
844
-	 *     delete all files in the trash bin that are older than D2 days
845
-	 *     automatically, delete other files anytime if space needed
846
-	 * * ``D1, D2``
847
-	 *     keep files and folders in the trash bin for at least D1 days and
848
-	 *     delete when exceeds D2 days (note: files will not be deleted automatically if space is needed)
849
-	 * * ``disabled``
850
-	 *     trash bin auto clean disabled, files and folders will be kept forever
851
-	 *
852
-	 * Defaults to ``auto``
853
-	 */
854
-	'trashbin_retention_obligation' => 'auto',
855
-
856
-
857
-	/**
858
-	 * File versions
859
-	 *
860
-	 * These parameters control the Versions app.
861
-	 */
862
-
863
-	/**
864
-	 * If the versions app is enabled (default), this setting defines the policy
865
-	 * for when versions will be permanently deleted.
866
-	 * The app allows for two settings, a minimum time for version retention,
867
-	 * and a maximum time for version retention.
868
-	 * Minimum time is the number of days a version will be kept, after which it
869
-	 * may be deleted. Maximum time is the number of days at which it is guaranteed
870
-	 * to be deleted.
871
-	 * Both minimum and maximum times can be set together to explicitly define
872
-	 * version deletion. For migration purposes, this setting is installed
873
-	 * initially set to "auto", which is equivalent to the default setting in
874
-	 * Nextcloud.
875
-	 *
876
-	 * Available values:
877
-	 *
878
-	 * * ``auto``
879
-	 *     default setting. Automatically expire versions according to expire
880
-	 *     rules. Please refer to :doc:`../configuration_files/file_versioning` for
881
-	 *     more information.
882
-	 * * ``D, auto``
883
-	 *     keep versions at least for D days, apply expiration rules to all versions
884
-	 *     that are older than D days
885
-	 * * ``auto, D``
886
-	 *     delete all versions that are older than D days automatically, delete
887
-	 *     other versions according to expire rules
888
-	 * * ``D1, D2``
889
-	 *     keep versions for at least D1 days and delete when exceeds D2 days
890
-	 * * ``disabled``
891
-	 *     versions auto clean disabled, versions will be kept forever
892
-	 *
893
-	 * Defaults to ``auto``
894
-	 */
895
-	'versions_retention_obligation' => 'auto',
896
-
897
-	/**
898
-	 * Nextcloud Verifications
899
-	 *
900
-	 * Nextcloud performs several verification checks. There are two options,
901
-	 * ``true`` and ``false``.
902
-	 */
903
-
904
-	/**
905
-	 * Checks an app before install whether it uses private APIs instead of the
906
-	 * proper public APIs. If this is set to true, it will only allow installing or
907
-	 * enabling apps that pass this check.
908
-	 *
909
-	 * Defaults to ``false``
910
-	 */
911
-	'appcodechecker' => true,
912
-
913
-	/**
914
-	 * Check if Nextcloud is up-to-date and shows a notification if a new version is
915
-	 * available. It sends current version, PHP version, installation and last update
916
-	 * time, and release channel to the updater server which responds with the latest
917
-	 * available version based on those metrics.
918
-	 *
919
-	 * Defaults to ``true``
920
-	 */
921
-	'updatechecker' => true,
922
-
923
-	/**
924
-	 * URL that Nextcloud should use to look for updates
925
-	 *
926
-	 * Defaults to ``https://updates.nextcloud.com/updater_server/``
927
-	 */
928
-	'updater.server.url' => 'https://updates.nextcloud.com/updater_server/',
929
-
930
-	/**
931
-	 * The channel that Nextcloud should use to look for updates
932
-	 *
933
-	 * Supported values:
934
-	 *
935
-	 * - ``daily``
936
-	 * - ``beta``
937
-	 * - ``stable``
938
-	 */
939
-	'updater.release.channel' => 'stable',
940
-
941
-	/**
942
-	 * Is Nextcloud connected to the Internet or running in a closed network?
943
-	 *
944
-	 * Defaults to ``true``
945
-	 */
946
-	'has_internet_connection' => true,
947
-
948
-	/**
949
-	 * Which domains to request to determine the availability of an Internet
950
-	 * connection. If none of these hosts are reachable, the administration panel
951
-	 * will show a warning. Set to an empty list to not do any such checks (warning
952
-	 * will still be shown).
953
-	 * If no protocol is provided, both http and https will be tested.
954
-	 * For example, 'http://www.nextcloud.com' and 'https://www.nextcloud.com'
955
-	 * will be tested for 'www.nextcloud.com'
956
-	 * If a protocol is provided, only this one will be tested.
957
-	 *
958
-	 * Defaults to the following domains:
959
-	 *
960
-	 *  - https://www.nextcloud.com
961
-	 *  - https://www.startpage.com
962
-	 *  - https://www.eff.org
963
-	 *  - https://www.edri.org
964
-	 */
965
-	'connectivity_check_domains' => [
966
-		'https://www.nextcloud.com',
967
-		'https://www.startpage.com',
968
-		'https://www.eff.org',
969
-		'https://www.edri.org'
970
-	],
971
-
972
-	/**
973
-	 * Allows Nextcloud to verify a working .well-known URL redirects. This is done
974
-	 * by attempting to make a request from JS to
975
-	 * https://your-domain.com/.well-known/caldav/
976
-	 *
977
-	 * Defaults to ``true``
978
-	 */
979
-	'check_for_working_wellknown_setup' => true,
980
-
981
-	/**
982
-	 * This is a crucial security check on Apache servers that should always be set
983
-	 * to ``true``. This verifies that the ``.htaccess`` file is writable and works.
984
-	 * If it is not, then any options controlled by ``.htaccess``, such as large
985
-	 * file uploads, will not work. It also runs checks on the ``data/`` directory,
986
-	 * which verifies that it can't be accessed directly through the Web server.
987
-	 *
988
-	 * Defaults to ``true``
989
-	 */
990
-	'check_for_working_htaccess' => true,
991
-
992
-	/**
993
-	 * In rare setups (e.g., on OpenShift or Docker on Windows), the permissions check
994
-	 * might block the installation while the underlying system offers no means to
995
-	 * "correct" the permissions. In this case, set the value to false.
996
-	 *
997
-	 * In regular cases, if issues with permissions are encountered, they should be
998
-	 * adjusted accordingly. Changing the flag is discouraged.
999
-	 *
1000
-	 * Defaults to ``true``
1001
-	 */
1002
-	'check_data_directory_permissions' => true,
1003
-
1004
-	/**
1005
-	 * In certain environments, it is desired to have a read-only configuration file.
1006
-	 * When this switch is set to ``true``, writing to the config file will be
1007
-	 * forbidden. Therefore, it will not be possible to configure all options via
1008
-	 * the Web interface. Furthermore, when updating Nextcloud, it is required to
1009
-	 * make the configuration file writable again and to set this switch to ``false``
1010
-	 * for the update process.
1011
-	 *
1012
-	 * Defaults to ``false``
1013
-	 */
1014
-	'config_is_read_only' => false,
1015
-
1016
-	/**
1017
-	 * Logging
1018
-	 */
1019
-
1020
-	/**
1021
-	 * This parameter determines where the Nextcloud logs are sent.
1022
-	 * ``file``: the logs are written to file ``nextcloud.log`` in the default
1023
-	 * Nextcloud data directory. The log file can be changed with parameter
1024
-	 * ``logfile``.
1025
-	 * ``syslog``: the logs are sent to the system log. This requires a syslog daemon
1026
-	 * to be active.
1027
-	 * ``errorlog``: the logs are sent to the PHP ``error_log`` function.
1028
-	 * ``systemd``: the logs are sent to the Systemd journal. This requires a system
1029
-	 * that runs Systemd and the Systemd journal. The PHP extension ``systemd``
1030
-	 * must be installed and active.
1031
-	 *
1032
-	 * Defaults to ``file``
1033
-	 */
1034
-	'log_type' => 'file',
1035
-
1036
-	/**
1037
-	 * This parameter determines where the audit logs are sent. See ``log_type`` for more information.
1038
-	 *
1039
-	 * Defaults to ``file``
1040
-	 */
1041
-	'log_type_audit' => 'file',
1042
-
1043
-	/**
1044
-	 * Name of the file to which the Nextcloud logs are written if parameter
1045
-	 * ``log_type`` is set to ``file``.
1046
-	 *
1047
-	 * Defaults to ``[datadirectory]/nextcloud.log``
1048
-	 */
1049
-	'logfile' => '/var/log/nextcloud.log',
1050
-
1051
-	/**
1052
-	 * Name of the file to which the audit logs are written if parameter
1053
-	 * ``log_type`` is set to ``file``.
1054
-	 *
1055
-	 * Defaults to ``[datadirectory]/audit.log``
1056
-	 */
1057
-	'logfile_audit' => '/var/log/audit.log',
1058
-
1059
-	/**
1060
-	 * Log file mode for the Nextcloud logging type in octal notation.
1061
-	 *
1062
-	 * Defaults to 0640 (writable by user, readable by group).
1063
-	 */
1064
-	'logfilemode' => 0640,
1065
-
1066
-	/**
1067
-	 * Loglevel to start logging at. Valid values are: 0 = Debug, 1 = Info, 2 =
1068
-	 * Warning, 3 = Error, and 4 = Fatal. The default value is Warning.
1069
-	 *
1070
-	 * Defaults to ``2``
1071
-	 */
1072
-	'loglevel' => 2,
1073
-
1074
-	/**
1075
-	 * Loglevel used by the frontend to start logging at. The same values as
1076
-	 * for ``loglevel`` can be used. If not set, it defaults to the value
1077
-	 * configured for ``loglevel`` or Warning if that is not set either.
1078
-	 *
1079
-	 * Defaults to ``2``
1080
-	 */
1081
-	'loglevel_frontend' => 2,
1082
-
1083
-	/**
1084
-	 * Loglevel used by the dirty database query detection. Useful to identify
1085
-	 * potential database bugs in production. Set this to loglevel or higher to
1086
-	 * see dirty queries in the logs.
1087
-	 *
1088
-	 * Defaults to ``0`` (debug)
1089
-	 */
1090
-	'loglevel_dirty_database_queries' => 0,
1091
-
1092
-	/**
1093
-	 * If you maintain different instances and aggregate the logs, you may want
1094
-	 * to distinguish between them. ``syslog_tag`` can be set per instance
1095
-	 * with a unique ID. Only available if ``log_type`` is set to ``syslog`` or
1096
-	 * ``systemd``.
1097
-	 *
1098
-	 * The default value is ``Nextcloud``.
1099
-	 */
1100
-	'syslog_tag' => 'Nextcloud',
1101
-
1102
-	/**
1103
-	 * If you maintain different instances and aggregate the logs, you may want
1104
-	 * to distinguish between them. ``syslog_tag_audit`` can be set per instance
1105
-	 * with a unique ID. Only available if ``log_type`` is set to ``syslog`` or
1106
-	 * ``systemd``.
1107
-	 *
1108
-	 * The default value is the value of ``syslog_tag``.
1109
-	 */
1110
-	'syslog_tag_audit' => 'Nextcloud',
1111
-
1112
-	/**
1113
-	 * Log condition for log level increase based on conditions. Once one of these
1114
-	 * conditions is met, the required log level is set to debug. This allows
1115
-	 * debugging specific requests, users, or apps
1116
-	 *
1117
-	 * Supported conditions:
1118
-	 *  - ``shared_secret``: if a request parameter with the name `log_secret` is set to
1119
-	 *                this value, the condition is met
1120
-	 *  - ``users``:  if the current request is done by one of the specified users,
1121
-	 *                this condition is met
1122
-	 *  - ``apps``:   if the log message is invoked by one of the specified apps,
1123
-	 *                this condition is met
1124
-	 *  - ``matches``: if all the conditions inside a group match,
1125
-	 *                this condition is met. This allows logging only entries to an app
1126
-	 *                by a few users.
1127
-	 *
1128
-	 * Defaults to an empty array.
1129
-	 */
1130
-	'log.condition' => [
1131
-		'shared_secret' => '57b58edb6637fe3059b3595cf9c41b9',
1132
-		'users' => ['sample-user'],
1133
-		'apps' => ['files'],
1134
-		'matches' => [
1135
-			[
1136
-				'shared_secret' => '57b58edb6637fe3059b3595cf9c41b9',
1137
-				'users' => ['sample-user'],
1138
-				'apps' => ['files'],
1139
-				'loglevel' => 1,
1140
-				'message' => 'contains substring'
1141
-			],
1142
-		],
1143
-	],
1144
-
1145
-	/**
1146
-	 * Enables logging a backtrace with each log line. Normally, only Exceptions
1147
-	 * carry backtrace information, which are logged automatically. This
1148
-	 * switch turns them on for any log message. Enabling this option will lead
1149
-	 * to increased log data size.
1150
-	 *
1151
-	 * Defaults to ``false``.
1152
-	 */
1153
-	'log.backtrace' => false,
1154
-
1155
-	/**
1156
-	 * This uses PHP.date formatting; see https://www.php.net/manual/en/function.date.php
1157
-	 *
1158
-	 * Defaults to ISO 8601 ``2005-08-15T15:52:01+00:00`` - see \DateTime::ATOM
1159
-	 * (https://www.php.net/manual/en/class.datetime.php#datetime.constants.atom)
1160
-	 */
1161
-	'logdateformat' => 'F d, Y H:i:s',
1162
-
1163
-	/**
1164
-	 * The timezone for logfiles. You may change this; see
1165
-	 * https://www.php.net/manual/en/timezones.php
1166
-	 *
1167
-	 * Defaults to ``UTC``
1168
-	 */
1169
-	'logtimezone' => 'Europe/Berlin',
1170
-
1171
-	/**
1172
-	 * Append all database queries and parameters to the log file. Use this only for
1173
-	 * debugging, as your logfile will become huge.
1174
-	 */
1175
-	'log_query' => false,
1176
-
1177
-	/**
1178
-	 * Enables log rotation and limits the total size of logfiles. Set it to 0 for
1179
-	 * no rotation. Specify a size in bytes, for example, 104857600 (100 megabytes
1180
-	 * = 100 * 1024 * 1024 bytes). A new logfile is created with a new name when the
1181
-	 * old logfile reaches your limit. If a rotated log file is already present, it
1182
-	 * will be overwritten.
1183
-	 *
1184
-	 * Defaults to 100 MB
1185
-	 */
1186
-	'log_rotate_size' => 100 * 1024 * 1024,
1187
-
1188
-	/**
1189
-	 * Enable built-in profiler. Helpful when trying to debug performance
1190
-	 * issues.
1191
-	 *
1192
-	 * Note that this has a performance impact and shouldn't be enabled
1193
-	 * on production.
1194
-	 */
1195
-	'profiler' => false,
1196
-
1197
-	/**
1198
-	 * Enable profiling for individual requests if profiling single requests is enabled or the secret is passed.
1199
-	 * This requires the excimer extension to be installed. Be careful with this, as it can generate a lot of data.
1200
-	 *
1201
-	 * The profile data will be stored as a JSON file in the profiling.path directory that can be analyzed with speedscope.
1202
-	 *
1203
-	 * Defaults to ``false``
1204
-	 */
1205
-	'profiling.request' => false,
1206
-
1207
-	/**
1208
-	 * The rate at which profiling data is collected for individual requests.
1209
-	 * A lower value means more data points but higher overhead.
1210
-	 *
1211
-	 * Defaults to ``0.001``
1212
-	 */
1213
-	'profiling.request.rate' => 0.001,
1214
-
1215
-	/**
1216
-	 * A secret token that can be passed via ?profile_secret=<secret> to enable profiling for a specific request.
1217
-	 * This allows profiling specific requests in production without enabling it globally.
1218
-	 *
1219
-	 * No default value.
1220
-	 */
1221
-	'profiling.secret' => '',
1222
-
1223
-	/**
1224
-	 * Enable sampling-based profiling. This collects profiling data periodically rather than per-request.
1225
-	 * This requires the excimer extension to be installed. Be careful with this, as it can generate a lot of data.
1226
-	 *
1227
-	 * The profile data will be stored as a plain text file in the profiling.path directory that can be analyzed with speedscope.
1228
-	 *
1229
-	 * Defaults to ``false``
1230
-	 */
1231
-	'profiling.sample' => false,
1232
-
1233
-	/**
1234
-	 * The rate at which sampling profiling data is collected in seconds.
1235
-	 * A lower value means more frequent samples but higher overhead.
1236
-	 *
1237
-	 * Defaults to ``1``
1238
-	 */
1239
-	'profiling.sample.rate' => 1,
1240
-
1241
-	/**
1242
-	 * How often (in minutes) the sample log files are rotated.
1243
-	 *
1244
-	 * Defaults to ``60``
1245
-	 */
1246
-	'profiling.sample.rotation' => 60,
1247
-
1248
-	/**
1249
-	 * The directory where profiling data is stored.
1250
-	 *
1251
-	 * Note that this directory must be writable by the web server user and will not be cleaned up automatically.
1252
-	 */
1253
-	'profiling.path' => '/tmp',
1254
-
1255
-
1256
-	/**
1257
-	 * Alternate Code Locations
1258
-	 *
1259
-	 * Some Nextcloud code may be stored in alternate locations.
1260
-	 */
1261
-
1262
-	/**
1263
-	 * This section is for configuring the download links for Nextcloud clients, as
1264
-	 * seen in the first-run wizard and on Personal pages.
1265
-	 *
1266
-	 * Defaults to:
1267
-	 *
1268
-	 * - Desktop client: ``https://nextcloud.com/install/#install-clients``
1269
-	 * - Android client: ``https://play.google.com/store/apps/details?id=com.nextcloud.client``
1270
-	 * - iOS client: ``https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8``
1271
-	 * - iOS client app ID: ``1125420102``
1272
-	 * - F-Droid client: ``https://f-droid.org/packages/com.nextcloud.client/``
1273
-	 */
1274
-	'customclient_desktop'
1275
-		=> 'https://nextcloud.com/install/#install-clients',
1276
-	'customclient_android'
1277
-		=> 'https://play.google.com/store/apps/details?id=com.nextcloud.client',
1278
-	'customclient_ios'
1279
-		=> 'https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8',
1280
-	'customclient_ios_appid'
1281
-		=> '1125420102',
1282
-	'customclient_fdroid'
1283
-		=> 'https://f-droid.org/packages/com.nextcloud.client/',
1284
-
1285
-	/**
1286
-	 * Apps
1287
-	 *
1288
-	 * Options for the Apps folder, Apps store, and App code checker.
1289
-	 */
1290
-
1291
-	/**
1292
-	 * Set the default app to open on login. The entry IDs can be retrieved from
1293
-	 * the Navigations OCS API endpoint: https://docs.nextcloud.com/server/latest/developer_manual/_static/openapi.html#/operations/core-navigation-get-apps-navigation.
1294
-	 * You can use a comma-separated list of app names, so if the first
1295
-	 * app is not enabled for a user, then Nextcloud will try the second one, and so
1296
-	 * on. If no enabled apps are found, it defaults to the dashboard app.
1297
-	 *
1298
-	 * Defaults to ``dashboard,files``
1299
-	 */
1300
-	'defaultapp' => 'dashboard,files',
1301
-
1302
-	/**
1303
-	 * When enabled, admins may install apps from the Nextcloud app store.
1304
-	 *
1305
-	 * Defaults to ``true``
1306
-	 */
1307
-	'appstoreenabled' => true,
1308
-
1309
-	/**
1310
-	 * Enables the installation of apps from a self-hosted apps store.
1311
-	 * Requires that at least one of the configured apps directories is writable.
1312
-	 *
1313
-	 * Defaults to ``https://apps.nextcloud.com/api/v1``
1314
-	 */
1315
-	'appstoreurl' => 'https://apps.nextcloud.com/api/v1',
1316
-
1317
-	/**
1318
-	 * Filters allowed installable apps from the appstore.
1319
-	 * Empty array will prevent all apps from the store to be found.
1320
-	 */
1321
-	'appsallowlist' => [],
1322
-
1323
-	/**
1324
-	 * Use the ``apps_paths`` parameter to set the location of the Apps directory,
1325
-	 * which should be scanned for available apps, and where user-specific apps
1326
-	 * should be installed from the Apps store. The ``path`` defines the absolute
1327
-	 * file system path to the app folder. The key ``url`` defines the HTTP Web path
1328
-	 * to that folder, starting from the Nextcloud webroot. The key ``writable``
1329
-	 * indicates if a Web server can write files to that folder.
1330
-	 */
1331
-	'apps_paths' => [
1332
-		[
1333
-			'path' => '/var/www/nextcloud/apps',
1334
-			'url' => '/apps',
1335
-			'writable' => true,
1336
-		],
1337
-	],
1338
-
1339
-	/**
1340
-	 * @see appcodechecker
1341
-	 */
1342
-
1343
-	/**
1344
-	 * Previews
1345
-	 *
1346
-	 * Nextcloud supports previews of image files, the covers of MP3 files, and text
1347
-	 * files. These options control enabling and disabling previews, and thumbnail
1348
-	 * size.
1349
-	 */
1350
-
1351
-	/**
1352
-	 * By default, Nextcloud can generate previews for the following filetypes:
1353
-	 *
1354
-	 * - Image files
1355
-	 * - Covers of MP3 files
1356
-	 * - Text documents
1357
-	 *
1358
-	 * Valid values are ``true``, to enable previews, or
1359
-	 * ``false``, to disable previews
1360
-	 *
1361
-	 * Defaults to ``true``
1362
-	 */
1363
-	'enable_previews' => true,
1364
-
1365
-	/**
1366
-	 * Number of all preview requests being processed concurrently,
1367
-	 * including previews that need to be newly generated, and those that have
1368
-	 * been generated.
1369
-	 *
1370
-	 * This should be greater than 'preview_concurrency_new'.
1371
-	 * If unspecified, defaults to twice the value of 'preview_concurrency_new'.
1372
-	 */
1373
-	'preview_concurrency_all' => 8,
1374
-
1375
-	/**
1376
-	 * Number of new previews that are being concurrently generated.
1377
-	 *
1378
-	 * Depending on the max preview size set by 'preview_max_x' and 'preview_max_y',
1379
-	 * the generation process can consume considerable CPU and memory resources.
1380
-	 * It's recommended to limit this to be no greater than the number of CPU cores.
1381
-	 * If unspecified, defaults to the number of CPU cores, or 4 if that cannot
1382
-	 * be determined.
1383
-	 */
1384
-	'preview_concurrency_new' => 4,
1385
-
1386
-	/**
1387
-	 * The maximum width, in pixels, of a preview. A value of ``null`` means there
1388
-	 * is no limit.
1389
-	 *
1390
-	 * Defaults to ``4096``
1391
-	 */
1392
-	'preview_max_x' => 4096,
1393
-	/**
1394
-	 * The maximum height, in pixels, of a preview. A value of ``null`` means there
1395
-	 * is no limit.
1396
-	 *
1397
-	 * Defaults to ``4096``
1398
-	 */
1399
-	'preview_max_y' => 4096,
1400
-
1401
-	/**
1402
-	 * Max file size for generating image previews with imagegd (default behavior).
1403
-	 * If the image is bigger, it'll try other preview generators, but will most
1404
-	 * likely either show the default mimetype icon or not display the image at all.
1405
-	 * Set to ``-1`` for no limit and try to generate image previews on all file sizes.
1406
-	 *
1407
-	 * Defaults to ``50`` megabytes
1408
-	 */
1409
-	'preview_max_filesize_image' => 50,
1410
-
1411
-	/**
1412
-	 * Max memory for generating image previews with imagegd (default behavior)
1413
-	 * Reads the image dimensions from the header and assumes 32 bits per pixel.
1414
-	 * If creating the image would allocate more memory, preview generation will
1415
-	 * be disabled and the default mimetype icon is shown. Set to -1 for no limit.
1416
-	 *
1417
-	 * Defaults to ``256`` megabytes
1418
-	 */
1419
-	'preview_max_memory' => 256,
1420
-
1421
-	/**
1422
-	 * Custom path for LibreOffice/OpenOffice binary
1423
-	 *
1424
-	 *
1425
-	 * Defaults to ``''`` (empty string)
1426
-	 */
1427
-	'preview_libreoffice_path' => '/usr/bin/libreoffice',
1428
-
1429
-	/**
1430
-	 * Custom path for ffmpeg binary
1431
-	 *
1432
-	 * Defaults to ``null`` and falls back to searching ``ffmpeg``
1433
-	 * in the configured ``PATH`` environment
1434
-	 */
1435
-	'preview_ffmpeg_path' => '/usr/bin/ffmpeg',
1436
-
1437
-	/**
1438
-	 * Custom path for ffprobe binary
1439
-	 *
1440
-	 * Defaults to ``null`` and falls back to using the same path as ffmpeg.
1441
-	 * ffprobe is typically packaged with ffmpeg and is required for
1442
-	 * enhanced preview generation for HDR videos.
1443
-	 */
1444
-	'preview_ffprobe_path' => '/usr/bin/ffprobe',
1445
-
1446
-	/**
1447
-	 * Set the URL of the Imaginary service to send image previews to.
1448
-	 * Also requires the ``OC\Preview\Imaginary`` provider to be enabled in the
1449
-	 * ``enabledPreviewProviders`` array, to create previews for these mimetypes: bmp,
1450
-	 * x-bitmap, png, jpeg, gif, heic, heif, svg+xml, tiff, webp, and illustrator.
1451
-	 *
1452
-	 * If you want Imaginary to also create preview images from PDF documents, you
1453
-	 * have to add the ``OC\Preview\ImaginaryPDF`` provider as well.
1454
-	 *
1455
-	 * See https://github.com/h2non/imaginary
1456
-	 */
1457
-	'preview_imaginary_url' => 'http://previews_hpb:8088/',
1458
-
1459
-	/**
1460
-	 * If you want to set an API key for Imaginary.
1461
-	 */
1462
-	'preview_imaginary_key' => 'secret',
1463
-
1464
-	/**
1465
-	 * Only register providers that have been explicitly enabled
1466
-	 *
1467
-	 * The following providers are disabled by default due to performance or privacy
1468
-	 * concerns:
1469
-	 *
1470
-	 *  - ``OC\Preview\Font``
1471
-	 *  - ``OC\Preview\HEIC``
1472
-	 *  - ``OC\Preview\Illustrator``
1473
-	 *  - ``OC\Preview\Movie``
1474
-	 *  - ``OC\Preview\MSOffice2003``
1475
-	 *  - ``OC\Preview\MSOffice2007``
1476
-	 *  - ``OC\Preview\MSOfficeDoc``
1477
-	 *  - ``OC\Preview\PDF``
1478
-	 *  - ``OC\Preview\Photoshop``
1479
-	 *  - ``OC\Preview\Postscript``
1480
-	 *  - ``OC\Preview\StarOffice``
1481
-	 *  - ``OC\Preview\SVG``
1482
-	 *  - ``OC\Preview\TIFF``
1483
-	 *  - ``OC\Preview\EMF``
1484
-	 *
1485
-	 *
1486
-	 * Defaults to the following providers:
1487
-	 *
1488
-	 *  - ``OC\Preview\BMP``
1489
-	 *  - ``OC\Preview\GIF``
1490
-	 *  - ``OC\Preview\JPEG``
1491
-	 *  - ``OC\Preview\Krita``
1492
-	 *  - ``OC\Preview\MarkDown``
1493
-	 *  - ``OC\Preview\MP3``
1494
-	 *  - ``OC\Preview\OpenDocument``
1495
-	 *  - ``OC\Preview\PNG``
1496
-	 *  - ``OC\Preview\TXT``
1497
-	 *  - ``OC\Preview\XBitmap``
1498
-	 */
1499
-	'enabledPreviewProviders' => [
1500
-		'OC\Preview\BMP',
1501
-		'OC\Preview\GIF',
1502
-		'OC\Preview\JPEG',
1503
-		'OC\Preview\Krita',
1504
-		'OC\Preview\MarkDown',
1505
-		'OC\Preview\MP3',
1506
-		'OC\Preview\OpenDocument',
1507
-		'OC\Preview\PNG',
1508
-		'OC\Preview\TXT',
1509
-		'OC\Preview\XBitmap',
1510
-	],
1511
-
1512
-	/**
1513
-	 * Maximum file size for metadata generation.
1514
-	 * If a file exceeds this size, metadata generation will be skipped.
1515
-	 * Note: memory equivalent to this size will be used for metadata generation.
1516
-	 *
1517
-	 * Default: 256 megabytes.
1518
-	 */
1519
-	'metadata_max_filesize' => 256,
1520
-
1521
-	/**
1522
-	 * Maximum file size for file conversion.
1523
-	 * If a file exceeds this size, the file will not be converted.
1524
-	 *
1525
-	 * Default: 100 MiB
1526
-	 */
1527
-	'max_file_conversion_filesize' => 100,
1528
-
1529
-	/**
1530
-	 * LDAP
1531
-	 *
1532
-	 * Global settings used by LDAP User and Group Backend
1533
-	 */
1534
-
1535
-	/**
1536
-	 * Defines the interval in minutes for the background job that checks user
1537
-	 * existence and marks them as ready to be cleaned up. The number is always
1538
-	 * minutes. Setting it to 0 disables the feature.
1539
-	 * See command line (occ) methods ``ldap:show-remnants`` and ``user:delete``
1540
-	 *
1541
-	 * Defaults to ``51`` minutes
1542
-	 */
1543
-	'ldapUserCleanupInterval' => 51,
1544
-
1545
-	/**
1546
-	 * Sort groups in the user settings by name instead of the user count
1547
-	 *
1548
-	 * By enabling this, the user count beside the group name is disabled as well.
1549
-	 * @deprecated since Nextcloud 29 - Use the frontend instead or set the app config value `group.sortBy` for `core` to `2`
1550
-	 */
1551
-	'sort_groups_by_name' => false,
1552
-
1553
-	/**
1554
-	 * Comments
1555
-	 *
1556
-	 * Global settings for the Comments infrastructure
1557
-	 */
1558
-
1559
-	/**
1560
-	 * Replaces the default Comments Manager Factory. This can be utilized if an
1561
-	 * own or 3rd-party CommentsManager should be used that – for instance – uses the
1562
-	 * filesystem instead of the database to keep the comments.
1563
-	 *
1564
-	 * Defaults to ``\OC\Comments\ManagerFactory``
1565
-	 */
1566
-	'comments.managerFactory' => '\OC\Comments\ManagerFactory',
1567
-
1568
-	/**
1569
-	 * Replaces the default System Tags Manager Factory. This can be utilized if an
1570
-	 * own or 3rd-party SystemTagsManager should be used that – for instance – uses the
1571
-	 * filesystem instead of the database to keep the tags.
1572
-	 *
1573
-	 * Defaults to ``\OC\SystemTag\ManagerFactory``
1574
-	 */
1575
-	'systemtags.managerFactory' => '\OC\SystemTag\ManagerFactory',
1576
-
1577
-	/**
1578
-	 * Maintenance
1579
-	 *
1580
-	 * These options are for halting user activity when you are performing server
1581
-	 * maintenance.
1582
-	 */
1583
-
1584
-	/**
1585
-	 * Enable maintenance mode to disable Nextcloud
1586
-	 *
1587
-	 * If you want to prevent users from logging in to Nextcloud before you start
1588
-	 * doing some maintenance work, you need to set the value of the maintenance
1589
-	 * parameter to true. Please keep in mind that users who are already logged in
1590
-	 * are kicked out of Nextcloud instantly.
1591
-	 *
1592
-	 * Defaults to ``false``
1593
-	 */
1594
-	'maintenance' => false,
1595
-
1596
-	/**
1597
-	 * UTC Hour for maintenance windows
1598
-	 *
1599
-	 * Some background jobs only run once a day. When an hour is defined for this config,
1600
-	 * the background jobs which advertise themselves as not time sensitive will be
1601
-	 * delayed during the "working" hours and only run in the 4 hours after the given time.
1602
-	 * This is, e.g., used for activity expiration, suspicious login training, and update checks.
1603
-	 *
1604
-	 * A value of 1, e.g., will only run these background jobs between 01:00am UTC and 05:00am UTC.
1605
-	 *
1606
-	 * Defaults to ``100`` which disables the feature
1607
-	 */
1608
-	'maintenance_window_start' => 1,
1609
-
1610
-	/**
1611
-	 * Log all LDAP requests into a file
1612
-	 *
1613
-	 * Warning: This heavily decreases the performance of the server and is only
1614
-	 * meant to debug/profile the LDAP interaction manually.
1615
-	 * Also, it might log sensitive data into a plain text file.
1616
-	 */
1617
-	'ldap_log_file' => '',
1618
-
1619
-	/**
1620
-	 * SSL
1621
-	 */
1622
-
1623
-	/**
1624
-	 * Extra SSL options to be used for configuration.
1625
-	 *
1626
-	 * Defaults to an empty array.
1627
-	 */
1628
-	'openssl' => [
1629
-		'config' => '/absolute/location/of/openssl.cnf',
1630
-	],
1631
-
1632
-	/**
1633
-	 * Memory caching backend configuration
1634
-	 *
1635
-	 * Available cache backends:
1636
-	 *
1637
-	 * * ``\OC\Memcache\APCu``       APC user backend
1638
-	 * * ``\OC\Memcache\ArrayCache`` In-memory array-based backend (not recommended)
1639
-	 * * ``\OC\Memcache\Memcached``  Memcached backend
1640
-	 * * ``\OC\Memcache\Redis``      Redis backend
1641
-	 *
1642
-	 * Advice on choosing between the various backends:
1643
-	 *
1644
-	 * * APCu should be easiest to install. Almost all distributions have packages.
1645
-	 *   Use this for single user environment for all caches.
1646
-	 * * Use Redis or Memcached for distributed environments.
1647
-	 *   For the local cache (you can configure two) take APCu.
1648
-	 */
1649
-
1650
-	/**
1651
-	 * Memory caching backend for locally stored data
1652
-	 *
1653
-	 * * Used for host-specific data, e.g., file paths
1654
-	 *
1655
-	 * Defaults to ``none``
1656
-	 */
1657
-	'memcache.local' => '\\OC\\Memcache\\APCu',
1658
-
1659
-	/**
1660
-	 * Memory caching backend for distributed data
1661
-	 *
1662
-	 * * Used for installation-specific data, e.g., database caching
1663
-	 * * If unset, defaults to the value of memcache.local
1664
-	 *
1665
-	 * Defaults to ``none``
1666
-	 */
1667
-	'memcache.distributed' => '\\OC\\Memcache\\Memcached',
1668
-
1669
-	/**
1670
-	 * Connection details for Redis to use for memory caching in a single server configuration.
1671
-	 *
1672
-	 * For enhanced security, it is recommended to configure Redis
1673
-	 * to require a password. See http://redis.io/topics/security
1674
-	 * for more information.
1675
-	 *
1676
-	 * We also support Redis SSL/TLS encryption as of version 6.
1677
-	 * See https://redis.io/topics/encryption for more information.
1678
-	 */
1679
-	'redis' => [
1680
-		'host' => 'localhost', // can also be a Unix domain socket: '/tmp/redis.sock'
1681
-		'port' => 6379,
1682
-		'timeout' => 0.0,
1683
-		'read_timeout' => 0.0,
1684
-		'user' => '', // Optional: if not defined, no password will be used.
1685
-		'password' => '', // Optional: if not defined, no password will be used.
1686
-		'dbindex' => 0, // Optional: if undefined, SELECT will not run and will use Redis Server's default DB Index.
1687
-		// If Redis in-transit encryption is enabled, provide certificates
1688
-		// SSL context https://www.php.net/manual/en/context.ssl.php
1689
-		'ssl_context' => [
1690
-			'local_cert' => '/certs/redis.crt',
1691
-			'local_pk' => '/certs/redis.key',
1692
-			'cafile' => '/certs/ca.crt'
1693
-		]
1694
-	],
1695
-
1696
-	/**
1697
-	 * Connection details for a Redis Cluster.
1698
-	 *
1699
-	 * Redis Cluster support requires the PHP module phpredis in version 3.0.0 or
1700
-	 * higher.
1701
-	 *
1702
-	 * Available failover modes:
1703
-	 *  - \RedisCluster::FAILOVER_NONE - only send commands to master nodes (default)
1704
-	 *  - \RedisCluster::FAILOVER_ERROR - failover to slaves for read commands if master is unavailable (recommended)
1705
-	 *  - \RedisCluster::FAILOVER_DISTRIBUTE - randomly distribute read commands across master and slaves
1706
-	 *
1707
-	 * WARNING: FAILOVER_DISTRIBUTE is a not recommended setting, and we strongly
1708
-	 * suggest to not use it if you use Redis for file locking. Due to the way Redis
1709
-	 * is synchronized, it could happen that the read for an existing lock is
1710
-	 * scheduled to a slave that is not fully synchronized with the connected master
1711
-	 * which then causes a FileLocked exception.
1712
-	 *
1713
-	 * See https://redis.io/topics/cluster-spec for details about the Redis cluster
1714
-	 *
1715
-	 * Authentication works with phpredis version 4.2.1+. See
1716
-	 * https://github.com/phpredis/phpredis/commit/c5994f2a42b8a348af92d3acb4edff1328ad8ce1
1717
-	 */
1718
-	'redis.cluster' => [
1719
-		'seeds' => [ // provide some or all of the cluster servers to bootstrap discovery, port required
1720
-			'localhost:7000',
1721
-			'localhost:7001',
1722
-		],
1723
-		'timeout' => 0.0,
1724
-		'read_timeout' => 0.0,
1725
-		'failover_mode' => \RedisCluster::FAILOVER_ERROR,
1726
-		'user' => '', // Optional: if not defined, no password will be used.
1727
-		'password' => '', // Optional: if not defined, no password will be used.
1728
-		// If Redis in-transit encryption is enabled, provide certificates
1729
-		// SSL context https://www.php.net/manual/en/context.ssl.php
1730
-		'ssl_context' => [
1731
-			'local_cert' => '/certs/redis.crt',
1732
-			'local_pk' => '/certs/redis.key',
1733
-			'cafile' => '/certs/ca.crt'
1734
-		]
1735
-	],
1736
-
1737
-
1738
-	/**
1739
-	 * Server details for one or more Memcached servers to use for memory caching.
1740
-	 */
1741
-	'memcached_servers' => [
1742
-		// hostname, port and optional weight
1743
-		// or path and port 0 for Unix socket. Also see:
1744
-		// https://www.php.net/manual/en/memcached.addservers.php
1745
-		// https://www.php.net/manual/en/memcached.addserver.php
1746
-		['localhost', 11211],
1747
-		//array('other.host.local', 11211),
1748
-	],
1749
-
1750
-	/**
1751
-	 * Connection options for Memcached
1752
-	 */
1753
-	'memcached_options' => [
1754
-		// Set timeouts to 50ms
1755
-		\Memcached::OPT_CONNECT_TIMEOUT => 50,
1756
-		\Memcached::OPT_RETRY_TIMEOUT => 50,
1757
-		\Memcached::OPT_SEND_TIMEOUT => 50,
1758
-		\Memcached::OPT_RECV_TIMEOUT => 50,
1759
-		\Memcached::OPT_POLL_TIMEOUT => 50,
1760
-
1761
-		// Enable compression
1762
-		\Memcached::OPT_COMPRESSION => true,
1763
-
1764
-		// Turn on consistent hashing
1765
-		\Memcached::OPT_LIBKETAMA_COMPATIBLE => true,
1766
-
1767
-		// Enable Binary Protocol
1768
-		\Memcached::OPT_BINARY_PROTOCOL => true,
1769
-
1770
-		// Binary serializer will be enabled if the igbinary PECL module is available
1771
-		//\Memcached::OPT_SERIALIZER => \Memcached::SERIALIZER_IGBINARY,
1772
-	],
1773
-
1774
-
1775
-	/**
1776
-	 * Location of the cache folder, defaults to ``data/$user/cache`` where
1777
-	 * ``$user`` is the current user. When specified, the format will change to
1778
-	 * ``$cache_path/$user`` where ``$cache_path`` is the configured cache directory
1779
-	 * and ``$user`` is the user.
1780
-	 *
1781
-	 * Defaults to ``''`` (empty string)
1782
-	 */
1783
-	'cache_path' => '',
1784
-
1785
-	/**
1786
-	 * TTL of chunks located in the cache folder before they're removed by
1787
-	 * garbage collection (in seconds). Increase this value if users have
1788
-	 * issues uploading very large files via the Nextcloud Client as upload isn't
1789
-	 * completed within one day.
1790
-	 *
1791
-	 * Defaults to ``60*60*24`` (1 day)
1792
-	 */
1793
-	'cache_chunk_gc_ttl' => 60 * 60 * 24,
1794
-
1795
-	/**
1796
-	 * Enable caching of the app config values.
1797
-	 * If enabled the app config will be cached locally for a short TTL,
1798
-	 * reducing database load significantly on larger setups.
1799
-	 *
1800
-	 * Defaults to ``true``
1801
-	 */
1802
-	'cache_app_config' => true,
1803
-
1804
-	/**
1805
-	 * Using Object Store with Nextcloud
1806
-	 */
1807
-
1808
-	/**
1809
-	 * This example shows how to configure Nextcloud to store all files in a
1810
-	 * Swift object storage.
1811
-	 *
1812
-	 * It is important to note that Nextcloud in object store mode will expect
1813
-	 * exclusive access to the object store container because it only stores the
1814
-	 * binary data for each file. The metadata is currently kept in the local
1815
-	 * database for performance reasons.
1816
-	 *
1817
-	 * WARNING: The current implementation is incompatible with any app that uses
1818
-	 * direct file I/O and circumvents our virtual filesystem. That includes
1819
-	 * Encryption and Gallery. Gallery will store thumbnails directly in the
1820
-	 * filesystem, and encryption will cause severe overhead because key files need
1821
-	 * to be fetched in addition to any requested file.
1822
-	 *
1823
-	 */
1824
-	'objectstore' => [
1825
-		'class' => 'OC\\Files\\ObjectStore\\Swift',
1826
-		'arguments' => [
1827
-			// trystack will use your Facebook ID as the username
1828
-			'username' => 'facebook100000123456789',
1829
-			// in the trystack dashboard, go to user -> settings -> API Password to
1830
-			// generate a password
1831
-			'password' => 'Secr3tPaSSWoRdt7',
1832
-			// must already exist in the objectstore, name can be different
1833
-			'container' => 'nextcloud',
1834
-			// prefix to prepend to the fileid, default is 'oid:urn:'
1835
-			'objectPrefix' => 'oid:urn:',
1836
-			// create the container if it does not exist. default is false
1837
-			'autocreate' => true,
1838
-			// required, dev-/trystack defaults to 'RegionOne'
1839
-			'region' => 'RegionOne',
1840
-			// The Identity / Keystone endpoint
1841
-			'url' => 'http://8.21.28.222:5000/v2.0',
1842
-			// uploadPartSize: size of the uploaded chunks, defaults to 524288000
1843
-			'uploadPartSize' => 524288000,
1844
-			// required on dev-/trystack
1845
-			'tenantName' => 'facebook100000123456789',
1846
-			// dev-/trystack uses swift by default, the lib defaults to 'cloudFiles'
1847
-			// if omitted
1848
-			'serviceName' => 'swift',
1849
-			// The Interface / URL Type, optional
1850
-			'urlType' => 'internal'
1851
-		],
1852
-	],
1853
-
1854
-	/**
1855
-	 * To use Swift V3
1856
-	 */
1857
-	'objectstore' => [
1858
-		'class' => 'OC\\Files\\ObjectStore\\Swift',
1859
-		'arguments' => [
1860
-			'autocreate' => true,
1861
-			'user' => [
1862
-				'name' => 'swift',
1863
-				'password' => 'swift',
1864
-				'domain' => [
1865
-					'name' => 'default',
1866
-				],
1867
-			],
1868
-			'scope' => [
1869
-				'project' => [
1870
-					'name' => 'service',
1871
-					'domain' => [
1872
-						'name' => 'default',
1873
-					],
1874
-				],
1875
-			],
1876
-			'tenantName' => 'service',
1877
-			'serviceName' => 'swift',
1878
-			'region' => 'regionOne',
1879
-			'url' => 'http://yourswifthost:5000/v3',
1880
-			'bucket' => 'nextcloud',
1881
-		],
1882
-	],
1883
-
1884
-	/**
1885
-	 * If this is set to true and a multibucket object store is configured, then
1886
-	 * newly created previews are put into 256 dedicated buckets.
1887
-	 *
1888
-	 * Those buckets are named like the multibucket version but with the postfix
1889
-	 * ``-preview-NUMBER`` where NUMBER is between 0 and 255.
1890
-	 *
1891
-	 * Keep in mind that only previews of files are put in there that don't have
1892
-	 * some already. Otherwise, the old bucket will be used.
1893
-	 *
1894
-	 * To migrate existing previews to this new multibucket distribution of previews,
1895
-	 * use the occ command ``preview:repair``. For now, this will only migrate
1896
-	 * previews that were generated before Nextcloud 19 in the flat
1897
-	 * ``appdata_INSTANCEID/previews/FILEID`` folder structure.
1898
-	 */
1899
-	'objectstore.multibucket.preview-distribution' => false,
1900
-
1901
-
1902
-	/**
1903
-	 * Sharing
1904
-	 *
1905
-	 * Global settings for Sharing
1906
-	 */
1907
-
1908
-	/**
1909
-	 * Replaces the default Share Provider Factory. This can be utilized if
1910
-	 * own or 3rd-party Share Providers are used that – for instance – use the
1911
-	 * filesystem instead of the database to keep the share information.
1912
-	 *
1913
-	 * Defaults to ``\OC\Share20\ProviderFactory``
1914
-	 */
1915
-	'sharing.managerFactory' => '\OC\Share20\ProviderFactory',
1916
-
1917
-	/**
1918
-	 * Enables expiration for link share passwords sent by email (sharebymail).
1919
-	 * The passwords will expire after the configured interval; the users can
1920
-	 * still request a new one on the public link page.
1921
-	 */
1922
-	'sharing.enable_mail_link_password_expiration' => false,
1923
-
1924
-	/**
1925
-	 * Expiration interval for passwords, in seconds.
1926
-	 */
1927
-	'sharing.mail_link_password_expiration_interval' => 3600,
1928
-
1929
-	/**
1930
-	 * Define max number of results returned by the search for auto-completion of
1931
-	 * users, groups, etc. The value must not be lower than 0 (for unlimited).
1932
-	 *
1933
-	 * If more, different sources are requested (e.g., different user backends; or
1934
-	 * both users and groups), the value is applied per source and might not be
1935
-	 * truncated after collecting the results. I.e., more results can appear than
1936
-	 * configured here.
1937
-	 *
1938
-	 * Default is 25.
1939
-	 */
1940
-	'sharing.maxAutocompleteResults' => 25,
1941
-
1942
-	/**
1943
-	 * Define the minimum length of the search string before we start auto-completion
1944
-	 * Default is no limit (value set to 0)
1945
-	 */
1946
-	'sharing.minSearchStringLength' => 0,
1947
-
1948
-	/**
1949
-	 * Set to true to enable that internal shares need to be accepted by the users by default.
1950
-	 * Users can change this for their account in their personal sharing settings
1951
-	 */
1952
-	'sharing.enable_share_accept' => false,
1953
-
1954
-	/**
1955
-	 * Set to true to enforce that internal shares need to be accepted
1956
-	 */
1957
-	'sharing.force_share_accept' => false,
1958
-
1959
-	/**
1960
-	 * Set to ``false`` to prevent users from setting a custom share_folder
1961
-	 */
1962
-	'sharing.allow_custom_share_folder' => true,
1963
-
1964
-	/**
1965
-	 * Define a default folder for shared files and folders other than root.
1966
-	 * Changes to this value will only have effect on new shares.
1967
-	 *
1968
-	 * Defaults to ``/``
1969
-	 */
1970
-	'share_folder' => '/',
1971
-
1972
-	/**
1973
-	 * Set to ``false`` to stop sending a mail when users receive a share
1974
-	 */
1975
-	'sharing.enable_share_mail' => true,
1976
-
1977
-	/**
1978
-	 * Set to true to enable the feature to add exceptions for share password enforcement
1979
-	 */
1980
-	'sharing.allow_disabled_password_enforcement_groups' => false,
1981
-
1982
-	/**
1983
-	 * Set to true to always transfer incoming shares by default
1984
-	 * when running "occ files:transfer-ownership".
1985
-	 * Defaults to false, so incoming shares are not transferred if not specifically requested
1986
-	 * by a command line argument.
1987
-	 */
1988
-	'transferIncomingShares' => false,
1989
-
1990
-	/**
1991
-	 * Federated Cloud Sharing
1992
-	 */
1993
-
1994
-	/**
1995
-	 * Allow self-signed certificates for federated shares
1996
-	 */
1997
-	'sharing.federation.allowSelfSignedCertificates' => false,
1998
-
1999
-	/**
2000
-	 * Hashing
2001
-	 */
2002
-
2003
-	/**
2004
-	 * By default, Nextcloud will use the Argon2 password hashing if available.
2005
-	 * However, if for whatever reason you want to stick with the PASSWORD_DEFAULT
2006
-	 * of your PHP version, then set the setting to true.
2007
-	 *
2008
-	 * Nextcloud uses the Argon2 algorithm (with PHP >= 7.2) to create hashes by its
2009
-	 * own and exposes its configuration options as following. More information can
2010
-	 * be found at: https://www.php.net/manual/en/function.password-hash.php
2011
-	 */
2012
-	'hashing_default_password' => false,
2013
-
2014
-	/**
2015
-	 * The number of CPU threads to be used by the algorithm for computing a hash.
2016
-	 * The value must be an integer, and the minimum value is 1. Rationally, it does
2017
-	 * not help to provide a number higher than the available threads on the machine.
2018
-	 * Values that undershoot the minimum will be ignored in favor of the minimum.
2019
-	 */
2020
-	'hashingThreads' => PASSWORD_ARGON2_DEFAULT_THREADS,
2021
-
2022
-	/**
2023
-	 * The memory in KiB to be used by the algorithm for computing a hash. The value
2024
-	 * must be an integer, and the minimum value is 8 times the number of CPU threads.
2025
-	 * Values that undershoot the minimum will be ignored in favor of the minimum.
2026
-	 */
2027
-	'hashingMemoryCost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST,
2028
-
2029
-	/**
2030
-	 * The number of iterations that are used by the algorithm for computing a hash.
2031
-	 * The value must be an integer, and the minimum value is 1. Values that
2032
-	 * undershoot the minimum will be ignored in favor of the minimum.
2033
-	 */
2034
-	'hashingTimeCost' => PASSWORD_ARGON2_DEFAULT_TIME_COST,
2035
-
2036
-	/**
2037
-	 * The hashing cost used by hashes generated by Nextcloud
2038
-	 * Using a higher value requires more time and CPU power to calculate the hashes
2039
-	 */
2040
-	'hashingCost' => 10,
2041
-
2042
-	/**
2043
-	 * All other configuration options
2044
-	 */
2045
-
2046
-	/**
2047
-	 * Additional driver options for the database connection, e.g., to enable SSL
2048
-	 * encryption in MySQL or specify a custom wait timeout on a cheap hoster.
2049
-	 *
2050
-	 * When setting up TLS/SSL for encrypting the connections, you need to ensure that
2051
-	 * the passed keys and certificates are readable by the PHP process. In addition,
2052
-	 * PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT might need to be set to false, if the
2053
-	 * database server's certificate CN does not match with the hostname used to connect.
2054
-	 * The standard behavior here is different from the MySQL/MariaDB CLI client, which
2055
-	 * does not verify the server cert except --ssl-verify-server-cert is passed manually.
2056
-	 */
2057
-	'dbdriveroptions' => [
2058
-		PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
2059
-		PDO::MYSQL_ATTR_SSL_KEY => '/file/path/to/mysql-client-key.pem',
2060
-		PDO::MYSQL_ATTR_SSL_CERT => '/file/path/to/mysql-client-cert.pem',
2061
-		PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
2062
-		PDO::MYSQL_ATTR_INIT_COMMAND => 'SET wait_timeout = 28800'
2063
-	],
2064
-
2065
-	/**
2066
-	 * SQLite3 journal mode can be specified using this configuration parameter -
2067
-	 * can be 'WAL' or 'DELETE'. See https://www.sqlite.org/wal.html for more details.
2068
-	 */
2069
-	'sqlite.journal_mode' => 'DELETE',
2070
-
2071
-	/**
2072
-	 * During setup, if requirements are met (see below), this setting is set to true
2073
-	 * to enable MySQL to handle 4-byte characters instead of 3-byte characters.
2074
-	 *
2075
-	 * To convert an existing 3-byte setup to a 4-byte setup, configure the MySQL
2076
-	 * parameters as described below and run the migration command:
2077
-	 * ./occ db:convert-mysql-charset
2078
-	 * This config setting will be automatically updated after a successful migration.
2079
-	 *
2080
-	 * Refer to the documentation for more details.
2081
-	 *
2082
-	 * MySQL requires specific settings for longer indexes (> 767 bytes), which are
2083
-	 * necessary for 4-byte character support:
2084
-	 *
2085
-	 * [mysqld]
2086
-	 * innodb_large_prefix=ON
2087
-	 * innodb_file_format=Barracuda
2088
-	 * innodb_file_per_table=ON
2089
-	 *
2090
-	 * Tables will be created with:
2091
-	 *  * character set: utf8mb4
2092
-	 *  * collation:     utf8mb4_bin
2093
-	 *  * row_format:    dynamic
2094
-	 *
2095
-	 * See:
2096
-	 * https://dev.mysql.com/doc/refman/5.7/en/charset-unicode-utf8mb4.html
2097
-	 * https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_large_prefix
2098
-	 * https://mariadb.com/kb/en/mariadb/xtradbinnodb-server-system-variables/#innodb_large_prefix
2099
-	 * http://www.tocker.ca/2013/10/31/benchmarking-innodb-page-compression-performance.html
2100
-	 * http://mechanics.flite.com/blog/2014/07/29/using-innodb-large-prefix-to-avoid-error-1071/
2101
-	 */
2102
-	'mysql.utf8mb4' => false,
2103
-
2104
-	/**
2105
-	 * For search queries in the database, a default collation is chosen based on the
2106
-	 * character set. In some cases, a different collation is desired, such as for
2107
-	 * accent-sensitive searches.
2108
-	 *
2109
-	 * MariaDB and MySQL share some collations, but also have incompatible ones,
2110
-	 * depending on the database server version.
2111
-	 *
2112
-	 * This option allows overriding the automatic collation choice. Example:
2113
-	 *
2114
-	 * 'mysql.collation' => 'utf8mb4_0900_as_ci',
2115
-	 *
2116
-	 * This setting does not affect table creation or setup, where utf8[mb4]_bin is
2117
-	 * always used. It applies only to SQL queries using LIKE comparison operators.
2118
-	 */
2119
-	'mysql.collation' => null,
2120
-
2121
-	/**
2122
-	 * Database types supported for installation.
2123
-	 *
2124
-	 * Available:
2125
-	 *  - sqlite (SQLite3)
2126
-	 *  - mysql (MySQL)
2127
-	 *  - pgsql (PostgreSQL)
2128
-	 *  - oci (Oracle)
2129
-	 *
2130
-	 * Defaults to:
2131
-	 *  - sqlite (SQLite3)
2132
-	 *  - mysql (MySQL)
2133
-	 *  - pgsql (PostgreSQL)
2134
-	 */
2135
-	'supportedDatabases' => [
2136
-		'sqlite',
2137
-		'mysql',
2138
-		'pgsql',
2139
-		'oci',
2140
-	],
2141
-
2142
-	/**
2143
-	 * Override the location where Nextcloud stores temporary files. Useful in setups
2144
-	 * where the system temporary directory is on a limited-space ramdisk, restricted,
2145
-	 * or when using external storage that does not support streaming.
2146
-	 *
2147
-	 * The web server user/PHP must have write access to this directory. Ensure that
2148
-	 * PHP configuration recognizes this as a valid temporary directory by setting
2149
-	 * the TMP, TMPDIR, and TEMP environment variables accordingly. Additional
2150
-	 * permissions may be required for AppArmor or SELinux.
2151
-	 */
2152
-	'tempdirectory' => '/tmp/nextcloudtemp',
2153
-
2154
-	/**
2155
-	 * Override the location where Nextcloud stores update files during updates.
2156
-	 * Useful when the default `datadirectory` is on a network disk like NFS or is
2157
-	 * otherwise restricted. Defaults to the value of `datadirectory` if unset.
2158
-	 *
2159
-	 * If set, the directory must be located outside the Nextcloud installation
2160
-	 * directory and writable by the web server user.
2161
-	 */
2162
-	'updatedirectory' => '',
2163
-
2164
-	/**
2165
-	 * Block specific files or filenames, disallowing uploads or access (read and write).
2166
-	 * ``.htaccess`` is blocked by default.
2167
-	 *
2168
-	 * WARNING: Use this only if you understand the implications.
2169
-	 *
2170
-	 * Note: This list is case-insensitive.
2171
-	 *
2172
-	 * Defaults to ``['.htaccess']``
2173
-	 */
2174
-	'forbidden_filenames' => ['.htaccess'],
2175
-
2176
-	/**
2177
-	 * Disallow uploads of files with specific basenames. Matching existing files
2178
-	 * cannot be updated, and no new files can be created in matching folders.
2179
-	 *
2180
-	 * The basename is the filename without the extension, e.g., for "archive.tar.gz",
2181
-	 * the basename is "archive".
2182
-	 *
2183
-	 * Note: This list is case-insensitive.
2184
-	 *
2185
-	 * Defaults to ``[]`` (empty array)
2186
-	 */
2187
-	'forbidden_filename_basenames' => [],
2188
-
2189
-	/**
2190
-	 * Block specific characters in filenames. Useful for filesystems or operating
2191
-	 * systems (e.g., Windows) that do not support certain characters. Matching
2192
-	 * existing files cannot be updated, and no new files can be created in matching
2193
-	 * folders.
2194
-	 *
2195
-	 * The '/' and '\' characters, as well as ASCII characters [0-31], are always
2196
-	 * forbidden.
2197
-	 *
2198
-	 * Example for Windows: ``['?', '<', '>', ':', '*', '|', '"']``
2199
-	 * See: https://en.wikipedia.org/wiki/Comparison_of_file_systems#Limits
2200
-	 *
2201
-	 * Defaults to ``[]`` (empty array)
2202
-	 */
2203
-	'forbidden_filename_characters' => [],
2204
-
2205
-	/**
2206
-	 * Deny specific file extensions. Matching existing files cannot be updated, and
2207
-	 * no new files can be created in matching folders.
2208
-	 *
2209
-	 * The '.part' extension is always forbidden, as it is used internally by Nextcloud.
2210
-	 *
2211
-	 * Defaults to ``['.filepart', '.part']``
2212
-	 */
2213
-	'forbidden_filename_extensions' => ['.part', '.filepart'],
2214
-
2215
-	/**
2216
-	 * Specify the name of a theme to apply to Nextcloud. Themes are located in
2217
-	 * ``nextcloud/themes/`` by default.
2218
-	 *
2219
-	 * Defaults to the theming app, included since Nextcloud 9.
2220
-	 */
2221
-	'theme' => '',
2222
-
2223
-	/**
2224
-	 * Enforce a specific user theme, disabling user theming settings. Must be a
2225
-	 * valid ITheme ID, e.g., dark, dark-highcontrast, default, light,
2226
-	 * light-highcontrast, opendyslexic.
2227
-	 */
2228
-	'enforce_theme' => '',
2229
-
2230
-	/**
2231
-	 * Enable or disable Progressive Web App (PWA) functionality, which allows
2232
-	 * browsers to open web applications in dedicated windows.
2233
-	 *
2234
-	 * Defaults to ``true``
2235
-	 */
2236
-	'theming.standalone_window.enabled' => true,
2237
-
2238
-	/**
2239
-	 * Specify the default cipher for encrypting files. Supported ciphers:
2240
-	 *  - AES-256-CTR
2241
-	 *  - AES-128-CTR
2242
-	 *  - AES-256-CFB
2243
-	 *  - AES-128-CFB
2244
-	 *
2245
-	 * Defaults to ``AES-256-CTR``
2246
-	 */
2247
-	'cipher' => 'AES-256-CTR',
2248
-
2249
-	/**
2250
-	 * Use the legacy base64 format for encrypted files instead of the more
2251
-	 * space-efficient binary format. This affects only newly written files; existing
2252
-	 * encrypted files remain readable regardless of the format.
2253
-	 *
2254
-	 * Defaults to ``false``
2255
-	 */
2256
-	'encryption.use_legacy_base64_encoding' => false,
2257
-
2258
-	/**
2259
-	 * Specify the minimum Nextcloud desktop client version allowed to sync with this
2260
-	 * server. Connections from earlier clients will be denied. Defaults to the
2261
-	 * minimum officially supported version at the time of this server release.
2262
-	 *
2263
-	 * Changing this may cause older, unsupported clients to malfunction, potentially
2264
-	 * leading to data loss or unexpected behavior.
2265
-	 *
2266
-	 * Defaults to ``3.1.0``
2267
-	 */
2268
-	'minimum.supported.desktop.version' => '3.1.0',
2269
-
2270
-	/**
2271
-	 * Specify the maximum Nextcloud desktop client version allowed to sync with this
2272
-	 * server. Connections from later clients will be denied.
2273
-	 *
2274
-	 * Defaults to ``99.99.99``
2275
-	 */
2276
-	'maximum.supported.desktop.version' => '99.99.99',
2277
-
2278
-	/**
2279
-	 * Allow local storage to contain symlinks.
2280
-	 * WARNING: Not recommended, as this allows Nextcloud to access files outside the
2281
-	 * data directory, posing a potential security risk.
2282
-	 *
2283
-	 * Defaults to ``false``
2284
-	 */
2285
-	'localstorage.allowsymlinks' => false,
2286
-
2287
-	/**
2288
-	 * Nextcloud overrides umask to ensure suitable access permissions regardless of
2289
-	 * web server or PHP-FPM configuration. Modifying this value has security
2290
-	 * implications and may cause issues with the installation.
2291
-	 *
2292
-	 * Most installations should not modify this value.
2293
-	 *
2294
-	 * Defaults to ``0022``
2295
-	 */
2296
-	'localstorage.umask' => 0022,
2297
-
2298
-	/**
2299
-	 * Allow storage systems that do not support modifying existing files to overcome
2300
-	 * this limitation by removing files before overwriting.
2301
-	 *
2302
-	 * Defaults to ``false``
2303
-	 */
2304
-	'localstorage.unlink_on_truncate' => false,
2305
-
2306
-	/**
2307
-	 * EXPERIMENTAL: Include external storage in quota calculations.
2308
-	 *
2309
-	 * Defaults to ``false``
2310
-	 */
2311
-	'quota_include_external_storage' => false,
2312
-
2313
-	/**
2314
-	 * When an external storage is unavailable (e.g., due to failed authentication),
2315
-	 * it is flagged as such for a specified duration. For authentication failures,
2316
-	 * this delay can be customized to reduce the likelihood of account lockouts in
2317
-	 * systems like Active Directory.
2318
-	 *
2319
-	 * Defaults to ``1800`` seconds (30 minutes)
2320
-	 */
2321
-	'external_storage.auth_availability_delay' => 1800,
2322
-
2323
-	/**
2324
-	 * Allow creation of external storages of type "Local" via the web interface and
2325
-	 * APIs. When disabled, local storages can still be created using the occ command:
2326
-	 *
2327
-	 * occ files_external:create /mountpoint local null::null -c datadir=/path/to/data
2328
-	 *
2329
-	 * Defaults to ``true``
2330
-	 */
2331
-	'files_external_allow_create_new_local' => true,
2332
-
2333
-	/**
2334
-	 * Specify how often the local filesystem (Nextcloud data/ directory and NFS
2335
-	 * mounts in data/) is checked for changes made outside Nextcloud. This does not
2336
-	 * apply to external storage.
2337
-	 *
2338
-	 * 0 -> Never check the filesystem for outside changes, improving performance
2339
-	 *      when no external changes are expected.
2340
-	 * 1 -> Check each file or folder at most once per request, recommended for
2341
-	 *      general use if outside changes are possible.
2342
-	 *
2343
-	 * Defaults to ``0``
2344
-	 */
2345
-	'filesystem_check_changes' => 0,
2346
-
2347
-	/**
2348
-	 * Store part files created during upload in the same storage as the upload
2349
-	 * target. Setting this to false stores part files in the root of the user's
2350
-	 * folder, which may be necessary for external storage with limited rename
2351
-	 * capabilities.
2352
-	 *
2353
-	 * Defaults to ``true``
2354
-	 */
2355
-	'part_file_in_storage' => true,
2356
-
2357
-	/**
2358
-	 * Specify the location of the ``mount.json`` file.
2359
-	 *
2360
-	 * Defaults to ``data/mount.json`` in the Nextcloud directory.
2361
-	 */
2362
-	'mount_file' => '/var/www/nextcloud/data/mount.json',
2363
-
2364
-	/**
2365
-	 * Prevent Nextcloud from updating the cache due to filesystem changes for all
2366
-	 * storage.
2367
-	 *
2368
-	 * Defaults to ``false``
2369
-	 */
2370
-	'filesystem_cache_readonly' => false,
2371
-
2372
-	/**
2373
-	 * List of trusted proxy servers. Supported formats:
2374
-	 * - IPv4 addresses, e.g., `192.168.2.123`
2375
-	 * - IPv4 ranges in CIDR notation, e.g., `192.168.2.0/24`
2376
-	 * - IPv6 addresses, e.g., `fd9e:21a7:a92c:2323::1`
2377
-	 * - IPv6 ranges in CIDR notation, e.g., `2001:db8:85a3:8d3:1319:8a20::/95`
2378
-	 *
2379
-	 * If a request's `REMOTE_ADDR` matches an address here, it is treated as a proxy,
2380
-	 * and the client IP is read from the HTTP header specified in
2381
-	 * `forwarded_for_headers` instead of `REMOTE_ADDR`.
2382
-	 *
2383
-	 * Ensure `forwarded_for_headers` is configured if `trusted_proxies` is set.
2384
-	 *
2385
-	 * Defaults to ``[]`` (empty array)
2386
-	 */
2387
-	'trusted_proxies' => ['203.0.113.45', '198.51.100.128', '192.168.2.0/24'],
2388
-
2389
-	/**
2390
-	 * Headers trusted as containing the client IP address when used with
2391
-	 * `trusted_proxies`. For example, use `HTTP_X_FORWARDED_FOR` for the
2392
-	 * `X-Forwarded-For` header.
2393
-	 *
2394
-	 * Incorrect configuration allows clients to spoof their IP address, bypassing
2395
-	 * access controls and rendering logs unreliable.
2396
-	 *
2397
-	 * Defaults to ``['HTTP_X_FORWARDED_FOR']``
2398
-	 */
2399
-	'forwarded_for_headers' => ['HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR'],
2400
-
2401
-	/**
2402
-	 * List of trusted IP ranges for admin actions. If non-empty, all admin actions
2403
-	 * must originate from IPs within these ranges.
2404
-	 *
2405
-	 * Supported formats:
2406
-	 * - IPv4 addresses or ranges, e.g., `192.0.2.42/32`, `233.252.0.0/24`
2407
-	 * - IPv6 addresses or ranges, e.g., `2001:db8::13:37/64`
2408
-	 *
2409
-	 * Defaults to ``[]`` (empty array)
2410
-	 */
2411
-	'allowed_admin_ranges' => ['192.0.2.42/32', '233.252.0.0/24', '2001:db8::13:37/64'],
2412
-
2413
-	/**
2414
-	 * Maximum file size (in megabytes) for animating GIFs on public sharing pages.
2415
-	 * If a GIF exceeds this size, a static preview is shown.
2416
-	 *
2417
-	 * Set to ``-1`` for no limit.
2418
-	 *
2419
-	 * Defaults to ``10`` megabytes
2420
-	 */
2421
-	'max_filesize_animated_gifs_public_sharing' => 10,
2422
-
2423
-	/**
2424
-	 * Set the lock's time-to-live (TTL) in seconds. Locks older than this are
2425
-	 * automatically cleaned up.
2426
-	 *
2427
-	 * Defaults to ``3600`` seconds (1 hour) or the PHP `max_execution_time`,
2428
-	 * whichever is higher.
2429
-	 */
2430
-	'filelocking.ttl' => 60 * 60,
2431
-
2432
-	/**
2433
-	 * Memory caching backend for file locking. Redis is highly recommended to avoid
2434
-	 * data loss, as many memcache backends may evict values unexpectedly.
2435
-	 *
2436
-	 * Defaults to ``none``
2437
-	 */
2438
-	'memcache.locking' => '\\OC\\Memcache\\Redis',
2439
-
2440
-	/**
2441
-	 * Enable debug logging for file locking. This can generate a large volume of log
2442
-	 * entries, potentially causing performance degradation and large log files on
2443
-	 * busy instances.
2444
-	 *
2445
-	 * Use with `log.condition` to limit logging in production environments.
2446
-	 *
2447
-	 * Defaults to ``false``
2448
-	 */
2449
-	'filelocking.debug' => false,
2450
-
2451
-	/**
2452
-	 * Disable the web-based updater.
2453
-	 *
2454
-	 * Defaults to ``false``
2455
-	 */
2456
-	'upgrade.disable-web' => false,
2457
-
2458
-	/**
2459
-	 * Customize the CLI upgrade documentation link.
2460
-	 */
2461
-	'upgrade.cli-upgrade-link' => '',
2462
-
2463
-	/**
2464
-	 * Additional line(s) (string or array of strings)
2465
-	 * that will be added to .user.ini on each update by the updater.
2466
-	 *
2467
-	 * Defaults to ``''`` (empty string)
2468
-	 */
2469
-	'user_ini_additional_lines' => '',
2470
-
2471
-	/**
2472
-	 * Customize the server logs documentation link for exception handling.
2473
-	 */
2474
-	'documentation_url.server_logs' => '',
2475
-
2476
-	/**
2477
-	 * Enable debugging mode for Nextcloud. Only use for local development, not in
2478
-	 * production, as it disables minification and outputs additional debug
2479
-	 * information.
2480
-	 *
2481
-	 * Defaults to ``false``
2482
-	 */
2483
-	'debug' => false,
2484
-
2485
-	/**
2486
-	 * Set the data fingerprint for the current data served. Used by clients to
2487
-	 * detect if a backup has been restored. Update this by running:
2488
-	 * ./occ maintenance:data-fingerprint
2489
-	 *
2490
-	 * Changing or deleting this value may cause connected clients to stall until
2491
-	 * conflicts are resolved.
2492
-	 *
2493
-	 * Defaults to ``''`` (empty string)
2494
-	 */
2495
-	'data-fingerprint' => '',
2496
-
2497
-	/**
2498
-	 * This entry serves as a warning if the sample configuration was copied.
2499
-	 * DO NOT ADD THIS TO YOUR CONFIGURATION!
2500
-	 *
2501
-	 * Ensure all settings are modified only after consulting the documentation.
2502
-	 */
2503
-	'copied_sample_config' => true,
2504
-
2505
-	/**
2506
-	 * Use a custom lookup server to publish user data.
2507
-	 *
2508
-	 * Defaults to ``https://lookup.nextcloud.com``
2509
-	 */
2510
-	'lookup_server' => 'https://lookup.nextcloud.com',
2511
-
2512
-	/**
2513
-	 * Enable Nextcloud's Global Scale architecture.
2514
-	 *
2515
-	 * Defaults to ``false``
2516
-	 */
2517
-	'gs.enabled' => false,
2518
-
2519
-	/**
2520
-	 * Configure federation for Global Scale setups. Set to 'global' to allow
2521
-	 * federation outside the environment.
2522
-	 *
2523
-	 * Defaults to ``internal``
2524
-	 */
2525
-	'gs.federation' => 'internal',
2526
-
2527
-	/**
2528
-	 * List of user agents exempt from SameSite cookie protection due to non-standard
2529
-	 * HTTP behavior.
2530
-	 *
2531
-	 * WARNING: Use only if you understand the implications.
2532
-	 *
2533
-	 * Defaults to:
2534
-	 * - /^WebDAVFS/ (OS X Finder)
2535
-	 * - /^Microsoft-WebDAV-MiniRedir/ (Windows WebDAV drive)
2536
-	 */
2537
-	'csrf.optout' => [
2538
-		'/^WebDAVFS/', // OS X Finder
2539
-		'/^Microsoft-WebDAV-MiniRedir/', // Windows WebDAV drive
2540
-	],
2541
-
2542
-	/**
2543
-	 * Specify allowed user agents for Login Flow V2 using regular expressions.
2544
-	 * User agents not matching this list are denied access to Login Flow V2.
2545
-	 *
2546
-	 * WARNING: Use only if you understand the implications.
2547
-	 *
2548
-	 * Example: Allow only the Nextcloud Android app:
2549
-	 * 'core.login_flow_v2.allowed_user_agents' => ['/Nextcloud-android/i'],
2550
-	 *
2551
-	 * Defaults to ``[]`` (empty array)
2552
-	 */
2553
-	'core.login_flow_v2.allowed_user_agents' => [],
2554
-
2555
-	/**
2556
-	 * Show or hide the "simple sign up" link on public pages.
2557
-	 * See: https://nextcloud.com/signup/
2558
-	 *
2559
-	 * Defaults to ``true``
2560
-	 */
2561
-	'simpleSignUpLink.shown' => true,
2562
-
2563
-	/**
2564
-	 * Enable or disable autocompletion for the login form. Disabling this prevents
2565
-	 * browsers from remembering login credentials, which may be required for
2566
-	 * compliance with certain security policies.
2567
-	 *
2568
-	 * Defaults to ``true``
2569
-	 */
2570
-	'login_form_autocomplete' => true,
2571
-
2572
-	/**
2573
-	 * Set a timeout (in seconds) for the login form. After this period, the form is
2574
-	 * reset to prevent password leaks on public devices if the user forgets to clear
2575
-	 * it.
2576
-	 *
2577
-	 * A value of 0 disables the timeout.
2578
-	 *
2579
-	 * Defaults to ``300`` seconds (5 minutes)
2580
-	 */
2581
-	'login_form_timeout' => 300,
2582
-
2583
-	/**
2584
-	 * Suppress warnings for outdated or unsupported browsers. When enabled, users
2585
-	 * can bypass the warning after reading it.
2586
-	 *
2587
-	 * Set to ``true`` to disable the warning.
2588
-	 *
2589
-	 * Defaults to ``false``
2590
-	 */
2591
-	'no_unsupported_browser_warning' => false,
2592
-
2593
-	/**
2594
-	 * Disable background scanning of files. When enabled, a background job runs
2595
-	 * every 10 minutes to sync the filesystem and database for up to 500 users with
2596
-	 * unscanned files (size < 0 in filecache).
2597
-	 *
2598
-	 * Defaults to ``false``
2599
-	 */
2600
-	'files_no_background_scan' => false,
2601
-
2602
-	/**
2603
-	 * Log all database queries to a file.
2604
-	 *
2605
-	 * WARNING: This significantly reduces server performance and is intended only
2606
-	 * for debugging or profiling query interactions. Sensitive data may be logged in
2607
-	 * plain text.
2608
-	 */
2609
-	'query_log_file' => '',
2610
-
2611
-	/**
2612
-	 * Prefix all queries with the request ID when set to `yes`.
2613
-	 *
2614
-	 * Requires `query_log_file` to be set.
2615
-	 */
2616
-	'query_log_file_requestid' => '',
2617
-
2618
-	/**
2619
-	 * Include all query parameters in the query log when set to `yes`.
2620
-	 *
2621
-	 * Requires `query_log_file` to be set.
2622
-	 * WARNING: This may log sensitive data in plain text.
2623
-	 */
2624
-	'query_log_file_parameters' => '',
2625
-
2626
-	/**
2627
-	 * Include a backtrace in the query log when set to `yes`.
2628
-	 *
2629
-	 * Requires `query_log_file` to be set.
2630
-	 */
2631
-	'query_log_file_backtrace' => '',
2632
-
2633
-	/**
2634
-	 * Log all Redis requests to a file.
2635
-	 *
2636
-	 * WARNING: This significantly reduces server performance and is intended only
2637
-	 * for debugging or profiling Redis interactions. Sensitive data may be logged in
2638
-	 * plain text.
2639
-	 */
2640
-	'redis_log_file' => '',
2641
-
2642
-	/**
2643
-	 * Enable diagnostics event logging. Logs timings of common execution steps at
2644
-	 * debug level. Use with `log.condition` to enable conditionally in production.
2645
-	 *
2646
-	 * Defaults to ``true``
2647
-	 */
2648
-	'diagnostics.logging' => true,
2649
-
2650
-	/**
2651
-	 * Limit diagnostics event logging to events longer than the specified threshold
2652
-	 * (in milliseconds). A value of 0 disables diagnostics event logging.
2653
-	 */
2654
-	'diagnostics.logging.threshold' => 0,
2655
-
2656
-	/**
2657
-	 * Enable profiling globally.
2658
-	 *
2659
-	 * Defaults to ``true``
2660
-	 */
2661
-	'profile.enabled' => true,
2662
-
2663
-	/**
2664
-	 * Override default scopes for account data. Valid properties and scopes are
2665
-	 * defined in ``OCP\Accounts\IAccountManager``. Values are merged with defaults
2666
-	 * from ``OC\Accounts\AccountManager``.
2667
-	 *
2668
-	 * Example: Set phone property to private scope:
2669
-	 * ``[\OCP\Accounts\IAccountManager::PROPERTY_PHONE => \OCP\Accounts\IAccountManager::SCOPE_PRIVATE]``
2670
-	 */
2671
-	'account_manager.default_property_scope' => [],
2672
-
2673
-	/**
2674
-	 * Enable the deprecated Projects feature, superseded by Related Resources since
2675
-	 * Nextcloud 25.
2676
-	 *
2677
-	 * Defaults to ``false``
2678
-	 */
2679
-	'projects.enabled' => false,
2680
-
2681
-	/**
2682
-	 * Enable the bulk upload feature.
2683
-	 *
2684
-	 * Defaults to ``true``
2685
-	 */
2686
-	'bulkupload.enabled' => true,
2687
-
2688
-	/**
2689
-	 * Enable fetching Open Graph metadata from remote URLs.
2690
-	 *
2691
-	 * Defaults to ``true``
2692
-	 */
2693
-	'reference_opengraph' => true,
2694
-
2695
-	/**
2696
-	 * Enable the legacy unified search.
2697
-	 *
2698
-	 * Defaults to ``false``
2699
-	 */
2700
-	'unified_search.enabled' => false,
2701
-
2702
-	/**
2703
-	 * Enable features that do not yet comply with accessibility standards.
2704
-	 *
2705
-	 * Defaults to ``true``
2706
-	 */
2707
-	'enable_non-accessible_features' => true,
2708
-
2709
-	/**
2710
-	 * Directories where Nextcloud searches for external binaries (e.g., LibreOffice,
2711
-	 * sendmail, ffmpeg).
2712
-	 *
2713
-	 * Defaults to:
2714
-	 * - /usr/local/sbin
2715
-	 * - /usr/local/bin
2716
-	 * - /usr/sbin
2717
-	 * - /usr/bin
2718
-	 * - /sbin
2719
-	 * - /bin
2720
-	 * - /opt/bin
2721
-	 */
2722
-	'binary_search_paths' => [
2723
-		'/usr/local/sbin',
2724
-		'/usr/local/bin',
2725
-		'/usr/sbin',
2726
-		'/usr/bin',
2727
-		'/sbin',
2728
-		'/bin',
2729
-		'/opt/bin',
2730
-	],
2731
-
2732
-	/**
2733
-	 * Maximum chunk size for chunked uploads (in bytes). Larger chunks increase
2734
-	 * throughput but yield diminishing returns above 100 MiB. Services like
2735
-	 * Cloudflare may limit to 100 MiB.
2736
-	 *
2737
-	 * Defaults to ``100 * 1024 * 1024`` (100 MiB)
2738
-	 */
2739
-	'files.chunked_upload.max_size' => 100 * 1024 * 1024,
2740
-
2741
-	/**
2742
-	 * Maximum number of chunks uploaded in parallel during chunked uploads. Higher
2743
-	 * counts increase throughput but consume more server resources, with diminishing
2744
-	 * returns.
2745
-	 *
2746
-	 * Defaults to ``5``
2747
-	 */
2748
-	'files.chunked_upload.max_parallel_count' => 5,
2749
-
2750
-	/**
2751
-	 * Allow users to manually delete files from their trashbin. Automated deletions
2752
-	 * (e.g., due to low quota) are unaffected.
2753
-	 *
2754
-	 * Defaults to ``true``
2755
-	 */
2756
-	'files.trash.delete' => true,
2757
-
2758
-	/**
2759
-	 * Enable PHP 8.4 lazy objects for Dependency Injection to improve performance by
2760
-	 * avoiding instantiation of unused objects.
2761
-	 *
2762
-	 * Defaults to ``true``
2763
-	 */
2764
-	'enable_lazy_objects' => true,
32
+    /**
33
+     * Default Parameters
34
+     *
35
+     * These parameters are configured by the Nextcloud installer, and are required
36
+     * for your Nextcloud server to operate.
37
+     */
38
+
39
+
40
+    /**
41
+     * This is a unique identifier for your Nextcloud installation, created
42
+     * automatically by the installer. This example is for documentation only,
43
+     * and you should never use it because it will not work. A valid ``instanceid``
44
+     * is created when you install Nextcloud.
45
+     *
46
+     * 'instanceid' => 'd3c944a9a',
47
+     */
48
+    'instanceid' => '',
49
+
50
+    /**
51
+     * The salt used to hash all passwords, auto-generated by the Nextcloud
52
+     * installer. (There are also per-user salts.) If you lose this salt, you lose
53
+     * all your passwords. This example is for documentation only, and you should
54
+     * never use it.
55
+     *
56
+     * @deprecated This salt is deprecated and only used for legacy-compatibility,
57
+     * developers should *NOT* use this value for anything nowadays.
58
+     *
59
+     * 'passwordsalt' => 'd3c944a9af095aa08f',
60
+     */
61
+    'passwordsalt' => '',
62
+
63
+    /**
64
+     * Secret used by Nextcloud for various purposes, e.g., to encrypt data. If you
65
+     * lose this string, there will be data corruption.
66
+     */
67
+    'secret' => '',
68
+
69
+    /**
70
+     * Your list of trusted domains that users can log into. Specifying trusted
71
+     * domains prevents host header poisoning. Do not remove this, as it performs
72
+     * necessary security checks.
73
+     * You can specify:
74
+     *
75
+     * - The exact hostname of your host or virtual host, e.g., demo.example.org.
76
+     * - The exact hostname with permitted port, e.g., demo.example.org:443.
77
+     *   This disallows all other ports on this host
78
+     * - Use * as a wildcard, e.g., ubos-raspberry-pi*.local will allow
79
+     *   ubos-raspberry-pi.local and ubos-raspberry-pi-2.local
80
+     * - The IP address with or without permitted port, e.g., [2001:db8::1]:8080
81
+     *   Using TLS certificates where commonName=<IP address> is deprecated
82
+     */
83
+    'trusted_domains' => [
84
+        'demo.example.org',
85
+        'otherdomain.example.org',
86
+        '10.111.112.113',
87
+        '[2001:db8::1]'
88
+    ],
89
+
90
+    /**
91
+     * The validity domain for cookies, for example '' (cookies will be sent only
92
+     * the domain that defined it, e.g. 'demo.example.org'), 'demo.example.org'
93
+     * (cookies will be valid for the domain and all subdomains), ...
94
+     *
95
+     * Defaults to '' (safe option)
96
+     */
97
+    'cookie_domain' => '',
98
+
99
+    /**
100
+     * Where user files are stored. The SQLite database is also stored here, when
101
+     * you use SQLite.
102
+     *
103
+     * Default to ``data/`` in the Nextcloud directory.
104
+     */
105
+    'datadirectory' => '/var/www/nextcloud/data',
106
+
107
+    /**
108
+     * The current version number of your Nextcloud installation. This is set up
109
+     * during installation and update, so you shouldn't need to change it.
110
+     */
111
+    'version' => '',
112
+
113
+    /**
114
+     * Identifies the database used with this installation. See also config option
115
+     * ``supportedDatabases``
116
+     *
117
+     * Available:
118
+     *  - sqlite3 (SQLite3)
119
+     *  - mysql (MySQL/MariaDB)
120
+     *  - pgsql (PostgreSQL)
121
+     *
122
+     * Defaults to ``sqlite3``
123
+     */
124
+    'dbtype' => 'sqlite3',
125
+
126
+    /**
127
+     * Your host server name, for example ``localhost``, ``hostname``,
128
+     * ``hostname.example.com``, or the IP address.
129
+     * To specify a port, use ``hostname:####``; for IPv6 addresses, use the URI notation ``[ip]:port``.
130
+     * To specify a Unix socket, use ``localhost:/path/to/directory/containing/socket`` or
131
+     * ``:/path/to/directory/containing/socket``, e.g., ``localhost:/run/postgresql/``.
132
+     */
133
+    'dbhost' => '',
134
+
135
+    /**
136
+     * The name of the Nextcloud database, which is set during installation. You
137
+     * should not need to change this.
138
+     */
139
+    'dbname' => 'nextcloud',
140
+
141
+    /**
142
+     * The user that Nextcloud uses to write to the database. This must be unique
143
+     * across Nextcloud instances using the same SQL database. This is set up during
144
+     * installation, so you shouldn't need to change it.
145
+     */
146
+    'dbuser' => '',
147
+
148
+    /**
149
+     * The password for the database user. This is set up during installation, so
150
+     * you shouldn't need to change it.
151
+     */
152
+    'dbpassword' => '',
153
+
154
+    /**
155
+     * Prefix for the Nextcloud tables in the database.
156
+     *
157
+     * Default to ``oc_``
158
+     */
159
+    'dbtableprefix' => 'oc_',
160
+
161
+    /**
162
+     * Enable persistent connections to the database.
163
+     * This setting uses the "persistent" option from Doctrine DBAL, which in turn
164
+     * uses the PDO::ATTR_PERSISTENT option from the PDO driver.
165
+     */
166
+    'dbpersistent' => '',
167
+
168
+    /**
169
+     * Specify read-only replicas to be used by Nextcloud when querying the database
170
+     */
171
+    'dbreplica' => [
172
+        ['user' => 'nextcloud', 'password' => 'password1', 'host' => 'replica1', 'dbname' => ''],
173
+        ['user' => 'nextcloud', 'password' => 'password2', 'host' => 'replica2', 'dbname' => ''],
174
+    ],
175
+
176
+    /**
177
+     * Add request ID to the database query in a comment.
178
+     *
179
+     * This can be enabled to assist in mapping database logs to Nextcloud logs.
180
+     */
181
+    'db.log_request_id' => false,
182
+
183
+    /**
184
+     * Indicates whether the Nextcloud instance was installed successfully; ``true``
185
+     * indicates a successful installation, and ``false`` indicates an unsuccessful
186
+     * installation.
187
+     *
188
+     * Defaults to ``false``
189
+     */
190
+    'installed' => false,
191
+
192
+
193
+    /**
194
+     * User Experience
195
+     *
196
+     * These optional parameters control some aspects of the user interface. Default
197
+     * values, where present, are shown.
198
+     */
199
+
200
+    /**
201
+     * This sets the default language on your Nextcloud server, using ISO_639-1
202
+     * language codes such as ``en`` for English, ``de`` for German, and ``fr`` for
203
+     * French. The default_language parameter is only used when the browser does
204
+     * not send any language, and the user hasn’t configured their own language
205
+     * preferences.
206
+     *
207
+     * Nextcloud has two distinguished language codes for German, 'de' and 'de_DE'.
208
+     * 'de' is used for informal German and 'de_DE' for formal German. By setting
209
+     * this value to 'de_DE', you can enforce the formal version of German unless
210
+     * the user has chosen something different explicitly.
211
+     *
212
+     * Defaults to ``en``
213
+     */
214
+    'default_language' => 'en',
215
+
216
+    /**
217
+     * With this setting, a language can be forced for all users. If a language is
218
+     * forced, the users are also unable to change their language in the personal
219
+     * settings. If users shall be unable to change their language, but users have
220
+     * different languages, this value can be set to ``true`` instead of a language
221
+     * code.
222
+     *
223
+     * Defaults to ``false``
224
+     */
225
+    'force_language' => 'en',
226
+
227
+    /**
228
+     * This sets the default locale on your Nextcloud server, using ISO_639
229
+     * language codes such as ``en`` for English, ``de`` for German, and ``fr`` for
230
+     * French, and ISO-3166 country codes such as ``GB``, ``US``, ``CA``, as defined
231
+     * in RFC 5646. It overrides automatic locale detection on public pages like
232
+     * login or shared items. User's locale preferences configured under "personal
233
+     * -> locale" override this setting after they have logged in.
234
+     *
235
+     * Defaults to ``en``
236
+     */
237
+    'default_locale' => 'en_US',
238
+
239
+    /**
240
+     * With this setting, it is possible to reduce the languages available in the
241
+     * language chooser. The languages have to be set as array values using ISO_639-1
242
+     * language codes such as ``en`` for English, ``de`` for German, etc.
243
+     *
244
+     * For example: Set to ['de', 'fr'] to only allow German and French languages.
245
+     */
246
+    'reduce_to_languages' => [],
247
+
248
+    /**
249
+     * This sets the default region for phone numbers on your Nextcloud server,
250
+     * using ISO 3166-1 country codes such as ``DE`` for Germany, ``FR`` for France, …
251
+     * It is required to allow inserting phone numbers in the user profiles starting
252
+     * without the country code (e.g., +49 for Germany).
253
+     *
254
+     * No default value!
255
+     */
256
+    'default_phone_region' => 'GB',
257
+
258
+    /**
259
+     * With this setting, a locale can be forced for all users. If a locale is
260
+     * forced, the users are also unable to change their locale in the personal
261
+     * settings. If users shall be unable to change their locale, but users have
262
+     * different languages, this value can be set to ``true`` instead of a locale
263
+     * code.
264
+     *
265
+     * Defaults to ``false``
266
+     */
267
+    'force_locale' => 'en_US',
268
+
269
+    /**
270
+     * This sets the default timezone on your Nextcloud server, using IANA
271
+     * identifiers like ``Europe/Berlin`` or ``Pacific/Auckland``. The default
272
+     * timezone parameter is only used when the timezone of the user cannot be
273
+     * determined.
274
+     *
275
+     * Defaults to ``UTC``
276
+     */
277
+    'default_timezone' => 'Europe/Berlin',
278
+
279
+    /**
280
+     * ``true`` enables the Help menu item in the user menu (top right of the
281
+     * Nextcloud Web interface). ``false`` removes the Help item.
282
+     */
283
+    'knowledgebaseenabled' => true,
284
+
285
+    /**
286
+     * ``true`` embeds the documentation in an iframe inside Nextcloud.
287
+     * ``false`` only shows buttons to the online documentation.
288
+     */
289
+    'knowledgebase.embedded' => false,
290
+
291
+    /**
292
+     * ``true`` allows users to change their display names (on their Personal
293
+     * pages), and ``false`` prevents them from changing their display names.
294
+     */
295
+    'allow_user_to_change_display_name' => true,
296
+
297
+    /**
298
+     * The directory where the skeleton files are located. These files will be
299
+     * copied to the data directory of new users. Set empty string to not copy any
300
+     * skeleton files. If unset and templatedirectory is an empty string, shipped
301
+     * templates will be used to create a template directory for the user.
302
+     * ``{lang}`` can be used as a placeholder for the language of the user.
303
+     * If the directory does not exist, it falls back to non-dialect (from ``de_DE``
304
+     * to ``de``). If that does not exist either, it falls back to ``default``
305
+     *
306
+     * Defaults to ``core/skeleton`` in the Nextcloud directory.
307
+     */
308
+    'skeletondirectory' => '/path/to/nextcloud/core/skeleton',
309
+
310
+    /**
311
+     * The directory where the template files are located. These files will be
312
+     * copied to the template directory of new users. Set empty string to not copy any
313
+     * template files.
314
+     * ``{lang}`` can be used as a placeholder for the language of the user.
315
+     * If the directory does not exist, it falls back to non-dialect (from ``de_DE``
316
+     * to ``de``). If that does not exist either, it falls back to ``default``
317
+     *
318
+     * To disable creating a template directory, set both skeletondirectory and
319
+     * templatedirectory to empty strings.
320
+     */
321
+    'templatedirectory' => '/path/to/nextcloud/templates',
322
+
323
+    /**
324
+     * User session
325
+     */
326
+
327
+    /**
328
+     * Lifetime of the remember login cookie. This should be larger than the
329
+     * session_lifetime. If it is set to 0, remember me is disabled.
330
+     *
331
+     * Defaults to ``60*60*24*15`` seconds (15 days)
332
+     */
333
+    'remember_login_cookie_lifetime' => 60 * 60 * 24 * 15,
334
+
335
+    /**
336
+     * The lifetime of a session after inactivity.
337
+     *
338
+     * The maximum possible time is limited by the session.gc_maxlifetime php.ini setting
339
+     * which would overwrite this option if it is less than the value in the config.php
340
+     *
341
+     * Defaults to ``60*60*24`` seconds (24 hours)
342
+     */
343
+    'session_lifetime' => 60 * 60 * 24,
344
+
345
+    /**
346
+     * The timeout in seconds for requests to servers made by the DAV component (e.g., needed for federated shares).
347
+     */
348
+    'davstorage.request_timeout' => 30,
349
+
350
+    /**
351
+     * The timeout in seconds for synchronizing address books, e.g., federated system address books (as run by `occ federation:sync-addressbooks`).
352
+     *
353
+     * Defaults to ``30`` seconds
354
+     */
355
+    'carddav_sync_request_timeout' => 30,
356
+
357
+    /**
358
+     * The limit applied to the synchronization report request, e.g. federated system address books (as run by `occ federation:sync-addressbooks`).
359
+     */
360
+    'carddav_sync_request_truncation' => 2500,
361
+
362
+    /**
363
+     * `true` enables a relaxed session timeout, where the session timeout would no longer be
364
+     * handled by Nextcloud but by either the PHP garbage collection or the expiration of
365
+     * potential other session backends like Redis.
366
+     *
367
+     * This may lead to sessions being available for longer than what session_lifetime uses but
368
+     * comes with performance benefits as sessions are no longer a locking operation for concurrent
369
+     * requests.
370
+     */
371
+    'session_relaxed_expiry' => false,
372
+
373
+    /**
374
+     * Enable or disable session keep-alive when a user is logged in to the Web UI.
375
+     * Enabling this sends a "heartbeat" to the server to keep it from timing out.
376
+     *
377
+     * Defaults to ``true``
378
+     */
379
+    'session_keepalive' => true,
380
+
381
+    /**
382
+     * Enable or disable the automatic logout after session_lifetime, even if session
383
+     * keepalive is enabled. This will make sure that an inactive browser will log itself out
384
+     * even if requests to the server might extend the session lifetime. Note: the logout is
385
+     * handled on the client side. This is not a way to limit the duration of potentially
386
+     * compromised sessions.
387
+     *
388
+     * Defaults to ``false``
389
+     */
390
+    'auto_logout' => false,
391
+
392
+    /**
393
+     * Enforce token authentication for clients, which blocks requests using the user
394
+     * password for enhanced security. Users need to generate tokens in personal settings
395
+     * which can be used as passwords on their clients.
396
+     *
397
+     * Defaults to ``false``
398
+     */
399
+    'token_auth_enforced' => false,
400
+
401
+    /**
402
+     * The interval at which token activity should be updated.
403
+     * Increasing this value means that the last activity on the security page gets
404
+     * more outdated.
405
+     *
406
+     * Tokens are still checked every 5 minutes for validity
407
+     * max value: 300
408
+     *
409
+     * Defaults to ``60``
410
+     */
411
+    'token_auth_activity_update' => 60,
412
+
413
+    /**
414
+     * Whether the brute force protection shipped with Nextcloud should be enabled or not.
415
+     *
416
+     * Disabling this is discouraged for security reasons.
417
+     *
418
+     * Defaults to ``true``
419
+     */
420
+    'auth.bruteforce.protection.enabled' => true,
421
+
422
+    /**
423
+     * Whether the brute force protection should write into the database even when a memory cache is available
424
+     *
425
+     * Using the database is most likely worse for performance, but makes investigating
426
+     * issues a lot easier as it's possible to look directly at the table to see all
427
+     * logged remote addresses and actions.
428
+     *
429
+     * Defaults to ``false``
430
+     */
431
+    'auth.bruteforce.protection.force.database' => false,
432
+
433
+    /**
434
+     * Whether the brute force protection shipped with Nextcloud should be set to testing mode.
435
+     *
436
+     * In testing mode, brute force attempts are still recorded, but the requests do
437
+     * not sleep/wait for the specified time. They will still abort with
438
+     * "429 Too Many Requests" when the maximum delay is reached.
439
+     * Enabling this is discouraged for security reasons
440
+     * and should only be done for debugging and on CI when running tests.
441
+     *
442
+     * Defaults to ``false``
443
+     */
444
+    'auth.bruteforce.protection.testing' => false,
445
+
446
+    /**
447
+     * Brute force protection: maximum number of attempts before blocking
448
+     *
449
+     * When more than max-attempts login requests are sent to Nextcloud, requests
450
+     * will abort with "429 Too Many Requests".
451
+     * For security reasons, change it only if you know what you are doing.
452
+     *
453
+     * Defaults to ``10``
454
+     */
455
+    'auth.bruteforce.max-attempts' => 10,
456
+
457
+    /**
458
+     * Whether the rate limit protection shipped with Nextcloud should be enabled or not.
459
+     *
460
+     * Disabling this is discouraged for security reasons.
461
+     *
462
+     * Defaults to ``true``
463
+     */
464
+    'ratelimit.protection.enabled' => true,
465
+
466
+    /**
467
+     * Size of subnet used to normalize IPv6
468
+     *
469
+     * For Brute Force Protection and Rate Limiting, IPv6 addresses are truncated using subnet size.
470
+     * It defaults to /56, but you can set it between /32 and /64
471
+     *
472
+     * Defaults to ``56``
473
+     */
474
+    'security.ipv6_normalized_subnet_size' => 56,
475
+
476
+    /**
477
+     * By default, WebAuthn is available, but it can be explicitly disabled by admins
478
+     */
479
+    'auth.webauthn.enabled' => true,
480
+
481
+    /**
482
+     * Whether encrypted passwords should be stored in the database
483
+     *
484
+     * The passwords are only decrypted using the login token stored uniquely in the
485
+     * clients and allow connecting to external storages, autoconfiguring mail accounts in
486
+     * the mail app, and periodically checking if the password is still valid.
487
+     *
488
+     * This might be desirable to disable this functionality when using one-time
489
+     * passwords or when having a password policy enforcing long passwords (> 300
490
+     * characters).
491
+     *
492
+     * By default, the passwords are stored encrypted in the database.
493
+     *
494
+     * WARNING: If disabled, password changes on the user backend (e.g., on LDAP) no
495
+     * longer log connected clients out automatically. Users can still disconnect
496
+     * the clients by deleting the app token from the security settings.
497
+     */
498
+    'auth.storeCryptedPassword' => true,
499
+
500
+    /**
501
+     * By default, the login form is always available. There are cases (SSO) where an
502
+     * admin wants to avoid users entering their credentials to the system if the SSO
503
+     * app is unavailable.
504
+     *
505
+     * This will show an error. But the direct login still works with adding ?direct=1
506
+     */
507
+    'hide_login_form' => false,
508
+
509
+    /**
510
+     * If your user backend does not allow password resets (e.g., when it's a
511
+     * read-only user backend like LDAP), you can specify a custom link, where the
512
+     * user is redirected to, when clicking the "reset password" link after a failed
513
+     * login attempt.
514
+     * In case you do not want to provide any link, replace the URL with 'disabled'
515
+     */
516
+    'lost_password_link' => 'https://example.org/link/to/password/reset',
517
+
518
+    /**
519
+     * URL to use as target for the logo link in the header (top-left logo)
520
+     *
521
+     * Defaults to the base URL of your Nextcloud instance
522
+     */
523
+    'logo_url' => 'https://example.org',
524
+
525
+    /**
526
+     * Mail Parameters
527
+     *
528
+     * These configure the email settings for Nextcloud notifications and password
529
+     * resets.
530
+     */
531
+
532
+    /**
533
+     * The return address that you want to appear on emails sent by the Nextcloud
534
+     * server, for example ``[email protected]``, substituting your own domain,
535
+     * of course.
536
+     */
537
+    'mail_domain' => 'example.com',
538
+
539
+    /**
540
+     * FROM address that overrides the built-in ``sharing-noreply`` and
541
+     * ``lostpassword-noreply`` FROM addresses.
542
+     *
543
+     * Defaults to different FROM addresses depending on the feature.
544
+     */
545
+    'mail_from_address' => 'nextcloud',
546
+
547
+    /**
548
+     * Enable SMTP class debugging.
549
+     * NOTE: ``loglevel`` will likely need to be adjusted too. See docs:
550
+     *   https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/email_configuration.html#enabling-debug-mode
551
+     *
552
+     * Defaults to ``false``
553
+     */
554
+    'mail_smtpdebug' => false,
555
+
556
+    /**
557
+     * Which mode to use for sending mail: ``sendmail``, ``smtp``, ``qmail``, or ``null``.
558
+     *
559
+     * If you are using local or remote SMTP, set this to ``smtp``.
560
+     *
561
+     * For the ``sendmail`` option, you need an installed and working email system on
562
+     * the server, with ``/usr/sbin/sendmail`` installed on your Unix system.
563
+     *
564
+     * For ``qmail``, the binary is /var/qmail/bin/sendmail, and it must be installed
565
+     * on your Unix system.
566
+     *
567
+     * Use the string ``null`` to send no mails (disable mail delivery). This can be
568
+     * useful if mails should be sent via APIs and rendering messages is not necessary.
569
+     *
570
+     * Defaults to ``smtp``
571
+     */
572
+    'mail_smtpmode' => 'smtp',
573
+
574
+    /**
575
+     * This depends on ``mail_smtpmode``. Specify the IP address of your mail
576
+     * server host. This may contain multiple hosts separated by a semicolon. If
577
+     * you need to specify the port number, append it to the IP address separated by
578
+     * a colon, like this: ``127.0.0.1:24``.
579
+     *
580
+     * Defaults to ``127.0.0.1``
581
+     */
582
+    'mail_smtphost' => '127.0.0.1',
583
+
584
+    /**
585
+     * This depends on ``mail_smtpmode``. Specify the port for sending mail.
586
+     *
587
+     * Defaults to ``25``
588
+     */
589
+    'mail_smtpport' => 25,
590
+
591
+    /**
592
+     * This depends on ``mail_smtpmode``. This sets the SMTP server timeout, in
593
+     * seconds. You may need to increase this if you are running an anti-malware or
594
+     * spam scanner.
595
+     *
596
+     * Defaults to ``10`` seconds
597
+     */
598
+    'mail_smtptimeout' => 10,
599
+
600
+    /**
601
+     * This depends on ``mail_smtpmode``. Specify ``ssl`` when you are using SSL/TLS. Any other value will be ignored.
602
+     *
603
+     * If the server advertises STARTTLS capabilities, they might be used, but they cannot be enforced by
604
+     * this config option.
605
+     *
606
+     * Defaults to ``''`` (empty string)
607
+     */
608
+    'mail_smtpsecure' => '',
609
+
610
+    /**
611
+     * This depends on ``mail_smtpmode``. Change this to ``true`` if your mail
612
+     * server requires authentication.
613
+     *
614
+     * Defaults to ``false``
615
+     */
616
+    'mail_smtpauth' => false,
617
+
618
+    /**
619
+     * This depends on ``mail_smtpauth``. Specify the username for authenticating to
620
+     * the SMTP server.
621
+     *
622
+     * Defaults to ``''`` (empty string)
623
+     */
624
+    'mail_smtpname' => '',
625
+
626
+    /**
627
+     * This depends on ``mail_smtpauth``. Specify the password for authenticating to
628
+     * the SMTP server.
629
+     *
630
+     * Default to ``''`` (empty string)
631
+     */
632
+    'mail_smtppassword' => '',
633
+
634
+    /**
635
+     * Replaces the default mail template layout. This can be utilized if the
636
+     * options to modify the mail texts with the theming app are not enough.
637
+     * The class must extend ``\OC\Mail\EMailTemplate``
638
+     */
639
+    'mail_template_class' => '\OC\Mail\EMailTemplate',
640
+
641
+    /**
642
+     * Email will be sent by default with an HTML and a plain text body. This option
643
+     * allows sending only plain text emails.
644
+     */
645
+    'mail_send_plaintext_only' => false,
646
+
647
+    /**
648
+     * This depends on ``mail_smtpmode``. Array of additional streams options that
649
+     * will be passed to underlying Swift mailer implementation.
650
+     * Defaults to an empty array.
651
+     */
652
+    'mail_smtpstreamoptions' => [],
653
+
654
+    /**
655
+     * Which mode is used for sendmail/qmail: ``smtp`` or ``pipe``.
656
+     *
657
+     * For ``smtp``, the sendmail binary is started with the parameter ``-bs``:
658
+     *   - Use the SMTP protocol on standard input and output.
659
+     *
660
+     * For ``pipe``, the binary is started with the parameters ``-t``:
661
+     *   - Read message from STDIN and extract recipients.
662
+     *
663
+     * Defaults to ``smtp``
664
+     */
665
+    'mail_sendmailmode' => 'smtp',
666
+
667
+    /**
668
+     * Proxy Configurations
669
+     */
670
+
671
+    /**
672
+     * The automatic hostname detection of Nextcloud can fail in certain reverse
673
+     * proxy and CLI/cron situations. This option allows you to manually override
674
+     * the automatic detection; for example, ``www.example.com``, or specify the port
675
+     * ``www.example.com:8080``.
676
+     */
677
+    'overwritehost' => '',
678
+
679
+    /**
680
+     * When generating URLs, Nextcloud attempts to detect whether the server is
681
+     * accessed via ``https`` or ``http``. However, if Nextcloud is behind a proxy
682
+     * and the proxy handles the ``https`` calls, Nextcloud would not know that
683
+     * ``ssl`` is in use, which would result in incorrect URLs being generated.
684
+     * Valid values are ``http`` and ``https``.
685
+     */
686
+    'overwriteprotocol' => '',
687
+
688
+    /**
689
+     * Nextcloud attempts to detect the webroot for generating URLs automatically.
690
+     * For example, if ``www.example.com/nextcloud`` is the URL pointing to the
691
+     * Nextcloud instance, the webroot is ``/nextcloud``. When proxies are in use,
692
+     * it may be difficult for Nextcloud to detect this parameter, resulting in
693
+     * invalid URLs.
694
+     */
695
+    'overwritewebroot' => '',
696
+
697
+    /**
698
+     * This option allows you to define a manual override condition as a regular
699
+     * expression for the remote IP address. For example, defining a range of IP
700
+     * addresses starting with ``10.0.0.`` and ending with 1 to 3:
701
+     * ``^10\.0\.0\.[1-3]$``
702
+     *
703
+     * Defaults to ``''`` (empty string)
704
+     */
705
+    'overwritecondaddr' => '',
706
+
707
+    /**
708
+     * Use this configuration parameter to specify the base URL for any URLs which
709
+     * are generated within Nextcloud using any kind of command line tools (cron or
710
+     * occ). The value should contain the full base URL:
711
+     * ``https://www.example.com/nextcloud``
712
+     * Please make sure to set the value to the URL that your users mainly use to access this Nextcloud.
713
+     * Otherwise, there might be problems with the URL generation via cron.
714
+     *
715
+     * Defaults to ``''`` (empty string)
716
+     */
717
+    'overwrite.cli.url' => '',
718
+
719
+    /**
720
+     * To have clean URLs without `/index.php`, this parameter needs to be configured.
721
+     *
722
+     * This parameter will be written as "RewriteBase" on update and installation of
723
+     * Nextcloud to your `.htaccess` file. While this value is often simply the URL
724
+     * path of the Nextcloud installation, it cannot be set automatically properly in
725
+     * every scenario and needs thus some manual configuration.
726
+     *
727
+     * In a standard Apache setup, this usually equals the folder that Nextcloud is
728
+     * accessible at. So if Nextcloud is accessible via "https://mycloud.org/nextcloud",
729
+     * the correct value would most likely be "/nextcloud". If Nextcloud is running
730
+     * under "https://mycloud.org/", then it would be "/".
731
+     *
732
+     * Note that the above rule is not valid in every case, as there are some rare setup
733
+     * cases where this may not apply. However, to avoid any update problems, this
734
+     * configuration value is explicitly opt-in.
735
+     *
736
+     * After setting this value, run `occ maintenance:update:htaccess`. Now, when the
737
+     * following conditions are met, Nextcloud URLs won't contain `index.php`:
738
+     *
739
+     * - `mod_rewrite` is installed
740
+     * - `mod_env` is installed
741
+     *
742
+     * Defaults to ``''`` (empty string)
743
+     */
744
+    'htaccess.RewriteBase' => '/',
745
+
746
+    /**
747
+     * For server setups that don't have `mod_env` enabled or restricted (e.g., suEXEC),
748
+     * this parameter has to be set to true and will assume mod_rewrite.
749
+     *
750
+     * Please check if `mod_rewrite` is active and functional before setting this
751
+     * parameter, and you updated your .htaccess with `occ maintenance:update:htaccess`.
752
+     * Otherwise, your Nextcloud installation might not be reachable anymore.
753
+     * For example, try accessing resources by leaving out `index.php` in the URL.
754
+     */
755
+    'htaccess.IgnoreFrontController' => false,
756
+
757
+    /**
758
+     * The URL of your proxy server, for example, ``proxy.example.com:8081``.
759
+     *
760
+     * Note: Guzzle (the HTTP library used by Nextcloud) reads the environment
761
+     * variables HTTP_PROXY (only for CLI requests), HTTPS_PROXY, and NO_PROXY by default.
762
+     *
763
+     * If you configure a proxy with Nextcloud, any default configuration by Guzzle
764
+     * is overwritten. Make sure to set ``proxyexclude`` accordingly if necessary.
765
+     *
766
+     * Defaults to ``''`` (empty string)
767
+     */
768
+    'proxy' => '',
769
+
770
+    /**
771
+     * The optional authentication for the proxy to use to connect to the internet.
772
+     * The format is: ``username:password``.
773
+     *
774
+     * Defaults to ``''`` (empty string)
775
+     */
776
+    'proxyuserpwd' => '',
777
+
778
+    /**
779
+     * List of hostnames that should not be proxied to.
780
+     * For example: ``['.mit.edu', 'foo.com']``.
781
+     *
782
+     * Hint: Use something like ``explode(',', getenv('NO_PROXY'))`` to sync this
783
+     * value with the global NO_PROXY option.
784
+     *
785
+     * Defaults to empty array.
786
+     */
787
+    'proxyexclude' => [],
788
+
789
+    /**
790
+     * Allow remote servers with local addresses, e.g., in federated shares, webcal services, and more
791
+     *
792
+     * Defaults to false
793
+     */
794
+    'allow_local_remote_servers' => true,
795
+
796
+    /**
797
+     * Deleted Items (trash bin)
798
+     *
799
+     * These parameters control the Deleted files app.
800
+     */
801
+
802
+    /**
803
+     * If the trash bin app is enabled (default), this setting defines the policy
804
+     * for when files and folders in the trash bin will be permanently deleted.
805
+     *
806
+     * If the user quota limit is exceeded due to deleted files in the trash bin,
807
+     * retention settings will be ignored and files will be cleaned up until
808
+     * the quota requirements are met.
809
+     *
810
+     * The app allows for two settings, a minimum time for trash bin retention,
811
+     * and a maximum time for trash bin retention.
812
+     *
813
+     * Minimum time is the number of days a file will be kept, after which it
814
+     * *may be* deleted. A file may be deleted after the minimum number of days
815
+     * has expired if space is needed. The file will not be deleted if space is
816
+     * not needed.
817
+     *
818
+     * Whether "space is needed" depends on whether a user quota is defined or not:
819
+     *
820
+     *  * If no user quota is defined, the available space on the Nextcloud data
821
+     *    partition sets the limit for the trashbin
822
+     *    (issues: see https://github.com/nextcloud/server/issues/28451).
823
+     *  * If a user quota is defined, 50% of the user's remaining quota space sets
824
+     *    the limit for the trashbin.
825
+     *
826
+     * Maximum time is the number of days at which it is *guaranteed
827
+     * to be* deleted. There is no further dependency on the available space.
828
+     *
829
+     * Both minimum and maximum times can be set together to explicitly define
830
+     * file and folder deletion. For migration purposes, this setting is installed
831
+     * initially set to "auto", which is equivalent to the default setting in
832
+     * Nextcloud.
833
+     *
834
+     * Available values (D1 and D2 are configurable numbers):
835
+     *
836
+     * * ``auto``
837
+     *     default setting. Keeps files and folders in the trash bin for 30 days
838
+     *     and automatically deletes anytime after that if space is needed (note:
839
+     *     files may not be deleted if space is not needed).
840
+     * * ``D1, auto``
841
+     *     keeps files and folders in the trash bin for D1+ days, delete anytime if
842
+     *     space needed (note: files may not be deleted if space is not needed)
843
+     * * ``auto, D2``
844
+     *     delete all files in the trash bin that are older than D2 days
845
+     *     automatically, delete other files anytime if space needed
846
+     * * ``D1, D2``
847
+     *     keep files and folders in the trash bin for at least D1 days and
848
+     *     delete when exceeds D2 days (note: files will not be deleted automatically if space is needed)
849
+     * * ``disabled``
850
+     *     trash bin auto clean disabled, files and folders will be kept forever
851
+     *
852
+     * Defaults to ``auto``
853
+     */
854
+    'trashbin_retention_obligation' => 'auto',
855
+
856
+
857
+    /**
858
+     * File versions
859
+     *
860
+     * These parameters control the Versions app.
861
+     */
862
+
863
+    /**
864
+     * If the versions app is enabled (default), this setting defines the policy
865
+     * for when versions will be permanently deleted.
866
+     * The app allows for two settings, a minimum time for version retention,
867
+     * and a maximum time for version retention.
868
+     * Minimum time is the number of days a version will be kept, after which it
869
+     * may be deleted. Maximum time is the number of days at which it is guaranteed
870
+     * to be deleted.
871
+     * Both minimum and maximum times can be set together to explicitly define
872
+     * version deletion. For migration purposes, this setting is installed
873
+     * initially set to "auto", which is equivalent to the default setting in
874
+     * Nextcloud.
875
+     *
876
+     * Available values:
877
+     *
878
+     * * ``auto``
879
+     *     default setting. Automatically expire versions according to expire
880
+     *     rules. Please refer to :doc:`../configuration_files/file_versioning` for
881
+     *     more information.
882
+     * * ``D, auto``
883
+     *     keep versions at least for D days, apply expiration rules to all versions
884
+     *     that are older than D days
885
+     * * ``auto, D``
886
+     *     delete all versions that are older than D days automatically, delete
887
+     *     other versions according to expire rules
888
+     * * ``D1, D2``
889
+     *     keep versions for at least D1 days and delete when exceeds D2 days
890
+     * * ``disabled``
891
+     *     versions auto clean disabled, versions will be kept forever
892
+     *
893
+     * Defaults to ``auto``
894
+     */
895
+    'versions_retention_obligation' => 'auto',
896
+
897
+    /**
898
+     * Nextcloud Verifications
899
+     *
900
+     * Nextcloud performs several verification checks. There are two options,
901
+     * ``true`` and ``false``.
902
+     */
903
+
904
+    /**
905
+     * Checks an app before install whether it uses private APIs instead of the
906
+     * proper public APIs. If this is set to true, it will only allow installing or
907
+     * enabling apps that pass this check.
908
+     *
909
+     * Defaults to ``false``
910
+     */
911
+    'appcodechecker' => true,
912
+
913
+    /**
914
+     * Check if Nextcloud is up-to-date and shows a notification if a new version is
915
+     * available. It sends current version, PHP version, installation and last update
916
+     * time, and release channel to the updater server which responds with the latest
917
+     * available version based on those metrics.
918
+     *
919
+     * Defaults to ``true``
920
+     */
921
+    'updatechecker' => true,
922
+
923
+    /**
924
+     * URL that Nextcloud should use to look for updates
925
+     *
926
+     * Defaults to ``https://updates.nextcloud.com/updater_server/``
927
+     */
928
+    'updater.server.url' => 'https://updates.nextcloud.com/updater_server/',
929
+
930
+    /**
931
+     * The channel that Nextcloud should use to look for updates
932
+     *
933
+     * Supported values:
934
+     *
935
+     * - ``daily``
936
+     * - ``beta``
937
+     * - ``stable``
938
+     */
939
+    'updater.release.channel' => 'stable',
940
+
941
+    /**
942
+     * Is Nextcloud connected to the Internet or running in a closed network?
943
+     *
944
+     * Defaults to ``true``
945
+     */
946
+    'has_internet_connection' => true,
947
+
948
+    /**
949
+     * Which domains to request to determine the availability of an Internet
950
+     * connection. If none of these hosts are reachable, the administration panel
951
+     * will show a warning. Set to an empty list to not do any such checks (warning
952
+     * will still be shown).
953
+     * If no protocol is provided, both http and https will be tested.
954
+     * For example, 'http://www.nextcloud.com' and 'https://www.nextcloud.com'
955
+     * will be tested for 'www.nextcloud.com'
956
+     * If a protocol is provided, only this one will be tested.
957
+     *
958
+     * Defaults to the following domains:
959
+     *
960
+     *  - https://www.nextcloud.com
961
+     *  - https://www.startpage.com
962
+     *  - https://www.eff.org
963
+     *  - https://www.edri.org
964
+     */
965
+    'connectivity_check_domains' => [
966
+        'https://www.nextcloud.com',
967
+        'https://www.startpage.com',
968
+        'https://www.eff.org',
969
+        'https://www.edri.org'
970
+    ],
971
+
972
+    /**
973
+     * Allows Nextcloud to verify a working .well-known URL redirects. This is done
974
+     * by attempting to make a request from JS to
975
+     * https://your-domain.com/.well-known/caldav/
976
+     *
977
+     * Defaults to ``true``
978
+     */
979
+    'check_for_working_wellknown_setup' => true,
980
+
981
+    /**
982
+     * This is a crucial security check on Apache servers that should always be set
983
+     * to ``true``. This verifies that the ``.htaccess`` file is writable and works.
984
+     * If it is not, then any options controlled by ``.htaccess``, such as large
985
+     * file uploads, will not work. It also runs checks on the ``data/`` directory,
986
+     * which verifies that it can't be accessed directly through the Web server.
987
+     *
988
+     * Defaults to ``true``
989
+     */
990
+    'check_for_working_htaccess' => true,
991
+
992
+    /**
993
+     * In rare setups (e.g., on OpenShift or Docker on Windows), the permissions check
994
+     * might block the installation while the underlying system offers no means to
995
+     * "correct" the permissions. In this case, set the value to false.
996
+     *
997
+     * In regular cases, if issues with permissions are encountered, they should be
998
+     * adjusted accordingly. Changing the flag is discouraged.
999
+     *
1000
+     * Defaults to ``true``
1001
+     */
1002
+    'check_data_directory_permissions' => true,
1003
+
1004
+    /**
1005
+     * In certain environments, it is desired to have a read-only configuration file.
1006
+     * When this switch is set to ``true``, writing to the config file will be
1007
+     * forbidden. Therefore, it will not be possible to configure all options via
1008
+     * the Web interface. Furthermore, when updating Nextcloud, it is required to
1009
+     * make the configuration file writable again and to set this switch to ``false``
1010
+     * for the update process.
1011
+     *
1012
+     * Defaults to ``false``
1013
+     */
1014
+    'config_is_read_only' => false,
1015
+
1016
+    /**
1017
+     * Logging
1018
+     */
1019
+
1020
+    /**
1021
+     * This parameter determines where the Nextcloud logs are sent.
1022
+     * ``file``: the logs are written to file ``nextcloud.log`` in the default
1023
+     * Nextcloud data directory. The log file can be changed with parameter
1024
+     * ``logfile``.
1025
+     * ``syslog``: the logs are sent to the system log. This requires a syslog daemon
1026
+     * to be active.
1027
+     * ``errorlog``: the logs are sent to the PHP ``error_log`` function.
1028
+     * ``systemd``: the logs are sent to the Systemd journal. This requires a system
1029
+     * that runs Systemd and the Systemd journal. The PHP extension ``systemd``
1030
+     * must be installed and active.
1031
+     *
1032
+     * Defaults to ``file``
1033
+     */
1034
+    'log_type' => 'file',
1035
+
1036
+    /**
1037
+     * This parameter determines where the audit logs are sent. See ``log_type`` for more information.
1038
+     *
1039
+     * Defaults to ``file``
1040
+     */
1041
+    'log_type_audit' => 'file',
1042
+
1043
+    /**
1044
+     * Name of the file to which the Nextcloud logs are written if parameter
1045
+     * ``log_type`` is set to ``file``.
1046
+     *
1047
+     * Defaults to ``[datadirectory]/nextcloud.log``
1048
+     */
1049
+    'logfile' => '/var/log/nextcloud.log',
1050
+
1051
+    /**
1052
+     * Name of the file to which the audit logs are written if parameter
1053
+     * ``log_type`` is set to ``file``.
1054
+     *
1055
+     * Defaults to ``[datadirectory]/audit.log``
1056
+     */
1057
+    'logfile_audit' => '/var/log/audit.log',
1058
+
1059
+    /**
1060
+     * Log file mode for the Nextcloud logging type in octal notation.
1061
+     *
1062
+     * Defaults to 0640 (writable by user, readable by group).
1063
+     */
1064
+    'logfilemode' => 0640,
1065
+
1066
+    /**
1067
+     * Loglevel to start logging at. Valid values are: 0 = Debug, 1 = Info, 2 =
1068
+     * Warning, 3 = Error, and 4 = Fatal. The default value is Warning.
1069
+     *
1070
+     * Defaults to ``2``
1071
+     */
1072
+    'loglevel' => 2,
1073
+
1074
+    /**
1075
+     * Loglevel used by the frontend to start logging at. The same values as
1076
+     * for ``loglevel`` can be used. If not set, it defaults to the value
1077
+     * configured for ``loglevel`` or Warning if that is not set either.
1078
+     *
1079
+     * Defaults to ``2``
1080
+     */
1081
+    'loglevel_frontend' => 2,
1082
+
1083
+    /**
1084
+     * Loglevel used by the dirty database query detection. Useful to identify
1085
+     * potential database bugs in production. Set this to loglevel or higher to
1086
+     * see dirty queries in the logs.
1087
+     *
1088
+     * Defaults to ``0`` (debug)
1089
+     */
1090
+    'loglevel_dirty_database_queries' => 0,
1091
+
1092
+    /**
1093
+     * If you maintain different instances and aggregate the logs, you may want
1094
+     * to distinguish between them. ``syslog_tag`` can be set per instance
1095
+     * with a unique ID. Only available if ``log_type`` is set to ``syslog`` or
1096
+     * ``systemd``.
1097
+     *
1098
+     * The default value is ``Nextcloud``.
1099
+     */
1100
+    'syslog_tag' => 'Nextcloud',
1101
+
1102
+    /**
1103
+     * If you maintain different instances and aggregate the logs, you may want
1104
+     * to distinguish between them. ``syslog_tag_audit`` can be set per instance
1105
+     * with a unique ID. Only available if ``log_type`` is set to ``syslog`` or
1106
+     * ``systemd``.
1107
+     *
1108
+     * The default value is the value of ``syslog_tag``.
1109
+     */
1110
+    'syslog_tag_audit' => 'Nextcloud',
1111
+
1112
+    /**
1113
+     * Log condition for log level increase based on conditions. Once one of these
1114
+     * conditions is met, the required log level is set to debug. This allows
1115
+     * debugging specific requests, users, or apps
1116
+     *
1117
+     * Supported conditions:
1118
+     *  - ``shared_secret``: if a request parameter with the name `log_secret` is set to
1119
+     *                this value, the condition is met
1120
+     *  - ``users``:  if the current request is done by one of the specified users,
1121
+     *                this condition is met
1122
+     *  - ``apps``:   if the log message is invoked by one of the specified apps,
1123
+     *                this condition is met
1124
+     *  - ``matches``: if all the conditions inside a group match,
1125
+     *                this condition is met. This allows logging only entries to an app
1126
+     *                by a few users.
1127
+     *
1128
+     * Defaults to an empty array.
1129
+     */
1130
+    'log.condition' => [
1131
+        'shared_secret' => '57b58edb6637fe3059b3595cf9c41b9',
1132
+        'users' => ['sample-user'],
1133
+        'apps' => ['files'],
1134
+        'matches' => [
1135
+            [
1136
+                'shared_secret' => '57b58edb6637fe3059b3595cf9c41b9',
1137
+                'users' => ['sample-user'],
1138
+                'apps' => ['files'],
1139
+                'loglevel' => 1,
1140
+                'message' => 'contains substring'
1141
+            ],
1142
+        ],
1143
+    ],
1144
+
1145
+    /**
1146
+     * Enables logging a backtrace with each log line. Normally, only Exceptions
1147
+     * carry backtrace information, which are logged automatically. This
1148
+     * switch turns them on for any log message. Enabling this option will lead
1149
+     * to increased log data size.
1150
+     *
1151
+     * Defaults to ``false``.
1152
+     */
1153
+    'log.backtrace' => false,
1154
+
1155
+    /**
1156
+     * This uses PHP.date formatting; see https://www.php.net/manual/en/function.date.php
1157
+     *
1158
+     * Defaults to ISO 8601 ``2005-08-15T15:52:01+00:00`` - see \DateTime::ATOM
1159
+     * (https://www.php.net/manual/en/class.datetime.php#datetime.constants.atom)
1160
+     */
1161
+    'logdateformat' => 'F d, Y H:i:s',
1162
+
1163
+    /**
1164
+     * The timezone for logfiles. You may change this; see
1165
+     * https://www.php.net/manual/en/timezones.php
1166
+     *
1167
+     * Defaults to ``UTC``
1168
+     */
1169
+    'logtimezone' => 'Europe/Berlin',
1170
+
1171
+    /**
1172
+     * Append all database queries and parameters to the log file. Use this only for
1173
+     * debugging, as your logfile will become huge.
1174
+     */
1175
+    'log_query' => false,
1176
+
1177
+    /**
1178
+     * Enables log rotation and limits the total size of logfiles. Set it to 0 for
1179
+     * no rotation. Specify a size in bytes, for example, 104857600 (100 megabytes
1180
+     * = 100 * 1024 * 1024 bytes). A new logfile is created with a new name when the
1181
+     * old logfile reaches your limit. If a rotated log file is already present, it
1182
+     * will be overwritten.
1183
+     *
1184
+     * Defaults to 100 MB
1185
+     */
1186
+    'log_rotate_size' => 100 * 1024 * 1024,
1187
+
1188
+    /**
1189
+     * Enable built-in profiler. Helpful when trying to debug performance
1190
+     * issues.
1191
+     *
1192
+     * Note that this has a performance impact and shouldn't be enabled
1193
+     * on production.
1194
+     */
1195
+    'profiler' => false,
1196
+
1197
+    /**
1198
+     * Enable profiling for individual requests if profiling single requests is enabled or the secret is passed.
1199
+     * This requires the excimer extension to be installed. Be careful with this, as it can generate a lot of data.
1200
+     *
1201
+     * The profile data will be stored as a JSON file in the profiling.path directory that can be analyzed with speedscope.
1202
+     *
1203
+     * Defaults to ``false``
1204
+     */
1205
+    'profiling.request' => false,
1206
+
1207
+    /**
1208
+     * The rate at which profiling data is collected for individual requests.
1209
+     * A lower value means more data points but higher overhead.
1210
+     *
1211
+     * Defaults to ``0.001``
1212
+     */
1213
+    'profiling.request.rate' => 0.001,
1214
+
1215
+    /**
1216
+     * A secret token that can be passed via ?profile_secret=<secret> to enable profiling for a specific request.
1217
+     * This allows profiling specific requests in production without enabling it globally.
1218
+     *
1219
+     * No default value.
1220
+     */
1221
+    'profiling.secret' => '',
1222
+
1223
+    /**
1224
+     * Enable sampling-based profiling. This collects profiling data periodically rather than per-request.
1225
+     * This requires the excimer extension to be installed. Be careful with this, as it can generate a lot of data.
1226
+     *
1227
+     * The profile data will be stored as a plain text file in the profiling.path directory that can be analyzed with speedscope.
1228
+     *
1229
+     * Defaults to ``false``
1230
+     */
1231
+    'profiling.sample' => false,
1232
+
1233
+    /**
1234
+     * The rate at which sampling profiling data is collected in seconds.
1235
+     * A lower value means more frequent samples but higher overhead.
1236
+     *
1237
+     * Defaults to ``1``
1238
+     */
1239
+    'profiling.sample.rate' => 1,
1240
+
1241
+    /**
1242
+     * How often (in minutes) the sample log files are rotated.
1243
+     *
1244
+     * Defaults to ``60``
1245
+     */
1246
+    'profiling.sample.rotation' => 60,
1247
+
1248
+    /**
1249
+     * The directory where profiling data is stored.
1250
+     *
1251
+     * Note that this directory must be writable by the web server user and will not be cleaned up automatically.
1252
+     */
1253
+    'profiling.path' => '/tmp',
1254
+
1255
+
1256
+    /**
1257
+     * Alternate Code Locations
1258
+     *
1259
+     * Some Nextcloud code may be stored in alternate locations.
1260
+     */
1261
+
1262
+    /**
1263
+     * This section is for configuring the download links for Nextcloud clients, as
1264
+     * seen in the first-run wizard and on Personal pages.
1265
+     *
1266
+     * Defaults to:
1267
+     *
1268
+     * - Desktop client: ``https://nextcloud.com/install/#install-clients``
1269
+     * - Android client: ``https://play.google.com/store/apps/details?id=com.nextcloud.client``
1270
+     * - iOS client: ``https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8``
1271
+     * - iOS client app ID: ``1125420102``
1272
+     * - F-Droid client: ``https://f-droid.org/packages/com.nextcloud.client/``
1273
+     */
1274
+    'customclient_desktop'
1275
+        => 'https://nextcloud.com/install/#install-clients',
1276
+    'customclient_android'
1277
+        => 'https://play.google.com/store/apps/details?id=com.nextcloud.client',
1278
+    'customclient_ios'
1279
+        => 'https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8',
1280
+    'customclient_ios_appid'
1281
+        => '1125420102',
1282
+    'customclient_fdroid'
1283
+        => 'https://f-droid.org/packages/com.nextcloud.client/',
1284
+
1285
+    /**
1286
+     * Apps
1287
+     *
1288
+     * Options for the Apps folder, Apps store, and App code checker.
1289
+     */
1290
+
1291
+    /**
1292
+     * Set the default app to open on login. The entry IDs can be retrieved from
1293
+     * the Navigations OCS API endpoint: https://docs.nextcloud.com/server/latest/developer_manual/_static/openapi.html#/operations/core-navigation-get-apps-navigation.
1294
+     * You can use a comma-separated list of app names, so if the first
1295
+     * app is not enabled for a user, then Nextcloud will try the second one, and so
1296
+     * on. If no enabled apps are found, it defaults to the dashboard app.
1297
+     *
1298
+     * Defaults to ``dashboard,files``
1299
+     */
1300
+    'defaultapp' => 'dashboard,files',
1301
+
1302
+    /**
1303
+     * When enabled, admins may install apps from the Nextcloud app store.
1304
+     *
1305
+     * Defaults to ``true``
1306
+     */
1307
+    'appstoreenabled' => true,
1308
+
1309
+    /**
1310
+     * Enables the installation of apps from a self-hosted apps store.
1311
+     * Requires that at least one of the configured apps directories is writable.
1312
+     *
1313
+     * Defaults to ``https://apps.nextcloud.com/api/v1``
1314
+     */
1315
+    'appstoreurl' => 'https://apps.nextcloud.com/api/v1',
1316
+
1317
+    /**
1318
+     * Filters allowed installable apps from the appstore.
1319
+     * Empty array will prevent all apps from the store to be found.
1320
+     */
1321
+    'appsallowlist' => [],
1322
+
1323
+    /**
1324
+     * Use the ``apps_paths`` parameter to set the location of the Apps directory,
1325
+     * which should be scanned for available apps, and where user-specific apps
1326
+     * should be installed from the Apps store. The ``path`` defines the absolute
1327
+     * file system path to the app folder. The key ``url`` defines the HTTP Web path
1328
+     * to that folder, starting from the Nextcloud webroot. The key ``writable``
1329
+     * indicates if a Web server can write files to that folder.
1330
+     */
1331
+    'apps_paths' => [
1332
+        [
1333
+            'path' => '/var/www/nextcloud/apps',
1334
+            'url' => '/apps',
1335
+            'writable' => true,
1336
+        ],
1337
+    ],
1338
+
1339
+    /**
1340
+     * @see appcodechecker
1341
+     */
1342
+
1343
+    /**
1344
+     * Previews
1345
+     *
1346
+     * Nextcloud supports previews of image files, the covers of MP3 files, and text
1347
+     * files. These options control enabling and disabling previews, and thumbnail
1348
+     * size.
1349
+     */
1350
+
1351
+    /**
1352
+     * By default, Nextcloud can generate previews for the following filetypes:
1353
+     *
1354
+     * - Image files
1355
+     * - Covers of MP3 files
1356
+     * - Text documents
1357
+     *
1358
+     * Valid values are ``true``, to enable previews, or
1359
+     * ``false``, to disable previews
1360
+     *
1361
+     * Defaults to ``true``
1362
+     */
1363
+    'enable_previews' => true,
1364
+
1365
+    /**
1366
+     * Number of all preview requests being processed concurrently,
1367
+     * including previews that need to be newly generated, and those that have
1368
+     * been generated.
1369
+     *
1370
+     * This should be greater than 'preview_concurrency_new'.
1371
+     * If unspecified, defaults to twice the value of 'preview_concurrency_new'.
1372
+     */
1373
+    'preview_concurrency_all' => 8,
1374
+
1375
+    /**
1376
+     * Number of new previews that are being concurrently generated.
1377
+     *
1378
+     * Depending on the max preview size set by 'preview_max_x' and 'preview_max_y',
1379
+     * the generation process can consume considerable CPU and memory resources.
1380
+     * It's recommended to limit this to be no greater than the number of CPU cores.
1381
+     * If unspecified, defaults to the number of CPU cores, or 4 if that cannot
1382
+     * be determined.
1383
+     */
1384
+    'preview_concurrency_new' => 4,
1385
+
1386
+    /**
1387
+     * The maximum width, in pixels, of a preview. A value of ``null`` means there
1388
+     * is no limit.
1389
+     *
1390
+     * Defaults to ``4096``
1391
+     */
1392
+    'preview_max_x' => 4096,
1393
+    /**
1394
+     * The maximum height, in pixels, of a preview. A value of ``null`` means there
1395
+     * is no limit.
1396
+     *
1397
+     * Defaults to ``4096``
1398
+     */
1399
+    'preview_max_y' => 4096,
1400
+
1401
+    /**
1402
+     * Max file size for generating image previews with imagegd (default behavior).
1403
+     * If the image is bigger, it'll try other preview generators, but will most
1404
+     * likely either show the default mimetype icon or not display the image at all.
1405
+     * Set to ``-1`` for no limit and try to generate image previews on all file sizes.
1406
+     *
1407
+     * Defaults to ``50`` megabytes
1408
+     */
1409
+    'preview_max_filesize_image' => 50,
1410
+
1411
+    /**
1412
+     * Max memory for generating image previews with imagegd (default behavior)
1413
+     * Reads the image dimensions from the header and assumes 32 bits per pixel.
1414
+     * If creating the image would allocate more memory, preview generation will
1415
+     * be disabled and the default mimetype icon is shown. Set to -1 for no limit.
1416
+     *
1417
+     * Defaults to ``256`` megabytes
1418
+     */
1419
+    'preview_max_memory' => 256,
1420
+
1421
+    /**
1422
+     * Custom path for LibreOffice/OpenOffice binary
1423
+     *
1424
+     *
1425
+     * Defaults to ``''`` (empty string)
1426
+     */
1427
+    'preview_libreoffice_path' => '/usr/bin/libreoffice',
1428
+
1429
+    /**
1430
+     * Custom path for ffmpeg binary
1431
+     *
1432
+     * Defaults to ``null`` and falls back to searching ``ffmpeg``
1433
+     * in the configured ``PATH`` environment
1434
+     */
1435
+    'preview_ffmpeg_path' => '/usr/bin/ffmpeg',
1436
+
1437
+    /**
1438
+     * Custom path for ffprobe binary
1439
+     *
1440
+     * Defaults to ``null`` and falls back to using the same path as ffmpeg.
1441
+     * ffprobe is typically packaged with ffmpeg and is required for
1442
+     * enhanced preview generation for HDR videos.
1443
+     */
1444
+    'preview_ffprobe_path' => '/usr/bin/ffprobe',
1445
+
1446
+    /**
1447
+     * Set the URL of the Imaginary service to send image previews to.
1448
+     * Also requires the ``OC\Preview\Imaginary`` provider to be enabled in the
1449
+     * ``enabledPreviewProviders`` array, to create previews for these mimetypes: bmp,
1450
+     * x-bitmap, png, jpeg, gif, heic, heif, svg+xml, tiff, webp, and illustrator.
1451
+     *
1452
+     * If you want Imaginary to also create preview images from PDF documents, you
1453
+     * have to add the ``OC\Preview\ImaginaryPDF`` provider as well.
1454
+     *
1455
+     * See https://github.com/h2non/imaginary
1456
+     */
1457
+    'preview_imaginary_url' => 'http://previews_hpb:8088/',
1458
+
1459
+    /**
1460
+     * If you want to set an API key for Imaginary.
1461
+     */
1462
+    'preview_imaginary_key' => 'secret',
1463
+
1464
+    /**
1465
+     * Only register providers that have been explicitly enabled
1466
+     *
1467
+     * The following providers are disabled by default due to performance or privacy
1468
+     * concerns:
1469
+     *
1470
+     *  - ``OC\Preview\Font``
1471
+     *  - ``OC\Preview\HEIC``
1472
+     *  - ``OC\Preview\Illustrator``
1473
+     *  - ``OC\Preview\Movie``
1474
+     *  - ``OC\Preview\MSOffice2003``
1475
+     *  - ``OC\Preview\MSOffice2007``
1476
+     *  - ``OC\Preview\MSOfficeDoc``
1477
+     *  - ``OC\Preview\PDF``
1478
+     *  - ``OC\Preview\Photoshop``
1479
+     *  - ``OC\Preview\Postscript``
1480
+     *  - ``OC\Preview\StarOffice``
1481
+     *  - ``OC\Preview\SVG``
1482
+     *  - ``OC\Preview\TIFF``
1483
+     *  - ``OC\Preview\EMF``
1484
+     *
1485
+     *
1486
+     * Defaults to the following providers:
1487
+     *
1488
+     *  - ``OC\Preview\BMP``
1489
+     *  - ``OC\Preview\GIF``
1490
+     *  - ``OC\Preview\JPEG``
1491
+     *  - ``OC\Preview\Krita``
1492
+     *  - ``OC\Preview\MarkDown``
1493
+     *  - ``OC\Preview\MP3``
1494
+     *  - ``OC\Preview\OpenDocument``
1495
+     *  - ``OC\Preview\PNG``
1496
+     *  - ``OC\Preview\TXT``
1497
+     *  - ``OC\Preview\XBitmap``
1498
+     */
1499
+    'enabledPreviewProviders' => [
1500
+        'OC\Preview\BMP',
1501
+        'OC\Preview\GIF',
1502
+        'OC\Preview\JPEG',
1503
+        'OC\Preview\Krita',
1504
+        'OC\Preview\MarkDown',
1505
+        'OC\Preview\MP3',
1506
+        'OC\Preview\OpenDocument',
1507
+        'OC\Preview\PNG',
1508
+        'OC\Preview\TXT',
1509
+        'OC\Preview\XBitmap',
1510
+    ],
1511
+
1512
+    /**
1513
+     * Maximum file size for metadata generation.
1514
+     * If a file exceeds this size, metadata generation will be skipped.
1515
+     * Note: memory equivalent to this size will be used for metadata generation.
1516
+     *
1517
+     * Default: 256 megabytes.
1518
+     */
1519
+    'metadata_max_filesize' => 256,
1520
+
1521
+    /**
1522
+     * Maximum file size for file conversion.
1523
+     * If a file exceeds this size, the file will not be converted.
1524
+     *
1525
+     * Default: 100 MiB
1526
+     */
1527
+    'max_file_conversion_filesize' => 100,
1528
+
1529
+    /**
1530
+     * LDAP
1531
+     *
1532
+     * Global settings used by LDAP User and Group Backend
1533
+     */
1534
+
1535
+    /**
1536
+     * Defines the interval in minutes for the background job that checks user
1537
+     * existence and marks them as ready to be cleaned up. The number is always
1538
+     * minutes. Setting it to 0 disables the feature.
1539
+     * See command line (occ) methods ``ldap:show-remnants`` and ``user:delete``
1540
+     *
1541
+     * Defaults to ``51`` minutes
1542
+     */
1543
+    'ldapUserCleanupInterval' => 51,
1544
+
1545
+    /**
1546
+     * Sort groups in the user settings by name instead of the user count
1547
+     *
1548
+     * By enabling this, the user count beside the group name is disabled as well.
1549
+     * @deprecated since Nextcloud 29 - Use the frontend instead or set the app config value `group.sortBy` for `core` to `2`
1550
+     */
1551
+    'sort_groups_by_name' => false,
1552
+
1553
+    /**
1554
+     * Comments
1555
+     *
1556
+     * Global settings for the Comments infrastructure
1557
+     */
1558
+
1559
+    /**
1560
+     * Replaces the default Comments Manager Factory. This can be utilized if an
1561
+     * own or 3rd-party CommentsManager should be used that – for instance – uses the
1562
+     * filesystem instead of the database to keep the comments.
1563
+     *
1564
+     * Defaults to ``\OC\Comments\ManagerFactory``
1565
+     */
1566
+    'comments.managerFactory' => '\OC\Comments\ManagerFactory',
1567
+
1568
+    /**
1569
+     * Replaces the default System Tags Manager Factory. This can be utilized if an
1570
+     * own or 3rd-party SystemTagsManager should be used that – for instance – uses the
1571
+     * filesystem instead of the database to keep the tags.
1572
+     *
1573
+     * Defaults to ``\OC\SystemTag\ManagerFactory``
1574
+     */
1575
+    'systemtags.managerFactory' => '\OC\SystemTag\ManagerFactory',
1576
+
1577
+    /**
1578
+     * Maintenance
1579
+     *
1580
+     * These options are for halting user activity when you are performing server
1581
+     * maintenance.
1582
+     */
1583
+
1584
+    /**
1585
+     * Enable maintenance mode to disable Nextcloud
1586
+     *
1587
+     * If you want to prevent users from logging in to Nextcloud before you start
1588
+     * doing some maintenance work, you need to set the value of the maintenance
1589
+     * parameter to true. Please keep in mind that users who are already logged in
1590
+     * are kicked out of Nextcloud instantly.
1591
+     *
1592
+     * Defaults to ``false``
1593
+     */
1594
+    'maintenance' => false,
1595
+
1596
+    /**
1597
+     * UTC Hour for maintenance windows
1598
+     *
1599
+     * Some background jobs only run once a day. When an hour is defined for this config,
1600
+     * the background jobs which advertise themselves as not time sensitive will be
1601
+     * delayed during the "working" hours and only run in the 4 hours after the given time.
1602
+     * This is, e.g., used for activity expiration, suspicious login training, and update checks.
1603
+     *
1604
+     * A value of 1, e.g., will only run these background jobs between 01:00am UTC and 05:00am UTC.
1605
+     *
1606
+     * Defaults to ``100`` which disables the feature
1607
+     */
1608
+    'maintenance_window_start' => 1,
1609
+
1610
+    /**
1611
+     * Log all LDAP requests into a file
1612
+     *
1613
+     * Warning: This heavily decreases the performance of the server and is only
1614
+     * meant to debug/profile the LDAP interaction manually.
1615
+     * Also, it might log sensitive data into a plain text file.
1616
+     */
1617
+    'ldap_log_file' => '',
1618
+
1619
+    /**
1620
+     * SSL
1621
+     */
1622
+
1623
+    /**
1624
+     * Extra SSL options to be used for configuration.
1625
+     *
1626
+     * Defaults to an empty array.
1627
+     */
1628
+    'openssl' => [
1629
+        'config' => '/absolute/location/of/openssl.cnf',
1630
+    ],
1631
+
1632
+    /**
1633
+     * Memory caching backend configuration
1634
+     *
1635
+     * Available cache backends:
1636
+     *
1637
+     * * ``\OC\Memcache\APCu``       APC user backend
1638
+     * * ``\OC\Memcache\ArrayCache`` In-memory array-based backend (not recommended)
1639
+     * * ``\OC\Memcache\Memcached``  Memcached backend
1640
+     * * ``\OC\Memcache\Redis``      Redis backend
1641
+     *
1642
+     * Advice on choosing between the various backends:
1643
+     *
1644
+     * * APCu should be easiest to install. Almost all distributions have packages.
1645
+     *   Use this for single user environment for all caches.
1646
+     * * Use Redis or Memcached for distributed environments.
1647
+     *   For the local cache (you can configure two) take APCu.
1648
+     */
1649
+
1650
+    /**
1651
+     * Memory caching backend for locally stored data
1652
+     *
1653
+     * * Used for host-specific data, e.g., file paths
1654
+     *
1655
+     * Defaults to ``none``
1656
+     */
1657
+    'memcache.local' => '\\OC\\Memcache\\APCu',
1658
+
1659
+    /**
1660
+     * Memory caching backend for distributed data
1661
+     *
1662
+     * * Used for installation-specific data, e.g., database caching
1663
+     * * If unset, defaults to the value of memcache.local
1664
+     *
1665
+     * Defaults to ``none``
1666
+     */
1667
+    'memcache.distributed' => '\\OC\\Memcache\\Memcached',
1668
+
1669
+    /**
1670
+     * Connection details for Redis to use for memory caching in a single server configuration.
1671
+     *
1672
+     * For enhanced security, it is recommended to configure Redis
1673
+     * to require a password. See http://redis.io/topics/security
1674
+     * for more information.
1675
+     *
1676
+     * We also support Redis SSL/TLS encryption as of version 6.
1677
+     * See https://redis.io/topics/encryption for more information.
1678
+     */
1679
+    'redis' => [
1680
+        'host' => 'localhost', // can also be a Unix domain socket: '/tmp/redis.sock'
1681
+        'port' => 6379,
1682
+        'timeout' => 0.0,
1683
+        'read_timeout' => 0.0,
1684
+        'user' => '', // Optional: if not defined, no password will be used.
1685
+        'password' => '', // Optional: if not defined, no password will be used.
1686
+        'dbindex' => 0, // Optional: if undefined, SELECT will not run and will use Redis Server's default DB Index.
1687
+        // If Redis in-transit encryption is enabled, provide certificates
1688
+        // SSL context https://www.php.net/manual/en/context.ssl.php
1689
+        'ssl_context' => [
1690
+            'local_cert' => '/certs/redis.crt',
1691
+            'local_pk' => '/certs/redis.key',
1692
+            'cafile' => '/certs/ca.crt'
1693
+        ]
1694
+    ],
1695
+
1696
+    /**
1697
+     * Connection details for a Redis Cluster.
1698
+     *
1699
+     * Redis Cluster support requires the PHP module phpredis in version 3.0.0 or
1700
+     * higher.
1701
+     *
1702
+     * Available failover modes:
1703
+     *  - \RedisCluster::FAILOVER_NONE - only send commands to master nodes (default)
1704
+     *  - \RedisCluster::FAILOVER_ERROR - failover to slaves for read commands if master is unavailable (recommended)
1705
+     *  - \RedisCluster::FAILOVER_DISTRIBUTE - randomly distribute read commands across master and slaves
1706
+     *
1707
+     * WARNING: FAILOVER_DISTRIBUTE is a not recommended setting, and we strongly
1708
+     * suggest to not use it if you use Redis for file locking. Due to the way Redis
1709
+     * is synchronized, it could happen that the read for an existing lock is
1710
+     * scheduled to a slave that is not fully synchronized with the connected master
1711
+     * which then causes a FileLocked exception.
1712
+     *
1713
+     * See https://redis.io/topics/cluster-spec for details about the Redis cluster
1714
+     *
1715
+     * Authentication works with phpredis version 4.2.1+. See
1716
+     * https://github.com/phpredis/phpredis/commit/c5994f2a42b8a348af92d3acb4edff1328ad8ce1
1717
+     */
1718
+    'redis.cluster' => [
1719
+        'seeds' => [ // provide some or all of the cluster servers to bootstrap discovery, port required
1720
+            'localhost:7000',
1721
+            'localhost:7001',
1722
+        ],
1723
+        'timeout' => 0.0,
1724
+        'read_timeout' => 0.0,
1725
+        'failover_mode' => \RedisCluster::FAILOVER_ERROR,
1726
+        'user' => '', // Optional: if not defined, no password will be used.
1727
+        'password' => '', // Optional: if not defined, no password will be used.
1728
+        // If Redis in-transit encryption is enabled, provide certificates
1729
+        // SSL context https://www.php.net/manual/en/context.ssl.php
1730
+        'ssl_context' => [
1731
+            'local_cert' => '/certs/redis.crt',
1732
+            'local_pk' => '/certs/redis.key',
1733
+            'cafile' => '/certs/ca.crt'
1734
+        ]
1735
+    ],
1736
+
1737
+
1738
+    /**
1739
+     * Server details for one or more Memcached servers to use for memory caching.
1740
+     */
1741
+    'memcached_servers' => [
1742
+        // hostname, port and optional weight
1743
+        // or path and port 0 for Unix socket. Also see:
1744
+        // https://www.php.net/manual/en/memcached.addservers.php
1745
+        // https://www.php.net/manual/en/memcached.addserver.php
1746
+        ['localhost', 11211],
1747
+        //array('other.host.local', 11211),
1748
+    ],
1749
+
1750
+    /**
1751
+     * Connection options for Memcached
1752
+     */
1753
+    'memcached_options' => [
1754
+        // Set timeouts to 50ms
1755
+        \Memcached::OPT_CONNECT_TIMEOUT => 50,
1756
+        \Memcached::OPT_RETRY_TIMEOUT => 50,
1757
+        \Memcached::OPT_SEND_TIMEOUT => 50,
1758
+        \Memcached::OPT_RECV_TIMEOUT => 50,
1759
+        \Memcached::OPT_POLL_TIMEOUT => 50,
1760
+
1761
+        // Enable compression
1762
+        \Memcached::OPT_COMPRESSION => true,
1763
+
1764
+        // Turn on consistent hashing
1765
+        \Memcached::OPT_LIBKETAMA_COMPATIBLE => true,
1766
+
1767
+        // Enable Binary Protocol
1768
+        \Memcached::OPT_BINARY_PROTOCOL => true,
1769
+
1770
+        // Binary serializer will be enabled if the igbinary PECL module is available
1771
+        //\Memcached::OPT_SERIALIZER => \Memcached::SERIALIZER_IGBINARY,
1772
+    ],
1773
+
1774
+
1775
+    /**
1776
+     * Location of the cache folder, defaults to ``data/$user/cache`` where
1777
+     * ``$user`` is the current user. When specified, the format will change to
1778
+     * ``$cache_path/$user`` where ``$cache_path`` is the configured cache directory
1779
+     * and ``$user`` is the user.
1780
+     *
1781
+     * Defaults to ``''`` (empty string)
1782
+     */
1783
+    'cache_path' => '',
1784
+
1785
+    /**
1786
+     * TTL of chunks located in the cache folder before they're removed by
1787
+     * garbage collection (in seconds). Increase this value if users have
1788
+     * issues uploading very large files via the Nextcloud Client as upload isn't
1789
+     * completed within one day.
1790
+     *
1791
+     * Defaults to ``60*60*24`` (1 day)
1792
+     */
1793
+    'cache_chunk_gc_ttl' => 60 * 60 * 24,
1794
+
1795
+    /**
1796
+     * Enable caching of the app config values.
1797
+     * If enabled the app config will be cached locally for a short TTL,
1798
+     * reducing database load significantly on larger setups.
1799
+     *
1800
+     * Defaults to ``true``
1801
+     */
1802
+    'cache_app_config' => true,
1803
+
1804
+    /**
1805
+     * Using Object Store with Nextcloud
1806
+     */
1807
+
1808
+    /**
1809
+     * This example shows how to configure Nextcloud to store all files in a
1810
+     * Swift object storage.
1811
+     *
1812
+     * It is important to note that Nextcloud in object store mode will expect
1813
+     * exclusive access to the object store container because it only stores the
1814
+     * binary data for each file. The metadata is currently kept in the local
1815
+     * database for performance reasons.
1816
+     *
1817
+     * WARNING: The current implementation is incompatible with any app that uses
1818
+     * direct file I/O and circumvents our virtual filesystem. That includes
1819
+     * Encryption and Gallery. Gallery will store thumbnails directly in the
1820
+     * filesystem, and encryption will cause severe overhead because key files need
1821
+     * to be fetched in addition to any requested file.
1822
+     *
1823
+     */
1824
+    'objectstore' => [
1825
+        'class' => 'OC\\Files\\ObjectStore\\Swift',
1826
+        'arguments' => [
1827
+            // trystack will use your Facebook ID as the username
1828
+            'username' => 'facebook100000123456789',
1829
+            // in the trystack dashboard, go to user -> settings -> API Password to
1830
+            // generate a password
1831
+            'password' => 'Secr3tPaSSWoRdt7',
1832
+            // must already exist in the objectstore, name can be different
1833
+            'container' => 'nextcloud',
1834
+            // prefix to prepend to the fileid, default is 'oid:urn:'
1835
+            'objectPrefix' => 'oid:urn:',
1836
+            // create the container if it does not exist. default is false
1837
+            'autocreate' => true,
1838
+            // required, dev-/trystack defaults to 'RegionOne'
1839
+            'region' => 'RegionOne',
1840
+            // The Identity / Keystone endpoint
1841
+            'url' => 'http://8.21.28.222:5000/v2.0',
1842
+            // uploadPartSize: size of the uploaded chunks, defaults to 524288000
1843
+            'uploadPartSize' => 524288000,
1844
+            // required on dev-/trystack
1845
+            'tenantName' => 'facebook100000123456789',
1846
+            // dev-/trystack uses swift by default, the lib defaults to 'cloudFiles'
1847
+            // if omitted
1848
+            'serviceName' => 'swift',
1849
+            // The Interface / URL Type, optional
1850
+            'urlType' => 'internal'
1851
+        ],
1852
+    ],
1853
+
1854
+    /**
1855
+     * To use Swift V3
1856
+     */
1857
+    'objectstore' => [
1858
+        'class' => 'OC\\Files\\ObjectStore\\Swift',
1859
+        'arguments' => [
1860
+            'autocreate' => true,
1861
+            'user' => [
1862
+                'name' => 'swift',
1863
+                'password' => 'swift',
1864
+                'domain' => [
1865
+                    'name' => 'default',
1866
+                ],
1867
+            ],
1868
+            'scope' => [
1869
+                'project' => [
1870
+                    'name' => 'service',
1871
+                    'domain' => [
1872
+                        'name' => 'default',
1873
+                    ],
1874
+                ],
1875
+            ],
1876
+            'tenantName' => 'service',
1877
+            'serviceName' => 'swift',
1878
+            'region' => 'regionOne',
1879
+            'url' => 'http://yourswifthost:5000/v3',
1880
+            'bucket' => 'nextcloud',
1881
+        ],
1882
+    ],
1883
+
1884
+    /**
1885
+     * If this is set to true and a multibucket object store is configured, then
1886
+     * newly created previews are put into 256 dedicated buckets.
1887
+     *
1888
+     * Those buckets are named like the multibucket version but with the postfix
1889
+     * ``-preview-NUMBER`` where NUMBER is between 0 and 255.
1890
+     *
1891
+     * Keep in mind that only previews of files are put in there that don't have
1892
+     * some already. Otherwise, the old bucket will be used.
1893
+     *
1894
+     * To migrate existing previews to this new multibucket distribution of previews,
1895
+     * use the occ command ``preview:repair``. For now, this will only migrate
1896
+     * previews that were generated before Nextcloud 19 in the flat
1897
+     * ``appdata_INSTANCEID/previews/FILEID`` folder structure.
1898
+     */
1899
+    'objectstore.multibucket.preview-distribution' => false,
1900
+
1901
+
1902
+    /**
1903
+     * Sharing
1904
+     *
1905
+     * Global settings for Sharing
1906
+     */
1907
+
1908
+    /**
1909
+     * Replaces the default Share Provider Factory. This can be utilized if
1910
+     * own or 3rd-party Share Providers are used that – for instance – use the
1911
+     * filesystem instead of the database to keep the share information.
1912
+     *
1913
+     * Defaults to ``\OC\Share20\ProviderFactory``
1914
+     */
1915
+    'sharing.managerFactory' => '\OC\Share20\ProviderFactory',
1916
+
1917
+    /**
1918
+     * Enables expiration for link share passwords sent by email (sharebymail).
1919
+     * The passwords will expire after the configured interval; the users can
1920
+     * still request a new one on the public link page.
1921
+     */
1922
+    'sharing.enable_mail_link_password_expiration' => false,
1923
+
1924
+    /**
1925
+     * Expiration interval for passwords, in seconds.
1926
+     */
1927
+    'sharing.mail_link_password_expiration_interval' => 3600,
1928
+
1929
+    /**
1930
+     * Define max number of results returned by the search for auto-completion of
1931
+     * users, groups, etc. The value must not be lower than 0 (for unlimited).
1932
+     *
1933
+     * If more, different sources are requested (e.g., different user backends; or
1934
+     * both users and groups), the value is applied per source and might not be
1935
+     * truncated after collecting the results. I.e., more results can appear than
1936
+     * configured here.
1937
+     *
1938
+     * Default is 25.
1939
+     */
1940
+    'sharing.maxAutocompleteResults' => 25,
1941
+
1942
+    /**
1943
+     * Define the minimum length of the search string before we start auto-completion
1944
+     * Default is no limit (value set to 0)
1945
+     */
1946
+    'sharing.minSearchStringLength' => 0,
1947
+
1948
+    /**
1949
+     * Set to true to enable that internal shares need to be accepted by the users by default.
1950
+     * Users can change this for their account in their personal sharing settings
1951
+     */
1952
+    'sharing.enable_share_accept' => false,
1953
+
1954
+    /**
1955
+     * Set to true to enforce that internal shares need to be accepted
1956
+     */
1957
+    'sharing.force_share_accept' => false,
1958
+
1959
+    /**
1960
+     * Set to ``false`` to prevent users from setting a custom share_folder
1961
+     */
1962
+    'sharing.allow_custom_share_folder' => true,
1963
+
1964
+    /**
1965
+     * Define a default folder for shared files and folders other than root.
1966
+     * Changes to this value will only have effect on new shares.
1967
+     *
1968
+     * Defaults to ``/``
1969
+     */
1970
+    'share_folder' => '/',
1971
+
1972
+    /**
1973
+     * Set to ``false`` to stop sending a mail when users receive a share
1974
+     */
1975
+    'sharing.enable_share_mail' => true,
1976
+
1977
+    /**
1978
+     * Set to true to enable the feature to add exceptions for share password enforcement
1979
+     */
1980
+    'sharing.allow_disabled_password_enforcement_groups' => false,
1981
+
1982
+    /**
1983
+     * Set to true to always transfer incoming shares by default
1984
+     * when running "occ files:transfer-ownership".
1985
+     * Defaults to false, so incoming shares are not transferred if not specifically requested
1986
+     * by a command line argument.
1987
+     */
1988
+    'transferIncomingShares' => false,
1989
+
1990
+    /**
1991
+     * Federated Cloud Sharing
1992
+     */
1993
+
1994
+    /**
1995
+     * Allow self-signed certificates for federated shares
1996
+     */
1997
+    'sharing.federation.allowSelfSignedCertificates' => false,
1998
+
1999
+    /**
2000
+     * Hashing
2001
+     */
2002
+
2003
+    /**
2004
+     * By default, Nextcloud will use the Argon2 password hashing if available.
2005
+     * However, if for whatever reason you want to stick with the PASSWORD_DEFAULT
2006
+     * of your PHP version, then set the setting to true.
2007
+     *
2008
+     * Nextcloud uses the Argon2 algorithm (with PHP >= 7.2) to create hashes by its
2009
+     * own and exposes its configuration options as following. More information can
2010
+     * be found at: https://www.php.net/manual/en/function.password-hash.php
2011
+     */
2012
+    'hashing_default_password' => false,
2013
+
2014
+    /**
2015
+     * The number of CPU threads to be used by the algorithm for computing a hash.
2016
+     * The value must be an integer, and the minimum value is 1. Rationally, it does
2017
+     * not help to provide a number higher than the available threads on the machine.
2018
+     * Values that undershoot the minimum will be ignored in favor of the minimum.
2019
+     */
2020
+    'hashingThreads' => PASSWORD_ARGON2_DEFAULT_THREADS,
2021
+
2022
+    /**
2023
+     * The memory in KiB to be used by the algorithm for computing a hash. The value
2024
+     * must be an integer, and the minimum value is 8 times the number of CPU threads.
2025
+     * Values that undershoot the minimum will be ignored in favor of the minimum.
2026
+     */
2027
+    'hashingMemoryCost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST,
2028
+
2029
+    /**
2030
+     * The number of iterations that are used by the algorithm for computing a hash.
2031
+     * The value must be an integer, and the minimum value is 1. Values that
2032
+     * undershoot the minimum will be ignored in favor of the minimum.
2033
+     */
2034
+    'hashingTimeCost' => PASSWORD_ARGON2_DEFAULT_TIME_COST,
2035
+
2036
+    /**
2037
+     * The hashing cost used by hashes generated by Nextcloud
2038
+     * Using a higher value requires more time and CPU power to calculate the hashes
2039
+     */
2040
+    'hashingCost' => 10,
2041
+
2042
+    /**
2043
+     * All other configuration options
2044
+     */
2045
+
2046
+    /**
2047
+     * Additional driver options for the database connection, e.g., to enable SSL
2048
+     * encryption in MySQL or specify a custom wait timeout on a cheap hoster.
2049
+     *
2050
+     * When setting up TLS/SSL for encrypting the connections, you need to ensure that
2051
+     * the passed keys and certificates are readable by the PHP process. In addition,
2052
+     * PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT might need to be set to false, if the
2053
+     * database server's certificate CN does not match with the hostname used to connect.
2054
+     * The standard behavior here is different from the MySQL/MariaDB CLI client, which
2055
+     * does not verify the server cert except --ssl-verify-server-cert is passed manually.
2056
+     */
2057
+    'dbdriveroptions' => [
2058
+        PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
2059
+        PDO::MYSQL_ATTR_SSL_KEY => '/file/path/to/mysql-client-key.pem',
2060
+        PDO::MYSQL_ATTR_SSL_CERT => '/file/path/to/mysql-client-cert.pem',
2061
+        PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
2062
+        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET wait_timeout = 28800'
2063
+    ],
2064
+
2065
+    /**
2066
+     * SQLite3 journal mode can be specified using this configuration parameter -
2067
+     * can be 'WAL' or 'DELETE'. See https://www.sqlite.org/wal.html for more details.
2068
+     */
2069
+    'sqlite.journal_mode' => 'DELETE',
2070
+
2071
+    /**
2072
+     * During setup, if requirements are met (see below), this setting is set to true
2073
+     * to enable MySQL to handle 4-byte characters instead of 3-byte characters.
2074
+     *
2075
+     * To convert an existing 3-byte setup to a 4-byte setup, configure the MySQL
2076
+     * parameters as described below and run the migration command:
2077
+     * ./occ db:convert-mysql-charset
2078
+     * This config setting will be automatically updated after a successful migration.
2079
+     *
2080
+     * Refer to the documentation for more details.
2081
+     *
2082
+     * MySQL requires specific settings for longer indexes (> 767 bytes), which are
2083
+     * necessary for 4-byte character support:
2084
+     *
2085
+     * [mysqld]
2086
+     * innodb_large_prefix=ON
2087
+     * innodb_file_format=Barracuda
2088
+     * innodb_file_per_table=ON
2089
+     *
2090
+     * Tables will be created with:
2091
+     *  * character set: utf8mb4
2092
+     *  * collation:     utf8mb4_bin
2093
+     *  * row_format:    dynamic
2094
+     *
2095
+     * See:
2096
+     * https://dev.mysql.com/doc/refman/5.7/en/charset-unicode-utf8mb4.html
2097
+     * https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_large_prefix
2098
+     * https://mariadb.com/kb/en/mariadb/xtradbinnodb-server-system-variables/#innodb_large_prefix
2099
+     * http://www.tocker.ca/2013/10/31/benchmarking-innodb-page-compression-performance.html
2100
+     * http://mechanics.flite.com/blog/2014/07/29/using-innodb-large-prefix-to-avoid-error-1071/
2101
+     */
2102
+    'mysql.utf8mb4' => false,
2103
+
2104
+    /**
2105
+     * For search queries in the database, a default collation is chosen based on the
2106
+     * character set. In some cases, a different collation is desired, such as for
2107
+     * accent-sensitive searches.
2108
+     *
2109
+     * MariaDB and MySQL share some collations, but also have incompatible ones,
2110
+     * depending on the database server version.
2111
+     *
2112
+     * This option allows overriding the automatic collation choice. Example:
2113
+     *
2114
+     * 'mysql.collation' => 'utf8mb4_0900_as_ci',
2115
+     *
2116
+     * This setting does not affect table creation or setup, where utf8[mb4]_bin is
2117
+     * always used. It applies only to SQL queries using LIKE comparison operators.
2118
+     */
2119
+    'mysql.collation' => null,
2120
+
2121
+    /**
2122
+     * Database types supported for installation.
2123
+     *
2124
+     * Available:
2125
+     *  - sqlite (SQLite3)
2126
+     *  - mysql (MySQL)
2127
+     *  - pgsql (PostgreSQL)
2128
+     *  - oci (Oracle)
2129
+     *
2130
+     * Defaults to:
2131
+     *  - sqlite (SQLite3)
2132
+     *  - mysql (MySQL)
2133
+     *  - pgsql (PostgreSQL)
2134
+     */
2135
+    'supportedDatabases' => [
2136
+        'sqlite',
2137
+        'mysql',
2138
+        'pgsql',
2139
+        'oci',
2140
+    ],
2141
+
2142
+    /**
2143
+     * Override the location where Nextcloud stores temporary files. Useful in setups
2144
+     * where the system temporary directory is on a limited-space ramdisk, restricted,
2145
+     * or when using external storage that does not support streaming.
2146
+     *
2147
+     * The web server user/PHP must have write access to this directory. Ensure that
2148
+     * PHP configuration recognizes this as a valid temporary directory by setting
2149
+     * the TMP, TMPDIR, and TEMP environment variables accordingly. Additional
2150
+     * permissions may be required for AppArmor or SELinux.
2151
+     */
2152
+    'tempdirectory' => '/tmp/nextcloudtemp',
2153
+
2154
+    /**
2155
+     * Override the location where Nextcloud stores update files during updates.
2156
+     * Useful when the default `datadirectory` is on a network disk like NFS or is
2157
+     * otherwise restricted. Defaults to the value of `datadirectory` if unset.
2158
+     *
2159
+     * If set, the directory must be located outside the Nextcloud installation
2160
+     * directory and writable by the web server user.
2161
+     */
2162
+    'updatedirectory' => '',
2163
+
2164
+    /**
2165
+     * Block specific files or filenames, disallowing uploads or access (read and write).
2166
+     * ``.htaccess`` is blocked by default.
2167
+     *
2168
+     * WARNING: Use this only if you understand the implications.
2169
+     *
2170
+     * Note: This list is case-insensitive.
2171
+     *
2172
+     * Defaults to ``['.htaccess']``
2173
+     */
2174
+    'forbidden_filenames' => ['.htaccess'],
2175
+
2176
+    /**
2177
+     * Disallow uploads of files with specific basenames. Matching existing files
2178
+     * cannot be updated, and no new files can be created in matching folders.
2179
+     *
2180
+     * The basename is the filename without the extension, e.g., for "archive.tar.gz",
2181
+     * the basename is "archive".
2182
+     *
2183
+     * Note: This list is case-insensitive.
2184
+     *
2185
+     * Defaults to ``[]`` (empty array)
2186
+     */
2187
+    'forbidden_filename_basenames' => [],
2188
+
2189
+    /**
2190
+     * Block specific characters in filenames. Useful for filesystems or operating
2191
+     * systems (e.g., Windows) that do not support certain characters. Matching
2192
+     * existing files cannot be updated, and no new files can be created in matching
2193
+     * folders.
2194
+     *
2195
+     * The '/' and '\' characters, as well as ASCII characters [0-31], are always
2196
+     * forbidden.
2197
+     *
2198
+     * Example for Windows: ``['?', '<', '>', ':', '*', '|', '"']``
2199
+     * See: https://en.wikipedia.org/wiki/Comparison_of_file_systems#Limits
2200
+     *
2201
+     * Defaults to ``[]`` (empty array)
2202
+     */
2203
+    'forbidden_filename_characters' => [],
2204
+
2205
+    /**
2206
+     * Deny specific file extensions. Matching existing files cannot be updated, and
2207
+     * no new files can be created in matching folders.
2208
+     *
2209
+     * The '.part' extension is always forbidden, as it is used internally by Nextcloud.
2210
+     *
2211
+     * Defaults to ``['.filepart', '.part']``
2212
+     */
2213
+    'forbidden_filename_extensions' => ['.part', '.filepart'],
2214
+
2215
+    /**
2216
+     * Specify the name of a theme to apply to Nextcloud. Themes are located in
2217
+     * ``nextcloud/themes/`` by default.
2218
+     *
2219
+     * Defaults to the theming app, included since Nextcloud 9.
2220
+     */
2221
+    'theme' => '',
2222
+
2223
+    /**
2224
+     * Enforce a specific user theme, disabling user theming settings. Must be a
2225
+     * valid ITheme ID, e.g., dark, dark-highcontrast, default, light,
2226
+     * light-highcontrast, opendyslexic.
2227
+     */
2228
+    'enforce_theme' => '',
2229
+
2230
+    /**
2231
+     * Enable or disable Progressive Web App (PWA) functionality, which allows
2232
+     * browsers to open web applications in dedicated windows.
2233
+     *
2234
+     * Defaults to ``true``
2235
+     */
2236
+    'theming.standalone_window.enabled' => true,
2237
+
2238
+    /**
2239
+     * Specify the default cipher for encrypting files. Supported ciphers:
2240
+     *  - AES-256-CTR
2241
+     *  - AES-128-CTR
2242
+     *  - AES-256-CFB
2243
+     *  - AES-128-CFB
2244
+     *
2245
+     * Defaults to ``AES-256-CTR``
2246
+     */
2247
+    'cipher' => 'AES-256-CTR',
2248
+
2249
+    /**
2250
+     * Use the legacy base64 format for encrypted files instead of the more
2251
+     * space-efficient binary format. This affects only newly written files; existing
2252
+     * encrypted files remain readable regardless of the format.
2253
+     *
2254
+     * Defaults to ``false``
2255
+     */
2256
+    'encryption.use_legacy_base64_encoding' => false,
2257
+
2258
+    /**
2259
+     * Specify the minimum Nextcloud desktop client version allowed to sync with this
2260
+     * server. Connections from earlier clients will be denied. Defaults to the
2261
+     * minimum officially supported version at the time of this server release.
2262
+     *
2263
+     * Changing this may cause older, unsupported clients to malfunction, potentially
2264
+     * leading to data loss or unexpected behavior.
2265
+     *
2266
+     * Defaults to ``3.1.0``
2267
+     */
2268
+    'minimum.supported.desktop.version' => '3.1.0',
2269
+
2270
+    /**
2271
+     * Specify the maximum Nextcloud desktop client version allowed to sync with this
2272
+     * server. Connections from later clients will be denied.
2273
+     *
2274
+     * Defaults to ``99.99.99``
2275
+     */
2276
+    'maximum.supported.desktop.version' => '99.99.99',
2277
+
2278
+    /**
2279
+     * Allow local storage to contain symlinks.
2280
+     * WARNING: Not recommended, as this allows Nextcloud to access files outside the
2281
+     * data directory, posing a potential security risk.
2282
+     *
2283
+     * Defaults to ``false``
2284
+     */
2285
+    'localstorage.allowsymlinks' => false,
2286
+
2287
+    /**
2288
+     * Nextcloud overrides umask to ensure suitable access permissions regardless of
2289
+     * web server or PHP-FPM configuration. Modifying this value has security
2290
+     * implications and may cause issues with the installation.
2291
+     *
2292
+     * Most installations should not modify this value.
2293
+     *
2294
+     * Defaults to ``0022``
2295
+     */
2296
+    'localstorage.umask' => 0022,
2297
+
2298
+    /**
2299
+     * Allow storage systems that do not support modifying existing files to overcome
2300
+     * this limitation by removing files before overwriting.
2301
+     *
2302
+     * Defaults to ``false``
2303
+     */
2304
+    'localstorage.unlink_on_truncate' => false,
2305
+
2306
+    /**
2307
+     * EXPERIMENTAL: Include external storage in quota calculations.
2308
+     *
2309
+     * Defaults to ``false``
2310
+     */
2311
+    'quota_include_external_storage' => false,
2312
+
2313
+    /**
2314
+     * When an external storage is unavailable (e.g., due to failed authentication),
2315
+     * it is flagged as such for a specified duration. For authentication failures,
2316
+     * this delay can be customized to reduce the likelihood of account lockouts in
2317
+     * systems like Active Directory.
2318
+     *
2319
+     * Defaults to ``1800`` seconds (30 minutes)
2320
+     */
2321
+    'external_storage.auth_availability_delay' => 1800,
2322
+
2323
+    /**
2324
+     * Allow creation of external storages of type "Local" via the web interface and
2325
+     * APIs. When disabled, local storages can still be created using the occ command:
2326
+     *
2327
+     * occ files_external:create /mountpoint local null::null -c datadir=/path/to/data
2328
+     *
2329
+     * Defaults to ``true``
2330
+     */
2331
+    'files_external_allow_create_new_local' => true,
2332
+
2333
+    /**
2334
+     * Specify how often the local filesystem (Nextcloud data/ directory and NFS
2335
+     * mounts in data/) is checked for changes made outside Nextcloud. This does not
2336
+     * apply to external storage.
2337
+     *
2338
+     * 0 -> Never check the filesystem for outside changes, improving performance
2339
+     *      when no external changes are expected.
2340
+     * 1 -> Check each file or folder at most once per request, recommended for
2341
+     *      general use if outside changes are possible.
2342
+     *
2343
+     * Defaults to ``0``
2344
+     */
2345
+    'filesystem_check_changes' => 0,
2346
+
2347
+    /**
2348
+     * Store part files created during upload in the same storage as the upload
2349
+     * target. Setting this to false stores part files in the root of the user's
2350
+     * folder, which may be necessary for external storage with limited rename
2351
+     * capabilities.
2352
+     *
2353
+     * Defaults to ``true``
2354
+     */
2355
+    'part_file_in_storage' => true,
2356
+
2357
+    /**
2358
+     * Specify the location of the ``mount.json`` file.
2359
+     *
2360
+     * Defaults to ``data/mount.json`` in the Nextcloud directory.
2361
+     */
2362
+    'mount_file' => '/var/www/nextcloud/data/mount.json',
2363
+
2364
+    /**
2365
+     * Prevent Nextcloud from updating the cache due to filesystem changes for all
2366
+     * storage.
2367
+     *
2368
+     * Defaults to ``false``
2369
+     */
2370
+    'filesystem_cache_readonly' => false,
2371
+
2372
+    /**
2373
+     * List of trusted proxy servers. Supported formats:
2374
+     * - IPv4 addresses, e.g., `192.168.2.123`
2375
+     * - IPv4 ranges in CIDR notation, e.g., `192.168.2.0/24`
2376
+     * - IPv6 addresses, e.g., `fd9e:21a7:a92c:2323::1`
2377
+     * - IPv6 ranges in CIDR notation, e.g., `2001:db8:85a3:8d3:1319:8a20::/95`
2378
+     *
2379
+     * If a request's `REMOTE_ADDR` matches an address here, it is treated as a proxy,
2380
+     * and the client IP is read from the HTTP header specified in
2381
+     * `forwarded_for_headers` instead of `REMOTE_ADDR`.
2382
+     *
2383
+     * Ensure `forwarded_for_headers` is configured if `trusted_proxies` is set.
2384
+     *
2385
+     * Defaults to ``[]`` (empty array)
2386
+     */
2387
+    'trusted_proxies' => ['203.0.113.45', '198.51.100.128', '192.168.2.0/24'],
2388
+
2389
+    /**
2390
+     * Headers trusted as containing the client IP address when used with
2391
+     * `trusted_proxies`. For example, use `HTTP_X_FORWARDED_FOR` for the
2392
+     * `X-Forwarded-For` header.
2393
+     *
2394
+     * Incorrect configuration allows clients to spoof their IP address, bypassing
2395
+     * access controls and rendering logs unreliable.
2396
+     *
2397
+     * Defaults to ``['HTTP_X_FORWARDED_FOR']``
2398
+     */
2399
+    'forwarded_for_headers' => ['HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR'],
2400
+
2401
+    /**
2402
+     * List of trusted IP ranges for admin actions. If non-empty, all admin actions
2403
+     * must originate from IPs within these ranges.
2404
+     *
2405
+     * Supported formats:
2406
+     * - IPv4 addresses or ranges, e.g., `192.0.2.42/32`, `233.252.0.0/24`
2407
+     * - IPv6 addresses or ranges, e.g., `2001:db8::13:37/64`
2408
+     *
2409
+     * Defaults to ``[]`` (empty array)
2410
+     */
2411
+    'allowed_admin_ranges' => ['192.0.2.42/32', '233.252.0.0/24', '2001:db8::13:37/64'],
2412
+
2413
+    /**
2414
+     * Maximum file size (in megabytes) for animating GIFs on public sharing pages.
2415
+     * If a GIF exceeds this size, a static preview is shown.
2416
+     *
2417
+     * Set to ``-1`` for no limit.
2418
+     *
2419
+     * Defaults to ``10`` megabytes
2420
+     */
2421
+    'max_filesize_animated_gifs_public_sharing' => 10,
2422
+
2423
+    /**
2424
+     * Set the lock's time-to-live (TTL) in seconds. Locks older than this are
2425
+     * automatically cleaned up.
2426
+     *
2427
+     * Defaults to ``3600`` seconds (1 hour) or the PHP `max_execution_time`,
2428
+     * whichever is higher.
2429
+     */
2430
+    'filelocking.ttl' => 60 * 60,
2431
+
2432
+    /**
2433
+     * Memory caching backend for file locking. Redis is highly recommended to avoid
2434
+     * data loss, as many memcache backends may evict values unexpectedly.
2435
+     *
2436
+     * Defaults to ``none``
2437
+     */
2438
+    'memcache.locking' => '\\OC\\Memcache\\Redis',
2439
+
2440
+    /**
2441
+     * Enable debug logging for file locking. This can generate a large volume of log
2442
+     * entries, potentially causing performance degradation and large log files on
2443
+     * busy instances.
2444
+     *
2445
+     * Use with `log.condition` to limit logging in production environments.
2446
+     *
2447
+     * Defaults to ``false``
2448
+     */
2449
+    'filelocking.debug' => false,
2450
+
2451
+    /**
2452
+     * Disable the web-based updater.
2453
+     *
2454
+     * Defaults to ``false``
2455
+     */
2456
+    'upgrade.disable-web' => false,
2457
+
2458
+    /**
2459
+     * Customize the CLI upgrade documentation link.
2460
+     */
2461
+    'upgrade.cli-upgrade-link' => '',
2462
+
2463
+    /**
2464
+     * Additional line(s) (string or array of strings)
2465
+     * that will be added to .user.ini on each update by the updater.
2466
+     *
2467
+     * Defaults to ``''`` (empty string)
2468
+     */
2469
+    'user_ini_additional_lines' => '',
2470
+
2471
+    /**
2472
+     * Customize the server logs documentation link for exception handling.
2473
+     */
2474
+    'documentation_url.server_logs' => '',
2475
+
2476
+    /**
2477
+     * Enable debugging mode for Nextcloud. Only use for local development, not in
2478
+     * production, as it disables minification and outputs additional debug
2479
+     * information.
2480
+     *
2481
+     * Defaults to ``false``
2482
+     */
2483
+    'debug' => false,
2484
+
2485
+    /**
2486
+     * Set the data fingerprint for the current data served. Used by clients to
2487
+     * detect if a backup has been restored. Update this by running:
2488
+     * ./occ maintenance:data-fingerprint
2489
+     *
2490
+     * Changing or deleting this value may cause connected clients to stall until
2491
+     * conflicts are resolved.
2492
+     *
2493
+     * Defaults to ``''`` (empty string)
2494
+     */
2495
+    'data-fingerprint' => '',
2496
+
2497
+    /**
2498
+     * This entry serves as a warning if the sample configuration was copied.
2499
+     * DO NOT ADD THIS TO YOUR CONFIGURATION!
2500
+     *
2501
+     * Ensure all settings are modified only after consulting the documentation.
2502
+     */
2503
+    'copied_sample_config' => true,
2504
+
2505
+    /**
2506
+     * Use a custom lookup server to publish user data.
2507
+     *
2508
+     * Defaults to ``https://lookup.nextcloud.com``
2509
+     */
2510
+    'lookup_server' => 'https://lookup.nextcloud.com',
2511
+
2512
+    /**
2513
+     * Enable Nextcloud's Global Scale architecture.
2514
+     *
2515
+     * Defaults to ``false``
2516
+     */
2517
+    'gs.enabled' => false,
2518
+
2519
+    /**
2520
+     * Configure federation for Global Scale setups. Set to 'global' to allow
2521
+     * federation outside the environment.
2522
+     *
2523
+     * Defaults to ``internal``
2524
+     */
2525
+    'gs.federation' => 'internal',
2526
+
2527
+    /**
2528
+     * List of user agents exempt from SameSite cookie protection due to non-standard
2529
+     * HTTP behavior.
2530
+     *
2531
+     * WARNING: Use only if you understand the implications.
2532
+     *
2533
+     * Defaults to:
2534
+     * - /^WebDAVFS/ (OS X Finder)
2535
+     * - /^Microsoft-WebDAV-MiniRedir/ (Windows WebDAV drive)
2536
+     */
2537
+    'csrf.optout' => [
2538
+        '/^WebDAVFS/', // OS X Finder
2539
+        '/^Microsoft-WebDAV-MiniRedir/', // Windows WebDAV drive
2540
+    ],
2541
+
2542
+    /**
2543
+     * Specify allowed user agents for Login Flow V2 using regular expressions.
2544
+     * User agents not matching this list are denied access to Login Flow V2.
2545
+     *
2546
+     * WARNING: Use only if you understand the implications.
2547
+     *
2548
+     * Example: Allow only the Nextcloud Android app:
2549
+     * 'core.login_flow_v2.allowed_user_agents' => ['/Nextcloud-android/i'],
2550
+     *
2551
+     * Defaults to ``[]`` (empty array)
2552
+     */
2553
+    'core.login_flow_v2.allowed_user_agents' => [],
2554
+
2555
+    /**
2556
+     * Show or hide the "simple sign up" link on public pages.
2557
+     * See: https://nextcloud.com/signup/
2558
+     *
2559
+     * Defaults to ``true``
2560
+     */
2561
+    'simpleSignUpLink.shown' => true,
2562
+
2563
+    /**
2564
+     * Enable or disable autocompletion for the login form. Disabling this prevents
2565
+     * browsers from remembering login credentials, which may be required for
2566
+     * compliance with certain security policies.
2567
+     *
2568
+     * Defaults to ``true``
2569
+     */
2570
+    'login_form_autocomplete' => true,
2571
+
2572
+    /**
2573
+     * Set a timeout (in seconds) for the login form. After this period, the form is
2574
+     * reset to prevent password leaks on public devices if the user forgets to clear
2575
+     * it.
2576
+     *
2577
+     * A value of 0 disables the timeout.
2578
+     *
2579
+     * Defaults to ``300`` seconds (5 minutes)
2580
+     */
2581
+    'login_form_timeout' => 300,
2582
+
2583
+    /**
2584
+     * Suppress warnings for outdated or unsupported browsers. When enabled, users
2585
+     * can bypass the warning after reading it.
2586
+     *
2587
+     * Set to ``true`` to disable the warning.
2588
+     *
2589
+     * Defaults to ``false``
2590
+     */
2591
+    'no_unsupported_browser_warning' => false,
2592
+
2593
+    /**
2594
+     * Disable background scanning of files. When enabled, a background job runs
2595
+     * every 10 minutes to sync the filesystem and database for up to 500 users with
2596
+     * unscanned files (size < 0 in filecache).
2597
+     *
2598
+     * Defaults to ``false``
2599
+     */
2600
+    'files_no_background_scan' => false,
2601
+
2602
+    /**
2603
+     * Log all database queries to a file.
2604
+     *
2605
+     * WARNING: This significantly reduces server performance and is intended only
2606
+     * for debugging or profiling query interactions. Sensitive data may be logged in
2607
+     * plain text.
2608
+     */
2609
+    'query_log_file' => '',
2610
+
2611
+    /**
2612
+     * Prefix all queries with the request ID when set to `yes`.
2613
+     *
2614
+     * Requires `query_log_file` to be set.
2615
+     */
2616
+    'query_log_file_requestid' => '',
2617
+
2618
+    /**
2619
+     * Include all query parameters in the query log when set to `yes`.
2620
+     *
2621
+     * Requires `query_log_file` to be set.
2622
+     * WARNING: This may log sensitive data in plain text.
2623
+     */
2624
+    'query_log_file_parameters' => '',
2625
+
2626
+    /**
2627
+     * Include a backtrace in the query log when set to `yes`.
2628
+     *
2629
+     * Requires `query_log_file` to be set.
2630
+     */
2631
+    'query_log_file_backtrace' => '',
2632
+
2633
+    /**
2634
+     * Log all Redis requests to a file.
2635
+     *
2636
+     * WARNING: This significantly reduces server performance and is intended only
2637
+     * for debugging or profiling Redis interactions. Sensitive data may be logged in
2638
+     * plain text.
2639
+     */
2640
+    'redis_log_file' => '',
2641
+
2642
+    /**
2643
+     * Enable diagnostics event logging. Logs timings of common execution steps at
2644
+     * debug level. Use with `log.condition` to enable conditionally in production.
2645
+     *
2646
+     * Defaults to ``true``
2647
+     */
2648
+    'diagnostics.logging' => true,
2649
+
2650
+    /**
2651
+     * Limit diagnostics event logging to events longer than the specified threshold
2652
+     * (in milliseconds). A value of 0 disables diagnostics event logging.
2653
+     */
2654
+    'diagnostics.logging.threshold' => 0,
2655
+
2656
+    /**
2657
+     * Enable profiling globally.
2658
+     *
2659
+     * Defaults to ``true``
2660
+     */
2661
+    'profile.enabled' => true,
2662
+
2663
+    /**
2664
+     * Override default scopes for account data. Valid properties and scopes are
2665
+     * defined in ``OCP\Accounts\IAccountManager``. Values are merged with defaults
2666
+     * from ``OC\Accounts\AccountManager``.
2667
+     *
2668
+     * Example: Set phone property to private scope:
2669
+     * ``[\OCP\Accounts\IAccountManager::PROPERTY_PHONE => \OCP\Accounts\IAccountManager::SCOPE_PRIVATE]``
2670
+     */
2671
+    'account_manager.default_property_scope' => [],
2672
+
2673
+    /**
2674
+     * Enable the deprecated Projects feature, superseded by Related Resources since
2675
+     * Nextcloud 25.
2676
+     *
2677
+     * Defaults to ``false``
2678
+     */
2679
+    'projects.enabled' => false,
2680
+
2681
+    /**
2682
+     * Enable the bulk upload feature.
2683
+     *
2684
+     * Defaults to ``true``
2685
+     */
2686
+    'bulkupload.enabled' => true,
2687
+
2688
+    /**
2689
+     * Enable fetching Open Graph metadata from remote URLs.
2690
+     *
2691
+     * Defaults to ``true``
2692
+     */
2693
+    'reference_opengraph' => true,
2694
+
2695
+    /**
2696
+     * Enable the legacy unified search.
2697
+     *
2698
+     * Defaults to ``false``
2699
+     */
2700
+    'unified_search.enabled' => false,
2701
+
2702
+    /**
2703
+     * Enable features that do not yet comply with accessibility standards.
2704
+     *
2705
+     * Defaults to ``true``
2706
+     */
2707
+    'enable_non-accessible_features' => true,
2708
+
2709
+    /**
2710
+     * Directories where Nextcloud searches for external binaries (e.g., LibreOffice,
2711
+     * sendmail, ffmpeg).
2712
+     *
2713
+     * Defaults to:
2714
+     * - /usr/local/sbin
2715
+     * - /usr/local/bin
2716
+     * - /usr/sbin
2717
+     * - /usr/bin
2718
+     * - /sbin
2719
+     * - /bin
2720
+     * - /opt/bin
2721
+     */
2722
+    'binary_search_paths' => [
2723
+        '/usr/local/sbin',
2724
+        '/usr/local/bin',
2725
+        '/usr/sbin',
2726
+        '/usr/bin',
2727
+        '/sbin',
2728
+        '/bin',
2729
+        '/opt/bin',
2730
+    ],
2731
+
2732
+    /**
2733
+     * Maximum chunk size for chunked uploads (in bytes). Larger chunks increase
2734
+     * throughput but yield diminishing returns above 100 MiB. Services like
2735
+     * Cloudflare may limit to 100 MiB.
2736
+     *
2737
+     * Defaults to ``100 * 1024 * 1024`` (100 MiB)
2738
+     */
2739
+    'files.chunked_upload.max_size' => 100 * 1024 * 1024,
2740
+
2741
+    /**
2742
+     * Maximum number of chunks uploaded in parallel during chunked uploads. Higher
2743
+     * counts increase throughput but consume more server resources, with diminishing
2744
+     * returns.
2745
+     *
2746
+     * Defaults to ``5``
2747
+     */
2748
+    'files.chunked_upload.max_parallel_count' => 5,
2749
+
2750
+    /**
2751
+     * Allow users to manually delete files from their trashbin. Automated deletions
2752
+     * (e.g., due to low quota) are unaffected.
2753
+     *
2754
+     * Defaults to ``true``
2755
+     */
2756
+    'files.trash.delete' => true,
2757
+
2758
+    /**
2759
+     * Enable PHP 8.4 lazy objects for Dependency Injection to improve performance by
2760
+     * avoiding instantiation of unused objects.
2761
+     *
2762
+     * Defaults to ``true``
2763
+     */
2764
+    'enable_lazy_objects' => true,
2765 2765
 ];
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1716,7 +1716,7 @@
 block discarded – undo
1716 1716
 	 * https://github.com/phpredis/phpredis/commit/c5994f2a42b8a348af92d3acb4edff1328ad8ce1
1717 1717
 	 */
1718 1718
 	'redis.cluster' => [
1719
-		'seeds' => [ // provide some or all of the cluster servers to bootstrap discovery, port required
1719
+		'seeds' => [// provide some or all of the cluster servers to bootstrap discovery, port required
1720 1720
 			'localhost:7000',
1721 1721
 			'localhost:7001',
1722 1722
 		],
Please login to merge, or discard this patch.