容器部署
创建目录
mkdir -p /opt/nextcloud进入目录
cd /opt/nextcloud创建docker-compose.yml文件
vim docker-compose.yml services:
nextcloud:
image: nextcloud:28.0.5
container_name: nextcloud
volumes:
- /opt/nextcloud/data:/var/www/html
environment:
- MYSQL_HOST=mysql
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=nextcloud
networks:
- nextcloud_default
depends_on:
- redis
restart: always
ports:
- 8080:80
links:
- "mysql"
- "onlyoffice"
mysql:
restart: always
container_name: nextcloud-db
networks:
- nextcloud_default
#network_mode: bridge
image: mysql:8.0
environment:
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=nextcloud
- MYSQL_ROOT_PASSWORD=<root密码根据实际修改>
volumes:
- /opt/nextcloud/mysql/data:/var/lib/mysql #/opt/nextcloud/mysql/data根据实际换成实际数据存放目录
expose:
- "3306"
ports:
- "3307:3306"
onlyoffice:
image: onlyoffice:7.5.1
container_name: onlyoffice
restart: always
ports:
- 8899:80
- 9001:443
environment:
- REDIS_SERVER_HOST=redis
- REDIS_SERVER_PORT=6379
volumes:
- /root/app/onlyoffice/logs:/var/log/onlyoffice
- /root/app/onlyoffice/data:/var/www/onlyoffice/data
networks:
- nextcloud_default
redis:
image: redis
ports:
- 6379:6379
container_name: redis
volumes:
- /opt/nextcloud/redis/data:/data
- /opt/nextcloud/redis/conf:/etc/redis/redis.conf
restart: always
networks:
- nextcloud_default
networks:
nextcloud_default:启动docker-compose
docker-compose up -d配置cron
cd /opt/nextcloud/cronsh/vim nextcloud.sh内容如下
#!/bin/bash
docker exec --user www-data nextcloud php /var/www/html/cron.php添加权限
chmod 777 /opt/nextcloud/cronsh/nextcloud.sh进入任务列表
crontab -e添加以下语句
*/5 * * * * root /root/app/nextcloud/cronsh/nextcloud.sh重启服务
systemctl restart cron安装onlyoffice插件
离线下载onyoffice插件:ONLYOFFICE - Apps - App Store - Nextcloud
此次部署nextcloud版本为28,下载对应28版本插件
复制插件到宿主机/opt/nextcloud/data/apps
解压插件
tar -xvf onlyoffice.tar.gz1.初始化nextcloud
2.启用插件

3.配置插件

获取密钥
进入onlyoffice容器,获取密钥
docker exec -it onlyoffice bashcat /etc/onlyoffice/server/local.json输出信息种找到secret中inbox字段信息,复制密钥信息到配置页面

配置onlyoffice字体
onlyoffice原生字体会引起excel中文乱码
需要重新添加字体
解决方法:删除onlyoffice自带字体,并导入新字体
删除onlyoffice原生字体
docker exec -it onlyoffice /bin/bash
cd /var/www/onlyoffice/documentserver/core-fonts
rm -rf *
cd /usr/share/fonts/
rm -rf *拷贝需要的字体到docker中
复制windows下的字体到服务器中,例“微软雅黑”、“宋体”
复制字体到onlyoffice,并启用字体
执行脚本安装字体
docker cp ./fonts/ c31:/usr/share/fonts/truetype/custom/
docker exec -it onlyoffice /bin/bash
cd /usr/bin
documentserver-generate-allfonts.shonlyoffice启用演示
进入容器
docker exec -it onlyoffice bash执行
sudo supervisorctl start ds:example问题处理
IP 受限的问题。
vim config.php
## 添加内容
'trusted_domains' =>
array (
0 => 'cloud.taida.ltd',
1 => '192.168.31.10',
),HTTP 强制转换为 HTTPS 的问题
不知道从哪个版本开始,安装指导和配置文件内,都开始指向 https了,即便没有申请证书,也会指向和强制把 http => https 。 修改配置文件,取消这一设定,保持 http 就可以了
<?php
$CONFIG = array (
'instanceid' => '444',
'passwordsalt' => 'r333333',
'secret' => '4444444',
'trusted_domains' =>
array (
0 => 'cloud.demo.com',
1 => '192.168.31.10',
),
'datadirectory' => '/www/cloud.demo.com/nextcloud/data',
'dbtype' => 'mysql',
'version' => '28.0.1.1',
# https://cloud.demo.com 修改为 http://cloud.demo.com
'overwrite.cli.url' => 'http://cloud.demo.com',
# 'overwriteprotocol' => 'https' 修改 http
'overwriteprotocol' => 'http',
'dbname' => 'nextcloud',
'dbhost' => 'localhost:3306',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'clouder',
'dbpassword' => '11111',
'installed' => true,
);
PHP 内存限制低于建议值 512 MB
#修改php.ini文件
vim /etc/php/8.2/fpm/php.ini
memory_limit = 1024M当前正在使用数据库处理事务性文件锁定。若有内存缓存可用,请进行配置以提升性能
修改config.php 文件添加如下内容:
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
'password' => '', // Optional, if not defined no password will be used.
),
未配置内存缓存。若有内存缓存可用,请进行配置以提升性能
APCu is faster at local caching than Redis. If you have enough memory, use APCu for Memory Caching and Redis for File Locking. If you are low on memory, use Redis for both.
修改config.php 文件添加如下内容:
'memcache.local' => '\OC\Memcache\APCu',您在安装过程中未设置默认的国际区号。缺失国际区号的电话号码时将使用默认的国际区号进行验证。要允许无国际区号的电话,请在您的配置文件中添加 “default_phone_region” 设置选项并依照 ISO 3166-1 进行设置。
修改config.php 文件添加如下内容:
'default_phone_region' => 'CN',解决Nextcloud新建用户默认语言是英文且默认地区是美国的方法
语言设置,设置为中文
编辑 config/config.php添加以下配置
"force_locale" => "zh",
"force_language" => "zh_CN",
#需要重启 nginx, php-fpm
systemctl restart php8.2-fpm
systemctl restart nginx
评论