最简可行路径是下载二进制、修改三处app.ini配置(domain、http_port、root_url)、用systemd托管;默认sqlite无需数据库,首次运行生成配置后须设http_addr=0.0.0.0并开放防火墙端口。

用 Gitea 搭建私有 Git 服务器,最简可行路径是什么
能跑起来的最小配置就是:下载二进制、改一两处 app.ini、systemd 托管进程。Gitea 不依赖数据库也能启动(默认用 SQLite),不用碰 Docker 或 PostgreSQL 就能当天上线。
实操建议:
- 直接去 https://www.php.cn/link/188ce673b936b2249a2a042ae39ef19b 下载对应系统架构的
gitea二进制(比如gitea-1.22.0-linux-amd64),chmod +x 后扔进/usr/local/bin/ - 新建用户运行(如
git),避免用 root 启动;数据目录设为/var/lib/gitea,日志和仓库都放里面 - 首次运行
./gitea web会自动生成/var/lib/gitea/custom/conf/app.ini,别急着改——先 Ctrl+C 停掉,再编辑 - 重点改三处:
DOMAIN设成本机内网 IP(如192.168.1.100),HTTP_PORT别用 3000(容易被占),ROOT_URL必须带协议和端口(如http://192.168.1.100:3001/)
Gitea 启动后打不开网页,常见原因有哪些
不是“没装好”,大概率是网络或配置漏项。Gitea 默认只监听 127.0.0.1,内网其他机器访问不到。
实操建议:
- 检查
app.ini中的HTTP_ADDR—— 必须显式设为0.0.0.0(不是留空,不是localhost) - 确认防火墙放行端口:
sudo ufw allow 3001(或对应HTTP_PORT) - 如果用 systemd 管理,检查
journalctl -u gitea -n 50,重点看有没有listen tcp 127.0.0.1:3001: bind: cannot assign requested address这类错误 - 浏览器访问时 URL 必须和
ROOT_URL完全一致(包括末尾斜杠),否则前端路由失效,页面空白但控制台无报错
如何让同事用 git clone http://... 正常拉代码,不输密码
HTTP 协议下不配认证就等于裸奔,但 Gitea 的 HTTP 克隆默认走 Basic Auth,每次都要输账号密码。想免密,得靠 SSH,而不是关掉验证。
实操建议:
- 在 Gitea 后台「个人设置 → SSH 密钥」里粘贴同事的
id_rsa.pub内容(不是私钥) - 确保服务端
sshd正常运行,且/etc/ssh/sshd_config中PubkeyAuthentication yes已启用 - Gitea 的
app.ini中必须设置SSH_PORT = 22(如果 sshd 没改端口),且START_SSH_SERVER = false(Gitea 自带 SSH 服务已弃用,别开) - 同事克隆时用 SSH 地址:
git clone git@192.168.1.100:username/repo.git,不是 HTTP 地址
升级 Gitea 时为什么仓库突然 404,怎么避免
升级本身不破坏数据,但 app.ini 路径写死、custom 目录位置变动、或从旧版(如 1.15)跨大版本升到 1.22,会导致 Gitea 找不到仓库根目录。
实操建议:
- 升级前备份整个
/var/lib/gitea目录(不只是data/和repositories/) - 新版 Gitea 会尝试迁移配置,但只读取
custom/conf/app.ini;如果你把app.ini放在别处(比如/etc/gitea/app.ini),必须用gitea web -c /etc/gitea/app.ini显式指定 - 检查
app.ini中的REPO_ROOT_PATH是否仍指向实际仓库位置(如/var/lib/gitea/gitea-repositories),路径变更后 Gitea 会静默跳过扫描 - 升级后执行
gitea admin repo-sync-releases和gitea admin regenerate hooks,修复钩子丢失导致的 push 失败
最易被忽略的是:Gitea 的 custom 目录位置和 app.ini 加载顺序。它不会自动发现你挪过的地方,也不会报错,只会默默用默认值初始化新实例 —— 表现就是所有仓库消失,但数据库里用户还在。











