搭建企业NextCloud并集成ONLYOFFICE

部署安装

1.1离线安装

​ 使用能够安全拉取nextcloud镜像的服务器拉取镜像并打包成tar.gz通过sftp传输到准备好的部署服务器,这里使用的版本为aliyun镜像源拉去的latest版本如下

[root@VM-12-10-centos ~]# docker image inspect nextcloud:latest | grep -i version
        "DockerVersion": "",
                "PHP_VERSION=8.2.25",
                "NEXTCLOUD_VERSION=30.0.1"
docker save -o nextcloud.tar.gz nextcloud:latest

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

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

docker load -i nextcloud.tar.gz

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

mkdir -p /home/nextcloud
docker run -d --name=nextcloud  -v /home/nextcloud:/var/www/html -p 9001:80 --restart=always nextcloud

1.2在线安装

​ 使用可信、稳定的镜像源拉取docker镜像进行部署

// 拉取镜像
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 配置文件钟添加以下语句即可解决:

fastcgi_read_timeout 86400;

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

nginx -s reload

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

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

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文件配置,添加以下行数:

'default_phone_region' => 'CN',

3.4显示 “Strict-Transport-Security" HTTP 头未设为至少 "15552000" 秒” 问题

Strict-Transport-Security" HTTP 头未设为至少 "15552000" 秒。为了提高安全性,建议启用 HSTS,参考步骤见 安全小贴士

​ 在 nginx 配置文件钟添加以下语句即可解决:

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

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

nginx -s reload

NextCloud体验优化

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

4.1添加redis缓存

​ 基于docker部署redis,开放端口6379,此处目录映射采用以下策略:

## 创建目录
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

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号库):

'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定时任务(注意把名字换成自己部署的):

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

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

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

docker exec -it nextcloud /bin/sh
# 执行安装 FFmpeg
apk add ffmpeg
# 或
apt install ffmpeg

​ 安装成功后需要修改nextcloud config.php文件配置,添加以下行数:

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

docker exec -it nextcloud /bin/sh
# 查找 www.conf 位置,一般在/usr/local/etc/php-fpm.d/www.conf
find / -name www.conf

​ 需要修改和添加的字段有:

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

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

4.6添加应用商店国内源

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

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

cd /home/nextcloud/config
vim config.php

​ 追加下面的内容:

'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中追加以下内容,实现用户注册时自动设置语言和区域:

'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配置文件,追加以下内容:

'allow_local_remote_servers' => true,

image-20241106141440847

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

sudo docker run -i -t -d -p 9001:80 --restart=always onlyoffice/documentserver

​ 离线部署同上,需要一台可以从镜像源拉取onlyoffice的机器将其打包发送给目标服务器。

[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.)进入应用查看配置文件。

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

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

image-20241106141628786

posted @ 2024-12-17 21:51  Purearc  阅读(1586)  评论(2)    收藏  举报