绿联NAS docker 安装gitlab-ce的经历🚀🚀🚀

1,632 阅读4分钟

前言

首先这不是广告。

起因是我的电脑C盘内存已经标红了,看着难受,我想重装电脑,代码和系统盘在一块盘上,所以重装电脑前需要转移我的一些特殊代码。

image.png

最近清空了一些缓存,又可以苟一段时间了

还有个原因是,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

出现该页面说明还没加载完,继续等待。 image.png

出现这个页面说明加载成功了,登录即可,初始密码在config目录下initial_root_password里。

image.png

登录之后是这样的,可以在preferences -> Localization里改成简体中文。

image.png

💎 修改通知邮箱

接下来你需要做的是修改默认邮箱,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是授权码,需要你在对应的邮箱的设置里配置下。

接着你可以直接在页面中点击头像选择个人资料,修改邮箱,会提示你验证邮箱,没问题的话,你可以收到验证邮箱的链接,点击就可以了。

image.png

还有一种很有意思的验证方法,你可以在后台连接终端,

image.png

输入下面的命令

 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> 

这时候我可以收到测试的邮件了。

image.png

💎 使用 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相关的资料太少了,所以我分享一下我的经历,希望可以帮助到你~