博客

  • UpdraftPlus S3 兼容存储 腾讯COS配置

    选择UpdraftPlus==》设置,选择 S3 兼容存储

    腾讯COS配置

  • 迁移:Docker项目——内网穿透,FRP+NPM+VPS

    迁移老码牛的文章,测试一下WordPress中的Markdown。

    大家好,欢迎来到老码牛频道。

    随着生活水平的提高,我们每个人拥有了越来越多的电脑和数码设备,如台式机、笔记本电脑、NAS、各种Android盒子以及托管的服务器等等。这些设备提供了各种各样的服务,例如SSH连接、Web服务、远程桌面、以及不同类型的数据库服务,如MySql和SqlServer等等。

    有没有一种解决方案可以将所有这些设备通过网络连接起来,组织成一个虚拟的局域网,并且非常方便地使用域名访问每个设备提供的服务呢?答案是肯定的。今天,我们将使用FRP、NPM和VPS来实现内网穿透,并通过域名来访问这些服务。

    系统简图

    首先,我们看一下要搭建的系统简单图示。

    xU9qzK

    从左而右,我们可以看到:

    • 用户通过DNS将域名解析到Nginx Proxy Manager所部署的主机的公网IP;
    • Nginx Proxy Manager按照配置的规则,反向代理对应的服务。包括Frp中暴露和中转的服务;
    • Frp专注于内网穿透,支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并安全、便捷地将内网服务暴露到公网;

    搭建此系统的条件如下:

    • 具有公网IP主机,我们推荐并演示的是Linux主机。
    • 一个域名,并解析指向到以上主机的IP地址。

    接下来,我们就开始搭建这套系统吧。

    服务器基本配置,安装Docker

    我们的演示服务器是一台香港的Debian服务器,配置是1核1G,公网IP是154.91.177.93。

    首先,我们通过SSH登录到服务器。

    由于此服务器系统的软件源配置有问题,我们将恢复到官方源。

    将sources.list文件修改为以下内容

    Bash
    mv /etc/apt/sources.list /etc/apt/sources.list.old
    cat > /etc/apt/sources.list << EOF
    deb http://deb.debian.org/debian/ bullseye main contrib non-free
    deb-src http://deb.debian.org/debian/ bullseye main contrib non-free
    deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
    deb-src http://deb.debian.org/debian/ bullseye-updates main contrib non-free
    deb http://deb.debian.org/debian/ bullseye-backports main contrib non-free
    deb-src http://deb.debian.org/debian/ bullseye-backports main contrib non-free
    deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
    deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
    EOF

    然后更新系统。

    apt update -y

    使用LinuxMirrors提供的Docker安装脚本,拷贝粘贴。

    bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

    回车运行。选择y,安装最新的版本; 因为是香港的服务器,所以选官方1; 选择香港的注册源,17;

    等待安装完成,安装完成。

    Frp服务器端搭建、配置

    下面,我们来安装Frp服务器端。

    创建服务器端目录,转到此目录。

    mkdir /www/dk_project/frps
    cd /www/dk_project/frps

    新建docker-compose.yml文件,输入vi docker-compose.yml。

    vi docker-compose.yml

    拷贝yaml内容,粘贴;保存文件。

    version: '3.3'
    services:
      frps:
        container_name: frps # 容器名称
        image: snowdreamtech/frps # 容器映像
        restart: always # 永远重启
        network_mode: host # 网络:主机模式
        volumes:
          - './frps.toml:/etc/frp/frps.toml' # 配置文件 

    新建frps.toml文件,输入vi frps.toml。

    vi frps.toml

    粘贴frps.toml内容。

    此文件配置了服务器端口值,以及Token的字符串值,请保存这些值以供它处使用。

    bindPort = 93 # 绑定端口
    auth.token = "MyToken123456"

    运行Frp服务器端容器

    docker compose up -d

    等待拉取镜像,拉取镜像完成,容器运行成功

    注意:

    请在服务器的防火墙,又或者安全组中放行相关的端口,以便配置起效。

    Frp客户端搭建、配置

    下面,我们来搭建Frp客户端。如下表:

    Frpc服务URL地址Frps端口域名
    NASSSH127.0.0.1:22394
    管理网站127.0.0.1:5060395nas
    Ali99WordPress172.0.17.1:808096wordpress
    PHPMyAdmin172.0.17.1:8897myadmin

    可以看到,我们打算搭建两个客户端。

    一个客户端是我家里的群晖的NAS。我想在公网通过IP和端口来连接到SSH,运行终端命令;通过域名登录到管理站点,方便地管理整个NAS。

    另一个是阿里99元服务器,2核2G。由于没有做备案,所以80和443端口是锁住的,一般的Nginx的反向代理也反代不了。我想通过内网穿透将Wordpress网站和MySq管理站点映射到香港服务器,不需要备案,也可以善用服务器资源。

    NAS

    我们先处理我的NAS,先通过SSH登录,输入密码。

    ssh 192.168.2.233 -p 223

    切换到root用户,输入密码。

    sudo -i

    创建Frpc目录,并转到此目录。

    mkdir -p /root/dk/frpc
    cd /root/dk/frpc

    新建docker-compose.yml文件,输入vi docker-compose.yml。

    vi docker-compose.yml

    拷贝yaml内容,粘贴;保存文件

    version: '3.3'
    services:
      frps:
        container_name: frpc # 容器名称
        image: snowdreamtech/frpc # 容器映像
        restart: always # 永远重启
        network_mode: host # 网络:主机模式
        volumes:
          - './frpc.toml:/etc/frp/frpc.toml' # 配置文件  

    新建frpc.toml文件,输入vi frpc.toml。

    vi frpc.toml

    粘贴frpc.toml内容。其中,

    serverAddr填入服务器的IP;serverPort填入服务器的端口;token输入与服务器同样的字符;

    余下就是两个服务的定义:

    一个是SSH和NAS服务。请按照实际情况填写,在保存。

    # frpc.toml
    serverAddr = "154.91.177.93" # 服务器IP
    serverPort = 93 # 服务器端口
    auth.token = "MyToken123456" # Token
    [[proxies]]
    name = "ssh" # 服务名称
    type = "tcp" # 服务类型
    localIP = "127.0.0.1"  # 本地IP
    localPort = 223 # 本地端口
    remotePort = 94  # 远程端口
    [[proxies]]
    name = "nas" # 服务名称
    type = "tcp" # 服务类型
    localIP = "127.0.0.1" # 本地IP
    localPort = 50603 # 本地端口
    remotePort = 95 # 远程端口

    运行Frp客户端容器

    docker-compose up -d

    等待拉取镜像,拉取镜像完成,容器运行成功

    阿里99元

    下面我们搭建阿里99服务器,先登录。

    此服务器是一个Ubuntu的Linux服务器,已经安装了版本24.0.5的Docker。

    创建Frpc目录,并转到此目录。

    mkdir -p /www/dk_project/frpc
    cd /www/dk_project/frpc

    新建docker-compose.yml文件,输入vi docker-compose.yml。

    vi docker-compose.yml

    粘贴文件内容,保存文件

    version: '3.3'
    services:
      frps:
        container_name: frpc # 容器名称
        image: snowdreamtech/frpc # 容器映像
        restart: always # 永远重启
        network_mode: host # 网络:主机模式
        volumes:
          - './frpc.toml:/etc/frp/frpc.toml' # 配置文件  

    新建frpc.toml文件,输入vi frpc.toml。

    vi frpc.toml

    粘贴frpc.toml内容。和NAS一样,

    serverAddr填入服务器的IP;serverPort填入服务器的端口;token输入与服务器同样的字符;

    接下来就是Wordpress和MySql管理服务。

    # frpc.toml
    serverAddr = "154.91.177.93" # 服务器IP
    serverPort = 93 # 服务器端口
    auth.token = "MyToken123456" # Token
    [[proxies]]
    name = "wordpress" # 服务名称
    type = "tcp" # 服务类型
    localIP = "172.17.0.1"  # 本地IP
    localPort = 8080 # 本地端口
    remotePort = 96  # 远程端口
    [[proxies]]
    name = "phpmyadmin" # 服务名称
    type = "tcp" # 服务类型
    localIP = "172.17.0.1" # 本地IP
    localPort = 88 # 本地端口
    remotePort = 97 # 远程端口

    运行Frp客户端容器

    docker-compose up -d

    等待拉取镜像,拉取镜像完成,容器运行成功

    到此,我们已经通过Frp的将以上的服务暴露到公网供访问。只不过使用IP地址以及端口就可以访问了,例如:NAS的SSH就可以直接连接了。为了更加优雅地,通过域名来访问,我们需要搭建Nginx Proxy Manager。

    Nginx Proxy Manager搭建、配置

    下面我们来搭建Nginx Proxy Manager,回到香港服务器,登录。

    创建NPM目录,并转到此目录。

    mkdir -p /www/dk_project/npm
    cd /www/dk_project/npm

    新建docker-compose.yml文件,输入vi docker-compose.yml。

    vi docker-compose.yml

    粘贴NPM配置文件内容。

    请注意,为了方便,我们使用的是汉化的映像,你可以自行修改为官方的映像。

    请确保防火墙,或者安全组放行80、81、443等端口。

    version: '3.8'
    services:
      npm:
        #image: 'jc21/nginx-proxy-manager:latest' # 官方
        image: 'chishin/nginx-proxy-manager-zh:latest' # 汉化
        restart: unless-stopped
        container_name: 'npm'
        network_mode: bridge
        ports: # 请确定放行以下端口
          - '80:80'
          - '81:81'
          - '443:443'
        volumes:
          - ./data:/data
          - ./letsencrypt:/etc/letsencrypt  

    运行Nginx Proxy Manager容器

    docker compose up -d

    下面我们可以通过154.91.177.93端口81来访问Nginx Proxy Manager管理网站。

    输入默认用户,admin@example.com,密码changeme来登录。

    第一次登录,会要求更改登录信息、密码。

    我们这里修改为ln,Email:ln@zlmix.com

    密码11111111,保存

    注意:我们必须将绑定的域名zlyum.com指向到154.91.177.93

    npm.zlyum.com

    下面我们继续配置,先把npm.zlyum.com,反向代理到NPM的站点。

    点击仪表盘页面,点击代理服务

    新建一个代理服务。

    域名输入npm.zlyum.com

    转发主机/IP输入172.17.0.1,就是docker默认绑定的IP

    转发端口输入81,就是NPM容器运行的暴露的管理端口

    点击SSL。选择请求一个新的SSL证书,开启强制SSL,输入电子邮箱点击同意,保存。

    现在我们就可以通过npm.zlyum.com这个域名来访问Nginx Proxy Manager。

    新建一个标签,访问npm.zlyum.com,登录。下一步,我们反向代理配置余下的服务。

    点击仪表盘页面,点击代理服务。

    新建一个代理服务。

    域名输入nas.zlyum.com

    转发主机/IP输入172.17.0.1。

    转发端口输入95,就是NAS服务内网穿透映射的端口

    点击SSL。选择请求一个新的SSL证书,开启强制SSL,输入电子邮箱点击同意,保存。

    wordpress.zlyum.com

    再新建一个代理服务。

    域名输入wordpress.zlyum.com

    转发主机/IP输入172.17.0.1。

    转发端口输入96,就是NAS服务内网穿透映射的端口

    点击SSL。选择请求一个新的SSL证书,开启强制SSL,输入电子邮箱点击同意,保存。

    再新建一个代理服务。

    域名输入myadmin.zlyum.com

    转发主机/IP输入172.17.0.1。

    转发端口输入97,就是myadmin服务内网穿透映射的端口

    点击SSL。选择请求一个新的SSL证书,开启强制SSL,输入电子邮箱点击同意,保存。

    验证效果

    可以直接点击上图的链接验证访问效果。

  • 子龙的WordPress博客

    搭建了一个WordPress的博客,用于记录我的开发历程。

  • 世界,您好!

    欢迎使用 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!