gitlab server 搭建
Why
可以在私有环境下使用。如果想用非私有,现成的,可以考虑https://github.com 或 https://gitlab.com
手工安装 docker-ce
安装依赖
1 | sudo apt install ca-certificates curl openssh-server postfix |
安装 gitlab-ce
1 | curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash |
注: 国内有不少镜像源 例如https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/
,国内镜像会快很多,可以替换上面生成的/etc/apt/sources.list.d/gitlab_gitlab-ce.list
中的路径
sudo gitlab-ctl reconfigure
按理说这里就可以用了
你需要设置root的密码,和新建一个用户以及(设置该用户的密码)
配置
然而 因为我本地apache服务和原来开启的nginx服务,有80冲突和原来nginx服务冲突(?),导致我找问题找了很久很久[我似乎也没看到报错
修改
sudo vim /etc/gitlab/gitlab.rb
中的external_url
为你的domain名称+port,如http://192.168.1.51:8081
最后我停掉两个服务再重启 gitlab
就好了
1 | /* 未使用了 如果本身还有nginx据说可以配一下 |
gitlab on docker
1 | sudo docker run --detach --name gitlab \ |
好了 ssh 30022和http 30080都ok,docker真香了
https://developer.ibm.com/code/2017/07/13/step-step-guide-running-gitlab-ce-docker/
https://docs.gitlab.com/omnibus/docker/README.html
问题:仓库通过ssh的git clone报错
http
的clone
可用
而ssh
的clone
报错: fatal: protocol error: bad line length character: Welc
gihub上很多说sed -i 's/session\s\+required\s\+pam_loginuid.so/# \0/' /etc/pam.d/sshd
就是注释掉 也没用(也restart 过)
问题排查
网上有很多 pam的 校验关闭都没有用
然后 通过ssh -vvv git@<ip>
得到Exit status 254
,对应也是没有搜到可行方案,但感觉距离问题近了些
查看/var/log/auth.log
发现
1 | Aug 20 14:24:03 RBEST systemd: pam_unix(systemd-user:session): session opened for user git by (uid=0) |
这个error也搜不到对应的
鸽了! 用 docker来搞
docker的方法测试
ssh -vvv git@gitlab.example.com -p 30022
的exit code 是0 所以感觉还是 本地的ssh相关的东西配置有问题
修复(重装试试)
上面我得到的信息是
- ssh git@应该是成功登录了 但是没有和gitlab联系上
- docker里看 只用简单配置 就应该能用
- 我尝试新开了个空白虚拟机,装一遍gitlab是能用的
于是按照https://askubuntu.com/a/824723/653605把 gitlab完全删除 再重装就好了?喵喵喵,虽然现在能用了,可是之前究竟是什么问题。
TODO email
https://docs.gitlab.com/omnibus/settings/nginx.html
权限管理
权限管理 https://docs.gitlab.com/ee/administration/#user-settings-and-permissions
用root权限用户登陆
<你的地址>/admin/application_settings
可见和可访问性
的Restricted visibility levelsx限制为 内部和私有
关闭了为所有项目默认 runner和默认CI/CD
HTTPS
/etc/gitlab/gitlab.rb
设置
external_url 'https://gitlab.xxx.com'
以及
1 | letsencrypt['enable'] = true |
再gitlab-ctl reconfigure
就可以自动生成证书并且 启用https了
内存占用过大
1 | unicorn['worker_timeout'] = 60 |
也有其它git server :https://gogs.io/
参考
https://hub.docker.com/r/gitlab/gitlab-ce/