极易搭建的代码托管平台Gitea

这礼拜有点霉啊,先是日常自用的机器上,SSD 挂了,彻底识别不了的那种

隔了两天,用来写文章用的小机器上, 500G 的机械硬盘也挂了,重新格了一下,挂在玩客云上当个下载盘用吧

好在都有备份,只是 Docker 的恢复有点麻烦, 比如:

  • HomeAssistant,用的是之前导出的 syno.txz重新导入的,配置文件也没动,但还是各种问题;
  • messense/aliyundrive-webdav 如果用 latest版本,Hyper Backup 备份时,日志中会显示 HTTP status client error (400 Bad Request) for url (https://openapi.aliyundrive.com/adrive/v1.0/openFile/get_by_path)
  • vaultwarden/server 如果用 latest 版本,登录时会一直报错 Username or Password is incorrect. Try again.,日志中则显示 (login) POST /identity/connect/token => 400 Bad Request

这礼拜,腾讯的 vps也到期了,正忙着切换到 cloudflare tunnel,想顺便把一些旧的镜像更新一下,但是几个都遇到了问题,花时间慢慢搞定吧


本文软件由网友 不长到一百四誓不改名 推荐;但老苏并不会使用,水平也就会用个 git clone 而已;

什么是 Gitea ?

Gitea 的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用 Go 作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平台,支持 Linux, macOSWindows 以及各种架构,除了 x86amd64,还包括 ARMPowerPC

如果不想自己搭建,可以去访问在线 demohttps://try.gitea.io

安装

建数据库

老苏用了群晖自带的 MariaDB 10 数据库。

phpMyAdmin 中创建名为 gitea 的空数据库。

为便于说明,假设数据库密码为 123456

所以根据上面的设置,最后得到的数据库相关的参数如下:

  • 数据库主机:192.168.0.197,与群晖主机 IP 一致;
  • 数据库端口:3307,如果用 MariaDB 5 就是 3306,但老苏没测;
  • 数据库用户:gitea
  • 数据库密码:123456
  • 数据库库名:gitea,因为勾选了与用户同名;

安装镜像

在群晖上以 Docker 方式安装。

如果你熟悉命令行,可能用 docker cli 更快捷

老苏折腾时, latest 对应的版本是 1.19.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 新建文件夹 gitea 和 子目录
mkdir -p /volume2/docker/gitea/data

# 进入 gitea 目录
cd /volume2/docker/gitea

# 运行容器
docker run -d \
--restart always \
--name gitea \
-p 3231:3000 \
-p 222:22 \
-v $(pwd)/data:/data \
-v /etc/TZ:/etc/TZ:ro \
-v /etc/localtime:/etc/localtime:ro \
-e USER_UID=1000 \
-e USER_GID=1000 \
-e GITEA__database__DB_TYPE=mysql \
-e GITEA__database__HOST=192.168.0.197:3307 \
-e GITEA__database__NAME=gitea \
-e GITEA__database__USER=gitea \
-e GITEA__database__PASSWD=123456 \
gitea/gitea:latest
可变
USER_UID 在容器内运行 Gitea 的用户的 UID,默认设为 1000
USER_GID 在容器内运行 Gitea 的用户的 GID,默认设为 1000
GITEA__database__DB_TYPE 数据库类型
GITEA__database__HOST 数据库主机
GITEA__database__NAME 数据库库名
GITEA__database__USER 数据库用户
GITEA__database__PASSWD 数据库密码

更多的环境变量请看官方的文档:https://docs.gitea.cn/installation/install-with-docker#环境变量

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "3"

services:
server:
image: gitea/gitea:latest
container_name: gitea
restart: always
volumes:
- ./data:/data
- /etc/TZ:/etc/TZ:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3231:3000"
- "222:22"
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=192.168.0.197:3307
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=123456

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 gitea 和 子目录
mkdir -p /volume2/docker/gitea/data

# 进入 gitea 目录
cd /volume2/docker/gitea

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3231,第一次需要配置

老苏什么都没改,包括邮件设置和管理员也没设,后面再说

有个短暂的加载过程

紧接着就是登录界面

因为开始没有设置管理员,所以第一个注册的用户就是管理员

创建成功后的主界面

设置

管理后台

支持从其他仓库迁移

配置文件

Gitea 配置文件保存在 /data/gitea/conf/app.ini ,在 FileStation 中,对应的路径是 /docker/gitea/data/gitea/conf/app.ini

在对 app.ini 做任何修改前,需要添加 Everyone的读写权限

否则修改会无效

修改了设置后,需要重启容器才能让设置生效

禁用注册

如果要禁用注册,之后就只有管理员才能为用户创建帐户,虽然麻烦,但是可能更安全吧

一种方式是通过环境变量 DISABLE_REGISTRATION=true,另一种则是在 app.ini ,将DISABLE_REGISTRATIONfalse 改为 true

重启容器后,就不能再注册了

邮件设置

因为一开始初始化的时候,我们没有设置邮件,所以现在 app.ini 是下面这样的

1
2
[mailer]
ENABLED = false

如果要配置邮件服务,首先要将 ENABLED 改为 true,同时要添加下面的内容,当然不同的邮箱,设置是不一样的,这也是为什么老苏没有在开始设置的原因

1
2
3
4
5
6
7
8
[mailer]
ENABLED = true
FROM = wbsu2003@88.com
MAILER_TYPE = smtp
HOST = smtp.88.com:465
IS_TLS_ENABLED = true
USER = wbsu2003@88.com
PASSWD = <第三方邮件客户端>

当创建用户时,如果勾选了邮件通知的话

很快就会收到邮件

客户端

Gitea 服务器使用的是 SSH 协议,并且 SSH 端口不是默认的 22 而是 222,老苏搜了一下,有两种方法:

以下内容老苏未验证,请大家自己甄别;

  • 第一种方法是在 Git 的远程仓库地址中指定端口号,例如: git remote add origin ssh://user@host:port/path/to/repo

  • 第二种是修改本地配置文件,可以在 Windows 下的 C:\Users\<YourUserName>\.ssh\config 文件中配置 SSH 的端口号,例如:

1
2
3
4
Host gitserver
HostName gitserver.com
Port 222
User git

然后,您可以使用 git remote add origin git@gitserver:path/to/repo 来添加远程仓库。

参考文档

Gitea
地址:https://gitea.io/en-us/

gitea/README_ZH.md at main · go-gitea/gitea · GitHub
地址:https://github.com/go-gitea/gitea/blob/main/README_ZH.md

文档 | Gitea 官方文档
地址:https://docs.gitea.cn/

使用 Docker 安装 - Docs
地址:https://docs.gitea.io/en-us/install-with-docker/