前进笔记

Gitea部署私有Git服务器

CloverGit演绎作品
参考链接
转载时须注明出处及本声明

Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可发布,通过二进制文件独立分发,可以运行在任何 Go 能够编译的平台:Windows,macOS,Linux,ARM,Mips 。Gitea的最低配置要求很低,甚至可以在树莓派上轻松上运行,此外Gitea还添加了 PWA 支持,你可以把它作为一个应用添加到桌面,最重要的是,Gitea还是开源的,并且还加入了中文本地化支持!官方中文文档


Gitea有Docker,二进制,Service等安装方式,本例中采用二进制,因为是自建小型低功耗服务器,用路由器的的电源供电,Docker消耗资源多,这个方式略耗电(小声)。

安装

基于二进制安装非常简单
前往下载页面,在master分支下,寻找对应平台,并复制下载链接,执行以下命令即可,这里以Ubuntu19.04为例,程序安装路径为 ~/.gitea

mkdir .gitea&&cd .gitea
wget -O gitea https://dl.gitea.io/gitea/master/gitea-master-linux-amd64
chmod +x gitea

在执行了以上步骤之后,你将会获得 Gitea 的可执行文件,部署在机器上之前需要先运行并配置相关信息。

./gitea web

运行 Gitea 之后,必须配置要使用的数据库,相关文件路径,管理员账户等。
Gitea默认访问端口为3000,在安全组放行端口后访问

http://localhost:3000 

点击右上角注册,会要求填写相关配置信息

数据库设置按自己的修改
下面的内容都有相关说明,这里就不多加解释

需要注意的是,基本URL 应当正确设置为最终实际访问地址,即:

 http://你的域名:端口号

 https://你的域名( https访问,这里我设置反向代理,代理后端仍然设置 localhost:监听端口 )

第一次安装时我打算设置反向代理, 偷懒就没改,结果在配置 OAuth 登录时不断出现500错误,后来发现回传地址出现了localhost,便把配置文件删了重新配置,问题解决。如果配置错了那就打开 app.ini 修改 ROOT_URL 或者直接把 app.ini 删掉重新配置就可以了。

Gitea的配置很简单,除了修改下数据库信息基本就不需要什么修改了。
配置完毕后安装,没有错误的话,稍等一会在执行完后,就会跳出登录页面,这时你可以返回控制台 Ctrl + C 关掉程序。
此时,Gitea已经完成配置,第一个注册的用户默认为管理员。

配置自启动服务

以 Ubuntu 19.04 为例,以 service 方式运行

systemd 方式

在 terminal 中执行以下命令:

sudo vim /etc/systemd/system/gitea.service

接着将示例代码 gitea.service 粘贴进去

大约在第9行左右,将需要运行在主机上的服务的取消注释,如 Requires=mysqld.service
再到底部找到并修改 User,Group,WorkingDirectory以及其他的初始化参数

User,Group:运行 Systemd 的用户及其群组,与 web 配置保持相同
WorkingDirectory:Systemd的工作目录
ExecStart:要执行的命令,如果你的 gitea 可执行文件不在 /usr/local/bin/gitea 你可以复制过去也可以修改这个路径,后面的 web --config /etc/gitea/app.ini 是默认执行参数及配置文件位置
Environment=USER:运行 Gitea 的用户
HOME:该用户的Home目录位置
GITEA_WORK_DIR:Gitea 的工作目录

如果使用自定义端口,则需修改 PORT 参数,反之如果使用默认端口则需删除 -p 标记。
有关此部分内容可以搜索关键词 systemd写法

激活 gitea 并将它作为系统自启动服务:

sudo systemctl enable gitea
sudo systemctl start gitea
supervisor 方式

使用 supervisor
在 terminal 中执行以下命令安装 supervisor:

sudo apt install supervisor

为 supervisor 配置日志路径:

mkdir /home/git/gitea/log/supervisor

在文件编辑器中打开 supervisor 的配置文件:

sudo vim /etc/supervisor/supervisord.conf

增加如下示例配置 supervisord config

将 user(git) 和 home(/home/git) 设置为与上文部署中匹配的值。如果使用自定义端口,则需修改 PORT 参数,反之如果使用默认端口则需删除 -p 标记。

最后激活 supervisor 并将它作为系统自启动服务:

sudo systemctl enable supervisor
sudo systemctl start supervisor

以上2种方式的配置对环境变量的修改参照环境变量清单,systemd方式可参考这里

贴上修改部分

RestartSec=2s
Type=simple
User=clovergit
Group=clovergit 
WorkingDirectory=/home/clovergit/.gitea/
ExecStart=/home/clovergit/.gitea/gitea web --config /home/clovergit/.gitea/custom/conf/app.ini
Restart=always
Environment=USER=clovergit HOME=/home/clovergit GITEA_WORK_DIR=/home/clovergit/.gitea/

自定义Gitea配置

Gitea配置文件位于
安装目录 /custom/conf/app.ini
详见配置说明完整说明

在 custom/public/ 中可以存放你的自定义文件(如图片,页面),比如将 robots.txt 放在该目录下,供搜索引擎爬虫使用。
另外,在此文件夹下的资源文件可以覆盖原文件,可以修改网站LOGO,登录页面等,也可以在新建一个页面,比如修改网站logo只需把logo放在 custom/public/img/favicon.ico(png)
至于文件路径结构,使用浏览器F12功能查看

在 custom/templates/ 可以修改默认模板,比如说要插入统计代码,在 custom/templates/custom/header.tmpl 更改即可,详见自定义模板

设置默认 Web 钩子

当某些 Gitea 事件触发时, Web 钩子会自动向服务器发出 HTTP POST 请求。管理后台中的 Web 钩子设置是全局默认值, 所有新建仓库将会采用此默认 Web 钩子。
Gitea 支持的 Web 钩子也有不少,还添加了钉钉和飞书的支持

以Telegram bot 为例
  1. 登录管理员账户,打开管理后台 > 默认Web钩子 > 添加 Web 钩子 > 下拉框选择 Telegram
  2. 前往 Bot Father 注册一个机器人
  3. 将得到的 Token 和聊天 ID 输入配置
  4. 设置好触发条件,添加即可

由于众所周知的原因且正处特殊时期,我无法访问相关页面,建议参考 将机器人连接到 Telegram
钉钉则要在钉钉开发平台注册账号调用相关API,因为疫情天天在钉钉上网课,所以我很不愿意使用钉钉,飞书我暂时还没有尝试过

接入第三方登录

Gitea 的认证源是个很便利的功能,这里只详细讲 OAuth ,配置完 OAuth 后你可以接入并使用很多第三方账号来登录,如Github,Google,Gitea等。

以 Github 为例
  1. 登录管理员账户,打开管理后台 > 认证源 > 添加认证源
  2. 认证类型下拉框选择 OAuth2
  3. 自定义一个名称,在回调地址中会用到
  4. 选择 OAuth2 提供程序 ,也就是要接入的第三方
  5. 拉到最底部,下面提供了 OAuth2 提供程序的注册地址
  6. 登陆你的Github并打开注册地址
  7. 前面3项不重要,就是填写应用信息,登陆时显示,回调地址务必填写正确,应设为

    <基本URL>/user/oauth2/<Gitea里设置的应用名>/callback
  8. 注册后Github会给你 Client ID 和 Client Secret ,分别粘贴到认证源选项的 客户端 ID 和 客户端密钥 ,添加即可


如果登录出现500错误,请检查错误链接中的提示,一般是回调地址错误导致的
你能在 Github > Settings > Developer settings > OAuth Apps 中对认证源进行更多配置

卸载Gitea

把安装的过程反过来即可

systemd方式
#停止服务
sudo systemctl stop gitea
#禁用gitea自启
sudo systemctl disable gitea
#删掉的配置
sudo rm /etc/systemd/system/gitea.service
#删除安装目录,包括配置,日志等⚠️
rm -rf ~/.gitea
#删除仓库目录⚠️
rm -rf ~/gitea-repositories
supervisor方式
#停止服务
sudo systemctl stop supervisor
#删掉的配置
sudo vim /etc/supervisor/supervisord.conf
#禁用supervisor自启
sudo systemctl disable supervisor
#删除安装目录,包括配置,日志等⚠️
rm -rf ~/.gitea
#删除仓库目录⚠️
rm -rf ~/gitea-repositories

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »