使用 docker 搭建内网穿透服务 nps

浏览docker hub主页nps

在 githun 上下载源码,获取他的 conf 目录,并放到合适的位置。

创建 nps 容器

# 个人不建议使用 --net=host
docker run -d --name nps -v <本机conf目录>:/conf ffdfgdfg/nps

配置 nginx 反向代理

    # nps 内网穿透
    server {
        listen 80;
        server_name nps.codeon.cn;
        location / {
            # 对应 nps.conf 的 web_port 端口
            proxy_pass http://172.17.0.9:8080;
        }
    }

注意重启 nginx

如果没有问题,则登录 nps.codeon.cn 就可以看到 登录界面了

因为 nps 默认是通过 8024 端口来和客户端通信的,默认情况下,我们需要开放 8024 ,我是使用 portainer 来修改的。增了一条 8024:8024 的端口映射即可。

接下来就是客户端的问题了,可以从 github 上下载,或者网盘

阿里网盘下载 提取码: 45oh

解压后,找到 npc.exe ,在命令行里执行,可以参考下面的样例

npc.exe -server=<ip>:8024 -vkey=qs3t3dm5zys23a88
# 连接成功会输出 Successful connection with...

在 docker 上部署 wordpress 且使用 nginx 反向代理

我的阿里云服务器快到期了,现在需要将阿里云上的数据导出,这点很容易实现,直接在原wordpress 上的设置里,找到导出即可。

接下来,我们从docker hub 上找到 wordpress 的镜像,并创建一个容器

docker run --name wordpress -p 8082:80 -d wordpress

在 dockerhub 中查看 wordpress 镜像

wordpress 是需要mysql支持的,刚好我的 docker 上已经安装了 mysql,只需要简单的创建一个数据库即可,这里顺配给这个数据库创建了一个账号和密码,来提高整体的安全性,不使用 root 账户

为了能使 wordpress 访问到 mysql ,还需在 docker 里建立一个 network ,并把 mysql 和 wordpress 添加到网络里。

使用默认的bridge网络,不能通过DNS server实现通过容器名通信,但是使用自定义bridge网络可以做到通过容器名互相通信。

https://my.oschina.net/thinwonton/blog/2993309

这样就安装 wordpress 时,数据库地址填写 mysql 容器的名字了。

在安装好之后,如果直接修改反向代理到 wordpress 的端口,是不能使用的。因为 wordpress 配置了站点地址和wordpress地址,会加载不出来。

# wordperss 博客
    server {
        listen 80;
        server_name blog.codeon.cn;

        location / {

            proxy_pass http://172.17.0.8:80;
        }
    }

解决方法是修改成反向代理之后的地址即可,比如 blog.codeon.cn

如果博客修改之后无法正常访问了,则可以通过数据库中的 wp_option 表,修改 siteurl 和 home 属性,即可。

centos7 安装 docker

详细内容可以翻阅官网

更新 yum

yum update -y

设置存储库

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装 Docker 引擎

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

启动,并加入开机启动

systemctl start docker
systemctl enable docker