在树莓派上搭建Gogs服务

新到手了一个树莓派板子,省电又不占地方,遂玩耍一番。

为什么选择Gogs而不是GitLab,很明显,以GitLab的量级来说,相当于津巴布韦总统捏着一颗核弹,一搭好,这个板子就可以放那吃灰了。而Gogs这种小当量的玩意,对树莓派来说刚好合适。

在树莓派上搭建Gogs服务


Gogs

安装步骤

gogs是用go语言编写的,树莓派的Raspbian系统是有go运行环境的,而且gogs也提供了树莓派版本,直接下载就好。
下载位置

  • 解压缩到指定位置 unzip raspi2_armv6.zip
  • 转到目录cd gogs
  • 直接运行./gogs会列出相关参数。
  • 输入./gogs web尝试开启服务器

    gogs默认监听3000端口

  • 在同一网段上的浏览器访问树莓派的IP,记得加上3000的端口号

    1
    192.168.1.244:3000
  • 第一次访问会出现gogs配置界面,按需设置

    • 选择数据库类型,由于是在津巴布韦,我们依旧选择一个小当量的SQLite3,数据保存在一个db文件内。
    • 应用名称随便填,怎么搞怪怎么来。
    • 仓库根目录比较重要,默认应该是/home/pi/gogs-repositoryes
    • 运行系统用户就用pi就行,没必要建立一个新用户了。
    • 域名填树莓派的IP地址

      误1,这么玩会在换局域网环境后出现ssh克隆失败的情况,稍后解决

    • 应用URL为http://树莓派IP地址:3000/

      误2,同上,在换局域网环境后出现访问失败的情况

    • 其他基本默认

    • 管理员可选可不选,第一个用户自动为管理员
  • 点击立即安装即可
  • 随后出现控制面板,可以进行注册新用户等操作

    关于添加ssh密钥,如果最开始gogs的运行系统用户选择了pi,请不要选择远程登录树莓派的密钥(即Windows系统的C:\Users\用户名.ssh里的默认密钥和Linux系统中的/home/用户名/.ssh里的默认密钥),不然远程ssh的时候会被gogs拒绝,非常尴尬的问题。要避免也很简单,gogs和ssh远程登录这俩别共用一个账号就行,或者远程的时候sudo一下。

    gogs服务自动启动

  • gogs文件夹里有一个server脚本,位置在~/gogs/scripts/systemd/gogs.service,复制到系统服务目录就行

    1
    sudo cp ~/gogs/scripts/systemd/gogs.service /etc/systemd/system
  • 由于使用的账户是pi,并非新建的git,所以需要修改服务脚本

    1
    2
    sudo vim /etc/systemd/system/gogs.service
    %s/git/pi/g
  • 设置开机自动运行

    1
    sudo systemctl enable gogs
  • 启动gogs

    1
    sudo systemctl start gogs

gogs配置文件

上述操作完成后,转到~/gogs/custom/conf/app.ini,注意server的配置

1
2
3
4
5
6
7
[server]
PROTOCOL = http
DOMAIN = GF47_pi
ROOT_URL = http://localhost/git/
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000
...

我这是设置nginx代理的配置,如果不设代理,那就只能使用静态IP了,而且输入地址的时候还要加端口号,这对于我这种瞎折腾的不是很方便。
如果想设置代理可以改成以上的配置,之后我再说一下nginx的配置。
算了,一块贴出来吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;
server_name localhost;
location /git/ {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:3000/;
}
location /blog {
rewrite ^/blog(.*) http://$host:4000$1 redirect;
}
}

在浏览器里只需要输入树莓派IP/git就会跳到gogs界面了,不用弄静态IP,怪不方便的。
需要注意的是proxy_pass的地址斜杠问题,加斜杠和不加斜杠意思是不同的。
下边的blog是树莓派上的搭的Hexo博客,有空再说。