使用docker搭建frp在云服务器上调用本地服务器的代码

news2024/12/29 10:18:28

前言:最近生成图片的ai很火,国内也有不少这样的网站,但是一般都需要钱,这时候自己想用,又不想花钱,就只能在本地服务器搭建一个ai生成图片的服务,再通过内网穿透,从公网访问到这个本地搭建的服务。

获取frp的压缩包

访问下面这个网页Releases · fatedier/frp (github.com),这里下载最新版的v0.50.0的包。

 

可以看到这里有很多版,我服务器的CPU是x86_64架构(linux可以使用uname -a 这个命令查看CPU架构),选择的frpServer是frp_0.50.0_linux_amd64.tar.gz这个版本, 客户端是Windows系统所以frpClient 是frp_0.50.0_windows_amd64.zip这个版本。

Server端部署

1.发送到服务器上

使用以下命令将服务端需要的包发到远程服务器上

scp C:\Users\admin\Downloads\frp_0.50.0_linux_amd64.tar.gz root@ip:/home/docker/frp
2.创建指定文件
#创建frps.ini文件
cd /home/docker/frp && vim frps.ini
​
#编写配置  [common] 也需要保留
​
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# http服务需要使用
vhost_http_port = 8877
# 授权码,请改成更复杂的
# 这个token之后在客户端会用到
token = 123456
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
​
# frp日志配置
log_file = ./frps.log
log_level = info
log_max_days = 3              
3.创建dockerfile
vi dockerfile
​
FROM ubuntu
MAINTAINER zzy <358343917@qq.com>
​
ARG VERSION=0.50.0
​
WORKDIR /tmp
​
COPY ./frp_${VERSION}_linux_amd64.tar.gz frp_${VERSION}_linux_amd64.tar.gz
RUN set -x \
    && tar -zxvf frp_${VERSION}_linux_amd64.tar.gz \
    && mv frp_${VERSION}_linux_amd64 /var/frps \
    && mkdir -p /var/frps/conf
​
COPY ./frps.ini /var/frps/conf/frps.ini
​
VOLUME /var/frps/conf
​
WORKDIR /var/frps
ENTRYPOINT ./frps -c ./conf/frps.ini

解释一下上面的意思 从 /home/docker/frp文件夹下复制frp文件到docker容器中/tmp目录下,在容器内解压该文件并且移动到/var/frps路径下,在容器内创建文件夹/var/frps/conf,将/home/docker/frp/frps.ini文件复制到容器内 /var/frps/conf/frps.ini 这个文件。挂载一个卷,容器启动时默认执行 /var/frps/frps -c /var/frps/conf/frps.ini

4.构建dockerimage
#注意 name = 名称 tag = 版本号  name:tag后面有个.  代表当前目录, 也可以修改成 /home/docker/frp
docker build -t name:tag .
#示例
docker build -t zzy/frp:0.50.0 .
5.编写docker-compose

因为要将conf目录挂载在/home/docker/frps/conf/目录下,所以首先将/home/docker/frp下的frps.ini复制到 /home/docker/frps/conf/目录下

mv /home/docker/frp/frps.ini /home/docker/frps/conf/
version: '3.1'
    services:
        frp:
            image: zzy/frp:0.50.0
            container_name: frp
            volumes:
              - /home/docker/frps/conf:/var/frps/conf
            ports:
              - 7000:7000
              - 7500:7500
              - 8877:8877
            restart: always

启动

    docker-compose up -d frp

这个时候访问 ip:7500 ,输入账号密码后,应该就能看到这个页面了

 

如果是云服务器的话,记得开放7500端口

Client端部署

client就很简单了, 复制下下面的配置到frpc.ini文件中然后使用 cmd转到对应文件夹 输入 frpc.exe 启动。

[common]
server_addr = 云服务器地址
server_port = 7000
token = 123456
log_file = ./frpc.log
log_level = info
​
[home]
#连接方式  http
type = http
#内网服务器地址
local_ip = 127.0.0.1
#内网服务器端口
local_port = 8080
#外网HTTP端口
remote_port = 8877
#外网的域名 通过访问这个域名和端口找到这个服务
custom_domains = www.zzy1blog.cn
​

启动成功的话,我们登录管理页面,就能看到连接的服务了。如下:

 

编写本地服务测试类

@Slf4j
@Controller
@RequestMapping(value = "/test")
@ResponseBody
public class TestController {
​
    @GetMapping("/message")
    public void testNoneIntercept(HttpServletRequest httpServletRequest, HttpServletResponse response,String message) throws Exception {
        response.setContentType("text/event-stream");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write("来自本地服务器"+message);
    }
​
}

application.yaml配置

server:
    port: 8080

访问: www.zzy1blog.cn:8877/frp/servers?message=访问本地服务器

 

反代成功

配置nginx反代frp

nginx配置

http {
  server {
     listen 80;
     #请填写绑定证书的域名
     server_name zzy1blog.cn;
​
     location /frp/servers {
        proxy_pass http://localhost:8877;
        proxy_set_header Host       $host;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
 }
​

重启nginx容器

docker-compose stop nginx
​
docker-compose up -d nginx

访问 http://www.zzy1blog.cn/frp/servers?message=访问本地服务器2

搞定!

文章源地址 :使用docker搭建frp在云服务器上调用本地服务器的代码 – 我觉得大阳很强的blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI 绘画 - 建筑绘图辅助设计之 Controlnet SEG Depth

前情提要 2023-06-17 周六 杭州 雨转阴 小记: 周末的午休感觉还是没有尽兴&#xff0c;说是要乖乖休息却只是躺下闭目养神。 任务清单: a. Sketchup 安装和学习; b. Sketchup 建模学习; c. Controlnet SEG 语义分割基础&#xff1b; d. Controlnet Depth; 简介 应用实践 …

理解mysql数据库

1.MySQL 在 Centos 7环境安装 1.1 卸载不要的环境 ps ajx |grep mariadb # 先检查是否有 mariadb 存在 systemctl stop mariadb.service # 停⽌ mariadb 服务 ps ajx |grep mariadb # 再 检查是否有 mariadb 存在 1.2 删除多余的安装包 rpm -qa | grep mysql #查看默认安装…

#systemverilog# 关于关键字 之 unique 随机约束

前言 在随机约束中,我们可以使用关键字 unique 。 使用关键字unique定义的SystemVerilog约束称为唯一约束。在随机化中,使用唯一约束可以生成变量集的唯一值或数组的唯一元素。这里着重解释一下变量集:是同一类型随机变量的集合。 通过unique约束我们可以完成以下任务: …

免费搭建网站(手把手教学) — freehost免费主机体验

相信不少人都想制作一个属于自己的网站&#xff0c;其实并不是很难&#xff0c;即使没有基础也是能够完成的&#xff0c;而这些免费的主机就是小白练手的最佳途径了。免费主机有点就是免费&#xff0c;缺点也是有一堆&#xff0c;如果自己玩玩小范围提供网页服务足够&#xff0…

Virtualbox下CentOS安装k8s

1.系统配置 硬件配置基本要求 资源大小硬盘> 20Gcpu> 2核内存> 2G 本教程配置 主机名IP配置master192.168.10.1553核2G20Gworker1192.168.10.2343核2G20Gworker2192.168.10.1473核2G20G 2.安装必要软件 所有机器都要执行 yum 更新 sudo yum update -y bash-completion…

android复制与粘贴

官网关于复制的教程&#xff1a;https://developer.android.google.cn/guide/topics/text/copy-paste?hlzh-cn 关于Android 13模拟器无法运行可查看这篇文章&#xff1a;https://blog.csdn.net/android_cai_niao/article/details/131422541 界面UI如下&#xff1a; 界面中有…

事务的传播

七种传播机制支持当前事务不支持当前事务嵌套事务 七种传播机制 事务传播机制&#xff1a;解决一个事务在多个方法传递的问题 传播机制有以下7种 REQUIRED (默认)&#xff1a;如果当前存在事务&#xff0c;则加入该事务&#xff0c;如果不存在事务&#xff0c;则创建一个新事务…

DEBUG 系列二:Configure Debugger Layer

还拿之前的例子&#xff1a; https://mp.weixin.qq.com/s/a0Ia2wzFPGWjN988uutg7Q 前台操作dump了 然后debug分析原因的时候发现是这里的问题 进这标准函数看看 里面用到的是全局变量 go_hugm 说明这个函数使用时还有一系列配套的其他函数&#xff0c;都应该在它所对应的函数组…

[RSIC-V]Milk-V开发板 i2c测试oled及波形输出

I2C3 引脚图 修改i2c3复用功能 build\boards\cv180x\cv1800b_sophpi_duo_sd\u-boot\cvi_board_init.c //I2C3 pin6 7 PINMUX_CONFIG(SD1_CMD, IIC3_SCL); PINMUX_CONFIG(SD1_CLK, IIC3_SDA);扫描I2C3上的设备 [rootcvitek]~# i2cdetect -y -r 3 0 1 2 3 4 5 6 7 8 9 a b c …

wpf 3d立方体上的按钮

新建一个WPF工程&#xff1b; 引入3D Tools&#xff1b;前面已经说了&#xff0c;引入之后&#xff0c;不用写代码即可实现3D物体的鼠标操作&#xff1b; xaml代码如下&#xff1b; <Window x:Class"thrbtn.MainWindow"xmlns"http://schemas.microsoft.com…

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测 目录 时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测效果一览基本介绍研究过程程序设计参考资料效果一览 基本介绍 时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络…

3.原理图设计的快捷键和方法

3.原理图设计的快捷键和方法 一、使用建议 1.1 Altium designer使用建议 善用help&#xff0c;窗口右上角❓可用于显示提示&#xff1b;多看Knowledge Centor 添加元件、布局布线的注意要点 布局时&#xff1a;1、优先考虑重要接口、传感器的布局&#xff1b;2、电阻电容的…

论文笔记 CPU Accounting for Multicore Processors

Abstract 确定了对CPU utilization的不准确测量是如何影响OS的几个关键方面的这篇文章提出来了一个比CPU utilization更准确的性能评估指标 In this paper, we identify how an inaccurate measurement of the CPU utilization affects several key aspects of the system suc…

英语语法学习_incomplete

在语言学中&#xff0c;自然语言的语法是说话者或作者在从句、短语和单词的构成上的一套结构约束。1 「语法」实际上有两个概念&#xff0c;一是「语法」&#xff08;也叫「文法」&#xff09;&#xff0c;二是「语法学」。 一、语法&#xff1a;客观存在的语言结构规律&#x…

2014年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

深入理解 Golang: Channel 管道

Channel 的使用 Channel 声明方法 chInt : make(chan int) // unbuffered channel 非缓冲通道chInt : make(chan int, 0) // unbuffered channel 非缓冲通道chInt : make(chan int, 2) // bufferd channel 缓冲通道 Channel 基本用法 ch <- x // channel 接收数据 xx &l…

Python 使用 NetworkX

Python 使用 NetworkX 说明&#xff1a;本篇文章主要讲述 python 使用 networkx 绘制有向图&#xff1b; 1. 介绍&安装 NetworkX 是一个用于创建、操作和研究复杂网络的 Python 库。它提供了丰富的功能&#xff0c;可以帮助你创建、分析和可视化各种类型的网络&#xff…

Linux-Bash的基本特性

Linux-Bash的特性应用&#xff1a; 按命令展开&#xff1a; {} 花括号是Bash支持的一种特殊符号&#xff0c;可以简单的理解为小学时学的乘法结合率。 例如&#xff1a; echo {1..10} 1 2 3 4 5 6 7 8 9 101…10 表示1到10&#xff0c;则整个命令可以理解为echo 1 echo 2 ec…

MFC多文档绘制不同图形

VC6新建一个多文档项目&#xff1b;根据窗口标题的最后数字&#xff0c;绘制不同图形&#xff1b; void CPrdView::OnDraw(CDC* pDC) {CPrdDoc* pDoc GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCString str1 pDoc->GetTitle();CPoin…

[abc周赛复盘] AtCoder Beginner Contest 308 20230701

[abc周赛复盘] AtCoder Beginner Contest 308 20230701 总结A - New Scheme1. 题目描述2. 思路分析3. 代码实现 B - Default Price1. 题目描述2. 思路分析3. 代码实现 C - Standings1. 题目描述2. 思路分析3. 代码实现 D - Snuke Maze1. 题目描述2. 思路分析3. 代码实现 E - M…