利用花生壳PHTunnel,让树莓派+git支持内网穿透

简介: 说起 git,广大 IT 人士应该都不陌生,无论是公司里用于管理代码的 Gitlab,或者是同性交友平台(划掉)github,我们平时多多少少都会有接触。Git 是一款出色的项目管理软件,来自于天才少年 Linus Torvalds,他在创造出 Linux kernel 之后,开发了 git,用于管理 Linux kernel 的源码。从此以后,越来越多的项目开始使用git作为自己的版本管理工具。

说起 git,广大 IT 人士应该都不陌生,无论是公司里用于管理代码的 Gitlab,或者是同性交友平台(划掉)github,我们平时多多少少都会有接触。Git 是一款出色的项目管理软件,来自于天才少年 Linus Torvalds,他在创造出 Linux kernel 之后,开发了 git,用于管理 Linux kernel 的源码。从此以后,越来越多的项目开始使用git作为自己的版本管理工具。
github作为全世界最大的交友平台,不止托管了许多优秀的项目源码,还有相当一部分开源的资料可以供我们免费下载,比如:中国科学技术大学计算机学院的课程资源(https://github.com/ustcwpz/USTC-CS-Courses-Resource
1.png

或者是一些奇奇怪怪的知识(杭州买房攻略:https://github.com/houshanren/hangzhou_house_knowledge
2.png

你以为github是这样的
3.png

但实际上他是这样的
4.png

或者是这样的
5.png

我们日常工作生活中,涉及到写代码或者是写文之类的工作时,使用 git 可以很方便的管理我们的创作内容,下面给大家简单介绍一下如何在自己家中搭建一个 Gitlab 服务器。
首先,我们要保证 git 服务器的稳定,7*24在线,性能要足够支撑稳定运行,现规划两种方案:路由器和树莓派。因为我家中的路由器性能略差,因此我选择了这款树莓派4b(2G rom版)。作为最新一代树莓派,它继承了树莓派家族便携、开源、接口丰富的特点,并且性能相对于树莓派3b+有较大升级,也是家用服务器的不二之选。
6.png

(这个角度看树莓派居然有种别样的美感)
接下来介绍树莓派安装gitlab的相关内容:
1、访问gitlab官网(https://packages.gitlab.com/gitlab),获取gitlab-ce包的相关信息。因为gitlab做了树莓派的相关支持,可以直接通过官网wget下载对应版本。这里我使用最新版本12.8.6作为gitlab服务器。
7.png

根据右侧的提示,我们可以添加相关远程仓库,并使用 apt-get 包管理工具进行在线下载安装。
在我本地添加完相关仓库地址后,apt-get 还是安装失败,所以我选择直接下载对应 deb 包,由于该包较大,使用 wget 尝试多次后依然失败,建议直接使用某雷下载 download.deb 包进行安装。
installing...
8.png

2、安装成功后工作:
安装 deb 包耗时5分钟左右,安装完成后,因为 gitlab 使用的80端口被树莓派自带的 apache 服务占用,所以需要先停止 apache 服务,再进行 gitlab 的部署。
9.png

3、这时,我们就可以运行gitlab-ctl reconfigure命令,来初始化gitlab服务器了。
(约十分钟左右)
提示完成以后,可以通过在局域网内使用树莓派ip+80端口访问 Gitlab 界面,至此,gitlab的安装工作基本完成。
10.png

进入Gitlab管理界面,来创建一个十分 niubility 的项目(捂脸逃
11.png

4、现在我们在本地局域网内就能方便的使用git服务了,如果我们想更加愉快地在异地管理自己的项目,接下来给大家介绍一款实用工具:花生壳。
在花生壳开放平台https://open.oray.com/ 看到了花生壳开放了面向开发者的 phtunnel 嵌入式解决方案。相对于传统的 pc 客户端映射内网服务,对于git服务是个更加合适的选择,于是我将 phtunnel 嵌入了自己的树莓派。
12.png

首先登陆开发者平台 https://open.oray.com/ 申请开发者权限,这里不再赘述,申请成功后拿到了属于自己的 APPID 和 APPKEY。
然后就可以去下载树莓派额 sdk 来进行嵌入了,打开压缩包以后看到下列四个包:
13.png

虽然我本地的设备是aarch64,但是树莓派官网下载的 Raspbian Buster 安装完成后是32位的,这里我选择了armv8版的包。
按照帮助文档尝试运行,目前比较正常,扫码后使用调试账号登录,提示登录成功,域名状态变为online。
14.png

通过本地管理接口也可以获取到账号信息。
15.png

现在phtunnel的依然是前台运行状态,绑定完账号信息之后,重新启动,加上 -d 参数,使程序后台运行,这次启动后程序会使用之前的配置文件,无需再次绑定,本地管理接口调用也验证了这个猜想。 添加一个到本地80端口的映射,就可以从外网访问到 niubility 项目了。
16.png

5、克隆到本地
点击clone后获取地址:http://raspi.git.com/root/niubility_project.git,我们需要把前面的域名改为花生壳的映射域名:http://thedim.qicp.vip/root/niubility_project.git,就可以 git clone 了。
17.png

使用git clone命令克隆项目以后,在项目目录下使用 git remote -v 来查看当前克隆的项目路径。此时 git remote -v重的信息已经变成了花生壳映射的地址。后续再继续进行git操作的时候,就不需要单独配置host或者是其他操作了。
修改本地文件并 push:
18.png

6、制作开机启动 这里我们使用 systemd 来守护进程。systemd 即system daemon,是一个系统级的系统与服务管理器。在新版的 Linux 发行版中,代替了systemV,成为更主流的守护方式。
这里我们编写一个简单的phtunnel.service文件,使phtunnel可以进行开机启动,文件内容如下:
[Unit] Description=Start phtunnel program
[Service] Type=simple ExecStart=/usr/bin/phtunnel -l /var/log/phtunnel.log -c /etc/phtunnel.json -r -i <填入APPID> -k <填入APPKEY> RemainAfterExit=no Restart=always
[Install] WantedBy=network-online.target
将该service文件放置于 /lib/systemd/system/ 目录下,创建一个service文件,
使用systemctl命令即可管理systemd启动文件。常用的管理命令如下

systemctl  enable phtunnel #创建一个软连接,将phtunnel.service加入相应的target中,设置开机启动。

systemctl start phtunnel    #启动phtunnel服务。

systemctl status phtunnel   #查看phtunnel服务当前运行状态。

systemctl restart phtunnel  #重启phtunnel服务。

至此,我们的“微型·假装有公网ip版·Git服务器”就搭建完成了,又能开心地跟小伙伴们玩(zhuang)耍(bi)了。
花生壳PHTunnel采用C语言实现,最小约80KB,能轻松实现高性能反向代理应用,支持TCP、UDP、HTTP、HTTPS协议,端到端的TLS加密通信,黑白名单防黑验证等;覆盖Windows、Linux、树莓派、Mac、安卓等主流操作系统。
19.png

作为花生壳内网穿透的核心组件,花生壳PHTunnel可以集成嵌入到各种网络和智能IoT设备中,无需公网IP,只要有网就能轻松穿透各种复杂的路由和防火墙,实现外网访问内网的各种应用。
20.png

后续:我们可以使用 Gitlab + phtunnel 的 docker 镜像来更方便的创建一个 Gitlab 服务(相关镜像:gitlab/gitlab-ce:latest,bestoray/phtunnel:latest),两个镜像均已支持 arm 平台。或者可以将 Gitlab 和 phtunnel 服务打包进一个自己的镜像。现在搭建的git只支持http访问,后续添加https映射的方法需要继续研究。手上的另一台树莓派设备,是树莓派 zero W,相对于树莓派4b要更加小巧,后面会尝试将这部分剩余计算力充分利用起来,搭建一些有趣的个人网站。这部分相关内容,我们下期再详细介绍。

相关文章
webpack 使用打包报错 ERROR in node_modules\@types\node\ts4.8\assert.d.ts
webpack 使用打包报错 ERROR in node_modules\@types\node\ts4.8\assert.d.ts
1005 1
|
4月前
|
XML API 开发者
主流电商亚马逊api数据接口实操
本文详细介绍了亚马逊 API 的实操指南,涵盖 MWS 和 SP-API 的基本使用方法、认证流程及代码示例。内容包括:1) 亚马逊 API 概述,对比 MWS 和 SP-API 的功能与适用场景;2) 注册开发者账号并获取凭证的步骤;3) 使用 Python 调用 MWS 订单 API 和 SP-API 产品信息 API 的示例代码;4) API 调用注意事项,如速率限制、认证机制和错误处理;5) 推荐工具和资源,帮助开发者高效集成和优化代码实现。建议先在沙箱环境测试,确保生产环境稳定运行。
|
Linux SoC
Linux设备树(DTS)
Dts:DTS即Device Tree Source,是一个文本形式的文件,用于描述硬件信息。一般都是固定信息,无法变更,无法overlay。 设备树由来 linux内核源码中,之前充斥着大量的平台相关(platform Device)配置,而这些代码大多是杂乱且重复的,这使得ARM体系结构的代码维护者和内核维护者在发布一个新的版本的时候有大量的工作要做,以至于LinusTorvalds 在2011年3月17日的ARM Linux邮件列表中宣称“Gaah.Guys,this whole ARM thing is a f*cking pain in the ass”这使得整个ARM社区不得不
207 0
|
10月前
|
机器学习/深度学习 人工智能 监控
AI视频监控技术的核心优势与实践
AI视频监控技术结合了计算机视觉、深度学习和大数据分析,能够实时分析监控画面,识别异常行为和场景变化。其核心在于从“被动记录”转型为“主动识别”,提升监控效率并减少安全隐患。主要应用场景包括泳池管理、健身器械区域、人员密度预警和异常事件检测。系统架构支持多种摄像头设备,采用边缘计算和Docker部署,具备实时性、高准确率和扩展性等优势。未来将优化复杂场景适应性和实时计算负载,进一步提高系统性能。
2267 7
|
11月前
|
安全
企业远程控制,SaaS和私有化部署方案对比?
随着疫情和信息技术的发展,办公方式日益灵活,不再局限于固定场所。然而,如何高效地远程访问公司电脑或设备成为关键。个人和企业在选择远程办公方案时,需考虑不同的因素。个人用户可选择市面上的SaaS服务,满足偶尔的远程需求;而企业则需关注安全性、部署便捷性、使用管理和与现有系统的集成。内信互联DoLink企业远程控制系统专为企业设计,支持私有化部署,提供高安全性和可定制化解决方案,帮助企业根据自身需求选择合适的远程控制方案。
199 0
|
Linux 开发工具 git
CentOS安装git客户端
【8月更文挑战第22天】在 CentOS 上安装 Git 可通过两种方式:一是利用 yum 包管理器,只需在终端依次执行 `sudo yum update` 和 `sudo yum install git` 命令,安装时按提示输入 y 即可;二是从源码安装,适用于有特殊需求的场景。首先安装必要的依赖库,然后下载并解压 Git 的源码包,最后通过一系列 make 命令完成配置与编译安装。无论哪种方式,安装完毕后均可通过 `git --version` 验证安装情况。
557 6
|
存储 安全 内存技术
地址映射
地址映射
619 0
|
存储 PyTorch 算法框架/工具
一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)
一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)
|
移动开发 前端开发 HTML5
『html5、css3』将视频做为网页背景 超炫!
效果图展示 仿墨迹天气首页 github项目地址:https://github.com/Ethan997/Video-background-page PC端网页效果预览:http://www.
5063 0
|
机器学习/深度学习 存储 自然语言处理
从感知机到Transformer,一文概述深度学习简史(1)
从感知机到Transformer,一文概述深度学习简史
261 0

热门文章

最新文章