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

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

极易搭建的代码托管平台Gitea_第1张图片

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

极易搭建的代码托管平台Gitea_第2张图片

好在都有备份,只是 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

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

安装

建数据库

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

极易搭建的代码托管平台Gitea_第3张图片

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

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

极易搭建的代码托管平台Gitea_第4张图片

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

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

安装镜像

在群晖上以 Docker 方式安装。

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

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

# 新建文件夹 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 文件

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

然后执行下面的命令

# 新建文件夹 gitea 和 子目录
mkdir -p /volume2/docker/gitea/data

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

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

# 一键启动
docker-compose up -d

运行

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

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

极易搭建的代码托管平台Gitea_第5张图片

有个短暂的加载过程

极易搭建的代码托管平台Gitea_第6张图片

紧接着就是登录界面

极易搭建的代码托管平台Gitea_第7张图片

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

极易搭建的代码托管平台Gitea_第8张图片

创建成功后的主界面

极易搭建的代码托管平台Gitea_第9张图片

设置

极易搭建的代码托管平台Gitea_第10张图片

管理后台

极易搭建的代码托管平台Gitea_第11张图片

支持从其他仓库迁移

极易搭建的代码托管平台Gitea_第12张图片

配置文件

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

极易搭建的代码托管平台Gitea_第13张图片

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

极易搭建的代码托管平台Gitea_第14张图片

否则修改会无效

极易搭建的代码托管平台Gitea_第15张图片

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

禁用注册

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

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

极易搭建的代码托管平台Gitea_第16张图片

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

极易搭建的代码托管平台Gitea_第17张图片

邮件设置

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

[mailer]
ENABLED = false

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

[mailer]
ENABLED         = true
FROM            = [email protected]
MAILER_TYPE     = smtp
HOST            = smtp.88.com:465
IS_TLS_ENABLED  = true
USER            = [email protected]
PASSWD          = <第三方邮件客户端>

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

极易搭建的代码托管平台Gitea_第18张图片

很快就会收到邮件

极易搭建的代码托管平台Gitea_第19张图片

客户端

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

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

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

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

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/

你可能感兴趣的:(群晖,docker,开发)