FRP内网服务配置https

一、实际需求

自己拥有了一台极空间Z4的NAS后,在上面部署了一些服务来满足自身的生活需求:

  • Vaultwarden:可自托管的个人密码安全管理使用平台,支持多端同步使用,出于安全考虑,客户端需要通过 https 协议与服务端通信;
  • Gotify:自托管的开源消多端消息接发平台,自己发布的一些服务可通过gotify-server端来向移动端实时发送通知;
  • Joplin:自托管的开源多端同步的笔记平台;
  • Gitea:自托管的开源多端同步的代码仓库平台;
  • Reader:自托管的开源阅读平台
  • … …

因受限于背景移动宽带的可恶嘴脸,每月19元的IPV4,还得各种打电话改桥接,最终还要被限制80和443端口的使用,虽然可以曲线救国,通过IPV6+DDNS的方式来实现将内网服务转发到外网使用,但IPV6也不是免费的啊!
不想付费买IP,只能采用更加曲线的形式,来达到我的目的了。

它那就是vps+frp组合技:

  • VPS:国外服务器

    平时有使用谷歌的需求,就在搬瓦工上淘了性价比比较高的服务器来FxxxGW,配置虽低,但跑个代理+FRP的服务端足够了!

  • FRP:开源内网穿透神器

  • 域名:国内或国外域名商购买即可

二、服务配置

1. 域名托管到cloudfare

  1. 注册账号

  2. 添加域名

  3. 域名服务商处配置cloufare的Nameserver

  4. 域名的DNS添加A记录,域名与VPS域名绑定,不用代理

    image-20240910021943840

2. 安装 FRPS

  1. 下载FRP安装包到/usr/local目录

    1
    2
    cd /usr/local
    wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz
  2. 解压

    1
    2
    3
    4
    # 解压
    tar -zxf frp_0.60.0_linux_amd64.tar.gz
    # 改名
    mv frp_0.60.0_linux_amd64 frp
  3. 修改 frps.toml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    bindPort = 7000

    # 443端口不要变,要不域名后面还要跟端口号,多恶心呐
    vhostHTTPSPort = 443
    auth.token="xxxxxx"

    webServer.addr="0.0.0.0"
    webServer.port=7777
    webServer.user="xxx"
    webServer.password="xxxxxx"

    subdomainHost = "cgio.asia"
  4. 创建FRPS开机自启文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    vim /etc/systemd/system/frps.service

    # 配置内容:
    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target syslog.target
    Wants = network.target

    [Service]
    Type = simple
    ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.toml

    [Install]
    WantedBy = multi-user.target
  5. 开启服务及自启动

    1
    2
    3
    4
    5
    6
    7
    8
    # 开机自启
    systemctl enable frps

    # 开启FRPS服务
    systemctl start frps

    # 查看FRPS状态
    systemctl status frps

3. 泛域名证书申请

3.1 VPS通过二进制形式安装Lucky,启动服务

安装运行&升级备份 | Lucky (lucky666.cn)

3.2 域名证书自动申请设置

【安全管理】→ 【添加证书】

按下图的记录添加自己的域名,填写完后,很快就能申请成功!成功后把证书下载下来备用。

image-20240910022746382

3.3 其它

可在【Web服务】处,配置反向代理,这里如果使用了443端口,那么frps将无法启动(端口冲突)。如果对服务的安全性要求不高的话,可直接通过这个功能将穿透到当前服务器的内网服务,以反向代理的形式对外发布。

这个服务需要frpc.toml处配置的服务对应的remotePort

4. 安装 FRPC

极空间通过Docker下载FRPC镜像备用,并准备一个文件夹存放配置文件及泛域名证书。

4.1 网络模式使用hosts

image-20240910020557647

4.2 挂载 frpc.toml,以及上一步中下载的泛域名证书

image-20240910020643749

4.2 配置 frpc.toml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#这里填写IPV4地址吧,如果是长期域名,也可直接填写域名,一年期的域名还是用IPV4方便
serverAddr = "xxx.xxx.xxx.xxx"
# frps.toml中配置的 bindPort值
serverPort = 7000

# 与frps.toml中配置的一致
auth.token="xxxxxx"

######### 配置Joplin服务 #########
[[proxies]]
name = "blog"
type = "https"
subdomain = "blog"

[proxies.plugin]
type = "https2http"
localAddr = "192.168.0.109:3400"
crtPath = "/etc/frp/server.crt"
keyPath = "/etc/frp/server.key"
###############################

######### 配置Monitor服务 #########
[[proxies]]
name = "monitor"
type = "https"
subdomain = "monitor"

[proxies.plugin]
type = "https2http"
localAddr = "192.168.0.109:8006"
crtPath = "/etc/frp/server.crt"
keyPath = "/etc/frp/server.key"
################################

4.3 启动容器

image-20240910021020498

搞定!

接下来,浏览器地址栏输入:

https://blog.cgio.asia

https://monitor.cgio.asia

即可访问内网服务了!


FRP内网服务配置https
https://wyd2015.github.io/FRP内网服务配置https.html
作者
静海潜蛟
发布于
2024年9月10日
更新于
2024年9月10日
许可协议