系列文章目录
git常用命令大锦囊
文章目录
前言
团队需要多人协作开发,gitee,github等仓库管理协作人数有限,因此自己搭建基于gitea的仓库私服(最开始使用gitlab,鉴于gitlab功能庞大,占用内存太高,于是换成gitea搭建)。
一、gitea安装
gitea是基于Golang开发的极易安装、运行快速、内存占用小的代码托管服务平台,下面展示基于Docker快速安装gitea。
1. 安装docker compose
由于官方使用
docker compose
来启动gitea,本环境只有docker,因此需要安装
docker compose plugin
插件来使用
docker compose
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}mkdir-p$DOCKER_CONFIG/cli-plugins
curl-SL https://github.com/docker/compose/releases/download/v2.19.0/docker-compose-linux-x86_64 -o$DOCKER_CONFIG/cli-plugins/docker-compose
docker compose
将会安装到
~/.docker/cli-plugins
,可自行替换。第三行的
v2.19.0
也是可以替换的,本文直接按照官网给的版本号安装。第三条命令可能因为外网问题执行不成功,可以先想办法下载下来文件,然后传到Linux上。
v2.19.0
版本可以从这个百度网盘取:
链接:https://pan.baidu.com/s/17-buewHwxMM5I2_awhuALQ
提取码:1234
安装完后赋予执行权限
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
执行完后在bash输入
docker compose version
出现如下内容即安装成功
官网内容点此:https://docs.docker.com/compose/install/linux/#install-the-plugin-manually
2. 安装gitea
找一个干净的目录如
/home/ubuntu/gitea
(将来该目录会存放gitea配置文件) 新建
docker-compose.yaml
文件,里边内容如下:
version:"3"networks:gitea:external:falseservices:server:image: gitea/gitea:1.19container_name: gitea
environment:- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=127.0.0.1:3306# 可以访问到的MySQL的ip和port- GITEA__database__NAME=giteadb # 给gitea用的数据库名,可自定义- GITEA__database__USER=gitea # 给gitea用的用户名,可自定义- GITEA__database__PASSWD=gitea # 给gitea用户的数据库密码,可自定义restart: always
networks:- gitea
volumes:- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:-"3000:3000"-"10022:22"# 将来22端口会映射到10022端口,10022端口可自定义
这里有一个小问题就是,你的数据库配置最好一开始就在
docker-compose.yaml
中定好,因为如果等gitea容器创建好了之后再修改
app.ini
配置文件,那么当容器重启的时候,他的配置项还是走的是
docker-compose.yaml
中的配置,所以修改配置的时候,记得把
docker-compose.yaml
中的配置也修改了。
先初始化MySQL,创建gitea需要的账号等。下面的这个ip根据自己的服务器定,也可修改为
%
让任何ip都可访问。
CREATE USER'gitea'@'192.0.2.10' IDENTIFIED BY 'gitea';# ip位置可以改为%,表示任何人都可以访问
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'192.0.2.10';# ip可改为%
FLUSH PRIVILEGES;
官网位置:https://docs.gitea.com/installation/database-prep#mysql
执行
docker compose up -d
即可安装gitea。
安装完后就会看到启动了一个docker
我们访问
IP:3000
端口即可看到如下引导页面。可以自己修改一些基础信息,然后点击立即安装即可。
随后就可以进入登录页面,我们自己注册一个账号使用了。
官网内容点此:https://docs.gitea.com/installation/install-with-docker
二、给gitea配置https访问
如不需要配置https可以跳过
首先我们需要准备一个域名和申请好的ssl证书,可以去云厂商自己申请免费证书
然后下载证书文件,本文讲解如何使用nginx代理gitea配置https。
首先把下载好的Nginx证书文件放到一个可以访问到的目录中
然后在nginx配置文件中配置
server {
listen 443 ssl;
server_name git.nideyuming.com;
ssl_certificate /etc/nginx/ssl/cert/git.nideyuming_nginx/git.nideyuming_bundle.pem;
ssl_certificate_key /etc/nginx/ssl/cert/git.nideyuming_nginx/git.nideyuming.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /{
proxy_pass http://127.0.0.1:3000;}}
server_name
位置放置你的域名
ssl_certificate
填写你的证书所在位置
ssl_certificate_key
填写你的证书密钥所在位置
location /
的位置是你要代理的地址
然后就可以开启https访问了。
三、gitea配置ssh方式拉取代码
注册登录进入gitea会发现页面十分简约,创建仓库的方式也是跟github等一样,我们首先创建一个仓库。
可以看到页面和gitee, github等都是类似的。下面我们绑定一个SSH公钥
具体如何生成参考SSH公钥生成方式
然后我们使用
git clone [email protected]:kylin/gitea-test.git
下载结果如下:
理论上来说我们绑定了ssh公钥,就不应该再去输入密码,因此我们需要调整。
我们在配置gitea的时候,把gitea的22端口映射到了物理机的10022端口,因此我们
git clone
的时候也应该去修改成10022端口,但是我们的gitea给我们自动显示的还是22默认端口,我们需要修改gitea的配置信息。
在
/home/ubuntu/gitea/gitea
文件中,我们映射了docker内部的
/data
目录,因此可以在
/home/ubuntu/gitea/gitea
中找配置文件:
/home/ubuntu/gitea/gitea/gitea/conf/app.ini
打开该文件内容如下:
在server配置中,我们需要把这里边的两个22改成我们自己定义的10022端口,然后重启gitea容器即可:
docker restart gitea
可以发现我们的ssh访问方式也加上了10022端口,再次测试:
发现这次访问我们没有输入密码,直接拉取成功。
四、给gitea配置可发送的邮箱
我们可以选择自己搭建属于自己的邮箱服务,也可以选择例如QQ邮箱,163邮箱的smtp服务来发送邮件。下面介绍如何给gitea绑定qq邮箱,其他邮箱同理。
登录邮箱,选择设置
然后点击账户列,会发现有一个
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
如果你的服务是关闭状态,记得开启一下,需要收验证码等操作。开启之后点击管理服务,页面如下:
点击生成授权码,会生成一串乱码,这一串乱码就是我们的密码,需要记住。
然后回到gitea的配置项中:
/home/ubuntu/gitea/gitea/gitea/conf/app.ini
, 找到
[mailer]
选项,按照下面的格式填写自己的内容,填写完成重启docker容器即可。
[mailer]
ENABLED =true
SMTP_ADDR = smtp.qq.com # 这里是固定的qq邮箱smtp地址
SMTP_PORT =465# 端口也固定
FROM [email protected] # 这里是你的QQ邮箱号[email protected] # 这里是你的QQ邮箱号
PASSWD = cnslgzhabcfededh # 这里是生成的授权码
MAILER_TYPE = smtp # 这里是固定的smtp
IS_TLS_ENABLED =true# 这里是固定的true
QQ邮箱官网说明:https://wx.mail.qq.com/list/readtemplate?name=app_intro.html#/agreement/authorizationCode
gitea官网说明:https://docs.gitea.com/administration/email-setup#using-smtp
下面我们可以到gitea测试一下
点击管理后台 -> 应用配置
我们可以在此填入一个正确的其他邮箱地址,来给这个邮箱发送测试内容,发送成功后,填写的邮箱会收到一个来自gitea的测试消息。
到此给gitea配置邮箱完成
五、gitea注册开启邮箱验证和邮箱通知
打开gitea配置文件
/home/ubuntu/gitea/gitea/gitea/conf/app.ini
, 把
REGISTER_EMAIL_CONFIRM
设置成true,这个是打开注册需要邮箱验证;把
ENABLE_NOTIFY_MAIL
设置成true,这个是开启邮箱通知。
[service]DISABLE_REGISTRATION=falseREQUIRE_SIGNIN_VIEW=falseREGISTER_EMAIL_CONFIRM=trueENABLE_NOTIFY_MAIL=trueALLOW_ONLY_EXTERNAL_REGISTRATION=falseENABLE_CAPTCHA=falseDEFAULT_KEEP_EMAIL_PRIVATE=falseDEFAULT_ALLOW_CREATE_ORGANIZATION=trueDEFAULT_ENABLE_TIMETRACKING=trueNO_REPLY_ADDRESS= noreply.localhost
随后重启gitea容器即可。
六、限制所有仓库只有登录后才能访问
我们搭建好gitea私服之后,如果是在公司内网,那么只能内部人访问,如果是在公有云服务器,任何人只要点击你搭建好的gitea私服首页的
探索
, 就会访问到私服里边的公开仓库
为了只允许有本公司账号的人登录进入查看,我们需要限制仓库只能登录后看到,找到gitea的配置文件
/home/ubuntu/gitea/gitea/gitea/conf/app.ini
,
[server]
中有一个
REQUIRE_SIGNIN_VIEW
字段,默认是
false
就是说不登录也可以查看,我们改为
true
,然后重启gitea容器即可。
改完重启后我们发现如果点击
探索
就会自动跳转到登录页。
同时为了进一步限制只有本公司的人查看,我们可以关闭gitea注册功能,然后谁需要账号,就用管理员账号给分配,如何关闭看下条。
七、关闭gitea的注册功能
为了防止不是本公司的人注册自己搭建的gitea私服,我们可以关闭gitea注册功能,改为使用管理员账号分配账号的形式。
gitea似乎并没有gitlab那样的开启注册完毕 需要审核的功能
配置文件中
DISABLE_REGISTRATION
字段就是禁用注册的功能,改为
true
即可。另外一个
ENABLE_CAPTCHA
其实是开启注册的时候展示验证码的功能,打开后,注册的时候就需要输入一个验证码。
总结
本文主要介绍什么是gitea,如何通过
docker compose
的方式去安装,如何开启https访问,以及如何绑定邮箱,开启注册邮箱验证等功能。
附录
针对gitea配置MySQL,gitea官方提供了docker方式的MySQL配置,一键部署,
docker-compose
文件如下:
version:"3"networks:gitea:external:falseservices: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:8restart: always
environment:- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:- gitea
volumes:- ./mysql:/var/lib/mysql
核心配置是
depends_on
配置里边的
db
,根据自己的需要定制配置即可。
版权归原作者 年少轻与狂 所有, 如有侵权,请联系我们删除。