添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
nginx['enable'] = false # 设置非捆绑 Web 服务器用户的用户名 web_server['external_users'] = ['root', 'nginx', 'www-data'] # 将非捆绑的 Web 服务器添加到受信任代理列表中,我自己的nginx服务器ip地址 gitlab_rails['trusted_proxies'] = ['nginx服务器ip地址'] # 监听自定义端口,监听的端口要和暴露的端口要一致 gitlab_workhorse['listen_network'] = "tcp" gitlab_workhorse['listen_addr'] = "0.0.0.0:9080" # 减少gitlab使用内存 gitlab_rails['rack_attack_git_basic_auth'] = { 'enabled' => true, 'ip_whitelist' => ["127.0.0.1"], 'maxretry' => 10, 'findtime' => 60, 'bantime' => 3600 gitlab_rails['env'] = { 'GITLAB_RAILS_RACK_TIMEOUT' => 300 puma['worker_processes'] = 2 puma['min_threads'] = 1 puma['max_threads'] = 8 puma['per_worker_max_memory_mb'] = 1200 sidekiq['concurrency'] = 9 postgresql['shared_buffers'] = "512MB" postgresql['max_worker_processes'] = 8 # 邮箱配置,我用的阿里云企业邮箱 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "[email protected]" gitlab_rails['smtp_password'] = "邮箱密码" gitlab_rails['smtp_domain'] = "gitlab.example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = "[email protected]" gitlab_rails['gitlab_email_reply_to'] = "[email protected]" user["git_user_email"] = "[email protected]" volumes: - './config:/etc/gitlab' - './logs:/var/log/gitlab' - './data:/var/opt/gitlab' privileged: true image: gitlab/gitlab-ce
  • -‘9080:9080’:因为不使用 gitlab 自带的 nginx,所以我没有暴露 80、443 端口,改为自定义端口。
  • -‘9081:22’:暴露 22 端口,gitlab 默认监听 22 端口,这样我们可以使用 ssh 来操作仓库代码。想自定义 ssh 端口,请看文章最后。
  • 关于减少 gitlab 使用内存的配置参数,我也是摸着石头过河。依据自身服务器配置(2 核 8G 内存)参考了 官方文章 和其他 网站文章 进行了修改和配置。
  • 使用外置 nginx 可参考 官方文章 。注意最后一个步骤,官方说让你去下载 nginx 配置文件,你会看到有多个配置文件,适用不同情况,咱们已经自定义端口了,所以直接用我下面的 nginx 配置文件即可。
  • 把 yml 文件里面的 hostname external_url 改成你的域名,然后把 Web 服务器 ip 地址和邮箱(删除相关的邮箱配置也行)也修改成自己的。
  • docker-compose up -d
    

    查看默认密码

    等待容器启动大约五分钟后,再执行下面的命令查看默认密码

    docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
    

    默认用户名为root,记得登录后及时修改密码。密码文件将在 24 小时后的第一次容器重启删除。

    配置 nginx

    安装 nginx

    关于如何使用 docker 安装 nginx,请看我自己写的这篇文章

    gitlab 的 nginx 配置文件

    新建一个 nginx 的配置文件,放在 nginx 的 conf.d 目录下,文件名可以自己定义,我这里定义为 gitlab.conf

    server {
      listen *:80;
      server_name  gitlab.example.com;
      server_tokens off; ### Don't show the nginx version number, a security best practice
      return 301 https://$http_host$request_uri;
      access_log  /var/log/nginx/gitlab_registry_access.log;
      error_log   /var/log/nginx/gitlab_registry_error.log;
    server {
      # If a different port is specified in https://gitlab.com/gitlab-org/gitlab-foss/blob/8-8-stable/config/gitlab.yml.example#L182,
      # it should be declared here as well
      listen *:443 ssl;
      server_name  gitlab.example.com;
      server_tokens off; ### Don't show the nginx version number, a security best practice
      client_max_body_size 0;
      chunked_transfer_encoding on;
      ### Strong SSL Security
      ### https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html & https://cipherli.st/
      ssl_certificate /etc/nginx/cert/cert-j76op8xez670x42z/fullchain.cer;
      ssl_certificate_key /etc/nginx/cert/cert-j76op8xez670x42z/cert.key;
      ssl_session_timeout 1d;
      #ssl_session_cache shared:SSL:10m;
      ssl_session_tickets off;
      # These settings are in line with the modern settings from https://ssl-config.mozilla.org/
      # and are supported by all still-supported browsers since 2019. If you have specific needs
      # for older settings, please consult the intermediate settings there.
      ssl_protocols TLSv1.3;
      ssl_prefer_server_ciphers off;
      ### [Optional] Enable HTTP Strict Transport Security
      # add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
      access_log  /var/log/nginx/gitlab_registry_access.log;
      error_log   /var/log/nginx/gitlab_registry_error.log;
      location / {
        proxy_pass          http://ip:9080;
        client_max_body_size 1024m;
        proxy_set_header  Host              $http_host;   # required for docker client's sake
        proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
        proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_read_timeout                  900;
        # 为 Websocket 连接添加以下行
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    stream {
        upstream gitlab_ssh {
            hash   $remote_addr consistent;
            server ip:9081;
        server {
            listen 9081;
            proxy_connect_timeout   30s;
            proxy_timeout   300s;
            proxy_pass gitlab_ssh;
      
  • 修改server_name参数为你的 gitlab 网站域名。
  • 修改ssl_certificatessl_certificate_key参数为你的 SSL 证书位置。
  • 修改ip参数为你的 gitlab 的服务器 ip 。
  • 记得把 nginx 的 9081 端口暴露出去。
  • 访问 https://gitlab.example.com 即可访问你的 Gitlab 。 博主的 Gitlab 👉 https://gitlab.iarthit.com

    升级 Gitlab

    docker compose down
    docker compose pull
    docker compose up -d
        

    安装 gitlab 可以看看这篇文章,讲的挺全的。文章里面讲减少 gitlab 服务使用资源的文章的时候,注意里面有一些参数已过时,你用的的话 gitlab 容器直接起不来,报错。报的错就是下面说的。

    安装 gitlab 时,如果出现类似以下错误:

    unicorn['worker_timeout'] has been deprecated since 13.10 and was removed in 14.0. Starting with GitLab 14.0, Unicorn is no longer supported and users must switch to Puma, following https://docs.gitlab.com/ee/administration/operations/puma.html.
    

    那么就请打开这个网址,里面说的很清楚。

    从 GitLab 13.0 开始,Puma 是默认 Web 服务器,Unicorn 已被禁用。在 GitLab 14.0 中,Unicorn 已从 Linux 软件包中删除 ,不再受支持。

    所以使用 unicorn 参数配置时,请删除。改用 puma 参数配置。

  • 自定义 gitlab 的 ssh 端口,如2222
  • 在 docker-compose.yml 中修改端口映射(22修改为2222)和添加环境变量
  • ‘9081:2222’ gitlab_rails[‘gitlab_shell_ssh_port’] = 2222
  • 容器启动成功后进入容器修改 SSH 服务监听端口
    # 进入容器
    docker exec -it gitlab bash
    # 编辑/etc/ssh/sshd_config
    vim /assets/sshd_config
    # 把Port 22修改为2222,保存退出,最后重启SSH服务
    systemctl restart sshd
          
  • 测试是否成功
    $ ssh -T [email protected]
    Welcome to GitLab, @arthit!
    
  •