Skip to content
Table of contents

Nextcloud + OnlyOffice 安装与使用

1 min read ··· views #nextcloud / #onlyoffice / #docker

安装 Nextcloud

docker run -d --name nextcloud --restart=always -v /home/docker/workspace/nextcloud:/var/www/html -e TZ="Asia/Shanghai" -p 8080:80 nextcloud
bash

安装 OnlyOffice 服务

#安装 onlyoffice
docker run -d --restart=always --name onlyoffice -p 9002:80 -p 9001:443 onlyoffice/documentserver
bash

使用 docker-compose.yml

获取 OnlyOffice 秘钥(用于后续 Nextcloud 的 OnlyOffice 插件配置)

进入 OnlyOffice 容器内:

## 进入onlyoffice容器
docker exec -it onlyoffice bash

## 查看秘钥
cat /etc/onlyoffice/documentserver/local.json
bash

随后将离线下载的 Nextcloud app 压缩包传入容器中的 /var/www/html/apps 目录(即挂载数据卷的 apps 目录),解压即可。

tar -zxvf onlyoffice.tar.gz
bash

OnlyOffice 添加字体

# 将字体文件传入容器中
cp ~/方正书宋简体.ttf onlyoffice:/usr/share/fonts/truetype/custom/
# 进入容器
docker exec -it onlyoffice bash
# 执行脚本,随后刷新浏览器缓存即可
bash /usr/bin/documentserver-generate-allfonts.sh
bash

Nextcloud 优化

配置缓存 APCu + Redis

APCu:配置 config.php 文件

'memcache.local'  =>  '\\OC\\Memcache\\APCu' ,
bash

检查是否生效:

docker exec -it nextcloud bash

cat /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini
bash

Redis:配置 config.php 文件

  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'redis' => array(
     'host' => '49.233.160.34',
     'port' => 16379,
  ),
bash

使用 HTTP/2

  • 进入 Nextcloud 容器

    docker exec -it nextcloud bash
    bash
  • 启用 http2 模块

    a2enmod http2
    bash

后台任务

选择第三种 Cron

在宿主机上确认 Cron 服务正在运行,可使用以下命令:

systemctl status cron
bash

可手动执行这条命令,验证其是否正常运行:

docker exec -u www-data nextcloud php -f /var/www/html/cron.php
bash

检查是否已安装:

rpm -qa | grep cronie
bash

启动并启用 cron 服务:

sudo systemctl start crond
sudo systemctl enable crond
bash

在宿主机的 Crontab 中添加任务

使用 crontab -e 编辑宿主机的 cron 配置文件。

添加如下行,定期在容器内执行 cron.php

*/5 * * * * docker exec -u www-data nextcloud php -f /var/www/html/cron.php
plaintext

这条命令每 5 分钟在容器内以 www-data 用户身份执行 Nextcloud 的 cron.php

修改 PHP 运行内存

docker exec -it nextcloud bash

sed -i 's/memory_limit=.*/memory_limit=1024M/' /usr/local/etc/php/conf.d/nextcloud.ini
bash