温馨提示×

ubuntu gitlab网络设置技巧

小樊
34
2025-12-12 20:56:21
栏目: 智能运维

Ubuntu 上 GitLab 网络设置技巧

一 基础网络与防火墙

  • 设置外部访问地址:编辑 /etc/gitlab/gitlab.rb,将 external_url 设为你的域名或服务器 IP(如:http://your_domain 或 http://服务器IP),保存后执行 sudo gitlab-ctl reconfigure 使配置生效。首次访问按提示设置管理员密码。
  • 放行防火墙端口(UFW):
    • 启用:sudo ufw enable
    • 放行 HTTP/HTTPS/SSH:sudo ufw allow http && sudo ufw allow https && sudo ufw allow OpenSSH
    • 重载:sudo ufw reload
  • 云服务器需同时在安全组放行 80/443(以及你映射的 SSH 端口)。

二 端口与协议优化

  • 修改默认端口(避免与系统服务冲突):编辑 /etc/gitlab/gitlab.rb
    • 设置监听端口:nginx[‘listen_port’] = 82
    • 同步 external_url 协议端口:external_url ‘http://your_domain:82’
    • 防火墙放行新端口:sudo ufw allow 82
    • 应用:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart
  • 启用 HTTPS(内置 Nginx):
    • 准备证书(自签或正式),放置于 /etc/gitlab/ssl/(权限建议 700)
    • 配置:
      • external_url ‘https://your_domain’
      • nginx[‘enable’] = true
      • nginx[‘redirect_http_to_https’] = true
      • nginx[‘ssl_certificate’] = “/etc/gitlab/ssl/your_domain.crt”
      • nginx[‘ssl_certificate_key’] = “/etc/gitlab/ssl/your_domain.key”
    • 应用:sudo gitlab-ctl reconfigure
  • 使用 Let’s Encrypt 自动化证书(推荐):
    • 安装 certbot:sudo apt install certbot python3-certbot-nginx
    • 获取证书后配置:
      • external_url ‘https://your_domain’
      • letsencrypt[‘enable’] = true
    • 应用:sudo gitlab-ctl reconfigure(证书自动续期需确保域名可达与端口开放)

三 反向代理与 Docker 部署

  • 主机 Nginx 反向代理(与 GitLab 同机):
    • 关闭内置 Nginx:nginx[‘enable’] = false
    • 允许外部 Web 服务用户:web_server[‘external_users’] = [‘www-data’]
    • 权限:将 www-data 加入 gitlab-www 组:sudo usermod -aG gitlab-www www-data
    • Nginx 示例片段:
      • 监听 443,设置证书
      • 反向代理到 Unix socket:proxy_pass http://unix:/var/opt/gitlab/gitlab-workhorse/socket;
      • 设置头部:Host $http_host; X-Real-IP $remote_addr; X-Forwarded-For $proxy_add_x_forwarded_for; X-Forwarded-Proto $scheme;
    • 重载 Nginx:sudo systemctl reload nginx
  • Docker 运行与端口映射:
    • 运行容器(示例将容器 443 映射到主机 9443,避免与主机 Nginx 冲突):
      • docker run --detach \ –publish 9080:80 --publish 9022:22 --publish 9443:443 \ –name gitlab --restart always \ –volume /home/docker/gitlab/config:/etc/gitlab \ –volume /home/docker/gitlab/logs:/var/log/gitlab \ –volume /home/docker/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
    • 容器内配置:
      • external_url ‘https://your_domain’
      • nginx[‘redirect_http_to_https’] = true
      • nginx[‘ssl_certificate’] = “/etc/gitlab/ssl/your_domain.crt”
      • nginx[‘ssl_certificate_key’] = “/etc/gitlab/ssl/your_domain.key”
      • 如经主机 Nginx 代理,需告知 GitLab SSH 端口:gitlab_rails[‘gitlab_shell_ssh_port’] = 9022
    • 应用:docker exec gitlab gitlab-ctl reconfigure;如需,重载主机 Nginx。

四 内网访问与虚拟机网络

  • 虚拟机桥接访问:在 VirtualBox 将网卡 2 设为 桥接网卡 并启用 混杂模式:全部允许,使虚拟机获得与宿主机同网段 IP,便于局域网访问。
  • 内网域名与证书:内网可使用自签证书或私有 CA,客户端需导入根证书;也可在内网部署 DNS/hosts 解析你的 GitLab 域名到内网 IP。
  • 端口与防火墙:确保内网交换机/路由与安全组策略允许访问你配置的 HTTP/HTTPS/SSH 端口。

五 排错与验证清单

  • 服务状态:sudo gitlab-ctl status(查看所有组件是否 run)
  • 配置校验:sudo gitlab-rake gitlab:check(发现并定位常见配置问题)
  • 端口连通:
    • 本机:ss -tlnp | grep -E ‘(:80|:443|:22)’
    • 外部:curl -Iv https://your_domaintelnet your_domain 443
  • 防火墙/云安全组:确认已放行 80/443/SSH;如使用非标准端口,放行对应端口
  • 证书路径与权限:证书文件存在且权限为 600/700,路径与 gitlab.rb 一致
  • 浏览器与 Git 客户端:清理缓存或尝试无痕模式;克隆地址应与 external_url 协议与端口一致

0