1. 准备条件:
- 有一个自己域名,并完成DNS(以cloudflare为例)
- 有一台含公网ip的服务器,安装好docker compose环境
网络概览图

2.npm部署的一个典型compose文件
compose.yml:
services:
npm:
image: jc21/nginx-proxy-manager:latest
restart: always
container_name: npm
ports:
- 443:443
- 81:81
volumes:
- ./npm/data:/data
- ./npm/letsencrypt:/etc/letsencrypt
# admin@example.com changeme
nps:
image: ffdfgdfg/nps
container_name: nps
restart: always
ports:
- 8024:8024
- 8080:8080
- 9001-9005:9001-9005
volumes:
- ./nps/conf:/conf
# admin 123
3.别忘了开放端口:
sudo firewall-cmd \
--add-port=22/tcp \
--add-port=81/tcp \
--add-port=443/tcp \
--add-port=8080/tcp \
--add-port=8024/tcp \
--add-port=9001/tcp \
--permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-ports
4.到cloud flare进行DNS
nps
npm
ikuai
5. 到Cloud flare申请token
6. NPM界面操作
- 申请证书
- 配置代理
7.此时发现有些端口不用暴露到外网,那么进行删除
sudo firewall-cmd --zone=public --remove-port=81/tcp --remove-port=8080/tcp --remove-port=9001/tcp --permanent
sudo firewall-cmd --reload
8.NPC也进行了compose文件改造
如果上期视频使用命令运行起来的话,可以不用管,也可以像我一样改造,使用compose运行,但是记得要删除之前运行的容器
services:
npc:
image: ffdfgdfg/npc
container_name: npc
command: -server=nps.mjvlog.top:8024 -vkey=g4x0yw778uomt6n8
network_mode: host
restart: always
9. 查看加了证书访问网站的效果
有了证书,浏览网页就显示安全的,那么我们的账号密码就可以加密传输,不会暴露了
10.新的问题
我有很多内网服务,压根儿就不想暴露在公网,也没有必要,甚至不推荐暴露在公网,比如esxi,比如这个路由器页面我就不想暴露,那有没有一种更安全的方法,不但使用证书加密,而且加入MFA验证,登录一个页面后,就可以无缝访问家里的Linux ,WINDOWS服务器,路由器,各种web页面,下期视频给大家介绍,敬请期待
