【玩转Lighthouse】自建轻量级Git仓库Gitea

首页 / 软件 / 正文

【玩转Lighthouse】自建轻量级Git仓库Gitea

前言

  作为开发人员使用Git进行版本管理是必不可少的一部分,但似乎从去年开始,最大的代码仓库GitHub在大陆经常无法访问,又或者经常超时。但是国内哪些Git仓库站点如Gitee、coding等似乎对个人用户不太友好,至少我是用不习惯Gitee的。于是我有自建Git仓库的想法,但目前看来网上最流行的自建git无非就是GitLab,而GitLab对服务器的性能要求极高。作为个人开发者,一般情况下大多数人的选择是1c2g的服务器,很显然这个配置无法带动GitLab。
  我发现了一款优秀的Git托管程序Gitea,它是基于Gogs衍生而来的,且使用Golang作为开发语言。在安装非常便捷,同时功能也够个人开发者使用,还能结合Drone实现CICD。

服务器准备

这里我使用一台全新的腾讯云轻量云服务器基于Docker安装。你需要登录腾讯云平台,进入轻量应用服务器控制台如下图。找到你的服务器,在更多菜单下选择重装系统(如果你不是新服务器,又或者服务器已经有数据了,请不要随意重装,请手动安装Docker)。

轻量云服务器控制台

在接下来的操作中选择Docker基础镜像下的CentOS7.6-Docker20然后点击确定,当然你也可以按照你自己的喜好选择其他的发行版。你也选择系统镜像,然后手动安装docker。

重装服务器

此时带有Docker的Centos系统已经安装完成,但是目前我们是不知道密码的,你可以点击下图中的重置密码按钮来设置密码,然后使用ssh工具如xshell、finalshell等链接你的服务器来进行接下来的操作。

重置服务器密码

也可以直接使用顶部的登录按钮直接登录。我暂且就使用上面这个按钮登录方便一点。登录成功以后使用docker -v命令查看Docker是否安装成功。同时使用命令docker-compose -v检查下是否安装了docker-compose,如图所示我们的服务器上已经安装有Docker了,接下来就可以进行下一步操作了。

Docker安装成功

接下来还有尤为重要的一步,放行端口。在轻量应用服务器的详情界面有个防火墙Tab页,进入后点击添加规则。

放行防火墙端口

按照如图所示添加放行规则。端口这里填30001,222,你也可以按照自己的规划,使用其他未被使用的端口。

添加放行规则

安装Gitea代码托程序

创建Gitea所需的文件夹,并设置相关权限。

# 创建文件夹
sudo mkdir -p /opt/gitea
# 设置权限
sudo chmod 777 /opt/gitea
# 创建hosts文件
touch /opt/gitea/hosts

切换到刚创建的文件夹下。

# 切换目录
cd /opt/gitea

执行下面的命令创建docker-compose.yaml文件。注意修改其中的30001和222为你自己规划的端口。USER_UID和USER_GID设置为当前用户的id,可以使用命令id查询。

cat > docker-compose.yaml <<EOF
version: "3"
networks:
  gitea:
    external: false
services:
  server:
    image: gitea/gitea:1.13.3
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - ${PWD}:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ${PWD}/hosts:/etc/hosts
    ports:
      - "30001:3000"
      - "222:22"
EOF

接下来执行命令启动gitea,如果没有报错信息,恭喜你已经安装成功了。

# 启动 终端关闭后服务停止
docker-compose up
# 后台启动服务
docker-compose up -d 

现在你可以使用浏览器访问http://服务器ip:30001,会出现下面的界面。

Gitea主界面)

点击上图右上角的登录按钮进入Gitea安装流程。如果你绑定有域名,你也可以将SSH 服务端口基础URL设置为你的域名,否则设置为服务器ip,最后点击立即安装按钮。如果在刚才的安装步骤中,你没有设置管理员账户,现在立即注册一个用户即可。

填写Gitea安装信息

登录账户后,可以在右上角点击加号创建一个仓库开始使用了。

Gitea个人中心

安装Drone自动构建工具

Gitea还能结合Drone实现CICD,如果你有这方面的需求,可以接着往下看。

首先登录Gitea,点击右上角头像进入设置页,找到应用Tab页。填写OAuth2应用程序信息,重定向URL填写服务器IP:Drone的端口如:http://81.2.2.217:30002/login,其中30002端口会在下面的步骤中使用到。在此之前请参考上面的方式在轻量应用服务器防火墙界面放行30002、30003端口。

Gitea OAuth2

点击创建以后会得到id和secret,注意这很重要,接下来会用到。

Gitea OAuth2信息

创建drone文件夹。

# 创建文件夹
sudo mkdir -p /opt/drone/data
# 设置权限
sudo chmod 777 -R /opt/drone

编写yaml文件。注意配置environment中的各项参数和密码。其中runner中的DRONE_RPC_SECRET要和server中的DRONE_RPC_SECRET保持一致。

# 切换目录
cd /opt/drone
# 创建文件
cat > docker-compose.yaml <<EOF
version: "3"

services: 
  server:
    image: drone/drone:1
    container_name: drone_server
    restart: always
    environment: 
      DRONE_GITEA_SERVER: http://Gitea服务器ip或者域名:30001
      DRONE_GITEA_CLIENT_ID: "Gitea OAuth2"
      DRONE_GITEA_CLIENT_SECRET: "Gitea OAuth2客户端密钥"
      DRONE_RPC_SECRET: a9e1160c4d69783a8fbdee4289c493as
      DRONE_SERVER_HOST: 服务器ip或者域名:30002
      DRONE_SERVER_PROTO: http
      DRONE_USER_CREATE: username:对应gitea中的管理员账号名称,admin:true
    ports:
      - "30002:80"
    volumes: 
      - "./data:/var/lib/drone"

  runner:
    image: drone/drone-runner-docker
    container_name: drone_runner_docker
    restart: always
    environment: 
      DRONE_RPC_PROTO: http
      DRONE_RPC_HOST: 服务器ip或者域名:30002
      DRONE_RPC_SECRET: a9e1160c4d69783a8fbdee4289c493as
      DRONE_RUNNER_CAPACITY: 5
      DRONE_UI_USERNAME: drone
      DRONE_UI_PASSWORD: 123456
      DRONE_RUNNER_NAME: rains
    ports:
      - "30003:3000"
    volumes: 
      - "/var/run/docker.sock:/var/run/docker.sock"
EOF

启动服务,如果没有报错,恭喜安装成功!

# 启动 终端关闭后服务停止
docker-compose up
# 后台启动服务
docker-compose up -d 

最后访问ip:30002,使用Gitea账号登录以后就可以访问到drone页面如下图。

Drone界面

之后在你的项目中创建.drone.yml文件,编写相关规则,并在Drone的页面中启用后就可以实现CICD,相关教程可以参见Drone官网

结语

最后希望各位都能成功自建Git仓库,摆脱GitHub无法访问的苦恼。

无标签
评论区
头像
    头像

    感谢分享

    头像
    寻梦xunm
      

    快要新的一年了,可以更新一篇文章了。

      头像
      @寻梦xunm

      是啊,本来1月初的时候都写了,还没整理完,就还在草稿箱里面!!

        头像
        寻梦xunm
          
        @雨落凋殇

        可以帮忙把乎学技术的友链提供成下面的那个吗?以前的那个被卖了。
        名称:洛丽塔

        描述:一个宅男的云上次元世界

        链接:http://luolt.cn/

        头像:https://q.qlogo.cn/g?b=qq&nk=1340326824&s=0

          头像
          @寻梦xunm

          好的,收到,最近在准备做博客的迁移。到时候迁移好了统一处理。

          头像
          @寻梦xunm

          好的,收到,最近在准备做博客的迁移。到时候迁移好了统一处理。

    头像
    寻梦xunm
      

    好久没有来看看了

      头像
      @寻梦xunm

      同样同样。我甚至好久没更新了。

    头像

    感谢分享,赞一个

    头像
    鸟叔
      

    这个vps配置可不低啊,不便宜啊

      头像
      @鸟叔

      搞个仓库罢了,1c2g足矣