简单记录一下使用Docker搭建nextcloud的过程
准备
本次使用的环境:
1
2
3
4
5
|
- Ubuntu 20.04 LTS
- Docker
- docker-compose
|
使用之前肯定需要安装 Docker ,具体教程可以看我之前的文章,就不写在这里啦!
Ubuntu使用教程 - 安装Docker
安装 docker-compose 工具
安装基础组件 python
和 python-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的版本,就说明安装成功了
安装 Nextcloud
编写 docker-compose.yml
文件
docker-compose
的管理主要依赖于一个名为 docker-compose.yml
的 yaml
文件来进行管理,当然这个文件也可以以任何别的名称并以 -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 (配置文件中的数据库应用名)
|
点击安装完成后,等待一会儿安装完成就可以看见 Nextcloud 的主目录页面。
后续如果要更新应用至最新版只需以下两个命令
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' => ''
),
|
以上内容加在最后一行 ); 内容之前。
结束
至此,恭喜你!
Nextcloud 搭建成功了!
坑点
后续如果通过IP地址
访问出现这个通过不被信任的域名访问
页面……别慌!
修改 config.php 文件(对应 docker-compose.yml
的映射路径)
位置是:/opt/nextcloud/www/config/config.php
在里面添加如下内容(IP地址修改为你自己的IP地址)
1
2
3
4
|
'trusted_domains' =>
array (
0 => 'IP地址',
),
|
添加完成后刷新页面就可以通过IP地址正常访问了!