一、版本描述
Ubuntu:22.04
Nextcloud:28.0.2
Onlyoffice:7.5.1
MariaDB:11.2.2
redis:7.2.4
二、docker、docker-compose安装
略
三、准备环境:
创建数据目录
mkdir -vp /root/app/nextcloud/{cronsh,data} /root/app/onlyoffice/{logs,data} /root/app/mariadb/{config,data} /root/app/redis/{conf,data}
四、docker-compose.yml文件
version: '2' services: nextcloud: image: nextcloud container_name: nextcloud volumes: - /root/app/nextcloud/data:/var/www/html networks: - nextcloud_default depends_on: - redis restart: always ports: - 8080:80 links: - mariadb:mariadb - onlyoffice:onlyoffice mariadb: image: mariadb container_name: mariadb ports: - 3307:3306 environment: - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=XXXX volumes: - /root/app/mariadb/data:/var/lib/mysql - /root/app/mariadb/config:/etc/mysql/conf.d networks: - nextcloud_default restart: always onlyoffice: image: onlyoffice:7.5.1 container_name: onlyoffice restart: always ports: - 9000: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: - /root/app/redis/data:/data - /root/app/redis/conf:/etc/redis/redis.conf restart: always networks: - nextcloud_default networks: nextcloud_default: external: true
五、启动docker-compose
创建网络
docker network create nextcloud_default
启动docker
docker-compose up -d
六、MariaDB数据库配置(必要)
1. 允许任意地址访问数据库
## 复制mariadb配置文件到宿主机 docker cp mariadb:/etc/mysql/mariadb.conf.d/50-server.cnf /root/50-server.cnf vim 50-server.cnf ## 找到bind-address ,更改为 bind-address = 0.0.0.0 ## 把更改后的文件复制到mariadb容器中 docker cp /root/50-server.cnf mariadb:/etc/mysql/mariadb.conf.d/50-server.cnf ## 进入mariadb容器中确认是否更改 docker exec -it mariadb bash cat /etc/mysql/mariadb.conf.d/50-server.cnf
2.创建nextcloud数据库
## 进入数据库 root@4b04eca13e79:/# mariadb -u root -p ## 创建数据库,user,密码等 CREATE USER 'nextcloud'@'%' IDENTIFIED BY 'XXXXX'; CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'%'; flush privileges; ## 查看数据库与user是否创建 show databases; SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
3.重启mariadb
docker restart mariadb
七、配置nextcloud
1. 编辑config.php
行末添加 'default_language' => 'zh_CN', #默认语言 'default_locale' => 'zh', #默认地区 'skeletondirectory' => '', #新用户默认无任何文件 'memcache.local' => '\OC\Memcache\Redis', #更改为redis # 配置内存为redis 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'XXXX', ##宿主机的IP 'port' => 6379, ),
2.配置cron
cd /app/nextcloud/cronsh/
vim nextcloud.sh
内容如下
#!/bin/bash docker exec --user www-data nextcloud php /var/www/html/cron.php
添加权限
chmod 777 /app/nextcloud/cronsh/nextcloud.sh
添加任务
vim /etc/crontab
*/5 * * * * root /root/app/nextcloud/cronsh/nextcloud.sh
重启服务
systemctl restart cron
3. 安装onlyoffice插件
-
离线下载onyoffice插件:下载地址
-
我的nextcloud是28版本,所以下载对应28版本插件
-
复制插件到宿主机/root/nextcloud/app/nextcloud/data/apps
-
解压插件
root@office:~/nextcloud/app/nextcloud/data/apps# tar -xvf onlyoffice.tar.gz
八、登陆http://IP:8080,初始化nextcloud及配置
1.初始化nextcloud
2.启用插件
3.配置插件
进入onlyoffice容器,获取密钥
docker exec -it onlyoffice bash
cat /etc/onlyoffice/server/local.josl
4.配置onlyoffice字体
onlyoffice原生字体会引起excel中文乱码
需要重新添加字体
解决方法:删除onlyoffice自带字体,并导入新字体
4.1 删除onlyoffice原生字体
docker exec -it onlyoffice /bin/bash cd /var/www/onlyoffice/documentserver/core-fonts rm -rf * cd /usr/share/fonts/ rm -rf *
4.2 拷贝需要的字体到docker中
一、复制windows下的字体到服务器中,例“微软雅黑”、“宋体”
二、复制字体到onlyoffice,并启用字体
docker cp ./fonts/ c31:/usr/share/fonts/truetype/custom/ docker exec -it onlyoffice /bin/bash cd /usr/bin documentserver-generate-allfonts.sh
三、验证