1. 为什么选择树莓派搭建GitLab服务
在开源社区和中小型团队中,代码托管服务是刚需。虽然GitHub、Gitee等公共平台提供了完善的服务,但出于数据隐私、定制化需求和网络稳定性考虑,自建Git服务成为不少技术团队的选择。而树莓派凭借其低功耗、低成本和高可玩性,成为搭建私有GitLab的理想硬件平台。
我选择树莓派4B 4GB内存版本作为实验设备,实测运行GitLab CE(社区版)完全可行。相比云服务器方案,树莓派一次性投入约500元(含配件),长期运行电费几乎可忽略不计。更重要的是,所有代码数据完全掌握在自己手中,特别适合以下场景:
- 企业内部代码管理
- 个人项目版本控制
- 教育机构教学实验
- 物联网设备固件托管
注意:GitLab对硬件资源要求较高,建议使用树莓派4B 4GB或以上型号,2GB内存版本在运行GitLab时可能会出现频繁卡顿。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 准备工作与环境配置
2.1 硬件准备清单
在开始安装前,请确保准备好以下硬件:
- 树莓派4B(推荐4GB内存版本)
- 至少32GB的microSD卡(建议使用A1/A2级别的高速卡)
- 5V 3A电源适配器
- 散热外壳或散热片(GitLab运行时CPU负载较高)
- 有线网络连接(WiFi在大量数据传输时不够稳定)
2.2 系统安装与基础配置
我推荐使用Raspberry Pi OS Lite(64位)作为基础系统,既节省资源又稳定可靠。以下是具体步骤:
- 使用Raspberry Pi Imager工具刷写系统镜像
- 首次启动后执行基础配置:
bash复制sudo raspi-config
依次设置:
- 时区(Asia/Shanghai)
- 键盘布局(默认即可)
- 启用SSH服务
- 扩展文件系统到整个SD卡
- 更新系统软件包:
bash复制sudo apt update && sudo apt upgrade -y
- 安装必要依赖:
bash复制sudo apt install -y curl openssh-server ca-certificates postfix
在Postfix配置中选择"Internet Site",系统域名可以暂时设置为本地IP。
3. GitLab CE安装与配置
3.1 官方安装脚本执行
GitLab提供了便捷的安装脚本,以下是具体操作:
- 下载并执行安装脚本:
bash复制curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
- 安装GitLab CE:
bash复制sudo apt install gitlab-ce
这个过程可能需要10-20分钟,取决于SD卡速度和网络状况。
- 配置GitLab:
bash复制sudo gitlab-ctl reconfigure
3.2 关键配置调整
由于树莓派资源有限,必须对GitLab默认配置进行优化:
- 修改内存限制:
编辑/etc/gitlab/gitlab.rb:
ruby复制unicorn['worker_processes'] = 2
sidekiq['concurrency'] = 5
postgresql['shared_buffers'] = "100MB"
- 调整交换空间(Swap):
bash复制sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo mkswap /swapfile
sudo swapon /swapfile
将以下内容添加到/etc/fstab:
code复制/swapfile none swap sw 0 0
- 配置外部URL:
ruby复制external_url 'http://你的树莓派IP'
- 应用配置:
bash复制sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
4. 运维管理与日常维护
4.1 服务监控与优化
GitLab运行后,可以通过以下命令监控状态:
bash复制sudo gitlab-ctl status # 查看各组件状态
top # 查看系统资源占用
我建议设置定时任务自动清理无用数据:
- 创建清理脚本
/usr/local/bin/gitlab_cleanup.sh:
bash复制#!/bin/bash
sudo gitlab-rake gitlab:cleanup:orphan_job_artifact_files
sudo gitlab-rake cache:clear
- 添加定时任务:
bash复制sudo crontab -e
添加:
code复制0 3 * * * /usr/local/bin/gitlab_cleanup.sh
4.2 备份与恢复策略
数据安全至关重要,以下是备份方案:
- 手动备份:
bash复制sudo gitlab-backup create
备份文件默认存储在/var/opt/gitlab/backups
- 自动备份:
编辑/etc/gitlab/gitlab.rb:
ruby复制gitlab_rails['backup_path'] = "/mnt/backups"
gitlab_rails['backup_keep_time'] = 604800 # 保留7天
- 重要配置备份:
bash复制sudo sh -c 'umask 0077; tar -cf $(date "+etc-gitlab-%s.tar") -C / etc/gitlab'
4.3 常见问题排查
在实际运行中可能会遇到以下问题:
- 502错误:
bash复制sudo gitlab-ctl tail unicorn # 查看日志
sudo gitlab-ctl restart unicorn
- 内存不足:
bash复制sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop gitlab-monitor
- 存储空间不足:
bash复制sudo gitlab-rake gitlab:cleanup:orphan_job_artifact_files
sudo gitlab-rake gitlab:cleanup:orphan_upload_files
5. 安全加固与性能调优
5.1 基础安全配置
-
修改默认管理员密码:
首次登录后立即修改root用户密码。 -
配置防火墙:
bash复制sudo ufw allow http
sudo ufw allow ssh
sudo ufw enable
- 定期更新:
bash复制sudo apt update && sudo apt upgrade -y
sudo gitlab-ctl upgrade
5.2 性能优化技巧
经过长期使用,我总结了以下优化经验:
- 禁用不必要的服务:
编辑/etc/gitlab/gitlab.rb:
ruby复制prometheus_monitoring['enable'] = false
grafana['enable'] = false
- 使用轻量级CI Runner:
bash复制sudo gitlab-runner register
选择shell执行器而非Docker。
- 定期维护数据库:
bash复制sudo gitlab-rake pg:vacuum:full
- 使用SSD替代SD卡:
通过USB3.0连接SSD可显著提升性能。
6. 高级功能与扩展应用
6.1 集成CI/CD流水线
虽然树莓派性能有限,但仍可运行基础CI任务:
- 创建
.gitlab-ci.yml示例:
yaml复制stages:
- build
- test
build_job:
stage: build
script:
- echo "Building project..."
- make
test_job:
stage: test
script:
- echo "Running tests..."
- make test
- 限制并发任务:
编辑/etc/gitlab-runner/config.toml:
toml复制concurrent = 1
6.2 外部存储配置
为缓解存储压力,可以挂载外部存储:
- 挂载NAS或USB硬盘:
bash复制sudo mkdir /mnt/gitlab-data
sudo mount /dev/sda1 /mnt/gitlab-data
- 配置GitLab使用外部存储:
ruby复制git_data_dirs({
"default" => { "path" => "/mnt/gitlab-data/git-data" }
})
6.3 二级域名与HTTPS配置
如需通过域名访问,建议:
- 安装Nginx作为反向代理:
bash复制sudo apt install nginx
- 配置SSL证书(以Let's Encrypt为例):
bash复制sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d git.yourdomain.com
- 配置GitLab:
ruby复制external_url 'https://git.yourdomain.com'
nginx['redirect_http_to_https'] = true
经过三个月的实际运行,我的树莓派GitLab服务已稳定托管了15个私有项目,日均提交量约20次。虽然性能不如专业服务器,但对于小型团队和个人开发者完全够用。最关键的是所有数据自主可控,且总成本不到专业方案的十分之一。
