# 自建 GitLab 前的容量与备份准备

GitLab 包含代码托管、数据库和后台任务，比单纯 Git 仓库需要更多资源。先核对官方容量要求，再决定是否放在当前 VPS。

更新日期：2026-09-16

规范地址：https://stock.iftalking.com/guides/gitlab/

## 1. 先算资源，自建 GitLab 不是轻量静态站

GitLab 同时包含代码托管、数据库、后台任务和其他组件。当前官方单节点基线为 8 vCPU、16 GB 内存；受限配置也至少需要按官方低内存方案评估约 8 GB，而不是在 1 GB 实例上加 Swap 就当作可用方案。存储还要分别预算系统、仓库、数据库、构建产物和备份。

先估计用户数、仓库大小、CI 任务和保留期，选择满足实际负载的配置。只需个人 Git 托管时，也可比较更轻的方案或托管服务，不必为了一个小仓库承担整套维护成本。

## 2. 准备域名、端口和持久目录

确定访问域名，例如 `git.example.com`，配置 DNS 与 HTTPS。HTTP、HTTPS、Git over SSH 和系统管理 SSH 是不同入口，端口不能互相冲突。

官方 Docker 安装通常把配置、日志和数据分别映射到主机目录，常见容器内路径为 `/etc/gitlab`、`/var/log/gitlab`、`/var/opt/gitlab`。在部署前创建并核对主机路径、权限与磁盘容量，不使用临时容器文件系统保存唯一数据。

## 3. 使用官方镜像与明确版本

从 GitLab 官方 Docker 安装文档选择 CE/EE 与具体版本，按实际授权和功能需要确定。配置 external_url 为正式域名；采用现有反向代理时，按官方说明设置容器内监听和可信代理，不重复申请或覆盖证书。

启动后初始化可能需要一段时间，查看服务状态与日志：

```bash
docker logs --tail 100 gitlab
docker exec gitlab gitlab-ctl status
```

容器名按实际替换。不要因初始化尚未结束就反复删除数据卷。初始管理员凭据只在自己的受控终端读取，首次登录后按官方流程更新并启用账户保护。

## 4. 验证一个完整的代码托管流程

创建私人测试项目，使用普通用户克隆、提交并推送一份无敏感内容的代码，再验证网页能看到提交。检查 SSH clone 地址中的端口与实际映射一致，不能只测试网页登录。

开放注册、项目可见性、令牌权限与外部集成按用途设置。CI Runner 建议与代码托管服务隔离，运行陌生项目的流水线可能执行任意代码，不应直接共享宿主机高权限 Docker socket。

## 5. 备份包含应用数据和秘密配置

```bash
docker exec -t gitlab gitlab-backup create
```

该命令是官方镜像常见的应用备份入口，使用前核对当前版本文档和存储余量。GitLab 应用备份不自动覆盖所有配置与秘密文件，尤其要单独保存 `gitlab.rb`、`gitlab-secrets.json` 以及外部对象存储相关数据。

备份下载到另一处并限制权限。恢复通常要求匹配的版本与版本类型，不能直接拿旧备份导入任意最新镜像。做一次测试恢复，确认仓库、用户、问题记录和附件可用。

## 6. 升级沿官方要求逐步进行

查目标版本的升级路径和必须停留的中间版本，备份后再升级。数据库迁移可能耗时，镜像回退不一定能撤销它。维护后验证网页、SSH、后台任务、Runner 和备份任务，再删除旧回退点。

监控磁盘增长与失败作业，配置日志、构建产物和镜像保留策略。通用管理见[Compose](https://stock.iftalking.com/guides/compose-management/)与[站点监控](https://stock.iftalking.com/guides/uptime-monitoring/)。


## 完成后检查

清理制品和日志有助控制磁盘增长，但删除前应确认保留策略与业务需要。

## 参考资料

- [docs.gitlab.com · 项目文档](https://docs.gitlab.com/install/requirements/)
- [docs.gitlab.com · 项目文档](https://docs.gitlab.com/install/docker/installation/)
- [docs.gitlab.com · 项目文档](https://docs.gitlab.com/administration/backup_restore/)
