Gitea 是一个轻量级的自托管 Git 服务,可以理解为「一台完全由你掌控的 GitHub」。如果你希望把代码和笔记统一放在本地管理,同时兼顾速度与隐私,它是一个很合适的选择。
我在上一篇文章中介绍过整体的同步思路 用 Gitea 打通 Windows 与 Linux 的笔记、代码同步,这一节分享部分具体方案:在 Linux 上完成 Gitea 的轻量化部署与基础配置。
Gitea 的适用场景:
需要说明的是,Gitea 的自动化能力不如 GitHub Actions,但如果你的核心诉求只是稳定、可控的版本管理,它已经足够好用。
注:Gitea 的发音是 /ˈɡɪtiːə/
Gitea/,并添加 docker-compose.yml 文件:
version: "3"services: server: image: gitea/gitea:latest container_name: gitea restart: always environment: - USER_UID=1000 - USER_GID=1000 networks: - gitea volumes: - ./gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22"networks: gitea: external: false
说明:
./gitea:/data3000(网页管理): 3000 是网页访问端口,用来打开 Gitea 后台; 宿主机的 222 端口映射到容器内的 22 端口(Gitea 的 SSH 服务跑在容器里的 22)。docker compose 直接报错。
docker compose up -d
服务启动后,访问 http://<服务器IP>:3000,进入 GItea 初始化页面。如果你是 linux 部署的服务,windows 和 linux 网络互通,Windows 上的浏览器可以直接访问。
SSH 密钥就像一把钥匙:你用 Git 推送时,Gitea 会验证你的密钥是否匹配,匹配成功才允许操作。这里的场景是从 Linux 推送内容到 Gitea,所以需要把 Linux 上的公钥 添加到 Gitea,让服务器认识这台机器。此时 linux 是客户端,Gitea 是服务段。
在 Linux 终端执行以下命令,生成一把专用密钥:
ssh-keygen -t ed25519 -C "gitea-key" -f ~/.ssh/gitea_ed25519
命令执行后会提示设置密码,连续回车跳过即可。完成后会生成两个文件:
~/.ssh/gitea_ed25519~/.ssh/gitea_ed25519.pub
cat ~/.ssh/gitea_ed25519.pub
linux-home),将公钥内容粘贴进去,保存。
验证链接是否正常。
ssh -T -p 222 git@服务器IP
看到 Hi <用户名>! You've successfully authenticated 说明配置成功。
如果你的 Linux 上已经为 GitHub 等其他服务配过 SSH 密钥,建议在 ~/.ssh/config 中为 Gitea 单独配置别名,避免多密钥互相干扰:
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsaHost gitea-local 192.168.192.21 HostName 192.168.192.21 Port 222 User git IdentityFile ~/.ssh/gitea_ed25519
Host gitea-localgit clone gitea-local:user/repo.gitIdentitiesOnly yes在 Gitea 中创建测试仓库。点击右上角的➕图标,创建仓库, 填入以下信息。这里我只填了仓库名称:demo,描述:测试流程。说明:默认主分支是 main 分支,如果需要可以自定义修改。

有两种情况:
cd /path/to/your/projecttouch README.mdgit initgit checkout -b maingit add README.mdgit commit -m "first commit"git remote add origin git@192.168.192.21:wanglei-dev/demo.git # 替换成自己的IP/用户名/仓库名git push -u origin main
上面的命令行依次执行后,Gitea 上的显示效果如下图所示。

cd /path/to/your/projectgit remote add origin git@192.168.192.21:wanglei-dev/demo.git # 替换成自己的IP/用户名/仓库名git push -u origin main
如果你配置了
~/.ssh/config中的gitea-local别名,地址可以改写为:
git@gitea-local:wanglei-dev/demo.git
刷新 Gitea 仓库页面,确认文件已出现,提交记录正确,整条链路跑通。
通过以上命令行可以看到,github 和 gitea 平时的 git clone、git pull、git push、git add 、git commit 都是同一套用法。
如果你想试试这个流程,可以按照以下步骤测试个简单的 DEMO 练练手。
完成基础配置后,可逐步迁移项目,或设置 GitHub + Gitea 双远程同步。
如果你有更高效的同步备份方案,欢迎在评论区分享你的经验!