1.Gitea简介
Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来,几乎所有代码都已更改。自建的Git仓库约等于Github等,只不过它完全掌握在自己手中。
2.Gitea的安装
安装前提:
1.已经安装好docker和docker compose,请参看我的博文 docker系列-docker与docker compose安装
2.服务器最低配置:2 个 CPU 内核和 1GB 内存
建议:
1.将所有docker项目放在统一目录下 /root/data/docker_data/,方面后期管理与维护(root安装)
2.将所有docker项目放在统一目录下 ~/docker_data/,方面后期管理与维护(rootless安装)
3.添加SWAP虚拟内存,请参看我的博文 添加 SWAP 虚拟内存
注意:
1.本文除了2.2小节外其余均以root安装方式演示,如果使用rootless安装,请自行修改相关目录,并且在执行docker命令时需要加上sudo
参考博文:
2.1 以root安装Gitea
2.1.1 创建安装目录
mkdir -p /root/data/docker_data/gitea2.1.2 创建docker-compose.yaml文件并上传至服务器
上传 docker-compose.yaml 文件到gitea目录下,docker-compose.yaml 文件内容如下:
注意:凡是密码都应该自行修改
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
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 #数据库的root密码
- MYSQL_USER=gitea #数据库用户名
- MYSQL_PASSWORD=gitea #数据库用户名为gitea的密码
- MYSQL_DATABASE=gitea #数据库名
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql2.2 以rootless安装Gitea
2.2.1 创建普通用户和所需目录
1.使用如下命令创建一个普通用户sqwfly(需要登录root创建)
adduser sqwfly
#创建过程会提示你输入密码
Adding user `sqwfly' ...
Adding new group `sqwfly' (1000) ...
Adding new user `sqwfly' (1000) with group `sqwfly' ...
Creating home directory `/home/sqwfly' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for sqwfly
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y2.输入如下指令,将用户名添加到sudoers文件,这样才可以使用sudo命令,否则报错:
sqwfly is not in the sudoers file. This incident will be reported.
adduser sqwfly sudo
#执行过程
Adding user `sqwfly' to group `sudo' ...
Adding user sqwfly to group sudo
Done.切换至sqwfly用户
su sqwfly
#进入自己的家目录
cd ~创建所需目录与文件并赋予相应权限
mkdir -p ~/docker_data/gitea/{data,config}
cd ~/docker_data/gitea
sudo chown 1000:1000 config/ data/2.2.2 创建docker-compose.yaml文件并上传至服务器
上传 docker-compose.yaml 文件到gitea目录下,docker-compose.yaml 文件内容如下:
注意:凡是密码都应该自行修改
version: "2"
services:
server:
image: gitea/gitea:1.21.4-rootless
environment:
- GITEA__database__DB_TYPE=mysql #数据库类型
- GITEA__database__HOST=db:3306 #数据库端口
- GITEA__database__NAME=gitea #数据库名
- GITEA__database__USER=gitea #数据库的用户名
- GITEA__database__PASSWD=gitea #用户名密码
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /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 #数据库的root密码
- MYSQL_USER=gitea #数据库用户名
- MYSQL_PASSWORD=gitea #数据库用户名为gitea的密码
- MYSQL_DATABASE=gitea #数据库名
volumes:
- ./mysql:/var/lib/mysql2.3 Gitea的部署
查看3000端口有没有被占用,使用lsof命令前需要先安装
Centos安装命令:
yum install lsofUbuntu安装命令:
apt-get install lsof然后执行如下命令:
lsof -i:3000没有占用,进入gitea目录下进行部署即可,若被占用可以更换为其它未被占用的端口,之后执行如下命令进行部署:
cd /root/data/docker_data/gitea
docker compose up -d部署成功之后访问 http://ip:3000 ,出现如下设置页面,如果访问失败,请去服务器的运营商后台检查 3000 端口是否开放,一些内容根据 docker-compose.yml 文件自动填充。

服务器域名和基础URL会自动获取服务器的ip地址进行填充,如果设置了域名解析则会填充为域名,注意SSH服务端口为 222,同样与 docker-compose.yaml 文件中的内容对应,如果不是请自行修改。

一些可选配置也建议进行配置,配置SMTP可以用其他用户注册时的邮箱验证
关于SMTP密码的获取请参看我的博文 2.3 开启邮箱的SMTP服务

建议勾选 启用页面访问限制,这样只有注册登录用户才能查看相关仓库

管理员账号设置可选,第一个注册的用户默认为管理员

如果后期还需要修改某些配置,可以修改 /root/data/docker_data/gitea/gitea/gitea/conf/app.ini 文件
例如修改SSH的监听端口为 222
vim /root/data/docker_data/gitea/gitea/gitea/conf/app.ini
修改配置之后需要重启容器才能生效
docker compose restart接下来就是配置SSH以实现免密连接自建的git仓库
参看我的博文 3.2 Git配置的实际操作流程
3.Gitea的基本使用
和github大同小异
4.Gitea的升级与更新
# 方式一
cd /root/data/docker_data/gitea
docker compose down --rmi all # 停止容器运行并删除相关镜像
vim docker-compose.yml # 修改gitea镜像的版本为最新,如果是latest版本此步可以忽略
docker compose up -d
# 方式二
cd /root/data/docker_data/gitea
docker compose down # 停止容器运行
vim docker-compose.yml # 修改gitea镜像的版本为最新,如果是latest版本此步可以忽略
docker compose pull # 重新拉取镜像
docker compose up -d5.Gitea的卸载
cd /root/data/docker_data/gitea
docker compose down --rmi all # 停止容器运行并删除相关镜像
cd ..
rm -rf /root/data/docker_data/gitea # 完全删除
评论区