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

发布于:2025-07-08 ⋅ 阅读:(15) ⋅ 点赞:(0)
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的公网域名在没开会员的情况下会定期改变,这点比较烦人。

网站公告

今日签到

点亮在社区的每一天
去签到