Files
Obsidian/工具相关/Gitea部署与Obsidian自动备份.md

9.1 KiB
Raw Permalink Blame History

Gitea 部署与 Obsidian 自动备份

完成时间:2026-11-05 服务器:腾讯云新加坡 43.156.118.130(Ubuntu 24.04) 用途:私人代码仓库 + Obsidian 笔记自动备份,替代被封的 GitHub 账号


一、Gitea 是什么

自己服务器上的私人 GitHub:存代码、记版本、能回滚。开源免费(MIT 协议),全部功能不收费。数据在自己手里,没人能封。


二、部署(Docker,一条命令)

注意:NewAPI 已占用 3000 端口,Gitea 改走 3001。

SSH 上服务器(ssh ubuntu@43.156.118.130,再 sudo -i),跑:

mkdir -p /opt/gitea
docker run -d \
  --name gitea \
  -p 127.0.0.1:3001:3000 \
  -v /opt/gitea:/data \
  --restart unless-stopped \
  gitea/gitea:latest

检查:

docker ps --filter 'name=gitea' --format '{{.Status}} {{.Ports}}'

看到 Up 和 127.0.0.1:3001->3000 即成功。

现状:容器名 gitea,数据卷 /opt/gitea,数据库 SQLite(默认),开机自启,管理员账号 admin。


三、访问方式:域名(2026-11-06 已配好)+ SSH 隧道

域名:https://g.trivoo.website,直接打开就能登录,不用开隧道。

隧道(备用):Gitea 只绑了 127.0.0.1,走隧道时浏览器开 http://localhost:3001。

tunnel.bat(位于 F:\AI\docker\cpa-deploy\tunnel.bat)已加入 3001 转发,现有 7 个端口:

端口 用途
8317 CPA 主 API + 管理面板
8085 / 1455 / 54545 / 51121 / 11451 Google OAuth 授权回调端口
3001 Gitea

双击 tunnel.bat,保持窗口开着。单独开隧道时用:

ssh -N -L 3001:127.0.0.1:3001 ubuntu@43.156.118.130

四、域名是怎么配的(2026-11-06,下次照抄)

域名:https://g.trivoo.website。故意没用 git 开头——git 太招摇,证书透明日志一查就知道这是个 git 服务;g 低调一点。

1. DNS 解析(Spaceship):trivoo.website → Advanced DNS → 加一条 A 记录,Host g,Value 43.156.118.130,TTL 30 min。

2. Nginx 反代(服务器上):新建 /etc/nginx/sites-available/g.trivoo.website,照着 api.trivoo.website 的结构写,proxy_pass 改成 http://127.0.0.1:3001,只留 listen 80:

ln -s /etc/nginx/sites-available/g.trivoo.website /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

3. 证书:

certbot --nginx -d g.trivoo.website

证书有效期到 2027-02-04,Certbot 已设自动续期。

4. 改 Gitea 的对外地址:Gitea 配置里还记着旧地址,克隆链接会显示错。改掉并重启:

sed -i 's|ROOT_URL = http://localhost:3001/|ROOT_URL = https://g.trivoo.website/|' /opt/gitea/gitea/conf/app.ini
docker restart gitea

验证:浏览器打开域名能看到登录页,仓库页面的克隆地址变成 https://g.trivoo.website/admin/仓库名.git。

安全提醒

配了域名之后,登录页就挂在公网了,不再是以前的"隐身"状态。安全靠两条:管理员密码够强(长、随机),以及保持更新(Gitea 出安全补丁就及时升,Docker Copilot 一键更新)。仓库默认是私有的,不登录看不到。

不想用了怎么关

随时能关回隧道模式:

# 服务器上删 Nginx 配置
rm /etc/nginx/sites-enabled/g.trivoo.website
rm /etc/nginx/sites-available/g.trivoo.website
systemctl reload nginx

再去 Spaceship 删掉 g 那条解析。关完 Gitea 就回到只有隧道能进的状态,证书不用管,过期自动作废。


五、初始化(只做一次)

浏览器开 http://localhost:3001,安装页保持默认(数据库 SQLite3),往下翻到管理员账号,填用户名、密码、邮箱,点安装 Gitea,跳转到登录页即完成。


六、推代码:第一次踩过的两个坑

坑 1:Git 没设用户名,提交失败

现象:git commit 后提示 nothing added to commit but untracked files present,随后 git push 报 error: src refspec main does not match any。

原因:新电脑 Git 没配身份,提交被拦,根本没产生提交。

解决(先设身份再提交):

git config --global user.name "admin"
git config --global user.email "beyond1008@gmail.com"
git add .
git commit -m "first commit"

坑 2:本地分支不叫 main

现象:git push -u origin main 报 error: src refspec main does not match any(提交已成功时)。

原因:本地默认分支是 master,不是 main。

解决(改名再推):

git branch -M main
git push -u origin main

正常推送流程(以后每次)

git add .
git commit -m "改了什么"
git push

现有仓库:test(F:\AI\docker 首次推送)、Obsidian(笔记库)。


七、Obsidian 自动备份(Obsidian Git 插件)

1. 建仓库

Gitea 里点右上角 + → 新建仓库,名 Obsidian。

2. 装插件

Obsidian → 设置(左下角齿轮)→ 第三方插件 → 关掉安全模式 → 浏览 → 搜 Vinzent → 点 Git(作者 Vinzent,3.4M 下载)→ 安装 → 启用。

3. 笔记库初始化并推送

笔记库位置:F:\AI\Obsidian。在 PowerShell 里跑(隧道保持开着):

cd F:\AI\Obsidian
git init
git add .
git commit -m "first commit"
git remote add origin http://localhost:3001/admin/Obsidian.git
git branch -M main
git push -u origin main

推时填 admin 和 Gitea 密码。

4. 开自动备份

关掉 Obsidian 再重开 → 设置 → 第三方插件 → Git:

  • Automatic → Auto commit-and-sync interval (minutes) 由 0 改成 10(0 = 关闭)
  • Sync 里确认 Push on commit-and-sync 和 Pull on commit-and-sync 都是开着的

此后每 10 分钟自动提交并推送,写笔记不用管。

注意:自动推送原来走 localhost:3001,隧道必须开着。现在有了域名,可以把远程地址改成域名,不用开隧道也能推:

cd F:\AI\Obsidian
git remote set-url origin https://g.trivoo.website/admin/Obsidian.git

改完验证一次:git push,能推上去就说明通了。另一台电脑克隆时也可以直接用域名地址,不用开隧道。


八、另一台电脑怎么下载笔记

现在有了域名,最简单的是直接用域名克隆,不用开隧道:

git clone https://g.trivoo.website/admin/Obsidian.git

填 admin 和 Gitea 密码。然后 Obsidian 里点"打开文件夹作为仓库",选克隆下来的文件夹,同样装 Obsidian Git 插件、开 Auto commit-and-sync,即可双向自动备份。

还想走隧道的话(备用):

  1. 装 Git(git-scm.com)。
  2. 开隧道(新建 gitea-tunnel.bat,双击运行,窗口保持开着):
    @echo off
    ssh -N -L 3001:127.0.0.1:3001 ubuntu@43.156.118.130
    pause
    
  3. 克隆(进想放笔记的文件夹):
    git clone http://localhost:3001/admin/Obsidian.git
    
    填 admin 和 Gitea 密码。
  4. Obsidian 里点"打开文件夹作为仓库",选克隆下来的文件夹。
  5. 同样装 Obsidian Git 插件、开 Auto commit-and-sync,即可双向自动备份。

九、常见问题:打不开 Gitea 怎么办

隧道窗口"不动了"是正常的

ssh -N 的意思是"只建隧道、不给命令行"。输完密码后窗口停住不动、没有提示符,就是隧道通了的样子。窗口保持开着别关,关了隧道就断了。

打不开 http://localhost:3001 的排查顺序

  1. 隧道开着吗?——tunnel.bat 窗口或单独的 3001 隧道窗口,哪个关了 3001 就断了。重新双击 tunnel.bat(新版已含 3001)。
  2. 端口冲突——如果单独的 3001 隧道窗口还开着,tunnel.bat 里的 3001 就绑不上(bind: address already in use)。先把所有隧道窗口都关掉,再只开一个。
  3. 容器在跑吗?——SSH 上服务器跑:
    docker ps --filter 'name=gitea' --format '{{.Status}} {{.Ports}}'
    
    看不到 Up 就是容器停了,跑 docker start gitea。

记住一条

Gitea 现在有两条路:域名 https://g.trivoo.website 直接进(不用隧道),或者隧道 localhost:3001 进。域名打不开时先看隧道那条能不能进,分清是反代问题还是 Gitea 本身的问题。


十、服务器上现在跑的东西(2026-11-06)

服务 位置/端口 状态
Xray + Shadowsocks(梯子) 8388,systemd 服务 xray-ss 正常
CPA(Gemini Pro 转 API) Docker,127.0.0.1:8317 已死:Google 403 ToS 停用(2026-11-06)
NewAPI Docker,127.0.0.1:3000 正常(DeepSeek 渠道可用)
Nginx 域名 api.trivoo.website 正常
Gitea Docker,127.0.0.1:3001;域名 https://g.trivoo.website 正常
Docker Copilot Docker,127.0.0.1:8080→12712;域名 https://docker.trivoo.website 正常(2026-11-06 新装)
3x-ui 已停用(systemctl stop x-ui),但仍开机自启 待处理:sudo systemctl disable x-ui