原创文章,转载请注明出处
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 \
nextcloud3.部署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 \
mariadb5.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 条评论