前置条件
目前在很多地方github访问困难,国内没什么好用的gitlab,而对于一些私有项目,放到公网上可能不是比较好,因此使用已有的truenas系统来布置一个私有的gitea是一个比较好的选择。前提是truenas系统需要外网能够访问到,如果没有公网IP的小伙伴可以参考下面这个博客:
TrueNAS SCALE 添加 tailscale 具体步骤
部署gitea
博主的TrueNAS SCALE还没有更新,用的是2024版本。正常情况的国内truenas访问github有问题,导致application应用列表无法刷新,我这里默认此问题已经解决。按照以下顺序打开TrueNAS SCALE开始配置。
新建数据集
- Datasets
- 单击你的常用存储池,右上角Add Dataset
- 数据集命名,如gitea
安装gitea
- Apps
- Discover Apps
- 在列表中找到Gitea(Train: community), 点击安装
- Discover Apps
此时很重要,有几个地方要改,以下面表格为例子。
| 名字 | 内容 | 备注 |
| Application Name | gitea | |
| Web Port | 30080 | |
| SSH Port | 30022 | |
| External SSH Port | 30022 | |
| Host Network | 打开 | 注意和TrueNAS其他应用的端口不能冲突 |
| Root URL | http://域名:30080/ | 如果是tailscale,域名就写tailscale的ip,不能少/ |
| Gitea Data Storage | /dataset/gitea | 这里dataset是第一步数据集的名字 |
| Gitea Configuration Storage | /dataset/gitea/config | 注意需要到数据集中创建对应的目录,否则无法创建成功 |
| Gitea Postgres Data Storage | /dataset/gitea/postgres | 同上 |
| Gitea Postgres Backup Storage | /dataset/gitea/pgbackup | 同上 |
然后选择创建,就会开始进入Deploying的阶段。以下是相关命令行输出:
2026-10-08 15:43:49
Readiness probe failed: HTTP probe failed with statuscode: 500
2026-10-08 15:43:49
Liveness probe failed: HTTP probe failed with statuscode: 500
2026-10-08 15:29:31
Created container gitea
2026-10-08 15:29:31
Started container gitea
2026-10-08 15:29:30
Container image "gitea/gitea:1.23.5-rootless" already present on machine
2026-10-08 15:29:10
Container image "postgres:15.2" already present on machine
2026-10-08 15:29:10
Created container gitea-init-postgres-wait
2026-10-08 15:29:10
Started container gitea-init-postgres-wait
2026-10-08 15:29:09
Scaled up replica set gitea-dc74d9bff to 1
2026-10-08 15:29:09
Created pod: gitea-dc74d9bff-xtkgx
2026-10-08 15:29:09
Successfully assigned ix-gitea/gitea-dc74d9bff-xtkgx to ix-truenas
2026-10-08 15:29:06
Created container gitea
2026-10-08 15:29:06
Started container gitea
2026-10-08 15:29:05
Add eth0 [172.16.1.108/16] from ix-net
2026-10-08 15:29:05
Container image "postgres:15.2" already present on machine
2026-10-08 15:29:04
Scaled up replica set gitea-postgres-5df5bbb57f to 1
2026-10-08 15:29:04
Created pod: gitea-postgres-5df5bbb57f-fc5gp
2026-10-08 15:29:04
Successfully assigned ix-gitea/gitea-postgres-5df5bbb57f-fc5gp to ix-truenas
注意这里有可能遇到网络问题,需要解决docker的网络问题。TrueNAS 的 k3s/containerd 拉镜像走的代理写在 /etc/containerd.env,由 middleware 在启动应用服务时按 Network → Global Configuration → HTTP Proxy 渲染生成。核心坑:它不会随配置修改自动更新。解决:在界面填好可用代理后重启 Apps 服务(重建该文件),镜像即可正常拉取。
配置Gitea账号
初始化
上面配置好之后应该会显示running,这时候在任何一个可以访问truenas网络的机器打开http://域名:30080链接可以看到现在可以开始配置,但是要注意千万不要改数据库的用户名和密码,这是truenas的apps中的gitea提前配置好的,因为docker本质上有两个,一个是postgres,一个才是gitea,他们两个的关系在一开始就设置好了,这里如果改数据库的用户名和密码会导致登陆不上。
建议仅修改下面两个内容
- 站点名称
- 这个会显示在主页上
- 管理员账号设置
- 包括用户名,邮箱密码,这个后续登陆要用。
立刻安装之后,登陆界面就可以看到站点名称了,右上角是刚刚设置的管理员账号。如果换浏览器的话则需要重新输入刚才的用户名和密码。
配置ssh密钥
和其他gitlab和github的内容相同
- 右上角头像
- settings
- SSH/GPG Keys
- Manage SSH Keys(Add Key)
- 将对应操作git机器的公钥复制到其中
将已有仓库的remote改为gitea
推荐一次性配置好.ssh和.git
ssh
修改~/.ssh/config,添加以下内容:
git
Host gitea
HostName 域名/TrueNAS IP
Port 30022
User git
打开一个和其他git仓库远端相同的已有代码库。修改仓库根目录下的.git/config文件修改[remote “origin”]部分
[remote "origin"]
url = git@gitea:xxx/xxx.git
其他
如果想”push 时自动建仓”(省掉网页建仓这步):Apps → gitea → Edit → Additional Environment Variables 加 GITEA__repository__ENABLE_PUSH_CREATE_USER = true,Save。
但是个人推荐还是网页建仓好一点,比如gitlab的group在gitea里面叫做organization。之后就可以在命令行git push到私有化仓库里了。
