GitLab Docker 部署笔记(TNAS)
-
日期:2026-09-22
-
目标主机:
192.168.1.196:9222(TerraMaster TNAS-0976) -
关联:[[2026-09-22-Penpot-Docker部署笔记|Penpot Docker 部署笔记]](同一台 TNAS,环境信息见该篇)
1. 环境信息
| 项目 | 值 |
|---|---|
| 主机 | TNAS-0976(内核 5.15.59,4C / 7.6G / /Volume1 3.7T) |
| SSH | 端口 9222,用户 ZcAuto_1234(uid=0,admin 组) |
| Docker | 20.10.17(DockerEngine 套件,data-root /Volume1/@DockerData) |
| docker-compose | v2.12.2(独立二进制,非 CLI 插件) |
| 镜像 | gitlab/gitlab-ce:latest(19.4.0-ce.0) |
关键路径
docker CLI : /Volume1/@apps/DockerEngine/dockerd/bin/docker
compose : /Volume1/@apps/DockerEngine/dockerd/bin/docker-compose
部署目录 : /Volume1/Docker/gitlab/
docker-compose.yml
config/ -> /etc/gitlab (gitlab.rb、初始 root 密码)
logs/ -> /var/log/gitlab
data/ -> /var/opt/gitlab
PATH 中无
docker,需完整路径或先PATH=/Volume1/@apps/DockerEngine/dockerd/bin:$PATH。 无docker compose子命令,用独立docker-compose。
2. 登录
# Windows(plink,hostkey 已知)
plink
传文件用 pscp -scp(pscp 默认 SFTP 在该机会断连):
pscp
3. Compose 部署
/Volume1/Docker/gitlab/docker-compose.yml:
services
gitlab
image
container_name
restart
hostname
environment
GITLAB_OMNIBUS_CONFIG
external_url 'http://192.168.1.196:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
puma['worker_processes'] = 2
prometheus_monitoring['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
ports
-
-
volumes
-
-
-
shm_size
mem_limit
要点:
-
external_url带:8929时,容器内 nginx 直接监听 8929(不是 80)→ 端口映射必须8929:8929,写成8929:80会全部 connection refused -
关 Prometheus/Grafana 系 exporter 省内存(NAS 仅 7.6G,同时跑着 Penpot)
-
mem_limit: 6g+shm_size: 256m -
无 HTTPS;对外再暴露时改
external_url为 https 并映射 443
export
cd
docker-compose
首次初始化(migrations)约 5–10 分钟,docker ps 显示 healthy 即可。
4. 端口与访问
| 用途 | 宿主机 | 容器内 | 说明 |
|---|---|---|---|
| Web HTTP | 8929 | 8929 | nginx(external_url 带端口) |
| Git SSH | 2224 | 22 | git clone ssh://git@192.168.1.196:2224/... |
| HTTPS | — | — | 未启用 |
同机已占用端口(避开):80/443(nasips)、8181、3306、9001(Penpot)、1080、9222 等。
5. 初始 root 密码
首次安装生成,文件 24 小时后 随 reconfigure 删除:
docker
-
用户名
root;登录后立即改密 -
密码入 KeePass,本笔记不记录明文
6. 默认中文界面
GitLab 19.4 没有 gitlab.rb 级 default_locale 配置(写了也不进 gitlab.yml,属无效项,已从 gitlab.rb 删除)。
正确做法:改数据库应用设置 ApplicationSetting.default_preferred_language:
docker
s = ApplicationSetting.current
s.default_preferred_language = "zh_CN"
s.save!
'
docker
验证(登录页应为 lang="zh-CN"、<title>登录 · GitLab</title>):
docker
-
此设置存数据库,容器重建不丢
-
新用户默认中文;已有用户若手动选过语言,按个人偏好(头像 → Preferences → Language)
7. 常用运维命令
export
cd
docker-compose
docker-compose
docker-compose
docker-compose
docker-compose
docker
docker
docker
宿主机无 curl/wget:用 docker exec gitlab curl ... 或 Windows curl.exe 验证 HTTP。
8. 踩坑记录
-
端口映射错:
external_url带端口 → nginx 监听 8929;8929:80会全挂,须8929:8929。 -
grafana['enable']报错:GitLab 19.4 已移除此配置项,reconfigure 抛UnknownConfigOptionError导致容器反复重启;删除该项即可。 -
default_locale无效:gitlab.rb 写了不报错但不生效;真正字段是 DB 里的default_preferred_language。 -
pscp 默认 SFTP 断连:加
-scp走 SCP 协议。 -
PowerShell 吞引号/
$:复杂远端命令先写本地.sh,pscp -scp上传后plink执行;sed -i 's/\r$//'先去 CRLF。 -
宿主机无 curl/wget:HTTP 探测走容器内
docker exec gitlab curl。 -
内存紧张:7.6G 同时跑 Penpot + GitLab,关全部 monitoring 组件才稳;
free见 available < 4.6G 时注意 OOM。
9. 后续建议
-
登录后改 root 密码,密码入 KeePass
-
initial_root_password24h 后自动删,尽快改密 -
对外暴露配 HTTPS(改
external_url+ 映射 443,或前置反代) -
定期备份
/Volume1/Docker/gitlab/data(或gitlab-backup) -
按需关闭注册(Admin → Settings → General → Sign-up restrictions)