# Nextcloud配置和优化

- 连结：https://blog.guohao.asia/nextcloud%e9%85%8d%e7%bd%ae%e5%92%8c%e4%bc%98%e5%8c%96.html
- 发布时间：2024-11-19T07:26:48+08:00
- 作者：null

中文   英文   韩语   日语

# Nextcloud 配置和优化

---

## Nextcloud 数据库索引修复

当 Nextcloud 数据库丢失索引时，可以通过命令行手动修复。请在 Nextcloud 安装根目录
执行以下命令：

    ```language-default
     sudo -u www php occ db:add-missing-indices
    ```

例如，修复丢失的索引“mail_messages_msgid_idx”：

    ```language-default
     sudo -u www php occ db:add-missing-indices
    ```

修复后可以显著提高查询速度。

## Nextcloud 配置文件（config.php）

    ```language-default
     <?php
    $CONFIG = array('objectstore' => array('class' => '\\OC\\Files\\ObjectStore\\S3',
        'arguments' => array('bucket' => 'nextcloud-*******', // 存储桶名称（空间名称）'autocreate' => false,
          'key'  => 'AKID***********', // 替换为用户的 SecretId
          'secret' => '**********', // 替换为用户的 SecretKey
          'hostname' => 'cos.<Region>.myqcloud.com', // 将 <Region> 修改为所属地域，如 ap-shanghai
          'use_ssl' => true,
        ),
      ),
      'instanceid' => 'oc82tpo2f',
      'passwordsalt' => '2GdQCVNsIVYF1KLP3fT3woH69X',
      'secret' => 'VSy0Y+/2wV7g4kvbiKSE0dSa2Yp1ajtvvZpgdV14Lsc',
      'trusted_domains' => array(0 => 'nextcloud.***.***',
      ), // nextcloud 域名
      'datadirectory' => '/www/nextcloud/data', // data 路径，请根据实际情况修改
      'dbtype' => 'mysql',
      'version' => '27.1.5.1',
      'overwrite.cli.url' => 'https://nextcloud.***.***/nextcloud',
      'dbname' => 'nextcloud',
      'dbhost' => 'localhost',
      'dbport' => '','dbtableprefix'=>'oc_','mysql.utf8mb4'=> true,'dbuser'=>'nextcloud', // 数据库用户名'dbpassword'=>'******', // 数据库密码'installed'=> true,'maintenance'=> false,'updater.secret'=>'\$2y\$10\$0eTb6aJ4u3NAWwlQk2qkUOTlI3.0O6TGLwAQOCyUtH/wmCpC','theme'=>'',
      'loglevel' => 2,
      'filelocking.enabled' => true,
      'memcache.local' => '\\OC\\Memcache\\Redis',
      'memcache.locking' => '\\OC\\Memcache\\Redis',
      'redis' => array('host' => '127.0.0.1',
        'port' => 6379,
        'timeout' => 0.0,
        'password' => '', // redis 密码
      ),
      'mail_smtpmode' => 'smtp',
      'mail_sendmailmode' => 'smtp',
      'mail_from_address' => '****', // 请根据实际情况修改
      'mail_domain' => 'outlook.com', // 请根据实际情况修改
      'mail_smtpauth' => 1,
      'mail_smtphost' => 'smtp-mail.outlook.com', // 请根据实际情况修改
      'mail_smtpport' => '587', // 请根据实际情况修改
      'mail_smtpname' => '*****', // 请根据实际情况修改
      'mail_smtppassword' => '****', // 请根据实际情况修改
      'enabledPreviewProviders' => [
        'OC\Preview\MP3',
        'OC\Preview\TXT',
        'OC\Preview\MarkDown',
        'OC\Preview\OpenDocument',
        'OC\Preview\Krita',
        'OC\Preview\Imaginary',
      ],
      'preview_imaginary_url' => 'http://<url of imaginary>',
    );
    ```

## Nextcloud 性能优化

### 后台任务

设置 cron.php 每 5 分钟运行一次，cron.php 的具体路径在 nextcloud 安装的根目录下。

    ```language-default
     crontab -u www -e
    */5 * * * * php -f /PathToNextcloud/cron.php
    ```

### PHP 配置优化

 1. 注释掉 php.ini 中的 `output_buffering` 设置：

    ```language-default
     ; output_buffering = 4096
    ```

 2. 启用 OPcache 以提高性能：

    ```language-default
    opcache.enable=1
    opcache.enable_cli=1
    opcache.interned_strings_buffer=32
    opcache.max_accelerated_files=80000
    opcache.memory_consumption=128
    opcache.save_comments=1
    opcache.revalidate_freq=3
    ```

 3. 设置 HSTS 以提高安全性，在 apache 的配置文件中加入：

    ```language-default
    <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>
    ```

### 完整性检查

如果 Nextcloud 文件完整性检查发现问题，可以根据文档中的指导进行修复。例如，`.user.
ini`文件缺失可以创建该文件并设置适当的`open_basedir`，或者在宝塔面板中开启放跨站。

### 完整 config.php 设置

    ```language-default
    <?php
    $CONFIG = array('instanceid' => 'xxxxxxxxxxx',
      'passwordsalt' => 'xxxxxxxxxxxxxxxxxx',
      'secret' => 'TNFR/+xxxxxxxxxxxxxxxxxxx/',
      'trusted_domains' => 
      array (0 => 'nextcloud.guohao.asia',
      ),
      'datadirectory' => '/www/wwwroot/nextcloud/data',
      'dbtype' => 'mysql',
      'version' => '24.0.5.1',
      'overwrite.cli.url' => 'https://nextcloud.guohao.asia', 
      'dbname' => 'xxxxxxxxxxxx',
      'dbhost' => 'localhost',
      'dbport' => '','dbtableprefix'=>'oc_','mysql.utf8mb4'=> true,'dbuser'=>'xxxxxxxxxx','dbpassword'=>'xxxxxxxxx','installed'=> true,'app_install_overwrite' => 
      array (0 => 'tencentcloudcosconfig',
        1 => 'files_external_onedrive',
      ),  
      // 缓存设置
      'memcache.local' => 'OC\\Memcache\\Redis',        
      'memcache.distributed' => 'OC\\Memcache\\Memcached',
      'redis' => [        #Redis
        'host' => 'localhost', #Redis 服务器
        'port' => 6379,     #Redis 端口
        'timeout' => 0.0,       #Redis 超时设定
        'password' => 'XXXXXXXXXXX',        #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/wwwroot/nextcloud/cache',        #缓存目录
      'cache_chunk_gc_ttl' => 60*60*24,        #缓存删除时间
      // 腾讯云 COS  
      'objectstore' => 
      array ('class' => '\\OC\\Files\\ObjectStore\\S3',
        'arguments' => 
        array ('key' => 'XXXXXXXXXXXXXXXXXXXXXXXX',
          'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXX',
          'bucket' => 'nextcloud-000000000',
          'hostname' => 'cos.ap-beijing.myqcloud.com',
          'use_ssl' => true,
          'autocreate' => false,
        ),
      ),
      // 电话区号
      'default_phone_region' => 'CN',
    );
    ```

## 解决 Nextcloud 无法更新应用

在 `config.php` 中添加以下内容以启用应用商店：

    ```language-default
     'appstoreenabled' => true, 'appstoreurl' => 'https://www.orcy.net/ncapps/v1/',
    ```

更换为国内源（更新进度较官方略慢）。

## 退出维护模式
