nextcloud安装部署与升级

nextcloud 安装部署升级

Nextcloud 是一款开源的私有云存储与协作平台,它不仅可以在本地或私有服务器上搭建,还能提供文件同步、共享、WebDAV、在线协作、日历、通讯录甚至办公套件(如 OnlyOffice)的支持,Nextcloud 就像是一个可以完全掌握在自己手里的「私人网盘 + 协作中心」。企业可以用来做为自己的私有知识库。

一、安装部署

以下安装以版本30.0.2为主,部署方式docker-compose

1、下载镜像

docker pull nextcloud:30.0.2
docker pull onlyoffice/documentserver
docker pull mysql:8.0.33

2、部署文件准备(参考)

# mysql docker-compose.yaml
--------------------
[root@localhost yaml]# cat mysql/docker-compose.yaml 
version: "3.8"
services:
  mysql:
    restart: always
    image: mysql:8.0.33
    container_name: mysql
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=XXXXXXX
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 60s
      retries: 1
    volumes:
      - /data/mysql/data:/var/lib/mysql
      - /data/mysql/my.cnf:/etc/my.cnf    
      
# nextcloud docker-compose.yaml
--------------------
[root@localhost yaml]# cat nextcloud/docker-compose.yaml 
version: '2'
services:
  app:
    container_name: "nextcloud"
    image: docker.io/library/nextcloud:31.0.9
    restart: always
    ports:
      - 8088:80
    volumes:
      - /data/nextcloud:/var/www/html
    environment:
      - MYSQL_PASSWORD=XXXXXXX
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=root
      - MYSQL_HOST=XXXXXXX

# onlyoffice docker-compose.yaml
--------------------
[root@localhost yaml]# cat onlyoffice/docker-compose.yaml 
version: '3'
services:
  only-office:
    image: onlyoffice/documentserver
    container_name: onlyoffice
    environment:
      - JWT_SECRET=XXXXXXX
    ports:
      - 8089:80
    volumes:
      - /data/onlyoffice:/var/www/onlyoffice/Data
      - /data/onlyoffice/logs:/var/log/onlyoffice
    restart: always
    privileged: true
# my.cnf 参考
-------------------
[root@localhost mysql]# cat my.cnf 
[client]
socket=/var/run/mysql.sock
default-character-set=utf8

[mysqld]
bind-address = 0.0.0.0
port=3306
character_set_server=utf8
server-id=10
secure_file_priv=/var/lib/data
datadir=/var/lib/data/mysql
socket=/var/lib/data/mysql/mysql.sock
log_error=/var/lib/data/mysql/mysql-error.log
slow_query_log=1
long_query_time=3
slow_query_log_file=/var/lib/data/mysql/mysql-slow.log
log_bin=/var/lib/data/mysql/mysql-bin
log_bin_index=/var/lib/data/mysql/mysql-bin.index
max_binlog_size=4096M
#max_binlog_files=0
expire_logs_days=1
max_connections=1000
innodb_buffer_pool_size=2G
max_connect_errors = 2000
default-storage-engine = InnoDB
wait_timeout = 600
gtid_mode=on
enforce_gtid_consistency=on
log_slave_updates=1
binlog_format=row
#skip-grant-tables
skip_slave_start=1
default-time-zone = '+08:00'
lower_case_table_names = 1

2、启动容器

# 依次启动容器(docker-compose命令不同版本有所差异),确保服务均正常运行
docker-compose up -d

3、初始化安装

# 访问 web页面,选择mysql即可进行初始化安装

4、配置onlyoffice插件

  • 确保onlyoffice服务正常,上面服务映射的宿主机端口是8089,可以浏览器访问

  • 去官方下载适配nextcloud版本的onlyoffice插件https://apps.nextcloud.com/apps/onlyoffice
    ![image-20250926175331392]image

  • 把插件解压到nextcloud的apps目录
    ![image-20250926174219693]image

  • 在nextcloud应用中启用onlyoffice插件
    image

二、版本升级

升级策略:采用逐步升级,从 Nextcloud 30.0.2 升级到 30.0.15 后,再升级到 31.0.9,以确保系统稳定性。

升级步骤参考如下

1、停止服务并检查

docker-compose down

3、备份重要文件

# Nextcloud目录下主要文件备份 (conf、data)
cd nextcloud && mkdir backup
cp -r conf ../backup
cp -r data ../backup

# 数据库文件也要备份,方便回滚

4、删除其余文件

shopt -s extglob
ls -d !("config"|"data")
rm -rf !("config"|"data")
shopt -u extglob

5、下载官方镜像

# 下载官方镜像30.0.15,修改docker-compose文件中镜像为30.0.15
docker pull nextcloud:30.0.15
--------------------------------
[root@localhost nextcloud]# grep  image docker-compose.yaml 
    image: docker.io/library/nextcloud:30.0.15

6、启动容器

[root@localhost nextcloud]# docker-compose up -d
[+] Running 2/2
 ⠿ Network nextcloud_default  Created                                           
 ⠿ Container nextcloud        Started    

7、进行升级

[root@localhost nextcloud]# docker ps 
[root@localhost nextcloud]# docker exec -u www-data -it nextcloud bash
www-data@240514b911be:~/html$ php /var/www/html/occ upgrade
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Setting log level to debug
Turned on maintenance mode
Updating database schema
Updated database
Disabled incompatible app: onlyoffice
Updating <theming> ...
Updated <theming> to 2.6.0
Updating <app_api> ...
Updated <app_api> to 4.0.6
Starting code integrity check...
Finished code integrity check
Update successful
Turned off maintenance mode
Resetting log level
www-data@240514b911be:~/html$ php /var/www/html/occ status
  - installed: true                 # 已经完成安装
  - version: 30.0.15.1              # 内部数据库用的构建号
  - versionstring: 30.0.15          # 正式版本号
  - edition:                        # 空的说明是社区版(Community Edition)
  - maintenance: false              # 维护模式关闭,正常提供服务
  - needsDbUpgrade: false           # 数据库已经升级成功不需要再做迁移
  - productname: Nextcloud          # 产品名称
  - extendedSupport: false          # 没有订阅扩展支持
www-data@240514b911be:~/html$ php /var/www/html/occ maintenance:repair

------------#非必须,除非你动过 data 目录,重新扫描数据更新至数据库---------
www-data@240514b911be:~/html$ php /var/www/html/occ files:scan --all
Starting scan for user 1 out of 1 (admin)
+---------+-------+-----+---------+---------+--------+--------------+
| Folders | Files | New | Updated | Removed | Errors | Elapsed time |
+---------+-------+-----+---------+---------+--------+--------------+
| 7       | 54    | 0   | 0       | 0       | 0      | 00:00:01     |
+---------+-------+-----+---------+---------+--------+--------------+

8、继续升级

# 重复以上步骤将版本升级至31.0.9
[root@localhost nextcloud]# docker ps | grep nextcloud
240514b911be        nextcloud:30.0.15           "/entrypoint.sh apac…"   27 minutes ago      Up 27 minutes                0.0.0.0:8088->80/tcp                nextcloud
[root@localhost nextcloud]# docker-compose down
[+] Running 2/2
 ⠿ Container nextcloud        Removed                                           
 ⠿ Network nextcloud_default  Removed  
 
------------------------

[root@localhost nextcloud]# docker ps | grep nextcloud
[root@localhost nextcloud]# vi docker-compose.yaml 
[root@localhost nextcloud]# grep image docker-compose.yaml 
    image: docker.io/library/nextcloud:31.0.9
    
------------------------

[root@localhost data]# cd nextcloud
[root@localhost nextcloud]# ls
3rdparty  composer.json  console.php  cron.php     dist        lib                       occ           package.json       remote.php  robots.txt  version.php
apps      composer.lock  COPYING      custom_apps  index.html  LICENSES                  ocs           package-lock.json  resources   status.php
AUTHORS   config         core         data         index.php   nextcloud-init-sync.lock  ocs-provider  public.php         REUSE.toml  themes
[root@localhost nextcloud]# shopt -s extglob
[root@localhost nextcloud]# ls -d !("config"|"data")
3rdparty  composer.json  COPYING   custom_apps  index.php  nextcloud-init-sync.lock  ocs-provider       public.php  REUSE.toml  themes
apps      composer.lock  core      dist         lib        occ                       package.json       remote.php  robots.txt  version.php
AUTHORS   console.php    cron.php  index.html   LICENSES   ocs                       package-lock.json  resources   status.php
[root@localhost nextcloud]# rm -rf !("config"|"data")
[root@localhost nextcloud]# ls
config  data
[root@localhost nextcloud]# shopt -u extglob

------------------------
    
[root@localhost nextcloud]# docker-compose  up -d
[+] Running 2/2
 ⠿ Network nextcloud_default  Created                                           
 ⠿ Container nextcloud        Started                                           
[root@localhost nextcloud]# docker ps | grep nextcloud
1cd3e2fdaf98        nextcloud:31.0.9            "/entrypoint.sh apac…"   11 seconds ago      Up 10 seconds                0.0.0.0:8088->80/tcp                nextcloud

------------------------
[root@localhost nextcloud]# docker exec -u www-data -it nextcloud bash
www-data@c1525f36aa55:~/html$ php /var/www/html/occ upgrade
No upgrade required.

Note: This command triggers the upgrade actions associated with a new version. The new version's updated source files must be deployed in advance.
See the upgrade documentation: https://docs.nextcloud.com/server/31/go.php?to=admin-update for more information.
www-data@c1525f36aa55:~/html$ php /var/www/html/occ status
  - installed: true
  - version: 31.0.9.1
  - versionstring: 31.0.9
  - edition: 
  - maintenance: false
  - needsDbUpgrade: false
  - productname: Nextcloud
  - extendedSupport: false
www-data@c1525f36aa55:~/html$ php /var/www/html/occ maintenance:repair
www-data@c1525f36aa55:~/html$ php /var/www/html/occ files:scan --all
Starting scan for user 1 out of 1 (admin)
+---------+-------+-----+---------+---------+--------+--------------+
| Folders | Files | New | Updated | Removed | Errors | Elapsed time |
+---------+-------+-----+---------+---------+--------+--------------+
| 7       | 54    | 0   | 0       | 0       | 0      | 00:00:01     |
+---------+-------+-----+---------+---------+--------+--------------+
posted @ 2025-10-18 15:39  NanXi_XZ  阅读(169)  评论(0)    收藏  举报