GitLab 可以集中管理个人代码仓库和项目记录。它比普通文件服务占用更多资源,部署前要给数据库、后台任务与仓库数据留出空间。
资源与访问地址
先核对 GitLab 官方安装要求 。当前文档给出的单节点基线为 8 vCPU、16 GB 内存;内存受限的部署仍需至少 8 GB 并按专门文档调整。这是 GitLab 的预算,整台 NAS 还要容纳其他服务。
本例使用 gitlab.home.arpa 作为家庭内网主机名。在路由器的本地 DNS 或客户端 hosts 文件中,将它解析到 NAS 的 192.168.1.100。HTTP 使用 8929,Git over SSH 使用 2222,避开宿主机的 22 端口。
Compose 配置
创建 /srv/compose/gitlab/compose.yaml,配置参考 GitLab 官方 Docker 安装文档
:
services:
gitlab:
image: gitlab/gitlab-ce:${GITLAB_VERSION:?请在.env中设置明确的GitLab版本}
hostname: gitlab.home.arpa
restart: unless-stopped
shm_size: '256m'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.home.arpa:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
ports:
- '192.168.1.100:8929:8929'
- '192.168.1.100:2222:22'
volumes:
- /srv/appdata/gitlab/config:/etc/gitlab
- /srv/appdata/gitlab/logs:/var/log/gitlab
- /srv/appdata/gitlab/data:/var/opt/gitlab
在同目录的 .env 中设置 GITLAB_VERSION,值为官方 CE 镜像已有的完整标签,格式是 主版本.次版本.补丁版本-ce.0。请从官方标签列表选择支持的具体版本;示例不使用随时间变化的 latest。
external_url 与实际访问地址、监听端口一致。如果以后改为 HTTPS 或经穿透入口访问,也需要同步调整地址、DNS 和端口配置。
启动与首次登录
sudo mkdir -p /srv/appdata/gitlab/config /srv/appdata/gitlab/logs /srv/appdata/gitlab/data
cd /srv/compose/gitlab
sudo docker compose config --quiet
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs --tail=100 gitlab
等初始化完成后,在内网访问 http://gitlab.home.arpa:8929。首次 root 密码从容器的 /etc/gitlab/initial_root_password 读取,只在本机查看,并及时修改。随后创建日常账户,检查注册设置,添加 SSH 公钥,创建测试仓库并验证推送。
这个 HTTP 入口用于可信内网调试;长期使用应补上 HTTPS 或受保护的隧道。第二篇的 NAS 维护隧道不会自动转发 GitLab 的两个端口。
备份与升级
执行应用备份:
sudo docker compose exec -T gitlab gitlab-backup create
按 GitLab 官方 Docker 备份说明
,备份文件位于持久化数据目录的 backups 子目录。另行保存 Compose 配置、版本信息与 /srv/appdata/gitlab/config,尤其是 gitlab-secrets.json;这些敏感文件需要限制读取权限,并保留 NAS 外的副本。
升级前确认官方升级路径和必经版本,先备份再更新镜像。恢复演练也要核对目标版本与版本类型,不能把更换镜像当作已完成恢复。