开始

git自托管平台,可以在自己在服务器上存留一个副本,以保存仓库,自定义能力强,同时还可以在一定程度上规避可能存在的风险?

比较知名的git自托管程序有gitlab(CE/EE)gogs以及gitea

虽然gitlab的功能很多,但是其运行所占用的的资源占很高,正如gitlab的安装介绍页所述: 4GB RAM is the required minimum memory size.,gitlab的运行需要不少4G内存,这是很难达到的配置,成本太高了。所以,gitlab排除

然后,因为gogs并不支持org文件,所以,gogs排除。

于是,最终决定,选择搭建gitea。

下载gitea

首先,创建一个用于运行gitea的用户。

执行 sudo useradd -m git -s /bin/bash 命令创建一个名为“git”的用户,这个用户将在后续用于配置中用到。

切换到刚刚下载gitea的用户,并根据文档下载可执行二进制文件

1
2
3
4
5
sudo su -l git
mkdir gitea;cd gitea
wget https://dl.gitea.io/gitea/1.12.1/gitea-1.12.1-linux-amd64
mv gitea-1.12.1-linux-amd64 gitea;chmod +x gitea
#此处的范例链接是1.12.1版linux操作系统arm架构的二进制文件,如并非此条件,请自行更改为其他文件

配置postgreSQL数据库

上一篇博客有简单说明postgreSQL的安装,这里不再累述,此处仅仅记录一下数据库创建。

1
2
createdb gitea -U [数据库用户名] -h [数据库所在服务器(本机则localhost)] -p [端口(默认为5432)] #创建一个名为“gitea”的数据库
pypl -d gitea -U [user] -h [host] -p [port] #测试创建是否成功

通过安装页面配置gitea

在该步骤完成后,执行 ./gitea web 这默认将会在3000端口打开一个web服务(可以通过命令行输出的内容查看具体端口)。

使用浏览器访问http(s)://[服务器IP/指向该ip的域名]:[端口],如 http://localhost:3000

一切正常的话,将会进入到gitea的web安装页面(如上图)。将需要在该面板进行初始配置

这里对gitea安装设置页的一些重要选项做简要说明

数据库设置

gitea支持MySQL、PostgreSQL、MSSQL、SQLite3等数据库。

  • 数据库类型 : 设置gitea使用的数据库类型。可选MySQL、PostgreSQL、MSSQL、SQLite3中的一种,此处选择上面已经配置完成的postgreSQL
  • 数据库主机 : 这里填写数据库的链接路径,如 127.0.0.1:5432 。SQLite3无此设置
  • 用户名 : 访问数据库的用户名。SQLite3无此设置
  • 数据库用户密码 : 上述数据库用户对应的密码。SQLite3无此设置
  • 数据库名称 : 数据库服务配置的数据库名称。SQLite3无此设置
  • Schema : 留空则数据库中默认值为(“public”)。仅PostgreSQL有此设置
  • ssl : 链接数据库时是否使用ssl(默认不使用)。仅PostgreSQL有此设置
  • 字符集 : 设置数据库字符集。仅MySQL有此设置
  • 数据库文件路径 : 仅SQLite3有此设置。这也是SQLite3的唯一设置,设置SQLite3数据库的文件路径。

一般设置

这里的设置选项能够配置站点的一些描述信息和一些常规配置。

  • 站点名称 : 站点的名称,比如说公司名?
  • 仓库根目录 : 用于保存git存储库数据的路径
  • LFS根目录 : 配置git-LFS的文件的保存路径,留空则禁用
  • 以用户名运行 : 以什么用户运行gitea,填写用户名
  • SSH 服务域名 : 用于 SSH 克隆的域名或主机地址。
  • SSH服务端口 : ssh服务的端口号,留空则禁用,如果使用的是gitea提供的内置ssh服务器的话。
  • HTTP 服务端口 : Gitea web服务器将监控的端口号。默认3000
  • Gitea 基本 URL : 用于 HTTP (S) 克隆和电子邮件通知的基本地址
  • 日志路径 : 设置gitea运行时日志信息保存的路径

可选-电子邮箱设置

这一设置是可选的,需要有一个支持SMTP的邮箱服务器,以及一个对应的邮箱帐号,此处以yandex为例。

  • SMTP主机 : 邮箱发件服务器主机(包括域名),如果使用yandex的邮箱账户,这里则填写 smtp.yandex.com:587
  • 电子邮件发件人 : 设置邮件的署名
  • SMTP用户名 : 设置登陆SMTP服务的用户名,填写要设置的邮箱
  • SMTP密码 : 上述账户对应的密码,需要注意是,密码是明文保存在配置文件之中,因此请小心配置文件泄露。
  • 需要发电子邮件确认注册 : 新用户注册时是否需要通过电子邮件验证
  • 启用邮件通知提醒 : 是否启用邮件通知提醒

可选-服务器和第三方服务设置

这一设置也是可选的,不过相对较杂,此处只选较重要的做简要说明。

  • 启用本地模式 : 禁用第三方CDN并在本地服务所有资源。如果访问gitea服务器的计算机不希望从互联网获取资源文件,则勾选。
  • 禁止用户自助注册 : 启用后将仅允许管理员注册
  • 启用验证码 : 要求在用户注册时输入预验证码,gitea-1.12.1存在bug,如果配置反向代理和子路径则无法正常工作。
  • 启用页面访问限制 : 只有登录用户的才有页面访问权限。游客只会看到 “登录” 和注册页面

需要注意的是,gitea的验证码的路径存在bug,其不使用ROOT_URL配置的路径,如果设置反向代理和ROOT_URL设置了子路径,则注册时的验证码将无法正常显示。

可选-管理员帐号设置

创建管理员帐户同样是可选的。第一个注册用户将自动成为管理员。不过建议在安装页面还是注册一个管理员账户比较好。

通过nginx反向代理gitea,配置子路径

在nginx配置文件中加上以下代码

1
2
3
4
5
6
7
8
server {
    listen 80;
    server_name [域名];

    location /[子路径名]/ { # Note: Trailing slash
	proxy_pass http://localhost:[端口]/; # Note: Trailing slash
    }
}

并在编辑gitea的配置文件,在其中加上

1
[server] ROOT_URL = http://[域名]/子路径名/

最后,重启gitea。

需要注意的是,截止至gitea-1.12.1版本,注册验证码存在bug,所以如果想要允许外部注册并且希望为gitea配置子路径的话,请确保ENABLE_CAPTCHA的值为false。保持验证码关闭

一些后续配置

此处记载着一些后续配置。

修改配置文件

二进制安装的配置文件默认在 [二进制可执行文件所在文件夹]/custom/conf/app.ini

比如,下载gitea的可执行二进制文件保存在 /home/git/gitea/gitea ,那么,其配置文件就保存在 /home/git/gtea//custom/conf/app.ini ,如要编辑配置文件,则可以使用文本编辑器编辑配置文件。并重启gitea。

禁用密码复杂度检验

gitea默认配置会启用密码复杂度校验。要求密码复杂度达到一定强度,否则,不允许注册/更新密码。(如下图)

而默认的复杂度要求过高。要求同时存在大写字母、小写字母、数字、部分符号。非常不方便注册账户和记忆密码。所以决定关闭这一验证。

gitea中控制密码复杂度的配置是 PASSWORD_COMPLEXITY ,其有5个可选的值,这5个值分别为

  • lower : 密码中必须含有小写字母
  • upper : 密码中必须含有大写字母
  • digit : 密码中必须含有数字
  • spec :密码中必须含有符号
  • off : 关闭密码校验

如果需要启用多个密码复杂度强制验证要求,则每个值之间使用’,‘逗号隔开。如 PASSWORD_COMPLEXITY = lower,upper,digit,spec 将会同时启用小写检查、大写检查、数字检查、符号检查。

要禁用此密码复杂度校验,则需在配置文件内加入 PASSWORD_COMPLEXITY = off 即可关闭此复杂度校验。

强制使用ssh://链接格式

因为使用ssh是非默认端口,但是,scp样式的 user@host:path/ 不支持设置ssh端口,所以需要使用 ssh://user@host:port/path/ 这种ssh链接格式来克隆

在配置文件中,可以将 USE_COMPAT_SSH_URI 的值设置为true,可以强制gitea使用ssh://样式来显示克隆url

1
USE_COMPAT_SSH_URI = true

就像这样

一些资料

此处记载着一些配置过程中查找到的部分资料。供由参考

gitea官方文档 从二进制安装
https://docs.gitea.io/zh-cn/install-from-binary/
gitea官方下载页面(截止至2020年7月11日)
https://dl.gitea.io/gitea
gitea官方文档 反向代理
https://docs.gitea.io/zh-cn/reverse-proxies/
gitea官方文档 自定义gitea配置
https://docs.gitea.io/zh-cn/customizing-gitea/
gitea官方文档 配置说明
https://docs.gitea.io/zh-cn/config-cheat-sheet/
gitea配置文件模板[en]
https://github.com/go-gitea/gitea/blob/master/custom/conf/app.example.ini