搭建企业NextCloud并集成ONLYOFFICE
部署安装
1.1离线安装
使用能够安全拉取nextcloud
镜像的服务器拉取镜像并打包成tar.gz
通过sftp
传输到准备好的部署服务器,这里使用的版本为aliyun
镜像源拉去的latest
版本如下
copy[root@VM-12-10-centos ~]# docker image inspect nextcloud:latest | grep -i version
"DockerVersion": "",
"PHP_VERSION=8.2.25",
"NEXTCLOUD_VERSION=30.0.1"
copydocker save -o nextcloud.tar.gz nextcloud:latest
或者使用提供的云盘链接下载并传输30.0.1
版本。
加载镜像到待部署服务器;
copydocker load -i nextcloud.tar.gz
部署容器,此处端口是9001
,请注意云服务器/本地服务器的端口开放
copymkdir -p /home/nextcloud
docker run -d --name=nextcloud -v /home/nextcloud:/var/www/html -p 9001:80 --restart=always nextcloud
1.2在线安装
使用可信、稳定的镜像源拉取docker
镜像进行部署
copy// 拉取镜像
docker pull nextcloud
// 拉取镜像后部署
mkdir -p /home/nextcloud
docker run -d --name=nextcloud -v /home/nextcloud:/var/www/html -p 9001:80 --restart=always nextcloud
初始化
2.1初始化数据库服务
访问应用http://192.168.xx.xx:9001
进入初始配置界面,部署完成会默认生成一个账号密码都是admin
的账户;
在MySQL
中创建用户nextcloud
,数据库nextcloud
,授权该数据库给用户;配置数据库,测试可使用SQLLite,生产环境使用Mysql(下边截图的“数据目录”系统默认为/var/www/html,强烈建议不要认为修改此目录)。
安装配置完成后使用admin
账户登录进入主界面。
使用过程中可能遇到的问题
参考文档:Nextcloud优化和问题解决合集(二) - 夏日冰菓
3.1 504 Gateway Time-out
安装 Nextcloud 显示504超时问题,在 nginx 配置文件钟添加以下语句即可解决:
copyfastcgi_read_timeout 86400;
重启nginx或者重新加载配置文件:
copynginx -s reload
3.2显示 ”php-imagick模块” 问题
此实例中的 php-imagick 模块不支持 SVG。为了获得更好的兼容性,建议安装它。如果是使用容器安装nextcloud可以使用以下命令来进入容器,注意修改容器名:
copydocker exec -it nextcloud /bin/sh
# 执行安装 imagemagick
apk add --no-cache imagemagick
# 或
apt install libmagickcore-6.q16-6-extra
安装成功后重启 nextcloud 服务
3.3显示 “您的安装没有设置默认的电话区域” 问题
您的安装没有设置默认的电话区域。这对验证配置设定中没有国家代码的电话号码而言是必需的。要允许没有国家代码的电话号码,请添加带区域相应的 ISO 3166-1 code ↗ 的“默认_电话_区域”到你的配置文件中。
在nextcloud config.php
文件配置,添加以下行数:
copy'default_phone_region' => 'CN',
3.4显示 “Strict-Transport-Security" HTTP 头未设为至少 "15552000" 秒” 问题
Strict-Transport-Security" HTTP 头未设为至少 "15552000" 秒。为了提高安全性,建议启用 HSTS,参考步骤见 安全小贴士
在 nginx 配置文件钟添加以下语句即可解决:
copyadd_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
重启nginx或者重新加载配置文件:
copynginx -s reload
NextCloud体验优化
参考文档:Nextcloud优化和问题解决合集(二) - 夏日冰菓
4.1添加redis缓存
基于docker
部署redis
,开放端口6379
,此处目录映射采用以下策略:
copy## 创建目录
mkdir -p /opt/redis/conf
mkdir -p /opt/redis/data
## 创建文件
touch /opt/redis/conf/redis.conf
# Docker 创建 Redis 容器命令
docker run \
--restart=always \
--log-opt max-size=100m \
--log-opt max-file=2 \
-p 6379:6379 \
--name redis \
-v /opt/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /opt/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass 123456
查看容器的ip
copydocker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
/nextcloud - 172.17.0.4
/redis - 172.17.0.3
/mysql - 172.17.0.2
编辑配置文件/home/nextcloud/config/config.php
,在'memcache.local' => '\OC\Memcache\APCu',
下面新增以下行(这里制定了使用15号库):
copy'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => array(
'host' => '172.17.0.6',
'port' => 6379,
'password' => 123456,
'dbindex' => 15,
),
修改结束后重启nextcloud
查看redis
中是否有值进入,若显示一些数值说明缓存成功。
4.2定时执行后台任务
根据官方建议使用系统定时来优化性能,在基本设置->后台任务
中勾选corn
;
回到服务器新建一个corntab
定时任务(注意把名字换成自己部署的):
copycrontab -e
*/5 * * * * docker exec --user www-data nextcloud php cron.php
4.3优化图片或视频缓存图加载慢或无法显示
默认情况下,动图或者视频格式的文件无法生成缩略图,或者生成缓慢,需要安装 FFmpeg 来解决问题:
copydocker exec -it nextcloud /bin/sh
# 执行安装 FFmpeg
apk add ffmpeg
# 或
apt install ffmpeg
安装成功后需要修改nextcloud config.php
文件配置,添加以下行数:
copy 'enable_previews' => true,
'enabledPreviewProviders' =>
array (
0 => 'OC\\Preview\\PNG',
1 => 'OC\\Preview\\JPEG',
2 => 'OC\\Preview\\GIF',
3 => 'OC\\Preview\\HEIC',
4 => 'OC\\Preview\\BMP',
5 => 'OC\\Preview\\XBitmap',
6 => 'OC\\Preview\\MP3',
7 => 'OC\\Preview\\TXT',
8 => 'OC\\Preview\\MarkDown',
9 => 'OC\\Preview\\Movie',
10 => 'OC\\Preview\\MKV',
11 => 'OC\\Preview\\MP4',
12 => 'OC\\Preview\\AVI',
13 => 'OC\\Preview\\Photoshop',
14 => 'OC\\Preview\\TIFF',
15 => 'OC\\Preview\\SVG',
),
重启Nextcloud服务解决缩略图问题。
4.4优化 php-fpm 性能,提高页面加载效率
优化www.conf
配置文件,增加更多的进程来处理页面数据:
copydocker exec -it nextcloud /bin/sh
# 查找 www.conf 位置,一般在/usr/local/etc/php-fpm.d/www.conf
find / -name www.conf
需要修改和添加的字段有:
copy# pm.max_children = 5
pm.max_children = 128
# pm.start_servers = 2
pm.start_servers = 14
#pm.min_spare_servers = 1
pm.min_spare_servers = 4
# pm.max_spare_servers = 3
pm.max_spare_servers = 24
# 添加以下字段
request_terminate_timeout = 300
数值越大,进程越多,平均每个进程消耗 32M-96M 内存,按需设置即可,设置成功后重启 nextcloud 服务。
4.5解除块大小限制,提升传输速度
在有良好的传输网络下,比如局域网,应当解除块大小限制来提升网络传输效率,默认是102400(10M),设置为0即可关闭块大小限制:
copydocker exec --user www-data nextcloud php occ config:app:set files max_chunk_size --value 0
4.6添加应用商店国内源
参考文档: Nextcloud应用商店空白加载不出来/Nextcloud应用商店无法打开 - 下一朵云
添加国内应用商店源,默认配置访问应用商店可能是空白或者无法打开,编辑config.php
文件添加国内镜像
copycd /home/nextcloud/config
vim config.php
追加下面的内容:
copy'appstoreenabled' => true,
'appstoreurl' => 'https://www.orcy.net/ncapps/v2/',
4.7Nextcloud跳转页面时出现欢迎页
每次点击标签栏跳转页面时都会出现一个类似欢迎的界面,通过查看网络请求怀疑可能是firstrunwizard/image/xxx.svg
这个请求,搜索关键字在官网找到了解决方案。
4.8修改注册时的默认语言和时区
在/home/nextcloud/config/config.php
中追加以下内容,实现用户注册时自动设置语言和区域:
copy'default_language' => 'zh_CN',
'default_locale' => 'zh',
重启nc
服务。
NextCloud集成ONLYOFFICE 实现文档在线预览
参考文档:https://cloud.tencent.com/developer/article/2304446
离线部署:https://pan.baidu.com/s/10oOVs9YpRsZujljRbIw1Jw?pwd=1234
更改config.php
配置文件,追加以下内容:
copy'allow_local_remote_servers' => true,
在服务器安装onlyoffice
(这里使用的是和nextcloud
同一台服务器):
copysudo docker run -i -t -d -p 9001:80 --restart=always onlyoffice/documentserver
离线部署同上,需要一台可以从镜像源拉取onlyoffice
的机器将其打包发送给目标服务器。
copy[root@localhost apps]# docker image inspect onlyoffice/documentserver:latest | grep -i version
"DockerVersion": "",
"PG_VERSION=14",
"BASE_VERSION=22.04",
"org.opencontainers.image.version": "22.04"
在头像下拉->应用
中搜索并安装onlyoffice
插件(也可以在应用商店官网直接下载直接解压到/var/www/html/apps
),安装启用之后回到头像下拉->管理设置->ONLYOFFICE
,设置ONLYOFFICE Docs
地址。
从2.7之后JWT
会默认生成。(A random secret is generated automatically if a custom secret has not been added during installation.)进入应用查看配置文件。
copycat /etc/onlyoffice/documentserver/local.json
// 对应密钥的json节点为
'services.CoAuthoring.secret.session.string'
点击保存回到文件
,可见文件的拓展栏上出现了ONLYOFFICE
的选项。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!