在家宽环境下使用 Docker 部署 nginx-proxy-manager 并配置 HTTPS,同时使用非标准端口(非80、443)访问,可以按照以下步骤进行:
1. 准备工作
- 确保你有一个域名,并且已经解析到你的家宽公网IP。
 - 由于家宽通常没有固定的公网IP,建议使用动态DNS(DDNS)服务来绑定域名 相关连接。
 - 确保你的路由器已经配置了端口转发,将外部端口映射到内网服务器的对应端口。
 
2. 安装 Docker 和 Docker Compose
如果你还没有安装 Docker 和 Docker Compose,可以参考以下步骤(ubuntu系统):
# 添加阿里云密钥curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 载入软件源echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装sudo apt updatesudo apt install docker-ce
# 配置非root 用户 (需重载终端)sudo usermod -aG docker $USER
# 设置镜像加速sudo vim /etc/docker/daemon.json3. 创建 docker-compose.yml 文件
创建一个目录来存放 nginx-proxy-manager 的配置文件,并在该目录下创建 docker-compose.yml 文件:
mkdir nginx-proxy-managercd nginx-proxy-managervim docker-compose.yml在 docker-compose.yml 文件中添加以下内容:
services:  app:    image: 'jc21/nginx-proxy-manager:latest'    restart: unless-stopped    ports:      - '8080:80'  # 将外部端口8080映射到容器内的80端口      - '8443:443' # 将外部端口8443映射到容器内的443端口      - '81:81'    # Nginx Proxy Manager的管理界面端口    volumes:      - ./data:/data      - ./letsencrypt:/etc/letsencrypt4. 启动 Nginx Proxy Manager
在 docker-compose.yml 文件所在的目录下,运行以下命令启动服务:
docker-compose up -d5. 配置 Nginx Proxy Manager
- 
打开浏览器,访问
http://你的服务器IP:81,进入 Nginx Proxy Manager 的管理界面。 - 
默认的用户名是
admin@example.com,密码是changeme。首次登录后会要求你修改密码。 - 
在管理界面中,点击 “Add Proxy Host” 来添加一个新的代理主机。
 - 
在 “Domain Names” 中输入你的域名。
 - 
在 “Forward Hostname/IP” 中输入你要代理的服务的内网IP和端口。
- 可以使用
ip a|grep docker0获取容器访问主机的ip地址,反代此地址和端口即可。 
 - 可以使用
 - 
在 “SSL” 选项卡中,选择 “Let’s Encrypt”,并输入你的邮箱地址,然后点击 “Save” 来申请 SSL 证书。
 
6. 配置路由器端口转发
在你的路由器中,配置端口转发规则,将外部端口(例如8080和8443)映射到内网服务器的对应端口(8080和8443)。
7. 访问你的服务
现在你可以通过 https://你的域名:8443 来访问你的服务,Nginx Proxy Manager 会自动处理 HTTPS 的配置。
8. 注意事项
- 由于家宽通常没有固定的公网IP,建议使用动态DNS(DDNS)服务来绑定域名。
 - 如果你的ISP屏蔽了80和443端口,你可以使用其他端口(如8080、8443)来替代。
 - 确保你的路由器防火墙允许外部访问这些端口。
 
通过以上步骤,你应该能够在家宽环境下使用 Docker 部署 nginx-proxy-manager 并配置 HTTPS,同时使用非标准端口访问你的服务。