当前位置: 首页 > news >正文

Ubunt20.04搭建GitLab服务器,并借助cpolar实现公网访问

1.安装依赖
sudo apt update
sudo apt install curl openssh-server ca-certificates postfix

上述几个包的作用如下:

  • curl:命令行工具,用于发送 HTTP 请求。

  • openssh-server:提供远程 SSH 登录服务端功能。

  • ca-certificates:存储受信任的根证书列表。

  • postfix:轻量级邮件服务器,用于发送系统邮件。

安装后会出现如下界面:

这个界面是在安装postfix(邮件服务器)时,系统弹出的配置界面,要求选择一种邮件系统类型。每个选项代表一种不同的邮件发送/接收方式,下面是每个选项的简单解释:

  • No configuration:不更改当前配置,适合已配置好或暂不使用邮件功能。

  • Internet Site:服务器直接通过 SMTP 收发邮件,需公网和域名支持。

  • Internet with smarthost:接收本地或外部邮件,发送通过外部邮件中继(如 Gmail)。

  • Satellite system:所有邮件统一转发到指定服务器发送,本机不接收邮件。

  • Local only:邮件仅限本机用户间收发,适用于系统日志和任务通知。

我们的目的是搭建GitLab服务器,选择Internet site即可。ok确定之后可以设置服务器的名字,输入自己想要的名字即可。

2.安装GitLab

执行命令:

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

该命令会静默下载 GitLab 官方提供的安装脚本,并执行脚本为系统添加 GitLab 社区版的 APT 安装源并导入公钥。然后去GitLab 官方(https://packages.gitlab.com/gitlab/gitlab-ce)找到最新版本的gitlab-ce安装包,我这里使用的是ubuntu 20.04,所以对应的是ubuntu/focal(focal是ubuntu 20.04的别名),使用的是x86的主机,所示对应的包是gitlab-ce_17.11.5-ce.0_amd64.deb。复制右下角的wget命令在ubuntu终端下载安装包。

我的安装命令为:

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_17.11.5-ce.0_amd64.deb/download.deb

再用以下命令解压:

sudo dpkg -i gitlab-ce_17.11.5-ce.0_amd64.deb

解压过程有点耗时,解压成功后界面如下:

3.配置ip和端口号

使用ifconfig命令查看本机的ip地址:

我这里是192.168.160.130,运行sudo vim /etc/gitlab/gitlab.rb来修改GitLab的ip和端口号,ip地址就是本机地址,端口号可以使用一个合适的空闲端口号,可以使用以下命令来查看端口号是否空闲:

sudo lsof -i :端口号

如果执行上述命令后没有输出就说明对应的端口号是空闲的,我这里选择的端口号是8077,如下图:

保存退出后依次执行以下命令:

# 停止gitlab服务 
sudo gitlab-ctl stop ​# 配置gitlab服务 
sudo gitlab-ctl reconfigure ​# 重启所有gitlab组件 
sudo gitlab-ctl restart ​# 启动所有gitlab组件 
sudo gitlab-ctl start# 启用开机自启动
sudo systemctl enable gitlab-runsvdir.service
4.设置GitLab管理员账户

管理员账户的用户名默认为root,设置的密码不能太短,否则会失败。在终端依次执行以下命令(打开控制台可能有些耗时比较慢):

#切换工作目录,gitlab-rails可执行程序在目录/opt/gitlab/bin/ 下
cd /opt/gitlab/bin/ ​#打开控制台
sudo gitlab-rails console -e production ​#查询用户账号信息并赋值给u
u=User.where(id:1).first​#设置root的密码,密码太短会失败
u.password='myserver123'#确认密码
u.password_confirmation='myserver123'#保存信息(注意有个感叹号)
u.save!#退出
exit

执行结果如下图:

完成上述步骤之后,在同一个局域网内已经可以通过ip地址和端口号访问GitLab服务器了(我这里的地址是http://192.168.160.130:8077),如下图所示:

输入账户名root和刚刚设置的密码即可成功登录:

5.利用cpolar实现内网穿透

首先到cpolar官网(cpolar - secure introspectable tunnels to localhost)注册一个账号,注册界面如下:

注册成功之后登录,在验证栏可以看到一个token,我的token如下图:

打开终端,输入以下命令安装cpolar-client:

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

然后用以下命令查看版本号,如果成功显示版本号说明cpolar-client安装成功:

cpolar version

使用以下命令认证token,将刚才在官网验证栏获取的token粘贴到命令中的对应位置即可:

cpolar authtoken 验证栏的token

而后依次执行以下命令:

#向系统添加服务
sudo systemctl enable cpolar#启动服务
sudo systemctl start cpolar#查看服务状态
sudo systemctl status cpolar

结果如下说明服务已成功开启:

成功启动 cpolar 服务后,可以在浏览器上访问 ubuntu局域网 ip 地址+9200 端口(在我这里就是http://192.168.160.130:9200 ),登录 cpolar web UI 管理界面,并依次点击隧道管理->创建隧道。如下图:

然后根据需要设置隧道名称,协议选中http,本地地址就是刚才在/etc/gitlab/gitlab.rb文件中设置的端口号(我这里是8077),域名选中随机域名,地区选中China VIP,然后创建即可。创建成功后可以在状态->在线隧道列表中看见相应的表项:

再次运行sudo vim /etc/gitlab/gitlab.rb命令,修改GitLab服务器的ip配置,添加以下内容(注意:这里所添加的具体配置信息要与上面在cpolar中的状态->在线隧道列表中显示的一致):

# 设置GitLab的外部访问URL(用于页面、HTTP克隆)
external_url 'http://5c5c3a3d.r10.vip.cpolar.cn'# 设置GitLab的SSH访问地址(用于SSH克隆)
gitlab_rails['gitlab_ssh_host'] = '5.tcp.cpolar.top'
gitlab_rails['gitlab_shell_ssh_port'] = 12919# 设置监听端口号,不添加这两句会导致8077端口未被监听而无法访问GitLab服务器
nginx['listen_port'] = 8077
nginx['listen_https'] = false

如下图所示:

保存退出后,依次执行以下命令,重新配置并重新启动GitLab服务器:

# 重新配置GitLab服务
sudo gitlab-ctl reconfigure ​# 重启所有GitLab组件
sudo gitlab-ctl restart

此时就可以在公网通过cpolar提供的公网域名访问我们的GitLab服务器了,例如我的cpolar公网域名如下图:

在浏览器上输入Sign in · GitLab,即可访问GitLab,如下图:
可以在Preferences选项卡中将语言修改成中文:
保存后重新刷新下即可。此时创建项目后可以看到,git clone的地址也相应的变成了公网地址,在其他网段的主机是可以clone我们GitLab服务器上的代码的。但是cpolar的公网域名在没开会员的情况下会定期改变,这点比较烦人。
http://www.dtcms.com/a/268834.html

相关文章:

  • Taro+Vue3实现微信小程序富文本编辑器组件开发指南
  • RoboRefer:面向机器人视觉-语言模型推理的空间参考
  • 数学建模从入门到国奖——备赛规划优秀论文学习方法
  • 在 Windows 系统上配置 [go-zero](https://go-zero.dev) 开发环境教程
  • React-React.memo-props比较机制
  • 基于YOLOv11的车辆检测系统项目教程(Python源码+Flask Web界面+数据集)
  • AI智能体长期记忆系统架构设计与落地实践:从理论到生产部署
  • [论文阅读] 人工智能 | 读懂Meta-Fair:让LLM摆脱偏见的自动化测试新方法
  • Mac 电脑无法读取硬盘的解决方案
  • Redisson详细教程 - 从入门到精通
  • zookeeper介绍
  • PostgreSQL性能优化实践指南:从原理到实战
  • 大语言模型(LLM)课程学习(Curriculum Learning)、数据课程(data curriculum)指南:从原理到实践
  • 知识竞赛答题pk小程序用户操作手册
  • Linux内核ext4 extent:解决大文件存储难题的关键
  • MybatisPlus(一)扩展功能
  • MS51224 一款 16 位、3MSPS、双通道、同步采样模数转换器(ADC)
  • LMH1219RTWR-富利威-3G/12G-SDI
  • 【mini-spring】【更新中】第一章 IOC与Bean源码及思路解析
  • 如何用 Mockito 玩转单元测试
  • 闲庭信步使用图像验证平台加速FPGA的开发:第三课——YCbCr转RGB的FPGA实现
  • 搜广推校招面经八十八
  • Linux批量执行工具脚本使用指南:一键运行多个release-dev.sh脚本
  • macOS运行python程序遇libiomp5.dylib库冲突错误解决方案
  • 【STM32】const 变量存储学习笔记
  • 【论文阅读】CogView: Mastering Text-to-Image Generation via Transformers
  • 文心一言4.5开源模型测评:ERNIE-4.5-0.3B超轻量模型部署指南
  • React19 新增Hooks:useOptimistic
  • 巧借东风:32位栈迁移破解ciscn_2019_es_2的空间困局
  • maven 发布到中央仓库-01-概览