docker安装nextcloud,使用主机的数据库
nextcloud是一个免费的开源的网盘软件,也可以多平台同步文件,最简单的方式就是利用docker来安装。
环境如下
- 主机系统debian 12
- docker容器
- 主机数据库mariaDB
由于主机已安装了数据库,所以就不需要在docker里再次安装mariaDB数据库了,直接连接主机的数据库。
修改主机的mariaDB的监听端口
debian安装好mariaDB之后,默认的监听IP为127.0.0.1,只能监听本机,我们要把监听IP改为0.0.0.0
nano /etc/mysql/mariadb.conf.d/50-server.cnf
将
bind-address = 127.0.0.1
改为
bind-address = 0.0.0.0
然后重启一下mysql
systemctl restart mysql
创建数据库任意用户和全局权限
由于容器需要连接到主机的数据库,需要打开权限,否则会报错
登录mysql,这里的123456是你自己的mysql密码
mysql -uroot -p123456
然后输入
CREATE USER 'any'@'%' IDENTIFIED BY '123456'; grant all privileges on *.* to 'any'@'%' with grant option;
在docker里安装nextcloud
现在可以正式的安装nextcloud了
docker run -d \ --name nextcloud \ -v /usr/local/etc/docker/nextcloud:/var/www/html \ -v /usr/local/etc/docker/nextcloud/config:/var/www/html/config \ -v /mnt/Public/NetDisk/nextcloud:/var/www/html/data \ -v /usr/local/etc/docker/nextcloud/apps:/var/www/html/custom_apps \ -p 8084:80 \ nextcloud
上面的端口和目录,根据自身情况修改。
安装nextcloud
打开http://IP:8084,会看到安装界面,用户名和密码,自己随便取一个。
然后进行数据库的信息填写
安装成功
如果在nextcloud服务器上删除或增加文件,客户端不会自动同步,需要扫描一下,方法如下:
登录到docker内部
docker exec -it nextcloud bash
运行
sudo -u www-data php occ files:scan --all
如果显示无sudo,则需要安装
apt-get update && apt-get install -y sudo
当然也可以在容器外部运行
docker exec -it nextcloud /bin/bash -c "sudo -u www-data php occ files:scan --all"
nextcloud默认会把同步的文件放在系统盘,但我们一般都会把文件放在大硬盘上,所以要把data目录指定一个位置
docker run -d \ --name nextcloud \ -v /usr/local/etc/docker/nextcloud:/var/www/html \ -v /mnt/Public/NetDisk/nextcloud:/var/www/nextcloud/data -p 8084:80 \ nextcloud