🚀 使用 Docker 搭建 Gitea 并实现 Git HTTP 自动登录(含 LFS 配置)
📌 一、背景介绍
我们希望在本地局域网快速部署一个 Git 服务器:
- 使用 Gitea + Docker 快速搭建 Git 服务;
- 启用 Git LFS(管理大文件);
- 本地配置
.netrc文件实现 Git 自动登录(避免频繁输入用户名和密码);
🐳 二、使用 Docker 启动 Gitea
编辑 docker-compose.yml:
ini
version: "3"
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=sqlite3
- GITEA__server__DOMAIN=localhost
- GITEA__server__ROOT_URL=http://localhost:3000/
- GITEA__server__SSH_DOMAIN=localhost
- GITEA__server__HTTP_PORT=3000
- GITEA__server__SSH_PORT=2222
- GITEA__server__LFS_START_SERVER=true
restart: always
ports:
- "3300:3000" # Web UI 映射为 http://localhost:3300
- "2222:22" # SSH 映射为 localhost:2222
volumes:
- ./gitea:/data # 数据和配置文件存储
📁
./gitea将保存 Gitea 的配置、仓库、数据库等数据,确保宿主机具备读写权限。
✅ 启动 Gitea
docker compose up -d
🧭 三、访问 Gitea 初始化界面
打开浏览器访问:
arduino
http://localhost:3300
或在局域网其他设备访问你的主机 IP:
arduino
http://192.168.1.34:3300
首次打开会进入初始化界面,按以下建议填写:
- 数据库类型:SQLite3(默认)
- 站点 URL :
http://localhost:3000/→ 改为http://192.168.1.34:3300/ - 启用 Git LFS:已通过环境变量开启,无需手动修改
- 仓库路径 :默认
/data/gitea-repositories - 完成安装后,创建管理员账户(如
zhangqi)
🧾 四、配置 .netrc 实现 Git 自动登录(HTTP)
默认使用 HTTP Clone 每次都要求输入用户名和密码,我们使用 .netrc 文件实现自动登录。
1. 编辑 .netrc
bash
vim ~/.netrc
添加:
machine 192.168.1.34
login zhangqi
password 你的密码
✅
machine是你的服务器 IP;login是 Gitea 用户名;password为登录密码(或 token)。
2. 设置权限
bash
chmod 600 ~/.netrc
3. 测试效果
bash
git clone http://192.168.1.34:3300/zhangqi/test.git
cd test
echo hello > hello.txt
git add .
git commit -m "test"
git push origin main
如果没有提示输入用户名密码,就说明 .netrc 配置成功。
📦 五、测试 Git LFS 功能
1. 本地初始化 LFS 支持
bash
git lfs install
git lfs track "*.img"
echo "*.img filter=lfs diff=lfs merge=lfs -text" > .gitattributes
2. 添加测试文件并推送
sql
echo "large file" > test.img
git add .gitattributes test.img
git commit -m "add lfs test file"
git push origin main
若服务端返回上传进度:
bash
Uploading LFS objects: 100% (1/1), 10 MB | 5.0 MB/s
说明 LFS 成功启用。
⚙️ 六、常见问题排查
| 问题 | 原因与解决 |
|---|---|
.netrc 无效 |
检查权限是否为 600,文件格式是否正确 |
| push 卡在 0% | Gitea 未启用 LFS,或未配置 GITEA__server__LFS_START_SERVER=true |
| HTTP 401 错误 | .netrc 用户名或密码错误,或未配置 |
| Gitea 配置丢失 | 确保 ./gitea 挂载路径正确,容器重启后配置仍在 |
✅ 七、总结
| 功能 | 工具/方法 |
|---|---|
| 快速部署 Git 服务 | Docker + Gitea |
| 支持大文件 | Git LFS(容器内通过环境变量启用) |
| 自动登录免输入密码 | .netrc 文件 |
| 多用户/多仓库 | Gitea 自带完整权限管理 |