使用 Docker 搭建 Gitea 并实现 Git HTTP 自动登录

🚀 使用 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(默认)
  • 站点 URLhttp://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 自带完整权限管理
相关推荐
梅梅绵绵冰4 小时前
Git分支管理
git
ys~~6 小时前
git学习
git·vscode·python·深度学习·学习·nlp·github
Rysxt_9 小时前
IDEA中Git隐藏更改(Stash)功能详解教程
数据库·git·intellij-idea·stash
Mr-Apple11 小时前
记录一次git commit --amend的误操作
大数据·git·elasticsearch
UVM_ERROR12 小时前
Git仓库损坏(Segmentation fault)修复实战:虚拟机环境下UVM项目救援指南
笔记·git·vscode·github·芯片
j_xxx404_13 小时前
Linux:版本控制器Git(第一章)|历史|理解Git|相关git操作|提交冲突解决
linux·运维·git·ai
牛奔13 小时前
git本地提交后,解决push被拒绝 error: failed to push some refs to
大数据·git·elasticsearch·搜索引擎·全文检索
少年姜太公1 天前
什么?还不知道git cherry pick?
前端·javascript·git
MatrixOrigin1 天前
在数据库里玩“平行宇宙”:MatrixOne Data Branch 让数据也拥有Git 的分支/合并/对比/回滚(含跨集群同步)
git·sql·数据分析
VcB之殇1 天前
git常用操作合集
前端·git