[Gitea][docker]自托管Git服务程序 | Gitea搭建/使用教程

2024-08-20 17:31:42 浏览数 (3)

本文发布于395天前,最后更新于155天前,其中的信息可能有所发展或是发生改变。如有疑问请联系邮箱:admin@yemengstar.com。

1.前言

相比较gitlab,gitea是绝对的轻量级git服务程序了。

GIT(本地必装):Git – Downloading Package (git-scm.com)。装完以后在目标文件夹右键会有Git Bash HereGit GUI Here两个选项

GitHub地址:go-gitea

1panel地址:1Panel – 现代化、开源的 Linux 服务器运维管理面板

可能会用到的文档:

  • 在 Git 中设置用户名 – GitHub 文档
  • git配置SSH – 江风余火
  • Gitea——私有git服务器搭建详细教程_Baret-H

Gitea不提供内置的Pages服务器。您需要一个专用的域名来提供静态页面,以避免CSRF安全风险。 对于简单的用法,您可以使用反向代理来重写和提供Gitea的原始文件URL中的静态内容。 还有一些已经可用的第三方服务,比如独立pages server的或caddy plugin,可以提供所需的功能。

这篇教程中,夜梦全程以推送HEXO博客仓库进行展示

最终效果如图

2. 1panel部署

推荐使用1panel进行部署,快捷简便。

2.1 1panel面板安装

Ubuntu系统

代码语言:javascript复制
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

Debian系统

代码语言:javascript复制
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

CentOS系统

代码语言:javascript复制
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh

2.2 Gitea安装

在控制台找到访问地址后,登录面板。

然后再应用商店中找到gitea,点击安装即可!

注意:需要安装MySQL!版本按照服务器的性能进行选择即可!夜梦安装的MySQL版本为5.6

在安装gitea时,需要勾选端口对外访问

2.3 Gitea初始化

访问ip:3000即可进入gitea初始化界面。

我们需要完善其中的【站点名称】填写,其余若无域名访问需要,保持默认即可。

夜梦全程以ip:3000进行访问!

然后我们就进入了主页!

和GitHub有异曲同工之妙。

(看着真的眼熟不是吗)

由于就是GitHub的翻版,所以夜梦这里就不再赘述如何使用Gitea了。下面夜梦简单讲述一下使用过程中和GitHub不一样的地方,也是很容易出问题的地方。

3.简单使用

3.1本地操作

在本地文件夹中,右键选中Git Bash Here,即可进行操作。

在本地文件夹中,右键选中Git GUI Here,在Help中,找到Show SSH Key即可添加SSH密钥(公钥与私钥)。推荐在本地文件夹中新建.ssh文件夹。

仓库建立完毕以后,本地文件夹中会出现.git文件夹!

夜梦这里以HEXO仓库进行演示,仓库建立完毕以后,文件夹内容如下:

3.2 gitea操作

如果要链接Gitea仓库,夜梦推荐使用SSH进行连接。

设置SSH/GPG密钥管理SSH密钥,上传已经生成的公钥(.pub后缀),即可避免使用密码连接。

3.3修改SSH连接配置

如果没有猜错,你应该会在上述连接中遇到一个问题

连接仓库

代码语言:javascript复制
ssh git@233.233.233.233:yemeng/hexo.git

提示

代码语言:javascript复制
git@233.233.233.233's password:

这个密码时什么呢?

反正不是连接仓库的就对了。

那这是为什么?

让我们观察一下连接方式ssh git@233.233.233.233:yemeng/hexo.git,我们在服务器公网ip后面直接接了用户名yemeng没有接任何端口,也就是想当于走了默认端口22,这一步等价于ip:22,这也就是要登陆服务器的操作,这当然是需要密码的!我们应该是登陆服务器内部gitea容器的操作,因此我们需要修改gitea的一些配置!

让我们先回到1panel面板中。

在gitea应用中,选择参数

选择编辑

勾选高级设置

勾选编辑compose文件

编辑ports:

在gitea应用中,进入其文件夹

进入/data/gitea/conf文件夹中,修改app.ini文件

修改内容如下

之后重启容器即可!

此时我们再通过ssh推送HEXO仓库

代码语言:javascript复制
xxx@YeMeng MINGW64 /e/hexo (master)
$ hexo d
INFO  Validating config
INFO
  ===================================================================
      #####  #    # ##### ##### ###### #####  ###### #      #   #
      #    # #    #   #     #   #      #    # #      #       # #
      #####  #    #   #     #   #####  #    # #####  #        #
      #    # #    #   #     #   #      #####  #      #        #
      #    # #    #   #     #   #      #   #  #      #        #
      #####   ####    #     #   ###### #    # #      ######   #
                            4.7.0
  ===================================================================
INFO  Deploying: git
Processing...
On branch master
nothing to commit, working tree clean
Everything up-to-date
branch 'master' set up to track 'ssh://git@233.233.233.233:222/yemeng/hexo.git/gh-pages'.
INFO  Deploy done: git

这次期间任何流程无需再需要输入密码进行验证,到此ssh配置已经完毕。

4.docker-compose部署(rootless)

4.1安装docker-compose

上面第三部分重新设置端口的过程还是比较繁琐的,但是如果你熟悉docker-compose的配置,那么使用docker-compose.yml即可快速完成上述第二部分和第三部分的所有设置。

安装docker和docker-compose:【docker】在服务器上安装docker

4.2准备

首先创建一个 gitea 工作目录,后续工作都在这个目录下完成

代码语言:javascript复制
mkdir ~/gitea && cd ~/gitea

预先创建 data 和 config 目录,稍后用于数据挂载

代码语言:javascript复制
mkdir data config
chown 1000:1000 data config  
# 1000:1000自己调整

4.3基础配置

参考文章:

  • 手把手教你玩转 Gitea|使用 Docker 安装 Gitea – Gitea – 博客园 (cnblogs.com)
  • 使用 Docker 安装 | Gitea Documentation

rooless 版本的镜像默认使用 UID/GID 1000:1000 作为程序运行的用户组,为了保证 gitea 程序挂载权限正确的数据目录,我们在前面的步骤中预先创建了 dataconfig 目录。

代码语言:javascript复制
version: "2"

services:
  server:
    image: gitea/gitea:1.20-rootless
    restart: always
    volumes:
      - ./data:/var/lib/gitea
      - ./config:/etc/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:2222"

安装完毕以后,你可以通过ip:3000访问配置页面。

如果需要通过域名进行访问,请完成反向代理。

选用基础配置时,安装时选择SQLite3作为初始化数据库。

4.4MySQL配置

夜梦这里选择将 Gitea 与 MySQL 数据库结合使用,具体的配置文件如下

代码语言:javascript复制
version: "2"

services:
  server:
    image: gitea/gitea:1.20-rootless
    environment:
      - GITEA__database__DB_TYPE=mysql
      - GITEA__database__HOST=db:3306
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=yemeng
      - GITEA__database__PASSWD=yemeng
    restart: always
    volumes:
      - ./data:/var/lib/gitea
      - ./config:/etc/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:2222"
    depends_on:
      - db

  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=yemeng
      - MYSQL_PASSWORD=yemeng
      - MYSQL_DATABASE=gitea
    volumes:
      - ./mysql:/var/lib/mysql

安装完毕以后,你可以通过ip:3000访问配置页面。

如果需要通过域名进行访问,请完成反向代理。

选用基础配置时,安装时选择mysql作为初始化数据库。

4.5完成设置

你可以访问IP:3000进入gitea配置页面。

你可以直接设置管理员,也可以到后面进行注册。第一个注册的用户自动会成为管理员。

5.app.ini配置

如果你忘记了管理员的密码,抑或是你需要修改配置文件,你都可以在app.ini文件中修改。

由于我们是使用docker进行部署的,所以我们需要先进入容器。

查看容器ID

代码语言:javascript复制
docker ps -a

得到

代码语言:javascript复制
CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS          PORTS                                                                            NAMES
4fd3cb713ab7   gitea/gitea:1.20   "/usr/bin/entrypoint…"   13 minutes ago   Up 13 minutes   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp   gitea
85e1eeea4fe2   mysql:8            "docker-entrypoint.s…"   13 minutes ago   Up 13 minutes   3306/tcp, 33060/tcp                                                              root-db-1

然后我们找到gitea的<CONTAINER ID>4fd3cb713ab7

然后进入容器

代码语言:javascript复制
docker exec -it <CONTAINER ID> /bin/bash

进入以后,我们输入

代码语言:javascript复制
gitea admin user change-password --username AdminUserName --password NewAdminPwd --config /etc/gitea/app.ini

即可修改你的管理员密码。

1 人点赞