前言
首先这不是广告。
起因是我的电脑C
盘内存已经标红了,看着难受,我想重装电脑,代码和系统盘在一块盘上,所以重装电脑前需要转移我的一些特殊代码。
最近清空了一些缓存,又可以苟一段时间了
还有个原因是,win11
有个脑残的设计,一块硬盘分成两个分区,只要一个分区装系统,那么中间会多出来一个奇怪的不可删除的分区,导致无法重新分配分区空间。
开整
💎 创建 docker
项目
我先在电脑本地下载镜像:(国内的docker 镜像源都下架了,无法直接下载,需要梯子,我的 nas 安装的梯子有问题 )
dcoker pull gitlab/gitlab-ce:laster
然后导出压缩包
docker save -o gitlab-ce.tar gitlab/gitlab-ce:laster
上传到NAS之后导入镜像,创建项目,(创建容器之后一直重启中,所以不要创建容器)
对应的docker-compose.yaml
如下:注意默认的端口被我修改了,因为坑爹的绿厂把这几个默认端口全占用了
配置文件路径:共享文件夹/docker/gitlab/docker-compose.yaml
version: '3.8'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: '192.168.0.xxx' # 替换为你的域名或主机名
ports:
- "8787:8787" # HTTP 端口 默认 80
- "8443:8443" # HTTPS 端口 默认 443
- "8822:8822" # SSH 端口 默认 22
volumes:
- ./config:/etc/gitlab # 配置文件
- ./logs:/var/log/gitlab # 日志文件
- ./data:/var/opt/gitlab # 应用数据
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.0.xxx:8787' # 替换为你的访问地址
gitlab_rails['time_zone'] = 'Asia/Shanghai' # 设置时区
gitlab_rails['gitlab_shell_ssh_port'] = 8822 # 配置 SSH 端口
创建项目之后先运行,然后等初始化完成,到配置文件所在目录里,找到config
目录下的gitlab.rb
配置文件
💎 修改 gitlab
配置
分别修改下面几个配置
nginx['listen_port'] = 8787
gitlab_rails['forti_authenticator_port'] = 8443
gitlab_rails['gitlab_shell_ssh_port'] = 8822 # 这个不改也没事,因为改了也没用
然后重新启动服务等待服务稳定之后访问服务:192.168.0.xxx:8787
出现该页面说明还没加载完,继续等待。
出现这个页面说明加载成功了,登录即可,初始密码在config
目录下initial_root_password
里。
登录之后是这样的,可以在preferences
-> Localization
里改成简体中文。
💎 修改通知邮箱
接下来你需要做的是修改默认邮箱,gitlab 默认已经添加了邮箱,但是没有邮箱服务,需要你在gitlab.rb
里添加下面的配置:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxxx@qq.com"
gitlab_rails['smtp_password'] = "xxxxx" # 使用授权码
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_ssl'] = true # 如果使用 465 端口
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_pool'] = true
smtp_password
是授权码,需要你在对应的邮箱的设置里配置下。
接着你可以直接在页面中点击头像选择个人资料,修改邮箱,会提示你验证邮箱,没问题的话,你可以收到验证邮箱的链接,点击就可以了。
还有一种很有意思的验证方法,你可以在后台连接终端,
输入下面的命令
gitlab-rails console
然后创建一个测试邮箱并回车:
Notify.test_email('xxxxxx@qq.com', 'GitLab email', 'Hello world').deliver_now
irb(main):001:0> Notify.test_email('xxxxxx@qq.com', 'GitLab email', 'Hello world').deliver_now
irb(main):002:0*
Delivered mail 67540fba6e748_1b372fe4-4ae@192.168.0.xxx.mail (993.0ms)
=> #<Mail::Message:512460, Multipart: false, Headers: <Date: Sat, 07 Dec 2024 09:04:58 +0000>, <From: GitLab <xxxx@qq.com>>, <Reply-To: GitLab <noreply@192.168.0.xxx>>, <To: 984808285@qq.com>, <Message-ID: <67540fba6e748_1b372fe4-4ae@192.168.0.xxx.mail>>, <Subject: GitLab email>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=US-ASCII>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
irb(main):003:0>
这时候我可以收到测试的邮件了。
💎 使用 http
验证,而不是 ssh
建议不要使用ssh
上传或者克隆项目,因为不管你怎么设置,最后都是拒绝访问的状态,下面是我的一些报错日志,就不详细说了。找了一天也没找到解决方案。
下面是上传ssh
公钥之后,上传代码失败了。
git push --set-upstream origin --all
ssh: connect to host 192.168.0.xxx port 8822: Connection refused
fatal: Could not read from remote repository.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
Please make sure you have the correct access rights
and the repository exists.
然后我在终端中测试了下 连接,均失败了,我就放弃这个方案了
root@192:/# curl -I http://192.168.0.xxx:8787
curl: (56) Recv failure: Connection reset by peer
root@192:/# curl -I http://localhost
curl: (7) Failed to connect to localhost port 80 after 0 ms: Could not connect to server
我怀疑是我的 ssh key 没有重新生成导致的,也有可能是
nas
服务的形式比较特殊,我放弃了尝试。
最终版的方案是使用了http
的方式,在我们创建项目之后形成http连接
git clone http://192.168.0.xxx:8787/good_good_study/happy-pay.git
这时候会弹出一个框需要登录你的gitlab
,登录之后你就可以愉快的上传代码了。
结语
绿联的nas
相关的资料太少了,所以我分享一下我的经历,希望可以帮助到你~