2

使用 docker 搭建一个 gitea 服务(包含邮件通知等细节说明)

 2 years ago
source link: https://hellodk.cn/post/902
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

image.png
在网上可以搜到很多关于 docker 安装 gitea 服务的教程,但是很多都没有说明以下细节情况

  • 容器暴露的 web 端口和 ssh 端口怎么使用?在gitea 安装过程中如何填写配置
  • 邮件的相关配置
  • 网站基础URL等

2022-03-02 update

由于配置中没有设置时区,导致网页上显示的提交时间和东八区不符(差了8个小时)。在看了 gitea官方文档 之后,发现如下配置:

Time (time)
FORMAT: 显示在界面上的时间格式。比如: RFC1123 或者 2006-01-02 15:04:05
DEFAULT_UI_LOCATION: 默认显示在界面上的时区,默认为本地时区。比如: Asia/Shanghai

那么我们修改配置文件 /data/gitea/gitea/conf/app.ini (此路径位于容器内。可以在宿主机更改此配置文件,本文宿主机路径为 /docker/data/gitea/gitea/conf/app.ini),在文件结尾追加以下内容:

[time]
DEFAULT_UI_LOCATION = Asia/Shanghai

再重启容器,再看网页上的时间已经和东八区相符,问题解决。


我们使用如下命令创建一个 gitea 容器

docker run -d \
--privileged=true \
--restart=always \
--name=gitea \
-p 9310:22 \
-p 9311:3000 \
-v /docker/data/gitea:/data \
gitea/gitea:latest
  • 容器名称就叫 gitea
  • --privileged=true 可有可无,加上的话给这个容器真正的 root 权限,可以控制/管理host机器上的文件,一般不建议加上这个参数
  • -p 9310:22 容器内 ssh 22 端口,宿主机使用 9310对外提供 ssh 服务
  • -p 9311:3000 web ui port,容器内是 3000,宿主机对外提供服务使用 9311 端口
  • -v /docker/data/gitea:/data 在宿主机 mkdir -p /docker/data/gitea 文件夹用来挂载映射容器内 /data 的数据

容器启动后我们可以通过 HTTP://YOUR_IP:9311 访问 gitea 服务,会进入【初始配置】页面,安装 gitea 服务。

数据库设置,gitea 可以使用 MySQL、PostgreSQL、MSSQL以及SQLite3,如果是个人使用的站点,个人建议使用 SQLite3 数据库,方便好用,性能足够。数据库类型选择 SQLite3,数据库文件路径使用默认的 /data/gitea/gitea.db 即可。

站点名称可以自定义。后续的一些配置一般都可以保持默认,需要注意的我会写出来。

SSH 服务域名改成你将要运用在你的 gitea 服务的域名,比如我的就是 gitea.hellodk.com

SSH服务端口从原本的22改成9310

HTTP服务端口不用动,原本的3000即可。

基础URL从原本的 http://localhost:3000/ 改成 https://giea.hellodk.com/(如果启用了 https 访问的话,否则就用 http 吧)。

关于电子邮箱的配置,因为配置项里没有端口号,所以需要在 SMTP主机上填入主机名和端口号,在这一点上我踩了坑,后续测试才发现需要写成 host:port这样的形式。比如我就使用的 qq mail,在 SMTP主机字段上填入 smtp.qq.com:587 即可。

邮件其他的几个字段也没什么好说的,SMTP密码不是邮箱登录的密码,得是一个授权码。如果是 qq mail 需要从【邮箱设置】➡️️【帐户】➡️️【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】中生成一个授权码。

其他的一些选项我的习惯:

  • 如果站点给出公开注册的功能,那么建议开启 需要发电子邮件确认注册功能
  • 邮件通知提醒是仓库的一些动作触发的邮件提醒,如果希望安静点的话,这个选项就不要打开了
  • 开启启用 Federated 头像
  • 开启启用 OpenID 自助注册
  • 开启启用注册验证码
  • 管理员账号设置,建议设置一个 root 账号,并设置其管理员密码和邮件地址

以上配置都设置好后点击立即安装即可。

使用nginx反代,应该是很简单的,可以使用免费的 certbot 证书让站点支持 https 访问。再配置 http 到 https 的 301 重定向。

使用ssh的方式 clone repo 的时候默认生成的克隆字符串是 ssh://[email protected]:9310/hellodk/public.git,这个地址是不对的,应该改成 [email protected]:hellodk/public.git,使用 git clone [email protected]:hellodk/public.git 去克隆。

在本地机器上的 ~/.ssh/config 中配置以下 host(拿 windows10并且使用 Git Bash 做的测试)

Host gitea.hellodk.com
Hostname gitea.hellodk.com
Port 9310
User git
IdentityFile /c/users/xxx/.ssh/gitea_id_rsa

ok, all done

文章目录

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK