[搭建在家中的gitlab服务器] frp内网穿透 + https + gitlab详细搭建

最近想在家中搞一台自己私有的git服务器来做私人代码仓库,苦于家庭中的外网ip是动态的,只能使用内网穿透来做ip映射,并在搭建gitlab过程中加入了https的安全证(证书是自己生成的,没钱没证书哈哈)

所需环境

  • 家里放置一台已经安装了linux系统的计算机,本人用的是centos7(本文章简称为家庭机)
  • 云服务器,本人用的是腾讯云服务器(本文章简称为云服务器)

步骤

运行frp内网穿透服务

  1. 下载frp源码包
    frp在github上下载,frp-0.33.0
    github下载缓慢可以使用我分享的百度云上下载 百度云链接 密码:

  2. 解压frp压缩包
    下载好frp之后上传到家庭机和云服务器上
    分别进行解压

    tar -zxvf frp_0.33.0_linux_amd64.tar.gz -C /usr/local
    cd /usr/local/
    mv frp_0.33.0_linux_amd64 frp
    cd frp
    
  3. 修改客户端配置文件和客户端配置文件
    在frp目录中,分别有两个配置文件需要修改,一个是frps.ini,一个是frpc.ini
    云服务器作为服务端来代理转发数据到家庭机,为服务器,frps.ini在云服务器上配置
    家庭机作为客户端连接云服务器做端口映射,只修改frpc.ini配置文件
    frps.ini配置内容为

[common]
bind_port = 7000

# frp dashboard
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp config
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

`frpc.ini配置内容为

[common]
server_addr = 云服务器ip
server_port = 7000

[ssh]
type = tcp
# 本地ip
local_ip = 127.0.0.1
# 本地ssh端口
local_port = 22
# 远程监听端口,该端口与本地端口2222进行映射
remote_port = 2222

# gitlab http映射
[gitlab_http]
type = tcp
local_ip = 127.0.0.1
local_port = 1080
remote_port = 1080

# gitlab https映射
[gitlab_https]
type = tcp
local_ip = 127.0.0.1
local_port = 2443
remote_port = 2443

家庭机和云服务器分别关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

云服务器启动frps

sudo ./frps

家庭机启动frpc

sudo ./frpc

之后即可通过ssh远程终端工具连接家庭机,ip为云服务器的ip,端口为frpc配置文件中云服务器的映射端口2222

  1. 将frp启动命令设置为system管理

    • 云服务器配置

    进入/usr/lib/systemd/system目录,创建frp.service

    touch frp.service
    

    内容为

    [Unit]
    Description=frp client
    After=network.target
    
    [Service]
    ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
    
    [Install]
    WantedBy=multi-user.target
    
    • 家庭机配置

    进入/usr/lib/systemd/system目录,创建frp.service

    touch frp.service
    

    内容为

    [Unit]
    Description=frp client
    After=network.target
    
    [Service]
    ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
    
    [Install]
    WantedBy=multi-use.target
    

    之后在云服务器和家庭机上通过systemctl启动frp服务

    systemctl start frp.service
    # 开启自动启动
    systemctl enable frp.service
    

    之后每次重新启动计算机都能自动启动frp服务

搭建gitlab

gitlab搭建在家庭机中

  1. 下载gitlab rpm包

    下载所需依赖

    yum -y install policycoreutils openssh-server openssh-clients positfix
    

    启动ssh服务&设置为开机启动

    systemctl enable sshd && sudo systemctl start sshd
    

    设置postfix开机自启,并启动,postfix支持gitlab发信功能

    systemctl enable postfix && systemctl start postfix
    

    如果开启了防火墙,开放ssh以及http服务,然后重新加载防火墙列表,如果没有开启,则跳过这一步骤

    firewall-cmd --add-service=ssh --permanent
    firewall-cmd --add-service=http --permanent
    firewall-cmd --reload
    

    下载gitlab包,并且安装

    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
    
  2. 修改配置文件

    vi /etc/gitlab/gitlab.rb
    

    修改gitlab访问地址和端口.默认为80,为了避免冲突,改为1080

    external_url 'http://192.168.66.100:82'
    nginx['listen_port'] = 1080
    

    重载配置及启动gitlab

    gitlab-ctl reconfigure
    gitlab-ctl restart
    

    把端口添加到防火墙

    firewall-cmd --zone=public --add-port=82/tcp --permanent
    firewall-cmd --reload
    

    gitlab默认用户名为root

    访问云服务器ip + gitlab映射端口,即可访问gitlab服务器

设置gitlab访问协议为https

因为http不会对数据进行加密.会造成数据的安全问题,所以使用https方式会更加安全

前提条件

gitlab的https端口设置为2443

将gitlab的http请求重写为https方式

修改gitlab的配置文件

步骤

  1. 生成证书

    mkdir -p /etc/gitlab/ssl
    cd /etc/gitlab/ssl
    openssl genrsa -des3 -out server.key 1024
    openssl req -new -key server.key -out server.csr
    cp server.key server.key.org
    openssl rsa -in server.key.org -out server.key
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
    
  2. 配置https端口以及http跳转

    # 由于使用了内网传统,不能使用本地ip,而是使用云服务器ip
    # 由于要做http转发,在ip后加上https的端口
    external_url 'https://云服务器ip:2443'
    
    nginx['redirect_http_to_https'] = true
    registry_nginx['redirect_http_to_https'] = true
    mattermost_nginx['redirect_http_to_https'] = true
    nginx['redirect_http_to_https_port'] = 1080
    nginx['enable'] = true
    # https的证书,这边使用的是自己生成的证书
    nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
    nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"
    
    # https的端口
    nginx['listen_port'] = 2443
    
  3. 重新配置并重启gitlab

    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    
  4. 访问浏览器
    访问 http方式就可以重定向为https://云端服务器ip:https端口
    [搭建在家中的gitlab服务器] frp内网穿透 + https + gitlab详细搭建_第1张图片

你可能感兴趣的:(笔记,服务器,https,linux,网络,git)