Gitea
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证.
简介
Gitea 是一个自己托管的Git服务程序。他和GitHub, Bitbucket or Gitlab等比较类似。他是从 Gogs 发展而来,不过已经Fork并且命名为Gitea。
Gitea的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了x86,amd64,还包括 ARM 和 PowerPC。
功能特性
- 支持活动时间线
- 支持 SSH 以及 HTTP/HTTPS 协议
- 支持 SMTP、LDAP 和反向代理的用户认证
- 支持反向代理子路径
- 支持用户、组织和仓库管理系统
- 支持添加和删除仓库协作者
- 支持仓库和组织级别 Web 钩子(包括 Slack 集成)
- 支持仓库 Git 钩子和部署密钥
- 支持仓库工单(Issue)、合并请求(Pull Request)以及 Wiki
- 支持迁移和镜像仓库以及它的 Wiki
- 支持在线编辑仓库文件和 Wiki
- 支持自定义源的 Gravatar 和 Federated Avatar
- 支持邮件服务
- 支持后台管理面板
- 支持 MySQL、PostgreSQL、SQLite3、MSSQL 和 TiDB(MySQL) 数据库
- 支持多语言本地化(21 种语言)
- 支持软件包注册中心(Composer/Conan/Container/Generic/Helm/Maven/NPM/Nuget/PyPI/RubyGems)
系统要求
- 最低的系统硬件要求为一个廉价的树莓派
- 如果用于团队项目,建议使用 2 核 CPU 及 1GB 内存
组件
- Web框架: Chi
- ORM: XORM
- UI 框架:
- jQuery
- Fomantic UI
- Vue2
- 更多组件参见 package.json
- 编辑器:
- 数据库驱动:
软件及服务支持
Drone (CI)
安装
从二进制安装 所有下载均包括 SQLite, MySQL 和 PostgreSQL 的支持,同时所有资源均已嵌入到可执行程序中,这一点和老版本有所不同。 基于二进制的安装非常简单,只要从 下载页面 选择对应平台,拷贝下载URL,执行以下命令即可(以Linux为例):
$ wget -O gitea https://dl.gitea.io/gitea/1.16.8/gitea-1.16.8-linux-amd64
$ chmod +x gitea
$ mv gitea /usr/local/bin/
测试
在执行了以上步骤之后,你将会获得 gitea
的二进制文件,在你复制到部署的机器之前可以先测试一下。在命令行执行完后,你可以 Ctrl + C
关掉程序。
$ ./gitea web
创建用户 git
和 gitea
相应权限的配置和存储目录。
$ sudo adduser git
$ adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
$ sudo mkdir /var/lib/gitea
$ sudo chown git:git /var/lib/gitea/
$ sudo mkdir /etc/gitea
$ sudo chown git:git /etc/gitea/
以服务方式运行
在 terminal 中执行以下命令:
$ sudo vim /etc/systemd/system/gitea.service
接着拷贝示例代码 gitea.service 并取消对任何需要运行在主机上的服务部分的注释,譬如 MySQL。
修改 user,home 目录以及其他必须的初始化参数,如果使用自定义端口,则需修改 PORT 参数,反之如果使用默认端口则需删除 -p 标记。
激活 gitea 并将它作为系统自启动服务:
$ sudo systemctl enable gitea
$ sudo systemctl start gitea
备份与恢复
# 备份 MySQL
mysqldump -u root --password='xxxxxx' giteadb > giteadb_bak.sql
# 恢复 MySQL
mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE < giteadb_bak.sql
# 备份并恢复 Gitea 数据
unzip gitea-dump-1610949662.zip
cd gitea-dump-1610949662
mv data/conf/app.ini /etc/gitea/conf/app.ini
mv data/* /var/lib/gitea/data/
mv log/* /var/lib/gitea/log/
mv repos/* /var/lib/gitea/repositories/
chown -R gitea:gitea /etc/gitea/conf/app.ini /var/lib/gitea
参考资料: https://docs.gitea.com/zh-cn/administration/backup-and-restore
GitLab
开始时想自建 GitLab 服务的,但是 GitLab 占用太多资,而Gitea 资源占用明显要低得多。
静态硬盘占用上,Gitea 核心是一个 100 MiB 上下的可执行文件,外加上作为必要依赖的 Git(如果内置 SQLite 不够的话也需要单独部署一个 MySQL 或者 PostgreSQL 做数据库),而 GitLab 光 Docker image 大小就 GiB 级了,断断续续跑了两天,这日志就快 200MiB 了……
内存方面,我这里 Gitea 日常占用内存通常在几百 MiB 浮动,而 GitLab 的 Docker 容器目前内存占用是 14GiB。
GitLab CPU 占用率(相对于一个核心计算)日常待机在 35% 上下,而 Gitea 通常是 0.2% 左右。(这些都是不严谨的简单测试,现在已经改用 Gitea,懒得折腾了。)
https://docs.gitlab.com/ee/update/package/#upgrade-using-a-manually-downloaded-package
https://packages.gitlab.com/gitlab/gitlab-ce
https://www.jb51.net/article/194092.htm
https://zhuanlan.zhihu.com/p/486410391