步骤一,在外网服务器上部署frps
在腾讯云或者阿里云上买一台云服务器:这里不赘述
1、首先需要部署docker和docker compose
#若系统存在旧版Docker,需先清理:
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine docker-selinux
#准备必要工具包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#使用国内镜像源加速下载:
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
#安装Docker CE,安装最新社区版及配套组件:
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#启动服务与验证
sudo systemctl start docker
sudo systemctl enable docker
docker run hello-world # 验证安装
#配置镜像加速
{
"registry-mirrors": [
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://mirror.ccs.tencentyun.com"
]
}
#重启服务生效:sudo systemctl restart docker
#安装Docker Compose
#独立安装(推荐方式)下载最新二进制文件(以v2.25.0为例)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#验证安装
docker-compose --version # 应显示版本号
systemctl status docker # 确认服务为active(running)
2、部署docker版本frps
1、解压zip包上传docker-compose.yml和frps.toml文件到腾讯云服务器的/data/docker/frps目录下
mkdir -p /data/docker/frps & cd /data/docker/frps
#编辑docker-compose文件
vim docker-compose.yml
version: '3'
services:
frps:
image: snowdreamtech/frps
container_name: frps
restart: always
network_mode: host
volumes:
- ./frps.toml:/etc/frp/frps.toml
environment:
- FRP_CONFIG_FILE=/etc/frp/frps.toml
#编辑frps.toml文件
vim frps.toml
# frps.toml
# 基本配置
bindPort = 7000 # frps 监听的端口,用于接收 frpc 的连接
vhostHTTPSPort = 443 # 客户端配置的type = "https" 的监听端口
vhostHTTPPort = 8080 # 客户端配置的type = "http" 的监听端口
# 认证配置
[auth]
method = "token" # 认证方法,这里使用 token
token = "token" # 用于验证 frpc 的 token,请使用安全的随机字符串
# Web 管理界面配置(如果不需要 Web 管理界面,可以删除这部分)
[webServer]
addr = "0.0.0.0" # Web 界面监听的地址,0.0.0.0 表示所有地址
port = 7500 # Web 界面的端口
user = "admin" # Web 界面的登录用户名
password = "admin" # Web 界面的登录密码
# 日志配置
[log]
to = "console" # 日志输出位置,console 表示输出到控制台
level = "debug" # 日志级别:debug, info, warn, error
docker-compose up -d
步骤 二、购买域名,申请免费的SSL证书
1、绑定腾讯云服务器:
2、下载nginx的crt和key文件上传到nas中的cert目录下
步骤三、绿联nas上docker项目部署frpc
1、在nas的共享文件夹下创建docker和frpc文件夹,在frpc文件夹下创建好cert(这个目录需要放下ssl证书),logs(放日志)
2、记得把第二步的nginx的SSL证书放到cert目录下。
1、docker-compose文件
version: '3' # Docker Compose文件格式版本
services: # 定义服务
frpc: # 服务名称为frpc
image: snowdreamtech/frpc # 使用的Docker镜像
container_name: frpc # 容器名称
restart: always # 容器重启策略
network_mode: host # 网络模式
volumes: # 数据卷挂载
- ./frpc.toml:/etc/frp/frpc.toml # 配置文件映射
- ./logs:/var/log # 日志目录映射
- ./cert/xxxxxx.crt:/var/cert/xxxxxx.crt #wiznote的ssl证书文件
- ./cert/xxxxxx.key:/var/cert/xxxxxx.key #wiznote的ssl证书文件
environment: # 环境变量
- FRP_CONFIG_FILE=/etc/frp/frpc.toml # 指定配置文件路径
2、frpc.toml文件
# frpc.toml
# 服务器配置
serverAddr = "43.xx.xx.xx" # 公网服务器的IP
serverPort = 7000
# 认证配置
auth.method = "token"
auth.token = "token" #这里 填写frps.toml的
# 日志配置
## 日志输出文件路径,如果为 console,则会将日志打印在标准输出中。
log.to = "console"
## 日志级别,可选值为 trace, debug, info, warn, error,默认级别为 info。
log.level = "debug"
## 日志文件最多保留天数,默认为 3 天。
log.maxDays = 3
## 禁用标准输出中的日志颜色。
log.disablePrintColor = false
# -----从这里开始都是,程序的信息-----
# SSH 服务配置
#[[proxies]]
#name = "mac-ssh"
#type = "tcp"
#localIP = "host.docker.internal"
#localPort = 22
#remotePort = 10022
# VNC 服务配置
#[[proxies]]
#name = "mac-vnc"
#type = "tcp"
#localIP = "host.docker.internal"
#localPort = 5900
#remotePort = 15900
# -------start------wiznote https的服务配置
[[proxies]]
name = "wiznote_https"
type = "https"
customDomains = ["wiznote.com"] #填写申请的域名
[proxies.plugin]
type = "https2http"
localAddr = "192.168.8.8:36"#nas上部署的应用ip和端口
# HTTPS 证书相关的配置
crtPath = "/var/cert/wiznote.com_bundle.crt"
keyPath = "/var/cert/wiznote.com.key"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"
# -------end------wiznote https的服务配置
# wiznote http的服务配置
[[proxies]]
name = "wiznote_http"
type = "http"
localIP = "192.168.8.8"
localPort = 36
customDomains = ["wiznote.com"]
#frp 会为本地服务的 8090 端口,在 frps 所在的服务端监听 6666 端口,将 6666 端口接收到的连接和本地服务的 8090 端口关联,透传流量,从而实现让用户在外部访问到内部服务。
# halo 服务配置
#[[proxies]]
#name = "halo"
#type = "tcp"
#localIP = "192.168.8.8"
#localPort = 8090
#remotePort = 6666
测试服务并验证
直接在浏览器输入购买的域名:比如你购买的域名是wiznote.com,解析如下的话,那么在浏览器输入:https://memos.wiznote.com,就能访问到nas部署的应用了。
参与讨论
(Participate in the discussion)
参与讨论