摘要訊息 : 對 Nextcloud 進行進階的配置.

0. 前言

通过对于 Seafile 进阶玩法的分析, 其实就是通过修改 Seafile 的配置文件来实现一些默认没有的功能和默认不太令人满意的配置. 幸运的是, NextCloud 的配置文件只有一个. 如果你是通过本博客给出的方式安装 NextCloud 的话, 可以通过修改 /www/drive/config/config.php 中的配置来实现 NextCloud 的进阶玩法.

本文在 2022 年 3 月 18 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.

1. 配置

下面给出了几乎所有的配置, 并且给出了中文说明, 可以参考中文说明进行修改. 如果有些用不到或者你不是很懂的地方, 就不建议修改了. 下面给出的是已经配置好的, 有些注释掉的功能, 如果有需要用到的话, 可以取消注释. 在最开始的一部分配置可以在你自己的 config.php 中找到.

<?php
$CONFIG = array(
  'instanceid' => '改為你自己的 ID',    #安装 ID, 在安装时自动设定, 并且更改会出导致 NextCloud 页面无法访问
  'passwordsalt' => '改為你自己的 salt',    #用于加密密码, 更改后可能会导致无法登陆
  'secret' => '改為你自己的 secret',    #用于各种用途, 例如加密传输等
  'trusted_domains' => array (		#域名
    0 => '你的網域名稱',
  ),
  'datadirectory' => '/www/drive/data',		#NextCloud 数据放置目录
  'version' => '改為你現在的版本號',		#版本号
  /* 数据库信息 */
  'dbtype' => 'mysql',		#数据库类型
  'dbhost' => 'localhost',		#数据库服务器
  'dbname' => '',		#数据库名
  'dbuser' => '',		#数据库用户名
  'dbpassword' => '',		#数据库密码
  'dbtableprefix' => 'oc_',		#数据库前缀
  'installed' => True,		#是否安装
  'default_language' => 'za',		#默认语言
  'defaultapp' => 'files',		#默认 APP
  'knowledgebaseenabled' => true,		#在用户菜单中添加帮助选项
  'allow_user_to_change_display_name' => False,		#是否允许用户改变显示昵称
  'remember_login_cookie_lifetime' => 60*60*24*15,		#登录 Cookie 保留时间
  'session_lifetime' => 60 * 60 * 24,		#Session 保留时间
  'session_keepalive' => true,		#保持 Session 活跃
  'token_auth_enforced' => false,		#强制开启客户端验证
  'auth.bruteforce.protection.enabled' => true,		#强力保护
  'skeletondirectory' => '/www/drive/core/skeleton',		#skeleton 目录
  'user_backends' => array(
	  array(
	  	'class' => 'OC_User_IMAP',		#可选 : IMAP (OC_User_IMAP), SMB(OC_User_SMB) and FTP (OC_User_FTP)
	  	'arguments' => array('{imap.gmail.com:993/imap/ssl}INBOX')
	  )
  ),
  'lost_password_link' => 'https://drive.jonny.vip/forgot',		#忘记密码链接
  /* 邮箱服务器信息 */
  'mail_domain' => 'jonny.vip',		#发送邮箱域名
  'mail_from_address' => 'system',		#发送邮箱用户
  'mail_smtpdebug' => false,		#SMTP Debug
  'mail_smtpmode' => 'php',		#发送模式, 可选 : sendmail、smtp、qmail、php
  'mail_smtphost' => '127.0.0.1',		#邮件服务器
  'mail_smtpport' => 25,		#邮件服务器端口
  'mail_smtptimeout' => 10,		#超时设定, 单位 : 秒
  'mail_smtpsecure' => '',		#安全模式, 可选 : ssl、tls
  'mail_smtpauth' => false,		#验证
  'mail_smtpauthtype' => 'LOGIN',		#验证模式, 可选 : LOGIN、PLAIN
  'mail_smtpname' => '',		#验证用户名
  'mail_smtppassword' => '',		#验证密码
  /* Proxy */
  'overwritehost' => '',		#重写地址
  'overwriteprotocol' => '',		#协议, 可选 : HTTP、HTTPS
  'overwritewebroot' => '',		#重写根目录
  'overwritecondaddr' => '',		#IP 地址重写, 支持正则表达式
  'overwrite.cli.url' => '',		#制定 URL
  'htaccess.RewriteBase' => '/',		#htaccess 重写
  'htaccess.IgnoreFrontController' => false,		#如果 Apache 没有启用 "mov_env", 则启用此项
  'proxy' => '',		#代理服务器
  'proxyuserpwd' => '',		#代理服务器验证
  'trashbin_retention_obligation' => '7, 30',		#垃圾箱选项, 保留 D1 天, 在 D2 天删除. 设定为 auto 则为 30天删除. 可选项 : auto、D, auto、auto, D、D1, D2、disabled
  'versions_retention_obligation' => '30, 180',		#文件版本保留, 可选项同上
  'appcodechecker' => true,		#检测 APP 是否使用私有 API
  'updatechecker' => true,		#更新检测
  'updater.server.url' => 'https://updates.nextcloud.com/updater_server/',		#更新检测服务器
  'updater.release.channel' => 'stable',		#更新选项, 可选 : daily、beta、stable、production
  'has_internet_connection' => true,		#是否有网路链接
  'check_for_working_webdav' => true,		#验证 working WebDAV 的连通性
  'check_for_working_wellknown_setup' => true,		#验证 working .well-known URL 重定向
  'check_for_working_htaccess' => true,		#检测 .htaccess 文件可写性
  'config_is_read_only' => false,		#配置文件权限
  'log_type' => 'file',		#日志文件类型
  'logfile' => '/var/log/nextcloud.log',		#日志文件保存路径
  'loglevel' => 0,		#日志等级, 可选 : 0 = Debug, 1 = Info, 2 = Warning, 3 = Error, and 4 = Fatal
  'syslog_tag' => 'Nextcloud',		#
  'log.condition' => [
  	'shared_secret' => '57b58edb6637fe3059b3595cf9c41b9',
	   'users' => ['sample-user'],
	  'apps' => ['files'],
  ],
  'logdateformat' => 'l, d-M-Y H:i:s T',		#日期类型
  'logtimezone' => 'Asia/Hong_Kong',		#时间区域
  'log_query' => false,		#多服务器日志
  'cron_log' => true,		#cron 日志
  'log_rotate_size' => false,		#日志文件大小限制
  'customclient_desktop' =>		#桌面客户端链接
	  'https://nextcloud.com/install/#install-clients',
  'customclient_android' =>		#Android 客户端链接
	  'https://play.google.com/store/apps/details?id=com.nextcloud.client',
  'customclient_ios' =>		#iOS 客户端链接
	  'https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8',
  'appstoreenabled' => true,		#NextCloud App Store
  'apps_paths' => array(		#APP 路径
	  array(
	   	'path'=> '/www/drive/apps',
	  	'url' => '/apps',
	  	'writable' => true,
	  ),
  ),
  'enable_previews' => true,		#开启文件预览
  'preview_max_x' => 2048,		#最大宽度
  'preview_max_y' => 2048,		#最大高度
  'preview_max_scale_factor' => 10,		#模糊系数
  'preview_max_filesize_image' => 50,		#预览图片最大大小
  /*'preview_libreoffice_path' => '/usr/local/libreoffice',	#libreoffice 预览配置
  'preview_office_cl_parameters' =>
  	' --headless --nologo --nofirststartwizard --invisible --norestore '.
  	'--convert-to pdf --outdir ',*/
  'enabledPreviewProviders' => array(		#可预览文件后缀
  	'OC\\Preview\\PNG',
  	'OC\\Preview\\JPEG',
  	'OC\\Preview\\GIF',
  	'OC\\Preview\\BMP',
  	'OC\\Preview\\XBitmap',
  	'OC\\Preview\\MP3',
  	'OC\\Preview\\TXT',
  	'OC\\Preview\\MarkDown',
    'OC\\Preview\\Movie',
    'OC\\Preview\\MSOfficeDoc',
    'OC\\Preview\\MSOffice2003',
    'OC\\Preview\\MSOffice2007',
    'OC\\Preview\\OpenDocument',
    'OC\\Preview\\StarOffice',
    'OC\\Preview\\Illustrator',
    'OC\\Preview\\PDF',
    'OC\\Preview\\Photoshop',
    'OC\\Preview\\Postscript',
    'OC\\Preview\\SVG',
    'OC\\Preview\\TIFF',
    'OC\\Preview\\Font'
  ),
  'ldapUserCleanupInterval' => 51,		#检查用户后台作业时间间隔, 单位 : 分
  'comments.managerFactory' => 'OC\\Comments\\ManagerFactory',		#Comments 
Manager Factory
  'systemtags.managerFactory' => 'OC\\SystemTag\\ManagerFactory',	#SystemTag Manager Factory
  'mail_template_class' => 'OC\\Mail\\EMailTemplate',		#邮件模板
  'maintenance' => false,		#维护模式
  /**'openssl' => array(		#OpenSSL
  	'config' => '/absolute/location/of/openssl.cnf',
  ),**/
  'memcache.local' => 'OC\\Memcache\\APCu',		#Memcached
  'memcache.distributed' => 'OC\\Memcache\\Memcached',
  'redis' => [		#Redis
  	'host' => 'localhost', #Redis 服务器
  	'port' => 6379,		#Redis 端口
  	'timeout' => 0.0,		#Redis 超时设定
  	'password' => '????????',		#Redis 密码
  	'dbindex' => 1,		#Redis 数据库选择
  ],
  'memcached_servers' => array(		#Memcached 服务器
  	array('localhost', 11211),
  ),
  'memcached_options' => array(		#Memcached 选项
  	\Memcached::OPT_CONNECT_TIMEOUT => 50,
  	\Memcached::OPT_RETRY_TIMEOUT =>   50,
  	\Memcached::OPT_SEND_TIMEOUT =>    50,
  	\Memcached::OPT_RECV_TIMEOUT =>    50,
  	\Memcached::OPT_POLL_TIMEOUT =>    50,
  	\Memcached::OPT_COMPRESSION =>          true,
  	\Memcached::OPT_LIBKETAMA_COMPATIBLE => true,
  	\Memcached::OPT_BINARY_PROTOCOL =>      true,
  ),
  'cache_path' => '/www/drive/data/$user/cache',		#缓存目录
  'cache_chunk_gc_ttl' => 60*60*24,		#缓存删除时间
  /*'objectstore' => [		#Object Store 模式
  	'class' => 'OC\\Files\\ObjectStore\\Swift',
  	'arguments' => [
  		// trystack will use your facebook id as the user name
  		'username' => 'jonny0201',
  		// in the trystack dashboard go to user -> settings -> API Password to
  		// generate a password
  		'password' => 'Secr3tPaSSWoRdt7',
  		// must already exist in the objectstore, name can be different
  		'container' => 'nextcloud',
  		// prefix to prepend to the fileid, default is 'oid:urn:'
  		'objectPrefix' => 'oid:urn:',
  		// create the container if it does not exist. default is false
  		'autocreate' => true,
  		// required, dev-/trystack defaults to 'RegionOne'
  		'region' => 'RegionOne',
  		// The Identity / Keystone endpoint
  		'url' => 'http://8.21.28.222:5000/v2.0',
  		// required on dev-/trystack
  		'tenantName' => 'facebook100000123456789',
  		// dev-/trystack uses swift by default, the lib defaults to 'cloudFiles'
  		// if omitted
  		'serviceName' => 'swift',
  		// The Interface / url Type, optional
  		'urlType' => 'internal'
  	],
  ],*/
  'sharing.managerFactory' => 'OC\\Share20\\ProviderFactory',		#Share Provider Factory
  'sharing.maxAutocompleteResults' => 7,		#用户搜索最大返回数
  'sharing.minSearchStringLength' => 0,		#搜索最小长度
  /*'dbdriveroptions' => array(		#MySQL SSL
  	PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
  	PDO::MYSQL_ATTR_INIT_COMMAND => 'SET wait_timeout = 28800'
  ),*/
  #'sqlite.journal_mode' => 'DELETE',		#SQLite journal 模式
  'mysql.utf8mb4' => false,
  'supportedDatabases' => array(		#支持的数据库
  	'sqlite',
  	'mysql',
  	'pgsql',
  	'oci',
  ),
  'tempdirectory' => '/tmp/nextcloudtemp',		#Temp 文件夹
  'hashingCost' => 10,		#加密数值
  #'blacklisted_files' => array('.htaccess'),		#禁止列表
  'share_folder' => '/',		#默认分享文件夹
  'theme' => '',		#主题
  'cipher' => 'chacha20',		#加密方式
  'minimum.supported.desktop.version' => '2.17.8',		#最小桌面客户端版本
  'quota_include_external_storage' => false,		#外部存储
  'filesystem_check_changes' => 1,		#文件系统更改检测
  'part_file_in_storage' => true,		#上传时切割
  'mount_file' => '/www/drive/data/mount.json',		#mount.json 路径
  'filesystem_cache_readonly' => false,		#文件缓存只读
  #'trusted_proxies' => array('203.0.113.45', '198.51.100.128'),		#信任的 Proxy 服务器列表
  'forwarded_for_headers' => array('HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR'),		#转发
  'max_filesize_animated_gifs_public_sharing' => -1,		#动态图片 gif 预览最大大小, 单位 : MB
  'filelocking.enabled' => true,		#文件协作
  'filelocking.ttl' => 60*60,		#文件协作锁定时间, 单位 : 秒
  'memcache.locking' => 'OC\\Memcache\\Redis',		#文件协作缓存方式
  'filelocking.debug' => false,		#文件写作 Debug 模式
  'upgrade.disable-web' => false,		#基于 Web 的更新程序
  'debug' => false,		#Debug 模式
  'data-fingerprint' => '',		#备份确认
  'copied_sample_config' => false,		#默认配置确认
  #'lookup_server' => 'https://lookup.nextcloud.com',		#自定义查询服务器
  'gs.enabled' => false,		#Nextcloud's Global Scale
  'gs.federation' => 'internal',		#内部使用 Nextcloud's Global Scale
);
?>