安装部署gitea

news/发布时间2024/5/17 0:05:00

gitea介绍

官网

https://about.gitea.cn/

最近发现gitea的官网发生了变化,也不知道什么时候改了,之前的域名是gitea.io的,但是现在会跳转到about.gitea.cn域名上

可能是商业化了吧,但这也并不意味着 Gitea 就变成了商业软件。

Gitea 目前仍然是一个完全免费且开源的项目,任何人都可以自由地下载、使用、修改和分发。

Gitea 的源代码仍然托管在 GitHub 上,任何人都可以参与项目的开发和维护。

商业化应该也是为了确保 Gitea 项目的长期稳定发展和持续改进。


代码仓库 https://github.com/go-gitea/gitea

介绍

官网上说 “Gitea 是一个轻量级全功能的 DevSecOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。”

这也正是很多人选择的原因

Gitea 是一款使用 Golang 编写的可自运营的代码管理工具。

在这个领域,名气最响的应该是 Gitlab。

但实际使用中Gitlab也有点问题,首先就是资源占用。Gitlab 是使用 ruby 编写的,好几年之前刚出来的时候,一台1G内存的虚拟主机连安装运行都做不到,着实震惊。

时至今日都已经发展到了以docker镜像分发,gitlab 仍旧会有体积和运行时资源占用的问题。

另一点就是功能,对于一般标准团队来说,gitlab的功能太过于丰富,这是往好的地方说,往坏的地方说就是它包含了太多不需要的东西,而这些东西还占用磁盘和运行时资源。

当我们只是需要它具有版本管理的功能的时候,gitlab就太重了,所以很多开发在开发的时候会选择gitea这类非常轻量化的代码仓库

而且从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。

包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。

Gitea 最初是从 Gogs 分支而来,目前几乎所有代码都已更改。

功能特性

  • 代码托管:Gitea⽀持创建和管理仓库、浏览提交历史和代码⽂件、审查和合并代码提交、管理协作者、管理分⽀等。它还⽀持许多常见的Git特性,⽐如标签、Cherry-pick、hook、集成协作⼯具等。

  • 轻量级和快速: Gitea 的设计目标之一就是轻量级和快速响应。它不像一些大型的代码托管平台那样臃肿,因此在性能方面表现出色,适用于资源有限的服务器环境。由于其轻量级设计,Gitea 在资源消耗方面相对较低,可以在资源有限的环境下运行良好。

  • 易于部署和维护: 轻松地部署在各种服务器上,不需要复杂的配置和依赖。这使得个人开发者或小团队可以方便地设置和管理自己的 Git 服务。

  • 安全性: Gitea 注重安全性,提供了用户权限管理、访问控制列表等功能,可以确保代码和数据的安全性。

  • 代码评审:代码评审同时支持 Pull Request workflow 和 AGit workflow。评审⼈可以在线浏览代码,并提交评审意见或问题。 提交者可以接收到评审意见,并在线回 复或修改代码。代码评审可以帮助用户和企业提⾼代码质量。

  • CI/CD: Gitea Actions⽀持 CI/CD 功能,该功能兼容 GitHub Actions,⽤⼾可以采用熟悉的YAML格式编写workflows,也可以重⽤⼤量的已有的 Actions 插件。Actions 插件支持从任意的 Git 网站中下载。

  • 项目管理:Gitea 通过看板和⼯单来跟踪⼀个项⽬的需求,功能和bug。⼯单⽀持分支,标签、⾥程碑、 指派、时间跟踪、到期时间、依赖关系等功能。

  • 制品库: Gitea支持超过 20 种不同种类的公有或私有软件包管理,包括:Cargo, Chef, Composer, Conan, Conda, Container, Helm, Maven, npm, NuGet, Pub, PyPI, RubyGems, Vagrant等

  • 开源社区支持: Gitea 是一个基于 MIT 许可证的开源项目,Gitea 拥有一个活跃的开源社区,能够持续地进行开发和改进,同时也积极接受社区贡献,保持了平台的更新和创新。

  • 多语言支持: Gitea 提供多种语言界面,适应全球范围内的用户,促进了国际化和本地化。

更多功能特性:详见:https://docs.gitea.cn/installation/comparison#general-features

系统要求

  • 树莓派Pi3功能强大,足以运行 Gitea 来处理小型工作负载。
  • 对于小型团队/项目而言,2 个 CPU 内核和 1GB 内存通常就足够了。
  • 在 UNIX 系统上,Gitea 应使用专用的非 root 系统账户运行。
    • 注意:Gitea 管理 ~/.ssh/authorized_keys 文件。以普通用户身份运行 Gitea 可能会破坏该用户的登录能力。
  • Git 需要 2.0.0 或更高版本。
    • Git Large File Storage 如果启用,且 Git 版本大于等于 2.1.2,则该选项可用
    • 如果 Git 版本大于等于 2.18,将自动启用 Git 提交历史图形化展示功能

对比 Gitea 与其它 Git 托管工具

与其他代码仓库的对比可以参考官网的相关信息

https://docs.gitea.cn/installation/comparison#主要特性

安装部署

docker compose部署

环境

系统 docker版本 docker-compose版本 gitea版本 数据库
ubuntu 22.04 24.0.4 v2.19.1 1.21.1 mysql 8.0

docker compose资源清单文件

version: "3"networks:gitea:external: falseservices:server:image: gitea/gitea:1.21.1container_name: giteaenvironment:- USER_UID=1000- USER_GID=1000- GITEA__database__DB_TYPE=mysql- GITEA__database__HOST=db:3306- GITEA__database__NAME=gitea- GITEA__database__USER=gitea- GITEA__database__PASSWD=gitea# 一定要设置好下面的两个环境变量,如果不设置好,使用的时候可能ssh克隆的时候会有问题- SSH_PORT=20022- SSH_LISTEN_PORT=22# 设置应用程序名称,在页面标题中使用.- APP_NAME="这里是标题"restart: alwaysnetworks:- giteavolumes:- ./gitea:/data- /etc/timezone:/etc/timezone:ro- /etc/localtime:/etc/localtime:roports:- "30000:3000"- "20022:22"depends_on:- dbdb:image: mysql:8.0restart: alwaysenvironment:- MYSQL_ROOT_PASSWORD=gitea- MYSQL_USER=gitea- MYSQL_PASSWORD=gitea- MYSQL_DATABASE=giteanetworks:- giteacommand:- --default-authentication-plugin=mysql_native_password- --character-set-server=utf8- --collation-server=utf8_binvolumes:- ./mysql:/var/lib/mysql

这里需要注意的是设置环境变量
SSH_PORT 是克隆 URL 中显示的 SSH 端口。
SSH_LISTEN_PORT 内置 SSH 服务器的端口
建议最好明确指定,而且如果指定,必须两个同时指定
因为 SSH_PORT 的默认值是22 而 SSH_LISTEN_PORT 的默认值是 %(SSH_PORT)s
也就是引用的 SSH_PORT 的值
当然,也可以只指定 SSH_PORT,然后在端口映射的时候将映射的端口改成 容器内外的都是指定的 SSH_PORT 值

相关环境变量参数

可以通过环境变量配置 Gitea 的一些设置:

(默认值以粗体显示)

  • APP_NAME“Gitea: Git with a cup of tea”:应用程序名称,在页面标题中使用。
  • RUN_MODEprod:应用程序运行模式,会影响性能和调试。"dev","prod"或"test"。
  • DOMAINlocalhost:此服务器的域名,用于 Gitea UI 中显示的 http 克隆 URL。
  • SSH_DOMAINlocalhost:该服务器的域名,用于 Gitea UI 中显示的 ssh 克隆 URL。如果启用了安装页面,则 SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。
  • SSH_PORT22:克隆 URL 中显示的 SSH 端口。
  • SSH_LISTEN_PORT%(SSH_PORT)s:内置 SSH 服务器的端口。
  • DISABLE_SSHfalse:如果不可用,请禁用 SSH 功能。如果要禁用 SSH 功能,则在安装 Gitea 时应将 SSH 端口设置为 0。
  • HTTP_PORT3000:HTTP 监听端口。
  • ROOT_URL"":覆盖自动生成的公共 URL。如果内部 URL 和外部 URL 不匹配(例如在 Docker 中),这很有用。
  • LFS_START_SERVERfalse:启用 git-lfs 支持。
  • DB_TYPEsqlite3:正在使用的数据库类型[mysql,postgres,mssql,sqlite3]。
  • DB_HOSTlocalhost:3306:数据库主机地址和端口。
  • DB_NAMEgitea:数据库名称。
  • DB_USERroot:数据库用户名。
  • DB_PASSWD"empty" :数据库用户密码。如果您在密码中使用特殊字符,请使用“您的密码”进行引用。
  • INSTALL_LOCKfalse:禁止访问安装页面。
  • SECRET_KEY"" :全局密钥。这应该更改。如果它具有一个值并且 INSTALL_LOCK 为空,则 INSTALL_LOCK 将自动设置为 true。
  • DISABLE_REGISTRATIONfalse:禁用注册,之后只有管理员才能为用户创建帐户。
  • REQUIRE_SIGNIN_VIEWfalse:启用此选项可强制用户登录以查看任何页面。
  • USER_UID1000:在容器内运行 Gitea 的用户的 UID(Unix 用户 ID)。如果使用主机卷,则将其与 /data 卷的所有者的 UID 匹配(对于命名卷,则不需要这样做)。
  • USER_GID1000:在容器内运行 Gitea 的用户的 GID(Unix 组 ID)。如果使用主机卷,则将其与 /data 卷的所有者的 GID 匹配(对于命名卷,则不需要这样做)。

使用环境变量管理部署

上面的那些变量是可以直接引用的环境变量

但是并不全面,app.ini 中的任何设置都可以使用以下形式的环境变量进行设置或覆盖:GITEA__SECTION_NAME__KEY_NAME

每次 docker 容器启动时都会应用这些设置。

例如

app.ini 中数据库的配置上是

[database]
PATH = /data/gitea/gitea.db
DB_TYPE = mysql
HOST = db:3306
NAME = gitea
USER = gitea
PASSWD = gitea
LOG_SQL = false
SCHEMA = 
SSL_MODE = disable

那么我们的环境变量就可以配置成

...
services:server:environment:- GITEA__database__DB_TYPE=mysql- GITEA__database__HOST=db:3306- GITEA__database__NAME=gitea- GITEA__database__USER=gitea- GITEA__database__PASSWD=gitea

如果我们希望修改邮箱

app.ini 中邮箱的配置上是

[mailer]
ENABLED = true
SMTP_ADDR = smtp.xxx.com
SMTP_PORT = 465
FROM = xxx@xxx.com
USER = xxx@xxx.com
PASSWD = xxxxxxxxx

那么我们的yaml文件就可以写成

...
services:server:environment:- GITEA__mailer__SMTP_ADDR=smtp.xxx.com- GITEA__mailer__SMTP_PORT=465- GITEA__mailer__FROM=xxx@xxx.com- GITEA__mailer__USER=xxx@xxx.com- GITEA__mailer__PASSWD=xxxxxxxxx

Gitea 将为每次新安装自动生成新的 SECRET_KEY 并将它们写入 app.ini

如果您想手动设置 SECRET_KEY,您可以使用以下 docker 命令来使用 Gitea 内置的方法生成 SECRET_KEY

安装后请妥善保管您的 SECRET_KEY,如若丢失则无法解密已加密的数据。

以下命令将向 stdout 输出一个新的 SECRET_KEYINTERNAL_TOKEN,然后您可以将其放入环境变量中。

docker run -it --rm gitea/gitea:1.21.1 gitea generate secret SECRET_KEY
docker run -it --rm  gitea/gitea:1.21.1 gitea generate secret INTERNAL_TOKEN

设置成环境变量

...
services:server:environment:- GITEA__security__SECRET_KEY=[generate secret SECRET_KEY执行的返回值]- GITEA__security__INTERNAL_TOKEN=[generate secret INTERNAL_TOKEN 执行的返回值]

运行

docker compose up -d

二进制方式安装

前提是需要准备好数据库 需要准备好数据库以及创建拥有权限的用户

所有打包的二进制程序均包含 SQLite,MySQL 和 PostgreSQL 的数据库连接支持,同时网站的静态资源均已嵌入到可执行程序中,这一点和曾经的 Gogs 有所不同。

下载

https://dl.gitea.com/gitea/

选择适合的版本

这里以64-bit 的 Intel/AMD 平台 的Linux为例

wget -O gitea https://dl.gitea.com/gitea/1.21.1/gitea-1.21.1-linux-amd64
chmod +x gitea

验证GPG签名

Gitea 对打包的二进制文件使用 GPG密钥 签名以防止篡改。 请根据对应文件名 .asc 中包含的校验码检验文件的一致性。

gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-1.21.1-linux-amd64.asc gitea-1.21.1-linux-amd64

校验正确时的信息为 Good signature from "Teabot <teabot@gitea.io>"

校验错误时的信息为 This key is not certified with a trusted signature!

准备环境

检查是否安装 Git。要求 Git 版本 >= 2.0

git --version

创建用户(推荐使用名称 git

# On Ubuntu/Debian:
adduser \--system \--shell /bin/bash \--gecos 'Git Version Control' \--group \--disabled-password \--home /home/git \git# On Fedora/RHEL/CentOS:
groupadd --system git
adduser \--system \--shell /bin/bash \--comment 'Git Version Control' \--gid git \--home-dir /home/git \--create-home \git

创建工作路径

mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea

注意: 为了让 Web 安装程序可以写入配置文件,我们临时为 /etc/gitea 路径授予了组外用户 git 写入权限。建议在安装结束后将配置文件的权限设置为只读。

chmod 750 /etc/gitea
chmod 640 /etc/gitea/app.ini

如果不希望通过 Web 安装程序创建配置文件,可以将配置文件设置为仅供 Gitea 用户只读( owner/group root:git, mode 0640)并手工创建配置文件:

  • 设置 INSTALL_LOCK=true 关闭安装界面
  • 手动配置数据库连接参数
  • 使用 gitea generate secret 创建 SECRET_KEYINTERNAL_TOKEN
  • 提供所有必要的密钥

获取密钥的方式可以参考官方文档的命令

https://docs.gitea.cn/administration/command-line/#generate

配置 Gitea 工作路径

提示: 如果使用 Systemd 管理 Gitea 的 Linux 服务,你可以采用 WorkingDirectory 参数来配置工作路径。 否则,使用环境变量 GITEA_WORK_DIR 来明确指出程序工作和数据存放路径。

export GITEA_WORK_DIR=/var/lib/gitea/

复制二进制文件到全局位置

cp gitea /usr/local/bin/gitea

添加 bash/zsh 自动补全(从 1.19 版本开始)

可以在 contrib/autocompletion/bash_autocomplete 找到启用 bash 自动补全的脚本。可以将其复制到 /usr/share/bash-completion/completions/gitea,或在 .bashrc 中引用。

同样地,zsh 自动补全的脚本可以在 contrib/autocompletion/zsh_autocomplete 找到。您可以将其复制到 /usr/share/zsh/_gitea,或在您的 .zshrc 中引用。

运行 Gitea

1. 创建服务自动启动 Gitea(推荐)

使用systemd 管理

2. 通过命令行终端运行

GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini

安装界面

这里以docker compose部署的为例

访问 本机的30000端口,因为映射的端口是30000

设置数据库

不要修改,因为这些参数是在docker compose资源清单文件中设置的,数据库初始化就是新建的这个用户和密码

如果修改了,也需要在mysql数据库中新建对应的用户并给权限

参考命令

SET old_passwords=0;
-- 创建用户
CREATE USER 'gitea'@'192.0.2.10' IDENTIFIED BY 'gitea';-- 创建数据库
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';-- 授权
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'192.0.2.10';
FLUSH PRIVILEGES;

设置网站相关

这里端口部分一定不要改动,因为在容器的映射端口已经设置好了,在这里改动,就无法正常访问了,所以如果是容器部署的话,这里的端口一定不要动

邮箱部分的配置

其他的一些配置

管理员账号的设置

注意这里不能使用admin账户,会提示禁止使用

最后点击立即安装



界面

首页

登录后的首页

后台管理页

个人主页

swagger API的页面

需要访问 /api/swagger 例如我这里 http://10.0.0.200:30000/api/swagger

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/00768063.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Vulnhub之DarkHole_1

DarkHole_1一 信息收集IP扫描端口扫描访问80目录扫描查看目录80网页 -->login 注册用户我的 id 是 2,那么应该有个账号是 id=1,尝试越权修改 id=1 的密码把id改为1发现登陆成功,多了一个上传文件的地方,前面的目录扫描中我们也发现了 /upload 路径,尝试上传反弹 sh…

R:共现网络图例绘制

# 清除所有变量 rm(list = ls()) # 设置工作目录 setwd("C:\\Users\\Administrator\\Desktop\\新建文件夹\\Co-occurrence Network\\图例") # 载入ggplot2包 library(ggplot2)# 创建一个数据框,包含您想要在图例中展示的颜色和类别 # 确保Category是按照正确的顺序设…

【运维必看】Linux命令之lsblk命令

一、命令简介 lsblk命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,CD-ROM等等。lsblk命令包含util-linux中。通过yum provides lsblk命令查看命令对应的软件包。不通的版本…

图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制

作为大多数图数据库性能测试标配的 LDBC SNB 它是如何保障不同系统环境之间的测评比较公平且基准测试结果可重复的呢?本文从数据和 Schema 生成入手同你讲解它的原理。LDBC(Linked Data Benchmark Council)Social Network Benchmark,简称 LDBC SNB,是一种针对社交网络场景…

Zerto 10.0 U2 下载 - 适用于本地、混合和多云环境的灾难恢复和数据保护

Zerto 10.0 U2 下载 - 适用于本地、混合和多云环境的灾难恢复和数据保护Zerto 10.0 U2 下载 - 适用于本地、混合和多云环境的灾难恢复和数据保护 勒索软件防护、灾难恢复和多云移动性的统一解决方案 请访问原文链接:https://sysin.org/blog/zerto-10/,查看最新版。原创作品,…

发布DDD脚手架到Maven仓库,IntelliJ IDEA 配置一下即可使用

作者:小傅哥 博客:https://bugstack.cn 项目:https://gaga.plus沉淀、分享、成长,让自己和他人都能有所收获!😄大家好,我是技术UP主,小傅哥。 这篇文章将帮助粉丝伙伴们更高效地利用小傅哥构建的DDD(领域驱动设计)脚手架,搭建工程项目,增强使用的便捷性。让👬�…