安装

1、先安装好Mysql8.0以及Redis
2、在数据库中新建一个数据库,例如nextcloud
3、创建挂载目录

mkidr /opt/nextcloud

4、使用docker run安装

docker run -d --name nextcloud -e TZ=Asia/Shanghai -p 4443:443 -p 8080:80 -v /opt/nextcloud:/config --restart=always linuxserver/nextcloud  

5、配置好用户名、密码、数据库等信息后,点击install

优化

登录后在概览中发现有一些警告和报错
screenshot-20250729-184526.png
1、通过 HTTP 不安全地访问网站。 强烈建议您将服务器设置为需要 HTTPS。 如果没有它,一些重要的网络功能(例如 "复制到剪贴板" 或 "服务人员" )将无法工作! 了解更多详情,请参见文档 ↗
解决办法:
参考文章

使其通过域名访问,然后修改配置文件后重启(注意,改完之后只能使用域名访问,内网ip+端口无法访问了)

vim /opt/nextcloud/www/nextcloud/config/config.php
# 在文档的第9行新加一个域名
array (
    0 => '10.10.10.10:8080',
    1 => '你的域名',
),
'overwriteprotocol' => 'https'

2、服务器没有配置维护时段开始时间。 这意味着资源密集型日常后台作业也将在您的主要使用时间执行。 我们建议将其设置为低使用率的时间,这样用户就不会受到这些繁重任务造成的负载的影响。 了解更多详情,请参见文档
解决办法:
docker进入该容器内部,修改定时任务

docker exec -it  nextcloud /bin/bash

cd /app/www/public/
# 使用 occ 命令设置维护时段(例如设为每天凌晨 3 点)
php occ config:app:set core backgroundjobs_mode --value=webcron
php occ config:system:set maintenance_window_start --type=integer --value=3

3、有一个或多个 mimetype 迁移可用。有时会添加新的 mimetype 以更好地处理某些文件类型。在较大的实例上迁移 mimetype 需要很长时间,因此升级期间不会自动完成此操作。使用命令 "occ Maintenance:repair --include-expensive" 执行迁移
解决办法:

docker exec -it  nextcloud /bin/bash
cd /app/www/public
php occ maintenance:repair --include-expensive

4、您的实例上的某些标头设置不正确 - 未设置 Strict-Transport-Security HTTP 标头(应至少为 15552000 秒)。为了增强安全性,建议启用 HSTS。 了解更多详情,请参见文档
解决办法:

vim /opt/nextcloud/nginx/site-confs/default.conf
# 在server中新增
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;

5、当前正在使用数据库处理事务性文件锁定。若有内存缓存可用,请进行配置以提升性能。 了解更多详情,请参见文档 ↗
6、未配置内存缓存。若有内存缓存可用,请进行配置以提升性能。 了解更多详情,请参见文档 ↗
5、6解决办法:

vim /opt/nextcloud/www/nextcloud/config/config.php

# 在'maintenance' => false下面新增
'memcache.locking' => '\\OC\\Memcache\\Redis',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.local' => '\\OC\\Memcache\\Redis',
'redis' => 
    array (
        'host' => '10.10.10.10',
        'port' => 6379,
        'password' => '123456',
    ),

7、您在安装过程中未设置默认的国际区号。缺失国际区号的电话号码时将使用默认的国际区号进行验证。要允许无国际区号的电话,请在您的配置文件中添加 “default_phone_region” 设置选项并依照 ISO 3166-1 进行设置。 了解更多详情,请参见文档
解决办法:

vim /opt/nextcloud/www/nextcloud/config/config.php

# 新增
'default_phone_region' => 'CN',

重启nextcloud容器

docker restart nextcloud

screenshot-20250729-191651.png

最后修改:2025 年 07 月 29 日
如果觉得我的文章对你有用,请随意赞赏