前段时间一直想找点有意思的东西折腾折腾,一时兴起就买了个树莓派。买回来之后我就迷茫了,这个东西能干啥(折腾各种软硬件)?问题是我能用它干啥?放在那里积灰吧。
不行,捡起来。搭个最简单的git服务器来玩玩。当然git服务器有很多,就拿 Gogs 来试水吧,采用 Go 语言开发,支持多平台(包括树莓派),搭建简单,占用资源少。有兴趣的可以去 Gogs 官网 了解。
树莓派系统
首先为我们的树莓派挑选系统,官网罗列了许多树莓派支持的系统。我这里挑选了官方维护的 [RASPBIAN STRETCH LITE]。注意这里使用的 lite 版,它是没有桌面系统的(完全通过命令行交互),意味着你不能通过点点点完成一些操作。
系统烧录
准备一张高速 TF 卡(class 10),高速意味着你的系统运行效率。准备 USB 接口键盘,支持 HDMI 显示器。解压刚才下载的镜像。
$ ls raspberrypi
2017-11-29-raspbian-stretch.img
1、电脑插入你的 TF 卡,执行以下命令查询 TF 的盘符:
$ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
...
/dev/disk2s4 30Gi 1.6Mi 30Gi 11% 0 0 100% /Volumes/Untitle
2、发现新卡的盘符是/dev/disk2s4
,执行命令卸载磁盘 diskutil umount /dev/disk2s4
。这里是卸载而不是推出(Eject)。
3、执行烧录命令,注意这里的 of=/dev/rdisk2
中的 rdisk2
。
$ dd bs=512m if=2017-11-29-raspbian-stretch.img of=/dev/rdisk2
1173+0 records in
1173+0 records out
4919918592 bytes transferred in 312.974440 secs (15719873 bytes/sec)
4、写入完成,推出磁盘。
$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful
键盘设置
用 HDMI 线连接树莓派(注意一定要在树莓派开机之前连接),启动树莓派。初始密码:raspberry。
更改默认键盘布局:sudo dpkg-reconfigure keyboard-configuration
-> Generic 104-key PC
-> Change Keboard Layout
-> Other
-> English (US)
-> English (US) - English (US, alternative international)
,之后,一直回车。
无线设置
扫描wifi。
$ sudo iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 12:2A:B3:A8:82:82
ESSID:"Raspberry"
Protocol:IEEE 802.11bgn
Mode:Master
Frequency:2.422 GHz (Channel 3)
Encryption key:on
Bit Rates:72 Mb/s
Extra:rsn_ie=30140100000fac040100000fac040100000fac020c00
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: Unknown: DD180050F204104A00011010440001021049000600372A000120
Quality=48/100 Signal level=87/100
编辑配置文件,在末尾添加
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="The_ESSID_from_earlier"
psk="Your_wifi_password"
}
执行如下命令:
$ sudo wpa_cli reconfigure
Selected interface 'wlan0'
OK
开启 SSH
开启 SSH 服务:sudo /etc/init.d/ssh start
。
设置开机自启,修改 /etc/rc.local
文件,在 exit 0
之前加入:/etc/init.d/ssh start
。
Gogs 安装
本次安装采用的是二进制安装的方式。首先到这里下载二进制压缩包:
假设:
树莓派 IP 地址:192.168.1.107
公网 IP 地址:123.123.123.123
域名:example.com
Gogs 一切从简,直接晒配置吧:
APP_NAME = Gogs
RUN_USER = pi
RUN_MODE = prod
[server]
PROTOCOL = http
DOMAIN = git.example.com
HTTP_PORT = 50000
ROOT_URL = https://git.example.com/
DISABLE_SSH = false
SSH_PORT = 50022
START_SSH_SERVER = true
OFFLINE_MODE = false
[repository]
ROOT = /home/pi/git/gogs-repo
[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = gogs
USER = root
PASSWD =
SSL_MODE = disable
PATH = data/gogs.db
[mailer]
ENABLED = false
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = true
ENABLE_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false
[picture]
DISABLE_GRAVATAR = false
ENABLE_FEDERATED_AVATAR = true
[session]
PROVIDER = file
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /home/pi/git/gogs/log
注意,这里使用了 HTTP 协议,端口是 50000。开启了内置 SSH 服务,端口为 50022。
通过 192.168.1.107:50000 就可以访问 gogs 的服务了。
内网穿透
内网穿透通俗的理解是:一个服务端 server,在公网。一个(多个)客户端 client,在内网。服务端与客户端之间建立一个隧道。服务端接收到请求之后,转发给相应的客户端。客户端通过隧道返回结果。这样就完成了一次内网穿透的过程。
国内有许多内网穿透的服务商,就不列举了。开源的世界里有很多著名的内网穿透软件:ngrok,frp等。这里使用 frp,配置非常简单。基本配置可以去 Github 官方主页查看。
服务端配置 frps.ini,注意防火墙端口设置:
[common]
bind_port = 60000
vhost_http_port = 50001
dashboard_user = xxxxxx
dashboard_pwd = xxxxxx
privilege_token = xxxx
树莓派客户端 frpc.ini:
[common]
server_addr = git.deepzz.com
server_port = 60000
privilege_token = xxxxxx
[gogs]
type = http
local_port = 50000
custom_domains = git.deepzz.com
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 50022
remote_port = 50023
分别启动服务端和客户端。
此时,访问公网 123.123.123.123:50001 就可以访问到 gogs 的服务。如果你公网服务器有使用 nginx 的反向代理,你还可以开启 HTTPS 进行代理。直接使用域名访问。如使用 https://git.example.com
。棒棒的!
你还可以参考这篇文章SSH 那些你所知道和不知道的事设置 SSH Config,SSH 克隆仓库,推送,拉取等更加方便。
Host gogs
HostName git.example.com
User pi
IdentityFile ~/.ssh/id_rsa
Port 50023
首先在 gogs web服务端添加 SSH Key。如你创建了名为 test 的仓库,那么你克隆的时候只需git clone gogs:/$Username/test.git
。用户名为你在 gogs 上的用户。
整个过程就酱!
本文链接:https://deepzz.com/post/raspberrypi-setup-git-repo-and-intranet-penetration.html,参与评论 »
--EOF--
发表于 2018-01-07 01:02:00,并被添加「raspberry pi」标签。
本站使用「署名 4.0 国际」创作共享协议,转载请注明作者及原网址。更多说明 »
提醒:本文最后更新于 2510 天前,文中所描述的信息可能已发生改变,请谨慎使用。
Comments