提示:本文面向新手,可以放心阅读。
如今树莓派价格居高不下,软路由流行是一个原因。更多是物联网,人工智能,物联网进入了各位技术爱好者的视野。从51单片机,Arduino,NodeMCU,再到树莓派,英伟达JETSON,阿里云IoT HaaS EDU等等。
本篇方向就不在IoT,AI,大数据方向展开,在树莓派搭建代码服务器GitLab-CE,实现居家的低功耗代码私服。
提示:以下操作均基于树莓派4B,系统基于官网的arm64位镜像:2022-01-28-raspios-bullseye-arm64-lite,其他版本的请自行类比型号和系统版本
安装系统是基操,通过阅读本文,希望可以避免遇到奇怪的问题。
到官网的系统下载页,找到下方的“Raspberry Pi OS (64-bit)”,在右侧下载需要的系统版本,这里推荐Raspberry Pi OS Lite。
树莓派官方网站有提供烧录工具,这里推荐使用balenaEtcher,软件简介易用,属于新手福音。可以到官网下载免安装的版本直接运行。
开始烧录
步骤通常是校验文件完整性,烧录,验证完整性,完成。这个过程的快慢取决于以下几个方面:
以上都是说给新手听的,老手请无视。
无屏访问树莓派SSH
刚装完系统,有时我们没有合适的视频线,又或者microHDMI转HDMI线缆恰巧不在身边,访问系统有困难,如需实现在不插屏幕和键盘的情况下访问树莓派SSH终端,通常可以这样操作:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={
ssid="无线信号名称,2.4G或5G均可"
psk="无线连接的密码"
key_mgmt=WPA-PSK
}
在路由器中找到raspberrypi的主机名(如果没有多个树莓派接入),通过ip地址,使用ssh客户端工具进行连接即可。
ssh pi@ip地址
#默认密码:raspberry
建议使用root账户完成docker的安装:
sudo -i
# 输入树莓派密码,默认raspberry
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 静静等待安装完成,完成后如果想让pi用户也可以执行docker命令,可以继续执行
usermod -aG docker pi
面向新手向,就不要自己编译镜像了,直接使用大神的公共镜像就行:
docker pull yrzr/gitlab-ce-arm64v8:latest
该镜像大小超过了1Gb,确保本地网络环境可以访问https://hub.docker.com/,网速越快越好。
拉取完成后,可以通过docker images查看镜像是否成功下载下来了
pi@raspberrypi:~ $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yrzr/gitlab-ce-arm64v8 latest c935bfe114bf 5 days ago 2.41GB
本文的主机名默认是git.cha1024.com,各位可以通过自己的实际情况进行配置主机名和域名。
mkdir -p /opt/data/gitlab-ce/conf
mkdir -p /opt/data/gitlab-ce/logs
mkdir -p /opt/data/gitlab-ce/data
由于树莓派启动了sshd服务,未配置的情况下,默认会占用22端口,为了gitlab访问地址的美观性,我们可以修改sshd的端口。
sudo vim /etc/ssh/sshd_config
# 找到#Port 22,另起一行,添加内容
Port 2222
# 这样会将原来的22端口替换成2222端口,具体用什么端口合适,各位自行选择
# 按下ESC,直接输入:wq 进行保存操作即可
# 重启sshd服务
systemctl restart sshd
exit
这样配置之后,后续连接ssh终端务必使用新配置的端口。
docker run \
--detach \
--name gitlab-ce \
--restart always \
--privileged \
--memory 4096M \
--publish 22:22 \
--publish 80:80 \
--publish 443:443 \
--hostname git.cha1024.com \
--volume /opt/data/gitlab-ce/conf:/etc/gitlab:z \
--volume /opt/data/gitlab-ce/logs:/var/log/gitlab:z \
--volume /opt/data/gitlab-ce/data:/var/opt/gitlab:z \
yrzr/gitlab-ce-arm64v8:latest
以上配置映射了3个地址:
执行完毕后,可以使用docker ps查看运行的容器。
提示:由于树莓派的性能比常规服务器性能较弱,启动过程约耗时3分钟左右才能完成 ,需耐心等待
pi@raspberrypi:~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b3698dff9d7 yrzr/gitlab-ce-arm64v8:latest "/assets/wrapper" 4 mins ago Up About an min (healthy) 0.0.0.0:22->22/tcp, :::22->22/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp gitlab-ce
当看到类似上文的提示时,Gitlab服务已经启动完成。
可以打开浏览器访问:http://你的ip地址/,如果正常打开表示启动完成,如报错502,表示服务正在启动中,请稍后再试。
这个部分属于锦上添花的操作,对于一般的gitlab使用来说,上文就足够。
自签名证书此处不展开,只说免费申请证书。
Let’s Encrypt
Let’s Encrypt的证书有效期90天,当然我不确定你在树莓派上能否使用这个gitlab达到90天,如果可以那就继续往下看。
你需要有一台有外网ip的服务器,如果已经有了,恭喜你可以白嫖。如果没有,可以按量付费创建一台云主机,预装lnmp环境有Let’s Encrypt插件的更好,如果没有可以安装宝塔,或者oneinstack等环境,均带有Let’s Encrypt插件,自行生成即可。生成后,创建网站,并使用Let’s Encrypt生成证书,证书包含一个pem和key文件。
DigiCert 免费版 SSL
DigiCert 免费版 SSL与很多云服务厂商有合作,例如阿里云。在阿里云后台,1个账号可以免费申请20个免费证书,每个证书有效期1年。操作比较人性化,当申请完成后,在列表右侧点击“下载”,选择nginx版本的证书即可。
这样你会得到1个压缩包,里面通常有2个文件,后缀分别是pem和key。
可以在映射出来的conf文件夹中,找到gitlab.rb文件进行编辑。也可以进入容器,在容器中直接编辑gitlab.rb。
需要注意的是,启动过程中,我们publish了80和443端口,后文会基于这个配置进行说明。
打开gitlab.rb文件,找到以下配置处,解开配置修改,或另起一行进行配置。
external_url 'https://git.cha1024.com'
nginx['ssl_certificate'] = "/etc/ssl/git.cha1024.com.pem"
nginx['ssl_certificate_key'] = "/etc/ssl/git.cha1024.com.key"
nginx['redirect_http_to_https'] = true
以上配置gitlab.rb文件中的external_url为https地址,而且必需使用https,否则不会生效!同时还需要配置证书和https跳转才能完整体验SSL
配置完毕后,为了使配置生效,需要执行命令
docker exec -it [容器id或容器名] gitlab-ctl reconfigure
如果进入了容器内部,只需在内部执行gitlab-ctl reconfigure
即可。
至此,配置ssl已经完成。基于本例的配置,在浏览器中访问 https://git.cha1024.com 即可访问,效果如下
基于以上配置gitlab并运行,待机资源消耗cpu平均不超过5%,内存消耗3.55G。不建议4G及以下的树莓派做这个尝试。
如果有任何疑问,欢迎留言与我交流。