自建gitlab服务器并用sakurafrp穿透

在 Ubuntu 上自建 GitLab 服务器并结合 SakuraFrp 进行内网穿透,主要分为两大步:先在本地搭建并配置好 GitLab,再通过 SakuraFrp 将服务暴露到公网。下面是一个清晰、可操作的流程,包含了两种协议(HTTP 和 SSH)的穿透配置,这样你在公网上既能通过浏览器访问,也能顺利拉取代码。

🏗️ 第一步:在 Ubuntu 上搭建 GitLab 服务器

这里我们使用官方推荐的 Omnibus 包安装方式,对 Ubuntu 系统最友好 。

  1. 安装基础依赖

    打开终端,先更新软件包列表,并安装必要的工具。

    bash 复制代码
    sudo apt update
    sudo apt install -y curl openssh-server ca-certificates tzdata perl

    小提示:如果在安装过程中提示配置 postfix(邮件服务),选择 "Internet Site" 并使用你服务器的系统域名即可 。

  2. 添加 GitLab 官方仓库

    运行以下脚本,它会自动帮你把 GitLab 的安装源添加到系统中。

    bash 复制代码
    curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
  3. 安装 GitLab 社区版

    接下来就可以正式安装了。这一步需要一点时间,请耐心等待。

    bash 复制代码
    sudo apt install gitlab-ce
  4. 获取初始密码

    安装完成后,管理员账户 root 的初始密码会被保存在一个临时文件里,我们需要先把它找出来。这个文件会在 24 小时后自动删除,所以最好现在就记下来 。

    bash 复制代码
    sudo cat /etc/gitlab/initial_root_password

    你会看到类似这样的输出,Password 后面那一串就是初始密码。

    bash 复制代码
    # WARNING: This value is valid only in the following conditions
    #          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time)
    #          2. Password hasn't been changed manually, either via UI or via command line.
    #
    #          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
    
    Password: YOUR_INITIAL_ROOT_PASSWORD
    
    # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
  5. 配置并启动 GitLab

    这是最关键的一步,我们需要修改配置文件,告诉 GitLab 使用什么地址对外提供服务。这个地址将是你最终通过浏览器访问 GitLab 的地址

    bash 复制代码
    sudo vim /etc/gitlab/gitlab.rb

    找到 # external_url 'GENERATED_EXTERNAL_URL' 这一行,修改为你 Ubuntu 服务器的局域网 IP 地址 和你想使用的端口(例如 8080)。如果只写 IP 不写端口,默认是 80 端口。

    bash 复制代码
    ruby external_url 'http://127.0.0.1:23333'

    特别提醒: 这个 external_url 是 GitLab 内部用来生成项目链接的地址。因为我们后面会用 SakuraFrp 做穿透,公网访问的地址会是另一个,所以这里先填写内网地址和端口,确保内网能正常访问即可 。

    保存文件后,运行以下命令使配置生效并启动所有组件。这个过程也需要几分钟。

    bash 复制代码
    sudo gitlab-ctl reconfigure
  6. 内网验证

    在你 Ubuntu 本机或同局域网的电脑浏览器里,输入你刚才设置的地址(如 http://127.0.0.1:23333),应该能看见 GitLab 的登录页面。使用用户名 root 和刚才获取的初始密码登录,然后系统会要求你立即修改密码。

🚇 第二步:安装与配置 SakuraFrp 内网穿透

SakuraFrp 的使用逻辑和教程中常见的 cpolar 类似 ,主要是通过创建隧道将内网端口映射到公网。

  1. 注册并获取访问密钥

    首先,去 SakuraFrp 官网 (https://www.natfrp.com/) 注册一个账号。登录后,在用户中心找到你的访问密钥,这个密钥是用于将你的 Ubuntu 服务器连接到 SakuraFrp 网络的凭证。

  2. 在 Ubuntu 上安装 SakuraFrp 客户端

    回到 Ubuntu 终端,执行官网提供的一键安装脚本。具体命令可以在 SakuraFrp 官网的"下载"页面找到,通常如下:

    bash 复制代码
    curl -o frpc_linux_amd64.tar.gz https://nya.globalslb.net/natfrp/client/版本号/frpc_linux_amd64.tar.gz # 请去官网复制最新链接
    tar -zxvf frpc_linux_amd64.tar.gz
    # 重命名并赋予执行权限
    mv frpc_linux_amd64 frpc
    chmod +x frpc

    更详细和最新的安装方式,请务必参考 SakuraFrp 官方文档。

  3. 创建两条隧道

    在 SakuraFrp 官网的控制台里,点击"隧道列表" -> "创建隧道"。为了既能用浏览器访问,又能用 Git 命令行拉取代码,我们需要创建两条隧道。

    • HTTP 隧道(用于 Web 访问)

      配置项 说明
      隧道名称 GitLab-Web 任意易记的名字
      隧道类型 HTTP 用于网页访问
      本地IP 127.0.0.1 指向本机
      本地端口 8080 必须和你 GitLab 配置的 external_url 端口一致
      绑定域名 选择一个可用的二级域名 SakuraFrp 会提供,如 your-name.natfrp.cloud
    • TCP 隧道(用于 SSH 协议拉取代码)

      配置项 说明
      隧道名称 GitLab-SSH 任意易记的名字
      隧道类型 TCP 用于 SSH 连接
      本地IP 127.0.0.1 指向本机
      本地端口 22 SSH 服务的默认端口
      远程端口 随机或指定 由 SakuraFrp 分配的一个公网端口,记下它
  4. 在 Ubuntu 上启动隧道

    回到 Ubuntu 终端,使用你的访问密钥 和刚才创建的隧道ID来启动客户端。你可以把两个隧道 ID 写在一起,同时启动。

    bash

    复制代码
    # 格式: ./frpc -f 秘钥
    ./frpc -f 秘钥

    如果看到 [I] [proxy_manager] [以上隧道都启动成功] 的提示,就说明连接成功了。

🧪 第三步:公网访问与代码拉取测试

现在,你的 GitLab 已经成功暴露在公网上了。

  1. 浏览器访问

    打开浏览器,访问你在 HTTP 隧道中配置的域名(如 http://your-name.natfrp.cloud)。你应该能看到熟悉的 GitLab 登录界面。使用你的 root 账号和新密码登录,功能一切正常。

  2. 配置 SSH 密钥(推荐)

    使用 SSH 协议拉取代码可以免去每次输入密码的麻烦,也更加安全 。

    • 你的本地电脑上(不是服务器),打开 Git Bash 或终端,生成 SSH 密钥(如果还没有的话):

      bash 复制代码
      ssh-keygen -t rsa -b 4096 -C "your_email@example.com"  # 邮箱换成你的

      一路回车即可。

    • 查看并复制公钥:

      bash 复制代码
      cat ~/.ssh/id_rsa.pub
    • 登录你的 GitLab 网页(通过公网域名),点击右上角头像 -> Preferences -> SSH Keys,将复制的内容粘贴到 "Key" 框中,并给个标题(如 "My Work Laptop"),点击 "Add key" 保存。

  3. 拉取代码测试

  4. 用http拉取(最常用)

bash 复制代码
GIT_SSL_NO_VERIFY=true git clone https://frp地址:端口/fd4873/win10_menghuanxiyou.git
  • 在 GitLab 上随便找一个项目,点击蓝色的 "Clone" 按钮,你会看到两个地址。我们主要关注 SSH 的那个。

    • 默认显示的 SSH 地址 可能是:git@192.168.1.100:root/my-project.git这个地址在公网上是无法使用的!

    • 我们需要把它改成 SakuraFrp 提供的 SSH 隧道地址。格式为:ssh://git@<你的TCP隧道域名或IP>:<远程端口>/<项目路径>.git

    • 例如,你的 TCP 隧道分配的地址是 xx.natfrp.com:12345,项目路径是 root/my-project.git,那么最终的克隆命令就是:

      bash

      复制代码
      git clone ssh://git@xx.natfrp.com:12345/root/my-project.git

      如果你已经配置好了 SSH 公钥,代码就会被顺利拉取下来,无需密码。

💡 重要提醒

  • 配置文件是关键 :GitLab 的 external_url 主要影响其内部生成的项目链接。我们通过 SakuraFrp 访问时,用的是不同的域名和端口,所以克隆代码时必须手动修改地址为隧道提供的地址。

  • 端口开放 :确保 Ubuntu 的防火墙(如 ufw)没有阻挡 GitLab 使用的 808022 端口。如果之前开启过 ufw,可以使用 sudo ufw allow 8080sudo ufw allow 22 来放行 。

相关推荐
QC班长22 分钟前
Maven公司私库配置踩坑点
java·服务器·maven·intellij-idea
Elastic 中国社区官方博客1 小时前
为 Elastic Cloud Serverless 和 Elasticsearch 引入统一的 API 密钥
大数据·运维·elasticsearch·搜索引擎·云原生·serverless
Agent手记1 小时前
制造业数字化升级:生产全流程企业级智能体落地解决方案 —— 基于LLM+超自动化全栈架构的智改数转深度实战
运维·ai·架构·自动化
云安全助手2 小时前
弹性云服务器+高防IP:让DDoS攻击不再是业务“生死劫”
运维·网络·安全
深色風信子2 小时前
Docker newapi
运维·docker·容器·newapi
闫利朋3 小时前
Ubuntu 24.04 桌面安装向日葵完整指南
linux·运维·ubuntu
mfxcyh4 小时前
使用MobaXterm配置nginx
java·服务器·nginx
阿里巴巴首席技术官5 小时前
通过纯Nginx实现一个简单的文件上传功能
运维·nginx
pengyi8710155 小时前
动态IP池快速更换实操方案,5分钟完成IP替换
服务器·网络·tcp/ip
GL_Rain5 小时前
快速搭建Halo博客 + 崩溃秒恢复方案(Docker极简部署)
运维·docker·容器