这礼拜有点霉啊,先是日常自用的机器上,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
,macOS
和Windows
以及各种架构,除了x86
,amd64
,还包括ARM
和PowerPC
。
如果不想自己搭建,可以去访问在线 demo
:https://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
# 新建文件夹 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
配置文件保存在 /data/gitea/conf/app.ini
,在 FileStation
中,对应的路径是 /docker/gitea/data/gitea/conf/app.ini
在对 app.ini
做任何修改前,需要添加 Everyone
的读写权限
否则修改会无效
修改了设置后,需要重启容器才能让设置生效
禁用注册
如果要禁用注册,之后就只有管理员才能为用户创建帐户,虽然麻烦,但是可能更安全吧
一种方式是通过环境变量 DISABLE_REGISTRATION=true
,另一种则是在 app.ini
,将DISABLE_REGISTRATION
从 false
改为 true
重启容器后,就不能再注册了
邮件设置
因为一开始初始化的时候,我们没有设置邮件,所以现在 app.ini
是下面这样的
[mailer]
ENABLED = false
如果要配置邮件服务,首先要将 ENABLED
改为 true
,同时要添加下面的内容,当然不同的邮箱,设置是不一样的,这也是为什么老苏没有在开始设置的原因
[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
的端口号,例如:
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/