前言:

    关于 Nginx-Proxy-Manager 的发展历程和细致功能介绍请参考官网 —>点击直达

    本篇博客只介绍我在docker容器中部署和使用配置的相关经验,因为我家里使用的是普通宽带没有固定公网IP地址,所以接下来的配置中我并没有使用http的tcp80端口和https的tcp443端口作为侦听端口,下文中我将Nginx Proxy Manager简称为NPM介绍。

    但是没有公网IP我肯定是不愿意的,所以我找运营商帮我把光猫改成了桥接模式,我的爱快软路由拨号,拿到一个动态的公网IP地址,然后我申请了一个域名配合爱快软路由内的动态域名解析功能,实现通过域名的形式访问内网的服务和应用(其实最终也是需要使用域名的,域名好记)。

    不罗嗦了,我们开始部署吧!

部署前准备

1、需要有部署了docker和docker-compose的服务器,比如Ubuntu服务器或者Centos服务区或者Debian服务器,本内容用的Ubuntu演示(建议以后大家都用Ubuntu,因为Ubuntu一直在维护,其他操作系统的旧版本可能以后不再维护了,会有bug和安全漏洞。

2、Ubuntu20.04(清华大学镜像站提供):点击下载

3、BT磁力链接(next.itellyou.cn提供):

magnet:?xt=urn:btih:C44F931B1A3986851242D755D0AC46E9FA3C5D32&dn=ubuntu-20.04-live-server-amd64.iso&xl=952107008

4、Ubuntu更新源:

4.1、用linux的vi或者vim或者nano编辑器编辑/etc/apt/sources.list文件

vi /etc/apt/sources.list

4.2、进去后按先小d在按大G删除当前目前下所有内容,然后按 i 建进行编辑,然后复制下面的更新源,再按ESC退出编辑模式,然后按Shift+冒号输入wq回车(wq=保存退出)

deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

5、关于docker和docker-compose的部署,我有一个较为简单的方法,就是借助1Panel一键部署,1Panel类似宝塔面板有管理平台,1Panel后续为大家介绍,这里先用1Panel一键部署docker和docker-compose,在安装1Panel时脚本中的命令会帮你把docker和docker-compose一起部署了,比较省事。1Panel官网。另外在第六步也为大家指引了docker官网部署的指导链接。

5.1、Ubuntu一键部署1Panel脚本

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

5.2、RedHat / CentOS一键部署1Panel脚本

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

5.3、Debian一键部署1Panel脚本

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh	

部署完后登录上去就是下面的样子

1Panel后台管理界面

6、Ubuntu部署Docker和Docker-compose(Docker官网):点击直达

7、使用docker-compose部署NPM

(默认你以上的Ubuntu安装好了docker和docker-compose了,按照下面的步骤部署NPM。)

7.1、在~/data/docker_data/npm目录下创建docker-compose.yml文件

mkdir -p ~/data/docker_data/npm
cd ~/data/docker_data/npm
vi docker-compose.yml

7.2、在英文状态的输入法下,按下键盘的:i 键,左下角出现–INSERT–后,粘贴下面的信息贴入,然后,同样在英文输入法下,按ESC,然后 :wq 保存退出。

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '397:80'              #  因为我家里公网80端口被封了,所以我用397代替,如果你有80端口的使用权限,这里把397改成80
      - '197:81'              # 可以把冒号左边的197端口修改成你服务器上没有被占用的端口,这个端口是web管理npm的端口
      - '297:443'            # 因为我家里公网443端口被封了,所以我用297代替,如果你有443端口的使用权限,这里把297改成443
    volumes:
      - ./data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个data目录,用于存放数据,如果不存在的话,会自动创建
      - ./letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个letsencrypt目录,用于存放证书,如果不存在的话,会自动创建

npm

7.3、启动NPM

docker-compose up -d     # -d 表示后台运行,如果你用的是 docker-compose的话,用这条命令

因为我俩个都安装了,所以都可以用,1Panel默认安装docker-compose,用上面的就行。

docker compose up -d     # 如果你用的是 docker-compose-plugin的话,用这条命令

docker

7.4、安装好之后,进入npm的web控制台进行配置,用你服务的ip地址加197端口进去(197是你自己定义的管理端口)

npm1

使用默认密码进去后,要求更改你的新账户;邮箱(后期登录用的是邮箱登录的)和密码。

默认账户:

admin@example.com

默认密码:

changeme

7.5、进去后,需要先将你的域名证书导入。

ca
ca1

7.6、配置反向代理

7.6.1、新加一个代理服务

npm2
npm3
npm4

配置说明:

Domain Names:这个域名是你在你的域名服务上做的A记录解析的域名,比如@或者*。
Scheme:这个是你内网访问10.225.97.11的8090端口协议,正常都是http。
Forward Hostname / IP :这个ip或者域名是你要代理的服务器的ip或者域名。
Forward Port:是你内网访问这个服务的端口。

7.6.2、配置绑定证书,开启ssl加密访问

npm5
npm6

7.7、去爱快软路由上配置端口映射,映射NPM的https端口297。

ikaui

7.8、验证外网访问是加密的https形式

test

7.9、还可以通过更改主机名,实现https加密访问内网其他的服务,比如npm的web。

npm7
npm8
npm9