Leonurus-free

Docker安装Nextcloud+Onlyoffice

修改两个位置

1、/var/www/html/config/config.php Nextcloud

array (
0 => 'localhost:8080',
1 => '192.168.100.123',
),


修改权限
chmod 777 /var/www/html/config/config.php

2、/etc/onlyoffice/documentserver/default.json Onlyoffice

"request-filtering-agent" : {
    "allowPrivateIPAddress": true,
    "allowMetaIPAddress": true
},

前端填写

image-20250206201946545

离线化安装插件

/var/www/html/apps

创建docker-compose.yml文件

#创建目录
mkdir /opt/nextcloud
cd /opt/nextcloud/
#nano创建编辑docker-compose.yml文件,Ctrl+O写入,Ctrl+X退出;也可以用vim看个人喜欢
nano docker-compose.yml

docker-compose.yml填入以下内容,根据需要修改以下配置 容器默认时区为UTC时区,所以修改为上海时区

version: '3.8'

services:
  db:
    image: mysql:latest
    container_name: nextcloud_mysql	       # 自定义容器名称
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password  # 定义 MySQL 的 root 密码
      MYSQL_PASSWORD: your_password            # 定义 MySQL 用户的密码
      MYSQL_DATABASE: nextcloud                # 创建数据库名为 nextcloud
      MYSQL_USER: nextcloud                    # 定义 MySQL 用户名
      TZ: Asia/Shanghai                        # 设置时区为上海
    volumes:
      - mysql_data:/var/lib/mysql              # MySQL 数据持久化
    networks:
      - nextcloud_network

  app:
    image: nextcloud:latest
    container_name: nextcloud		       # 自定义容器名称
    restart: always
    depends_on:
      - db
    environment:
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: your_password            # MYSQL密码
      MYSQL_HOST: db
      TZ: Asia/Shanghai                        # 设置时区为上海
    volumes:
      - nextcloud_data:/var/www/html           # Nextcloud 数据持久化
    ports:
      - "8080:80"
    networks:
      - nextcloud_network

  onlyoffice:
    image: onlyoffice/documentserver:7.1.0
    container_name: nextcloud_onlyoffice       # 自定义容器名称
    restart: always
    environment:
      JWT_ENABLED: 'false'                     # 关闭 JWT,因此不需要密钥
      JWT_SECRET:                              # 不设置密钥
      TZ: Asia/Shanghai                        # 设置时区为上海
    ports:
      - "8081:80"
    networks:
      - nextcloud_network

networks:
  nextcloud_network:                           # 定义网络

volumes:
  mysql_data:                                  # 定义 MySQL 的数据卷
  nextcloud_data:                              # 定义 Nextcloud 的数据卷

运行

docker compose up -d

然后查看运行中的容器

docker ps -a

5.登录网页

IP不知道什么可以在Ubuntu使用ifconfig查看 浏览器打开IP:8080可以看到nextcloud的界面 设置用户名和密码登录

浏览器打开IP:8081可以看到onlyoffice的界面

6.安装onlyoffice插件

https://apps.nextcloud.com/

 docker volume ls
docker volume inspect nextcloud_nextcloud_data
# 这里进入到卷存储目录下的apps文件夹,就是刚才上传插件的目录
cd /var/lib/docker/volumes/nextcloud_nextcloud_data/_data/apps/
tar -xzf onlyoffice.tar.gz

img

7.公网访问

使用公网IP访问提示:通过不被信任的域名访问 img

img 根据IP或者域名参照文件格式填写保存 img

Docker安装Onlyoffice并更新中文字体的办法

1.删除Onlyoffice自带字体 首先,在宝塔面板中,打开镜像内目录,进入容器内的字体文件夹,将系统字体和onlyoffice自带的字体全部删除。 删除系统字体文件夹中所有文件及文件夹: /usr/share/fonts 删除onlyoffice自带字体文件夹 中所有文件及文件夹: /var/www/onlyoffice/documentserver/core-fonts

2.拷贝字体文件 把从windows字体目录拷贝到镜像内 /usr/share/fonts/ 目录中,把中文字体文件名改成英文名称。

3.启动onlyoffice容器,并更新字体 最后启动onlyoffice容器,进入/usr/bin目录, 输入./documentserver-generate-allfonts.sh 运行完毕后字体更换完成,清除浏览器缓存,并重新打开页面,就会发现之前onlyoffice自带的其他字体都没有了,只有刚才复制进去的中文字体了。

查看正在运行的docker:

sudo docker ps

进入运行着的docker镜像内:

docker exec -it <ID> /bin/bash

exec命令可以进入docker,并执行后面的命令,上面是执行/bin/bash 其中是容器id的前三位字符

进入指定文件夹下执行下方命令,使新增的字体生效

#进入文件夹

cd /usr/bin

#执行sh文件,使其新增的字体生效

./documentserver-generate-allfonts.sh

内网部署注意事项

1、修改conf.php文件,添加禁用网络连接

'has_internet_connection' => false,
'appstoreenabled' => false,
'appstoreurl' => '',
'appstore.appfetch' => false,

2、新增custom.conf文件,修改以下配置

# 1. 创建配置目录
mkdir -p /home/ubuntu/luo/.collaborative_editing/phpfpm_config

# 2. 创建PHP-FPM配置文件
cat > /home/ubuntu/luo/.collaborative_editing/phpfpm_config/zz-custom.conf << 'EOF'
[global]
error_log = /proc/self/fd/2
log_level = warning
process.max = 128

[www]
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.process_idle_timeout = 10s
request_terminate_timeout = 1800
request_slowlog_timeout = 30s
slowlog = /proc/self/fd/2

php_admin_value[memory_limit] = 1024M
php_admin_value[upload_max_filesize] = 16G
php_admin_value[post_max_size] = 16G
php_admin_value[max_execution_time] = 1800
php_admin_value[max_input_time] = 1800
php_admin_value[session.gc_maxlifetime] = 86400

php_admin_value[opcache.enable] = 1
php_admin_value[opcache.memory_consumption] = 256
php_admin_value[opcache.interned_strings_buffer] = 32
php_admin_value[opcache.max_accelerated_files] = 100000
php_admin_value[opcache.revalidate_freq] = 60
php_admin_value[opcache.jit_buffer_size] = 128M
php_admin_value[opcache.jit] = 1255
EOF

验证配置文件是否生效:

# 4. 验证
docker exec app-server cat /usr/local/etc/php-fpm.d/zz-custom.conf | grep "pm.max_children"

nextcloud对接casdoor的时候跳转显示404的问题

在 Nextcloud 中启用了调试模式:
php occ config:system:set debug --type bool --value true
php occ config:system:set allow_local_remote_servers --value true