基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能

这篇具有很好参考价值的文章主要介绍了基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

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出现如下内容即安装成功
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
官网内容点此:https://docs.docker.com/compose/install/linux/#install-the-plugin-manually

2. 安装gitea

首先我们需要一个可以访问的MySQL服务,来存放gitea服务信息。如果没有MySQL也可以使用docker创建一个很方便,或者使用官方的带MySQL镜像的docker compose 脚本, 详情参考附录

找一个干净的目录如/home/ubuntu/gitea(将来该目录会存放gitea配置文件) 新建docker-compose.yaml文件,里边内容如下:

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.19
    container_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搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https

安装完后就会看到启动了一个docker
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
我们访问IP:3000端口即可看到如下引导页面。可以自己修改一些基础信息,然后点击立即安装即可。
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
随后就可以进入登录页面,我们自己注册一个账号使用了。
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
官网内容点此:https://docs.gitea.com/installation/install-with-docker


二、给gitea配置https访问

如不需要配置https可以跳过

首先我们需要准备一个域名和申请好的ssl证书,可以去云厂商自己申请免费证书
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
然后下载证书文件,本文讲解如何使用nginx代理gitea配置https。
首先把下载好的Nginx证书文件放到一个可以访问到的目录中
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
然后在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等一样,我们首先创建一个仓库。基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
可以看到页面和gitee, github等都是类似的。下面我们绑定一个SSH公钥
具体如何生成参考SSH公钥生成方式
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
然后我们使用git clone git@192.168.43.246:kylin/gitea-test.git 下载结果如下:基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
理论上来说我们绑定了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
打开该文件内容如下:
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
在server配置中,我们需要把这里边的两个22改成我们自己定义的10022端口,然后重启gitea容器即可:docker restart gitea

基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
可以发现我们的ssh访问方式也加上了10022端口,再次测试:
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
发现这次访问我们没有输入密码,直接拉取成功。


四、给gitea配置可发送的邮箱

我们可以选择自己搭建属于自己的邮箱服务,也可以选择例如QQ邮箱,163邮箱的smtp服务来发送邮件。下面介绍如何给gitea绑定qq邮箱,其他邮箱同理。

登录邮箱,选择设置
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
然后点击账户列,会发现有一个POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
如果你的服务是关闭状态,记得开启一下,需要收验证码等操作。开启之后点击管理服务,页面如下:
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
点击生成授权码,会生成一串乱码,这一串乱码就是我们的密码,需要记住。
然后回到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 = 123456789@qq.com         # 这里是你的QQ邮箱号
USER = 123456789@qq.com         # 这里是你的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测试一下
点击管理后台 -> 应用配置
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
我们可以在此填入一个正确的其他邮箱地址,来给这个邮箱发送测试内容,发送成功后,填写的邮箱会收到一个来自gitea的测试消息。
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
到此给gitea配置邮箱完成


五、gitea注册开启邮箱验证和邮箱通知

打开gitea配置文件/home/ubuntu/gitea/gitea/gitea/conf/app.ini, 把REGISTER_EMAIL_CONFIRM 设置成true,这个是打开注册需要邮箱验证;把ENABLE_NOTIFY_MAIL设置成true,这个是开启邮箱通知。

[service]
DISABLE_REGISTRATION              = false
REQUIRE_SIGNIN_VIEW               = false
REGISTER_EMAIL_CONFIRM            = true
ENABLE_NOTIFY_MAIL                = true
ALLOW_ONLY_EXTERNAL_REGISTRATION  = false
ENABLE_CAPTCHA                    = false
DEFAULT_KEEP_EMAIL_PRIVATE        = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING       = true
NO_REPLY_ADDRESS                  = noreply.localhost

随后重启gitea容器即可。


六、限制所有仓库只有登录后才能访问

我们搭建好gitea私服之后,如果是在公司内网,那么只能内部人访问,如果是在公有云服务器,任何人只要点击你搭建好的gitea私服首页的探索 , 就会访问到私服里边的公开仓库
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
为了只允许有本公司账号的人登录进入查看,我们需要限制仓库只能登录后看到,找到gitea的配置文件/home/ubuntu/gitea/gitea/gitea/conf/app.ini , [server] 中有一个REQUIRE_SIGNIN_VIEW 字段,默认是false 就是说不登录也可以查看,我们改为true,然后重启gitea容器即可。
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
改完重启后我们发现如果点击探索 就会自动跳转到登录页。

同时为了进一步限制只有本公司的人查看,我们可以关闭gitea注册功能,然后谁需要账号,就用管理员账号给分配,如何关闭看下条。


七、关闭gitea的注册功能

为了防止不是本公司的人注册自己搭建的gitea私服,我们可以关闭gitea注册功能,改为使用管理员账号分配账号的形式。

gitea似乎并没有gitlab那样的开启注册完毕 需要审核的功能

基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能,git,docker,Ubuntu,docker,gitea,https
配置文件中DISABLE_REGISTRATION 字段就是禁用注册的功能,改为true 即可。另外一个ENABLE_CAPTCHA 其实是开启注册的时候展示验证码的功能,打开后,注册的时候就需要输入一个验证码。


总结

本文主要介绍什么是gitea,如何通过docker compose的方式去安装,如何开启https访问,以及如何绑定邮箱,开启注册邮箱验证等功能。


附录

针对gitea配置MySQL,gitea官方提供了docker方式的MySQL配置,一键部署,docker-compose 文件如下:

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
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql

核心配置是depends_on 配置里边的db ,根据自己的需要定制配置即可。文章来源地址https://www.toymoban.com/news/detail-572141.html

到了这里,关于基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker搭建mysql并开启远程访问

    一、搭建mysql 1、拉取 MySQL 镜像 这里我们拉取官方的最新版本的镜像: $ docker pull mysql:latest 查看是否已安装了 mysql: $ docker images 二、运行 MySQL 容器 1、创建挂载文件: 2、运行容器 docker run -d --name mysql -v /opt/datas/docker/mysqllog:/var/log/mysql -v /opt/datas/docker/mysql:/var/lib/mysql -v /op

    2024年01月17日
    浏览(35)
  • 使用Gitea搭建自己的git远程仓库

    为什么需要自建仓库 原因只有一个:折腾。其实国内的码云加上github已经足够用了。 官方原话 Gitea 的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用 Go 作为后端语言,这使我们只要生成一个可执行程序即可。 并且他还支持跨平

    2024年02月03日
    浏览(43)
  • 五、Docker仓库之https的registry搭建(二)

    本节我们分享更多的实用的仓库搭建使用方式。包括支持https的registry、Harbor、nexus。 准备站点证书(测试使用,用一个自己的测试域名,配置本地hosts) 如果你拥有一个公网域名,那很好,你很牛。当然也可以使用 openssl 自行签发证书。 这里我计划将要搭建的私有仓库地址

    2024年02月12日
    浏览(44)
  • Harbor私有仓库搭建并配置https对接docker与kubernetes

    默认情况下,Harbor 不附带证书。可以在没有安全保护的情况下部署 Harbor,以便您可以通过 HTTP 连接到它。在生产环境中,推荐始终使用 HTTPS。要配置 HTTPS,必须创建 SSL 证书。可以使用由受信任的第三方 CA 签名的证书,也可以使用自签名证书。本文以自签名证书为例。 使用

    2024年02月03日
    浏览(49)
  • 【仓库管理】搭建 Maven 私服之一--Nexus仓库(Repository)管理软件

    Nexus 读音:/ˈneksəs/是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为“Maven仓库管理器”。 Maven 私服其实并不是 Maven 的核心概念,它仅仅是一种衍生出来的特殊的仓库,但这并不代表它不重要,相反由于私服具有降低中央仓

    2024年01月17日
    浏览(56)
  • Synology搭建Gitea(Docker)

    Nas轻量git方案:Docker安装Gitea; 群晖(Synology) NAS 如何安装 gitea 为所有Docer创建一个组 docker ; 权限: 读写共享目录:docker、Repositories,两个主要涉及到的内容; 应用程序: 拒绝:所以目录。该用户组下所有用户没有使用应用的场景; 为容器Gitea创建一个用户 gitea ; 禁止访问

    2024年02月02日
    浏览(48)
  • 如何在Linux上搭建本地Docker Registry镜像仓库并实现公网访问

    Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)镜像,不受本地局域网限制! 使用官网安装方式,docker命令一键启动,该命令启动一个registry的容器,版本是2,挂载宿主机端口是5000端口,挂载后,5000端口就是我们连接镜像仓库的本地端口 执行

    2024年02月05日
    浏览(50)
  • Centos7安装Docker,安装DockerCompose(集群化部署),Docker私服镜像仓库

    Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。 Docker CE 支持 64 位版

    2024年02月04日
    浏览(69)
  • 使用gitlab在服务器上搭建私服git仓库,并且上传项目

    官网:The DevSecOps Platform | GitLab 安装相关依赖: 设置postfix开机自启,并启动,postfix支持gitlab发信功能 下载给gitlab包 安装rpm包: 修改gitlab的配置:/etc/gitlab/gitlab.rb 重启gitlab服务: 登陆页面:http://192.168.174.201:82,修改root用户密码 使用root用户登陆: 安装: 配置: 1.方式一:

    2024年02月03日
    浏览(47)
  • Docker 配置 Gitea + Drone 搭建 CI/CD 平台

    本文的IP地址是为了方便理解随便打的,不要乱点 首先使用 docker 搭建 Gitea 服务器,用于管理代码版本,数据库选择mysql Gitea 服务器的 docker-compose.yml 配置文件如下: 运行前先去数据库服务器中新建一个名为 gitea 的数据库 命令: CREATE DATABASE gitea 编写完成后在当前目录下运行

    2024年01月23日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包