利用花生殼PHTunnel,讓樹莓派+git支持內網穿透-阿里云開發者社區

開發者社區> 開發與運維> 正文

利用花生殼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作為全世界最大的交友平臺,不止托管了許多優秀的項目源碼,還有相當一部分開源的資料可以供我們免費下載,比如:中國科學技術大學計算機學院的課程資源()
1.png

或者是一些奇奇怪怪的知識(杭州買房攻略:)
2.png

你以為github是這樣的
3.png

但實際上他是這樣的
4.png

或者是這樣的
5.png

我們日常工作生活中,涉及到寫代碼或者是寫文之類的工作時,使用 git 可以很方便的管理我們的創作內容,下面給大家簡單介紹一下如何在自己家中搭建一個 Gitlab 服務器。
首先,我們要保證 git 服務器的穩定可以领救济金的游戏,7*24在線,性能要足夠支撐穩定運行,現規劃兩種方案:路由器和樹莓派。因為我家中的路由器性能略差,因此我選擇了這款樹莓派4b(2G rom版)。作為最新一代樹莓派,它繼承了樹莓派家族便攜、開源、接口豐富的特點,并且性能相對于樹莓派3b+有較大升級,也是家用服務器的不二之選。
6.png

(這個角度看樹莓派居然有種別樣的美感)
接下來介紹樹莓派安裝gitlab的相關內容:
1、訪問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服務了,如果我們想更加愉快地在異地管理自己的項目,接下來給大家介紹一款實用工具:花生殼。
在花生殼開放平臺 看到了花生殼開放了面向開發者的 phtunnel 嵌入式解決方案。相對于傳統的 pc 客戶端映射內網服務,對于git服務是個更加合適的選擇,于是我將 phtunnel 嵌入了自己的樹莓派。
12.png

首先登陸開發者平臺 申請開發者權限,這里不再贅述,申請成功后拿到了屬于自己的 APPID 和 APPKEY。
然后就可以去下載樹莓派額 sdk 來進行嵌入了,打開壓縮包以后看到下列四個包:
13.png

雖然我本地的設備是aarch64,但是樹莓派官網下載的 Raspbian Buster 安裝完成后是32位的,這里我選擇了armv8版的包。
按照幫助文檔嘗試運行,目前比較正常,掃碼后使用調試賬號登錄,提示登錄成功,域名狀態變為online。
14.png

通過本地管理接口也可以獲取到賬號信息。
15.png

現在phtunnel的依然是前臺運行狀態,綁定完賬號信息之后,重新啟動,加上 -d 參數,使程序后臺運行,這次啟動后程序會使用之前的配置文件,無需再次綁定,本地管理接口調用也驗證了這個猜想。 添加一個到本地80端口的映射,就可以從外網訪問到 niubility 項目了。
16.png

5、克隆到本地
點擊clone后獲取地址:,我們需要把前面的域名改為花生殼的映射域名:,就可以 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要更加小巧,后面會嘗試將這部分剩余計算力充分利用起來,搭建一些有趣的個人網站。這部分相關內容,我們下期再詳細介紹。

版權聲明:本文中所有內容均屬于阿里云開發者社區所有,任何媒體、網站或個人未經阿里云開發者社區協議授權不得轉載、鏈接、轉貼或以其他方式復制發布/發表。申請授權請郵件developerteam@list.alibaba-inc.com,已獲得阿里云開發者社區協議授權的媒體、網站,在轉載使用時必須注明"稿件來源:阿里云開發者社區,原文作者姓名",違者本社區將依法追究責任。 如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至:developer2020@service.aliyun.com 進行舉報,并提供相關證據,一經查實,本社區將立刻刪除涉嫌侵權內容。

分享:

集結各類場景實戰經驗,助你開發運維暢行無憂

其他文章