主题
这几天在使用 docker
搭建 Nginx Proxy Manager
时的方法、遇到了一些错误,和我的一些错误排查思路;
环境
家庭公网 IP
地址
DDNS
系统 Centos6 or Centos7
使用Docker compose搭建
以下是我个人搭建的环境,如果想要详细的请查看:🎉️ https://docs.halo.run/getting-started/install/docker-compose 来选择你需要的搭建方法;
搭建完成就可以使用你的 ip:Admin web Port
来访问了
[root@TcServer nginx-proxy-manager]# cat docker-compose.yaml
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
#network: host
ports:
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
environment:
DB_MYSQL_HOST: "你mysql地址"
DB_MYSQL_PORT: mysql端口
DB_MYSQL_USER: "mysql用户名"
DB_MYSQL_PASSWORD: "mysqll密码"
DB_MYSQL_NAME: "mysql数据库"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
问题一:创建代理主机问题
下面这个图是填写代理主机的详解,如果你访问不到自己的网络请注意以下几点:
- 你的路由器的端口转发是否是设置了Nginx Proxy Manager的两个http和https端口(因为家庭网络关闭了80和443端口所以需要转发)
- 你的域名是否可以被DNS解析或者成功使用了DDNS,这个你可以去你买域名的服务商或者你托管的服务商去看DNS选项,有没有添加A记录,添加了有没有正确设置主机
- 你的服务是否是已经启动了的,检测你的服务器是否可以访问到你的代理的主机
问题二:创建SSL失败
问题图片:
下面是我的排查思路
docker exec -it nginx-proxy-manager-app-1 bash #进入容器,容器名依照自己来
tail -f /tmp/letsencrypt-log/letsencrypt.log ##查看日志文件有没有报错,有则先解决日志文件的报错
tail -f /data/logs/proxy-host- #查看你错误代理主机的那条报错信息注意这里需要补全且后缀带erro
tail -f /tmp/certbot-log- #仔细检测上面基本有没有certbot的错误,每次 "-" 后的id不一样
我这次错误是1:
usage:
certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...
Certbot can obtain and install HTTPS/TLS/SSL certificates. By default,
it will attempt to use a webserver both for obtaining and installing the
certificate.
certbot: error: unrecognized arguments: --dns-tencentcloud-credentials /etc/letsencrypt/credentials/credentials-22
这个报错为没有安装指定的certbot插件,我这里是腾讯云就需要执行以下命令,这条命令依照你的对应DNS服务商来
pip3 install certbot-dns-tencentcloud
错误2:
An unexpected error occurred:
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='acme-v02.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7fdfbb127518>, 'Connection to acme-v02.api.letsencrypt.org timed out. (connect timeout=45)'))
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /tmp/letsencrypt-log/letsencrypt.log or re-run Certbot with -v for more details.
这个就是网络问题了,我这里是dockers容器安装的,我排查发现解析不到域名,加上一个DNS解决问题了,就可以成功申请了