
拥有一个自己的代码托管平台
gitea是什么?
关于Gitea
Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。
为什么要选择gitea?
代码托管: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 提供多种语言界面,适应全球范围内的用户,促进了国际化和本地化。
对我来说,选择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 提交历史图形化展示功能
浏览器支持
Last 2 versions of Chrome, Firefox, Safari and Edge
Firefox ESR
技术栈
安装gitea
数据库准备
在使用 Gitea 前,您需要准备一个数据库。Gitea 支持 PostgreSQL(>= 12)、MySQL(>= 8.0)、MariaDB(>= 10.4)、SQLite(内置) 和 MSSQL(>= 2012 SP4)这几种数据库。本页将指导您准备数据库。由于 PostgreSQL 和 MySQL 在生产环境中被广泛使用,因此本文档将仅涵盖这两种数据库。如果您计划使用 SQLite,则可以忽略本章内容。
数据库实例可以与 Gitea 实例在相同机器上(本地数据库),也可以与 Gitea 实例在不同机器上(远程数据库)。
注意:以下所有步骤要求您的选择的数据库引擎已安装在您的系统上。对于远程数据库设置,请在数据库实例上安装服务器应用程序,在 Gitea 服务器上安装客户端程序。客户端程序用于测试 Gitea 服务器与数据库之间的连接,而 Gitea 本身使用 Go 提供的数据库驱动程序完成相同的任务。此外,请确保服务器和客户端使用相同的引擎版本,以使某些引擎功能正常工作。出于安全原因,请使用安全密码保护 root
(MySQL)或 postgres
(PostgreSQL)数据库超级用户。以下步骤假设您在数据库和 Gitea 服务器上都使用 Linux。
docker安装(个人认为最方便)
Gitea 在其 Docker Hub 组织内提供自动更新的 Docker 镜像。可以始终使用最新的稳定标签或使用其他服务来更新 Docker 镜像。
该参考设置指导用户完成基于 docker-compose
的设置,但是 docker-compose
的安装不在本文档的范围之内。要安装 docker-compose
本身,请遵循官方安装说明。
基本
最简单的设置只是创建一个卷和一个网络,然后将 gitea/gitea:latest
镜像作为服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。创建一个类似 gitea
的目录,并将以下内容粘贴到名为 docker-compose.yml
的文件中。请注意,该卷应由配置文件中指定的 UID/GID 的用户/组拥有。如果您不授予卷正确的权限,则容器可能无法启动。另请注意,标签 :latest
将安装当前的开发版本。对于稳定的发行版,您可以使用 :1
或指定某个发行版,例如 1.22.3
。
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.22.3
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
端口
要将集成的 openSSH 守护进程和 Web 服务器绑定到其他端口,请调整端口部分。通常,只需更改主机端口,容器内的端口保持原样即可。
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.22.3
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- - "3000:3000"
- - "222:22"
+ - "8080:3000"
+ - "2221:22"
数据库
MySQL 数据库
要将 Gitea 与 MySQL 数据库结合使用,请将这些更改应用于上面创建的 docker-compose.yml
文件。
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.22.3
container_name: gitea
environment:
- 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
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
+ depends_on:
+ - db
+
+ db:
+ image: mysql:8
+ restart: always
+ environment:
+ - MYSQL_ROOT_PASSWORD=gitea
+ - MYSQL_USER=gitea
+ - MYSQL_PASSWORD=gitea
+ - MYSQL_DATABASE=gitea
+ networks:
+ - gitea
+ volumes:
+ - ./mysql:/var/lib/mysql
PostgreSQL 数据库
要将 Gitea 与 PostgreSQL 数据库结合使用,请将这些更改应用于上面创建的 docker-compose.yml
文件。
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.22.3
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
+ - GITEA__database__DB_TYPE=postgres
+ - GITEA__database__HOST=db:5432
+ - GITEA__database__NAME=gitea
+ - GITEA__database__USER=gitea
+ - GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
+ depends_on:
+ - db
+
+ db:
+ image: postgres:14
+ restart: always
+ environment:
+ - POSTGRES_USER=gitea
+ - POSTGRES_PASSWORD=gitea
+ - POSTGRES_DB=gitea
+ networks:
+ - gitea
+ volumes:
+ - ./postgres:/var/lib/postgresql/data
命名卷
要使用命名卷而不是主机卷,请在 docker-compose.yml
配置中定义并使用命名卷。此更改将自动创建所需的卷。您无需担心命名卷的权限;Docker 将自动处理该问题。
version: "3"
networks:
gitea:
external: false
+volumes:
+ gitea:
+ driver: local
+
services:
server:
image: gitea/gitea:1.22.3
container_name: gitea
restart: always
networks:
- gitea
volumes:
- - ./gitea:/data
+ - gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
MySQL 或 PostgreSQL 容器将需要分别创建。
启动
要基于 docker-compose
启动此设置,请执行 docker-compose up -d
,以在后台启动 Gitea。使用 docker-compose ps
将显示 Gitea 是否正确启动。可以使用 docker-compose logs
查看日志。
要关闭设置,请执行 docker-compose down
。这将停止并杀死容器。这些卷将仍然存在。
注意:如果在 http 上使用非 3000 端口,请更改 app.ini 以匹配 LOCAL_ROOT_URL = http://localhost:3000/
。
安装
通过 docker-compose
启动 Docker 安装后,应该可以使用喜欢的浏览器访问 Gitea,以完成安装。访问 http://server-ip:3000 并遵循安装向导。如果数据库是通过上述 docker-compose
设置启动的,请注意,必须将 db
用作数据库主机名。
环境变量
您可以通过环境变量配置 Gitea 的一些设置:
(默认值以粗体显示)
APP_NAME
:“Gitea: Git with a cup of tea”:应用程序名称,在页面标题中使用。RUN_MODE
:prod:应用程序运行模式,会影响性能和调试。"dev","prod"或"test"。DOMAIN
:localhost:此服务器的域名,用于 Gitea UI 中显示的 http 克隆 URL。SSH_DOMAIN
:localhost:该服务器的域名,用于 Gitea UI 中显示的 ssh 克隆 URL。如果启用了安装页面,则 SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。SSH_PORT
:22:克隆 URL 中显示的 SSH 端口。SSH_LISTEN_PORT
:%(SSH_PORT)s:内置 SSH 服务器的端口。DISABLE_SSH
:false:如果不可用,请禁用 SSH 功能。如果要禁用 SSH 功能,则在安装 Gitea 时应将 SSH 端口设置为0
。HTTP_PORT
:3000:HTTP 监听端口。ROOT_URL
:"":覆盖自动生成的公共 URL。如果内部 URL 和外部 URL 不匹配(例如在 Docker 中),这很有用。LFS_START_SERVER
:false:启用 git-lfs 支持。DB_TYPE
:sqlite3:正在使用的数据库类型[mysql,postgres,mssql,sqlite3]。DB_HOST
:localhost:3306:数据库主机地址和端口。DB_NAME
:gitea:数据库名称。DB_USER
:root:数据库用户名。DB_PASSWD
:"empty" :数据库用户密码。如果您在密码中使用特殊字符,请使用“您的密码”进行引用。INSTALL_LOCK
:false:禁止访问安装页面。SECRET_KEY
:"" :全局密钥。这应该更改。如果它具有一个值并且INSTALL_LOCK
为空,则INSTALL_LOCK
将自动设置为true
。DISABLE_REGISTRATION
:false:禁用注册,之后只有管理员才能为用户创建帐户。REQUIRE_SIGNIN_VIEW
:false:启用此选项可强制用户登录以查看任何页面。USER_UID
:1000:在容器内运行 Gitea 的用户的 UID(Unix 用户 ID)。如果使用主机卷,则将其与/data
卷的所有者的 UID 匹配(对于命名卷,则不需要这样做)。USER_GID
:1000:在容器内运行 Gitea 的用户的 GID(Unix 组 ID)。如果使用主机卷,则将其与/data
卷的所有者的 GID 匹配(对于命名卷,则不需要这样做)。