原创文章,转载请注明出处
https://qiedd.com/
0.前言
Docker版的NextCloud中自带有SQLite,但是官方不推荐用在有同步客户端的环境,因此我选择了使用MariaDB。
这里我给每个容器都配了一个独立IP
1.准备工作
首先是将两个镜像Pull下来
#MariaDB docker pull mariadb #NextCloud docker pull nextcloud
创建Macvlan
#ens18请换成你的网卡,开启网卡混杂模式 ip link set ens18 promisc on #创建macvlan docker network create -d macvlan --subnet=192.168.123.0/24 --gateway=192.168.123.1 -o parent=ens18 macvlan
2.部署NextCloud
这里我将一个盘挂载到了 /data,将NextCloud的数据全部存进去,可以按照自己的配置进行修改
docker run -d \ -v /data/nextcloud/nextcloud:/var/www/html \ -v /data/nextcloud/apps:/var/www/html/custom_apps \ -v /data/nextcloud/config:/var/www/html/config \ -v /data/nextcloud/data:/var/www/html/data \ -v /data/nextcloud/theme:/var/www/html/themes/ \ --network macvlan --ip 192.168.123.111 \ --restart=unless-stopped \ --name nextcloud \ nextcloud
3.部署Mairadb
同样也是给这个容器分配了一个IP
docker run -d --name mariadb \ -v /data/mysql:/var/lib/mysql \ -v /data/mysql/conf.d:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=你的密码 \ -e MYSQL_PASSWORD=你的密码 \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud --network macvlan --ip 192.168.123.112 \ --restart=unless-stopped \ mariadb
5.NextCloud配置
按下图填写,完成
只要没报错,等待其完成即可
6.配置SSL
进入容器
#进入容器 docker exec -it nextcloud /bin/bash #更新源 apt update #安装所需依赖 apt install sudo cron socat vim
配置SSL
我这里用cf做实例,更多api请查看 https://github.com/acmesh-official/acme.sh/wiki/dnsapi
#安装acme.sh curl https://get.acme.sh | sh #导入cf key export CF_Key="你的key" export CF_Email="你的邮箱" #创建 一个 bash 的 alias, 方便你的使用 alias acme.sh=~/.acme.sh/acme.sh #申请证书(默认使用zerossl) #acme.sh --issue --dns dns_cf -d 你的域名 ##新版acme.sh似乎默认使用了zerossl,你需要主动切换到let acme.sh --server letsencrypt --issue --dns dns_cf -d 你的域名 #创建一个目录放证书 mkdir /etc/apache2/ssl #安装证书到这个目录 acme.sh --install-cert -d 你的域名 \ --key-file /etc/apache2/ssl/key.pem \ --fullchain-file /etc/apache2/ssl/cert.pem #修改ssl配置文件 vim /etc/apache2/sites-available/default-ssl.conf #这两行改成这样 SSLCertificateFile /etc/apache2/ssl/cert.pem SSLCertificateKeyFile /etc/apache2/ssl/key.pem #应用配置 a2enmod ssl a2ensite default-ssl service apache2 reload #自动更新 acme.sh --upgrade --auto-upgrade
踩坑
导入文件并扫描
直接使用 sudo -u www-data
./occ files:scan --all
可能会出现
Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 438272 bytes) in /var/www/html/3rdparty/composer/autoload_real.php on line 37
解决办法,在容器外使用
docker exec nextcloud su - www-data -s /bin/bash -c 'php -d memory_limit=-1 -f /var/www/html/occ files:scan --all'
0 条评论