技术 二月 17, 2020

如何用 docker 部署 gitea 并开启两步认证

文章字数 3.7k 阅读约需 3 mins. 阅读次数 1000000

GiteaGogs 的 fork 版本,是一个可以自行搭建的 git 服务器。两者均是开源的,托管在 github 上。有了 Gogs 为什么又会有 Gitea 呢, 是由于社区认为 Gogs 的管理模式不利于社区发展, 于是自立门户, 他们之间的恩怨情仇我们不去讨论, 有兴趣的可以看这个,传送门。我为什么选择 Gitea 呢?是因为 Gogs 已经大半年没更新过版本了,Gitea 维护非常积极。但是,说到底 Gitea 和 Gogs 差异不大,部署流程也是大同小异。

安装

环境说明

我打算部署在我的 vps 上,是购买的 Vultr 的。如果你也有 Vps 需求,可以使用 我的链接 注册,这样你我都会有 $10 奖励。
操作系统:Ubuntu 18.04
我使用了 DaoCloud 管理了我的 VPS 上所有的 Docker 镜像,我所有的应用都已经 Docker 化了,并且设置了自动部署,后续可能会写篇文章做一下介绍。

我的 Docker 清单

安装 Gitea

配置 DaoCloud 的步骤这里省略了。本文基于你已经配置好 VPS 和 DaoCloud 服务了。
因为 Git 服务器需要存储数据,是存储在容器外的,所以我们先在 VPS 上创建一个文件夹用来存储数据。

mkdir /gitea

在 Daocloud 的发现镜像菜单可以直接搜索 docker hub 内容,可以搜索到 gitea 的官方镜像 gitea/gitea。

搜索镜像

在镜像出点击“部署”

部署

在容器配置页面配置上对应的参数, 分别是端口映射和数据存储路径

设置

容器的 3000 端口对应的是 web 服务的端口,这里我们按照官方习惯映射为 10080。22 为 ssh 端口,我们映射为 10022。容器的数据路径 /var/lib/gitea 映射为我们刚才创建的 /gitea。最后点击立即部署,等待部署完成,就可以通过http:// 你的 ip 或域名:10080 访问 gitea 了。

gitea

接着设置一下管理员账号和一些初始化参数, 就可以正常使用了。

两步认证

Gitea 最基础只有用户名和密码来保护你的账户,这样还是不太放心,可以利用支持的两步认证功能来加强账户安全,更好的保护托管在上面的代码。这样每次登录都需要输入一个 6 位动态验证码,这样即使密码泄露,也无法登录账户。

设置两步认证

Gitea 和 Gogs 其实都是支持的。
首先登录账号,然后在设置 - 安全里面可以看见两步认证的选项,有一个大大的二维码。添加两步认证非常简单,使用两步认证器 App 扫描二维码就可以。市面上有很多的两步认证验证器。我测试可以的有下面这几个。

  • Step Two:界面美观,可惜只有 iOS 版本。下载链接
  • 宁盾令牌: iOS 和 Android 都支持。下载链接

    Otp

同步代码的设置

因为开启了两步认证,我们无法在通过 basic 认证同步代码。那怎么办呢?答案是我们可以使用 access token。access token 类似 Gitea 给你生成了一个非常长的密码,你可以使用用户名 +access token 来同步代码。
在个人设置 - 应用菜单里面可以生成一个 access token。生成完成以后记得拷贝出来,因为页面关闭以后就再也无法看到了。

access token

如何避免每次同步都输入 access token

在已经 clone 到本地的 git 仓库里面找到 .git 文件夹,打开 config 文件。修改 remote 里的 url,在域名前面加入”用户名:accesstoken@”,比如原来是 http://example.com/pangjian/test.git 改为 http://pangjian:xxxxxxxxxxxaaaaasasd@example.com/pangjian/test.git
这样, 每次同步都不用再输入 access token 了。至此,就全部设置完成了。

0%