搭建企业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"
copy
docker save -o nextcloud.tar.gz nextcloud:latest

​ 或者使用提供的云盘链接下载并传输30.0.1版本。

​ 加载镜像到待部署服务器;

copy
docker load -i nextcloud.tar.gz

​ 部署容器,此处端口是9001,请注意云服务器/本地服务器的端口开放

copy
mkdir -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的账户;

image-20241105090503337

​ 在MySQL中创建用户nextcloud,数据库nextcloud,授权该数据库给用户;配置数据库,测试可使用SQLLite,生产环境使用Mysql(下边截图的“数据目录”系统默认为/var/www/html,强烈建议不要认为修改此目录)。

image-20241105090822131

​ 安装配置完成后使用admin账户登录进入主界面。

image-20241031165017830.png

使用过程中可能遇到的问题

参考文档:Nextcloud优化和问题解决合集(二) - 夏日冰菓

3.1 504 Gateway Time-out

​ 安装 Nextcloud 显示504超时问题,在 nginx 配置文件钟添加以下语句即可解决:

copy
fastcgi_read_timeout 86400;

​ 重启nginx或者重新加载配置文件:

copy
nginx -s reload

3.2显示 ”php-imagick模块” 问题

​ 此实例中的 php-imagick 模块不支持 SVG。为了获得更好的兼容性,建议安装它。如果是使用容器安装nextcloud可以使用以下命令来进入容器,注意修改容器名:

copy
docker 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 配置文件钟添加以下语句即可解决:

copy
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;

​ 重启nginx或者重新加载配置文件:

copy
nginx -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

copy
docker 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, ),

image-20241105092512371

​ 修改结束后重启nextcloud查看redis中是否有值进入,若显示一些数值说明缓存成功。

image-20241105092902451

4.2定时执行后台任务

​ 根据官方建议使用系统定时来优化性能,在基本设置->后台任务中勾选corn

image-20241105093214442

​ 回到服务器新建一个corntab定时任务(注意把名字换成自己部署的):

copy
crontab -e */5 * * * * docker exec --user www-data nextcloud php cron.php

4.3优化图片或视频缓存图加载慢或无法显示

​ 默认情况下,动图或者视频格式的文件无法生成缩略图,或者生成缓慢,需要安装 FFmpeg 来解决问题:

copy
docker 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配置文件,增加更多的进程来处理页面数据:

copy
docker 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即可关闭块大小限制:

copy
docker exec --user www-data nextcloud php occ config:app:set files max_chunk_size --value 0

4.6添加应用商店国内源

参考文档: Nextcloud应用商店空白加载不出来/Nextcloud应用商店无法打开 - 下一朵云

​ 添加国内应用商店源,默认配置访问应用商店可能是空白或者无法打开,编辑config.php文件添加国内镜像

copy
cd /home/nextcloud/config vim config.php

​ 追加下面的内容:

copy
'appstoreenabled' => true, 'appstoreurl' => 'https://www.orcy.net/ncapps/v2/',

image-20241106103631507

4.7Nextcloud跳转页面时出现欢迎页

​ 每次点击标签栏跳转页面时都会出现一个类似欢迎的界面,通过查看网络请求怀疑可能是firstrunwizard/image/xxx.svg这个请求,搜索关键字在官网找到了解决方案

image-20241106162818473

image-20241106163129754

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,

image-20241106141440847

​ 在服务器安装onlyoffice(这里使用的是和nextcloud同一台服务器):

copy
sudo 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地址。

image-20241106140913053

​ 从2.7之后JWT会默认生成。(A random secret is generated automatically if a custom secret has not been added during installation.)进入应用查看配置文件。

copy
cat /etc/onlyoffice/documentserver/local.json // 对应密钥的json节点为 'services.CoAuthoring.secret.session.string'

​ 点击保存回到文件,可见文件的拓展栏上出现了ONLYOFFICE的选项。

image-20241106141628786

posted @   Purearc  阅读(624)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示
🚀