将吃灰的树莓派改造成一个属于自己的 Git 站点。
前言
之前一时冲动买的树莓派一直放在宿舍吃灰,在我入手 Mi Air 轻薄本之后他彻底地失去了作为 Linux 二号机的作用。今天看到 GitHub 疑似封锁伊朗用户的消息,突发灵感,将树莓派搞成了一个个人 Git 站。
前置
- 吃灰树莓派 一块 (本文为 Model 3B / Raspbian 10 buster)
- 用来内网穿透的VPS 一台(本文为 Ubuntu 18.04 LTS )
- 内网穿透工具 frp
- 树莓派请下载 linux_arm 版本包,VPS 则具体情况具体分析,本例中为 linux_amd64
- 轻量 Git 部署包 gogs
- 树莓派请下载 raspi2_armv6 版本包
局域网搭建 gogs
- 先将 gogs 的二进制安装包放到一个安全的位置,如
/var/gogs/
解压放好。 - 创建
/lib/systemd/system/gogs.service
以后台运行 gogs:
[Unit]
Description=Gogs
After=syslog.target
After=network.target
[Service]
Type=simple
User=pi
Group=pi
WorkingDirectory=/var/gogs/ # 路径
ExecStart=/var/gogs/gogs web # gogs路径
Restart=always
Environment=USER=pi HOME=/home/pi
[Install]
WantedBy=multi-user.target
sudo systemctl enable gogs && sudo systemctl start gogs
来启动服务。sudo systemctl status gogs
查看运行状态,若为 active 则进行下一步。- 局域网访问
树莓派局域网ip:3000
来进入 gogs 的首次运行设置。 - 设置完成后,可以编辑
/var/gogs/custom/app.ini
来调整站点设置。 - 至此,本地 gogs 服务已经搭设完毕。
内网穿透 - 服务器设置
- 将对应版本的 frp 放到安全的位置,如
/var/frp/
。 - 修改 server 端的配置文件
/var/frp/frps.ini
:
[common]
bind_port = 7000 # 穿透用端口
vhost_http_port = 80 # http 访问端口
vhost_https_port = 443 # https 访问端口
dashboard_port = 8888 # frps 控制面板访问端口
dashboard_user = USERNAME # 控制面板用户名/密码
dashboard_pwd = PASSWORD
auth_token = TOKEN # 穿透用 token
- 创建服务
/lib/systemd/system/frps.service
:
[Unit]
Description=frps service
After=network.target network-online.target syslog.target
Wants=network.target network-online.target
[Service]
Type=simple
ExecStart=/var/frp/frps -c /var/frp/frps.ini
[Install]
WantedBy=multi-user.target
sudo systemctl enable frps && sudo systemctl start frps
来启动服务。sudo systemctl status frps
,若服务启动完成,则可以通过 服务器ip:控制面板端口查看状态。
内网穿透 - 树莓派设置
- 将对应版本的 frp 放到安全的位置,如
/var/frp/
。 - 修改 server 端的配置文件
/var/frp/frpc.ini
:
[common]
server_addr = 服务器IP
server_port = 7000
login_fail_exit = false
auth_token = TOKEN
# 树莓派SSH
[sshpi]
type = tcp
local_port = 22
remote_port = 2222
local_ip = 127.0.0.1
# gogs HTTP
[httpgit]
type = http
local_port = 80
custom_domains = YOUR.DOMAIN.COM
# gogs HTTPS
[httpsgit]
type = https
local_port = 443
custom_domains = YOUR.DOMAIN.COM
# gogs ssh # 需打开 gogs 对应功能
[sshgit]
type = tcp
local_port = 对应gogs设置端口
local_ip = 127.0.0.1
remote_port = 50022
- 创建服务
/lib/systemd/system/frpc.service
:
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/var/frp/frpc -c /var/frp/frpc.ini
[Install]
WantedBy=multi-user.target
sudo systemctl enable frpc && sudo systemctl start frpc
来启动服务。- 若一切正常,现在已经可以通过设置的域名访问 gogs 服务了。
配置 SSL
没有小绿锁的站点是没有灵魂的。
本过程需要一个对应域名的 SSL 证书(pem 和 key),树莓派需要 nginx 环境。
- 将 SSL 证书放到安全的位置,如
/var/nginx/ssl/domain.pem
和./domain.key
- 编辑 nginx 默认站点配置,一般在
/etc/nginx/sites-enabled/default
或者/var/nginx/
相应位置: - 添加新 server 项目:
server {
listen 80;
listen 443;
server_name YOUR.DOMAIN.COM;
ssl on;
ssl_certificate /var/nginx/ssl/domain.pem;
ssl_certificate_key /var/nginx/ssl/domain.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
location /{
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
}
}
- 保存,通过
sudo nginx -s reload
刷新配置。
大功告成!Enjoy it。
示例
我树莓派上部署的 gogs 站点:https://git.dctewi.com
截图

