自建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 来放行 。

相关推荐
姚不倒1 小时前
三节点 TiDB 集群部署与负载均衡搭建实战
运维·数据库·分布式·负载均衡·tidb
k7Cx7e1 小时前
Debian执行ssh root@localhost 提示认证失败
运维·debian·ssh
闻道且行之1 小时前
Nginx 安装、做成服务及 HTTPS 配置全流程
linux·运维·nginx·https
爱上妖精的尾巴2 小时前
8-20 WPS JS宏 正则表达式-懒惰匹配
服务器·前端·javascript
昵称只能一个月修改一次。。。2 小时前
Linux系统编程:网络编程
linux·服务器·网络
人工智能训练2 小时前
Qwen3.5 开源全解析:从 0.8B 到 397B,代际升级 + 全场景选型指南
linux·运维·服务器·人工智能·开源·ai编程
野犬寒鸦2 小时前
TCP协议核心:TCP详细图解及TCP与UDP核心区别对比(附实战解析)
服务器·网络·数据库·后端·面试
蜕变的小白2 小时前
Linux系统编程-->UDP编程:C/S模型实战详解
linux·运维·网络协议·udp
linuxxx1102 小时前
让openclaw使用系统命令:“rm“, “mkdir“, “touch“, “ls“, “cat“, “echo“
linux·服务器·windows