简单记录一下使用Docker搭建nextcloud的过程

 

准备

本次使用的环境:

1
2
3
4
5
- Ubuntu 20.04 LTS

- Docker

- docker-compose

使用之前肯定需要安装 Docker ,具体教程可以看我之前的文章,就不写在这里啦!

Ubuntu使用教程 - 安装Docker

  

安装 docker-compose 工具

安装基础组件 pythonpython-pip

由于 Ubuntu 20.04 LTS 自带了python3,所以我们只需要安装下python3的pip就可以了

1
2
3
4
5
#首先更新一下环境
sudo apt update

#安装python3的pip
sudo apt install python3-pip -y

接着更新下pip版本

1
sudo python3 -m pip install --upgrade pip

安装 docker-compose 工具

1
sudo pip3 install docker-compose -i https://pypi.mirrors.ustc.edu.cn/simple/

之后使用 docker-compose -v 命令,如果有出现docker-compose的版本,就说明安装成功了

1
sudo docker-compose -v

  

安装 Nextcloud

  

编写 docker-compose.yml 文件

docker-compose 的管理主要依赖于一个名为 docker-compose.ymlyaml 文件来进行管理,当然这个文件也可以以任何别的名称并以 -f 文件名 的方式来启用,但必须是符合 yaml 格式和 Docker 官方定义的字段和方式。

  

下面是我编写好的 docker-compose.yml 文件,可以直接使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
version: '2'

services:
  app:
    container_name: nextcloud_app
    image: nextcloud
    restart: always
    ports:
      - 10000:80
    environment:
      - DATABASE_URL=mysql+pymysql://nextcloud:nextcloud@db/nextcloud
#      - MYSQL_PASSWORD=lyes
#      - MYSQL_DATABASE=nextcloud
#      - MYSQL_USER=nextcloud
#      - MYSQL_HOST=db
      - REDIS_URL=redis://redis:6379
    volumes:
      - /opt/nextcloud/www:/var/www/html
    depends_on:
      - db
      - redis
    networks:
        default:
        internal:

  db:
    container_name: nextcloud_db
    image: mariadb:10.5
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=nextcloud
      - MYSQL_DATABASE=nextcloud
    volumes:
      - /opt/nextcloud/db:/var/lib/mysql
    networks:
        internal:
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW

  redis:
    container_name: nextcloud_redis
    image: redis
    volumes:
      - /opt/nextcloud/redis/data:/data
      - /opt/nextcloud/redis/redis.conf:/etc/redis/redis.conf
    restart: always
    networks:
        internal:
    command: redis-server /etc/redis/redis.conf --appendonly yes

networks:
    default:
    internal:
        internal: true

  

启动容器

以下命令即可开始拉取所需容器的镜像文件并根据 docker-compose.yml 文件配置好本地文件夹挂载和端口映射。

(由于需要拉取镜像,所以需要 3 ~ 5 分钟时间。)这里建议修改下镜像源,主要是因为docker服务器在国外,直接获取是可能比较慢,甚至失败:

1
sudo vim /etc/docker/daemon.json

在文件中添加以下内容

1
2
3
4
5
{
        "registry-mirrors":[
                "http://docker.mirrors.ustc.edu.cn"
                ]
}

重启docker后配置才会生效

1
2
3
sudo systemctl daemon-reload

sudo systemctl restart docker

接着输入

1
2
3
4
5
#创建存放nextcloud数据的文件夹
sudo mkdir -p /opt/nextcloud

#以后台方式启动
sudo docker-compose up -d

  

nextcloud初始化配置

  

初始化配置

访问 http://ip地址:10000

设置管理员用户名和密码,数据目录默认即可

数据库信息填写如 docker-composer.yml 中所示

1
2
3
4
  - MYSQL_USER=nextcloud
  - MYSQL_PASSWORD=nextcloud
  - MYSQL_DATABASE=nextcloud
  - 数据库主机名填 db (配置文件中的数据库应用名)
image-20211220213215218

点击安装完成后,等待一会儿安装完成就可以看见 Nextcloud 的主目录页面。

image-20211220220605389

  

 

后续如果要更新应用至最新版只需以下两个命令

1
2
3
sudo docker pull nextcloud

sudo docker-compose down && docker-compose up -d

启用redis缓存

系统默认使用过程中,会发现打开的速度不是特别的快,特别是加载文件列表之际.

其实,系统是支持redis服务的,只需要简单的配置就可以启用,而且启用之后系统的访问速度明显加快。

修改config.php文件(对应 docker-compose.yml 的映射路径)

位置是:/opt/nextcloud/www/config/config.php

1
2
3
4
5
6
7
8
  'memcache.local' => '\OC\Memcache\Redis',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => array(
    'host' => 'redis',
    'port' => 6379,
    'password' => ''
  ),

以上内容加在最后一行 ); 内容之前。

image-20211220224123547

  

 

结束

至此,恭喜你! Nextcloud 搭建成功了!

image-20211220224402840

  

 

坑点

后续如果通过IP地址访问出现这个通过不被信任的域名访问页面……别慌!

image-20211222222538323

修改 config.php 文件(对应 docker-compose.yml 的映射路径)

位置是:/opt/nextcloud/www/config/config.php

在里面添加如下内容(IP地址修改为你自己的IP地址)

1
2
3
4
'trusted_domains' =>
  array (
    0 => 'IP地址',
  ),
image-20211222223458268

添加完成后刷新页面就可以通过IP地址正常访问了!