搭建、配置gitea代码自托管平台
文章目录
开始
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的用户,并根据文档下载可执行二进制文件。
|
|
配置postgreSQL数据库
上一篇博客有简单说明postgreSQL的安装,这里不再累述,此处仅仅记录一下数据库创建。
|
|
通过安装页面配置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配置文件中加上以下代码
|
|
并在编辑gitea的配置文件,在其中加上
|
|
最后,重启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
|
|
就像这样
一些资料
此处记载着一些配置过程中查找到的部分资料。供由参考
- 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
文章作者 crimsonote
上次更新 2020-07-11