Docker:ssl证书获取和转换,nginx配置ssl和nextcloud安装
ssl证书获取和转换
- 证书获取使用certbot --------“snap安装”
#若没有snap请先安装snap
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
#若有nginx安装则可以使用如下,将自动配置nginx文件!!
sudo certbot --nginx
#若仅仅想获取ssl可以使用standalone模式,注意需要保证80端口开放且未被使用 lsof -i:80查看占用,开放可以使用iptables或firewallcmd(视具体系统决定,可Google如何开放端口)
sudo certbot certonly --standalone
- 证书转换使用openssl
# ***为您的域名,/etc/letsencrypt/live/***/ 为证书存放目录,/docker/certs/为证书转换后输出目录
openssl x509 -in /etc/letsencrypt/live/***/fullchain.pem -out /docker/certs/fullchain.crt
openssl rsa -in /etc/letsencrypt/live/***/privkey.pem -out /docker/certs/privkey.key
nginx安装
#目录和文件初始化建立
mkdir /docker/nginx/data -p
mkdir /docker/nginx/config/config.d -p
mkdir /docker/nginx/logs -p
mkdir /docker/nginx/ssl-p
touch /docker/nginx/config/nginx.conf
touch /docker/nginx/config/conf.d/default.conf
#配置文件编写
#nginx全局配置启动文件文件
#下面可参考[1]
vi /docker/nginx/config/nginx.conf
#本文使用ssl故而,将http访问强制转为https访问,如有其他需要可以参考[2]
vi /docker/nginx/config/conf.d/default.conf
#docker启动模块
docker run -dit --name nginx --network host\
--privileged=true \
-v /docker/nginx/data:/usr/share/nginx/html:rw\
-v /docker/nginx/config/nginx.conf:/etc/nginx/nginx.conf/:rw\
-v /docker/nginx/config/conf.d/default.conf:/etc/nginx/conf.d/default.conf:rw\
-v /docker/nginx/logs:/var/log/nginx/:rw\
-v /docker/nginx/ssl:/ssl \
-d nginx
[1]nginx配置文件
[2]腾讯云开发者论坛ssl多种配置文件
nextcloud安装
- 安装一个mysql数据库
#请自己修改配置,下述命令行仅开放本地访问,且密码设置为123456,且拉取得镜像架构为arm64,若你为x86,则修改arm64v8/mysql:oracle为mysql即可
docker run -itd --name mysql-test -p 127.0.0.1:3306:3306 -e MYSQL_ROOT_PASSWORD=123456 arm64v8/mysql:oracle
- 安装nextcloud
#开启本地访问,由上述nginx提供反向代理!,故而在/docker/nginx/config/conf.d/default.conf文件中需要设置对127.0.0.1:8080的反向代理,如下图(截取自之前连接[1]的/docker/nginx/config/conf.d/default.conf,行数也已给出):
docker run -d -p 127.0.0.1:8080:80 nextcloud

本人的location为,如果nextcloud端口开的是8080,则下述文件可以直接使用替换上述location / {…}:
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
Tips: cerobot更新时可能端口被docker nginx占用,故在cron中需将certbot的自动更新修改一下,在更新前docker stop nginx,更新之后docker start nginx!
Docker:ssl证书获取和转换,nginx配置ssl和nextcloud安装
https://blog.427221.xyz/archives/dockerssl%E4%BD%BF%E7%94%A8nginx%E5%92%8Cnextcloud%E5%AE%89%E8%A3%85