Files
fnos-gitea-sync/README.md
T
cbb 3ec3fd01c0 feat: v1.1.1 — 同步间隔可调(5 秒 ~ 1 天,默认 10 秒,改完立即生效)
- 间隔存入 settings.json,带范围校验(5~86400 秒),非法值明确拒绝
- 设置页新增「同步间隔」输入框,附人性化时长提示(秒/分钟/小时)
- 同步循环每轮读取最新间隔,保存后下一轮生效,无需重启
- 首页/状态页的间隔文案改为动态显示(原来硬编码 10 秒)
- manifest 1.1.0 → 1.1.1
2026-10-13 19:37:06 +08:00

81 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GiteaHubSync — Gitea → GitHub 镜像同步(飞牛原生应用)
每次推送到飞牛 Gitea(3000 端口)的代码,**自动镜像到 GitHub**(默认 10 秒一轮,间隔 5 秒 ~ 1 天可在设置页调整;默认 7 个仓库:
SMB_Android / DCU_APP / GD32E50X_BOOT / DCU_DesktopController / Motor_v2 / DCU_ECAT_Master / GD32_BOOT,
可任意增减)。
和「Agent 签到助手」一样,是标准的飞牛 `.fpk` 原生应用:**不进 Docker**,依赖已安装的
`python312` 运行时,安装后出现在应用中心已安装列表和桌面启动台,可 启动/停止/重启/卸载,
NAS 重启自动恢复。控制面板带自动同步开关、立即同步、仓库状态、同步日志和
「打开 Gitea(3000 端口)」按钮。
## 功能特性
- **多 GitHub 账号**:设置页可添加多个 GitHub 账号(用户名 + Personal Access Token),
一键切换推送目标;每个账号独立记录同步进度,切回原账号不会重复推送
- **同步间隔可调**:设置页可改检查间隔(5 秒 ~ 1 天,默认 10 秒),改完立即生效
- **自动创建仓库**:Gitea 上的新仓库加入同步时,若 GitHub 上不存在同名仓库,
自动按账号设置为私有/公开创建(可开关)
- **两种推送方式**:配置了 Token 的账号走 HTTPS 推送(通用,任何人都能用自己的
GitHub 账号使用);未配置 Token 的旧账号继续走 SSH 私钥推送
- **真镜像语义**:Gitea 删分支/标签,GitHub 同步删
- 推送失败下一轮自动重试;开关关掉后完全停止同步
## 安装(三选一)
### 方式一:飞牛网页手动安装(不需要给任何密码)
1. 把 NAS 上的 `fnos-gitea-sync/GiteaHubSync/GiteaHubSync.fpk` 下载到电脑
(通过飞牛文件管理/SMB,目录:`/vol1/@appshare/fn-deepseek-harness/fnos-gitea-sync/GiteaHubSync/`)
2. 飞牛网页 → **应用中心** → 右上角 **手动安装** → 选择该 fpk
3. 等待安装完成(依赖 python312 已满足),应用自动启动,约 1 分钟内完成首次同步
### 方式二:命令行自动安装(和签到系统相同的方式)
```bash
cd /vol1/@appshare/fn-deepseek-harness/fnos-gitea-sync
FNOS_HOST=192.168.31.10 FNOS_USER=<管理员账号> FNOS_PASS=<密码> \
/var/apps/nodejs_v24/target/bin/node fnos-install.js
```
### 方式三:先用着原生版
在安装应用前,面板已以原生方式在 `http://192.168.31.10:8899` 运行,功能一致。
安装应用时安装脚本会自动停掉原生版,无缝交接。
## 安装后
- **桌面图标**:「Gitea→GitHub 同步」,点击打开控制面板
- **或直接访问**:`http://192.168.31.10:8899`
- **应用中心管理**:已安装 → GiteaHubSync → 启动/停止/重启/卸载
- **数据目录**:`/vol1/@appdata/GiteaHubSync`(镜像仓库、状态、日志;卸载应用不丢 GitHub 上的代码)
## 使用自己的 GitHub 账号(大众用法)
1. 打开面板 → **⚙️ 设置** →「添加 / 更新 GitHub 账号」
2. 到 [github.com/settings/tokens](https://github.com/settings/tokens) 生成
**Tokens (classic)**,勾选 `repo` 权限
3. 填回面板(用户名留空则按 Token 自动识别),点「验证并添加」——添加第一个 Token
账号后会自动切换为当前账号
4. 「Gitea 用户名」改成你自己的 Gitea 用户名(面板据此列出可同步的仓库)
5. 到 **🧩 项目管理** 添加要同步的仓库;GitHub 上不存在时会自动创建(默认私有)
> Token 只保存在 NAS 本地 `accounts.json`(权限 600),不上传任何地方;
> 日志中的 Token 会自动打码。卸载应用不会动 GitHub 上的任何仓库。
## 重新构建
```bash
cd /vol1/@appshare/fn-deepseek-harness/fnos-gitea-sync
./build.sh
```
## 说明
- 带 Token 的账号走 HTTPS 推送(任何网络环境可用);无 Token 的旧账号走 SSH 22
端口直连,私钥随应用打包安装在 NAS 本地
- 从 v1.0.0 升级会自动迁移:旧的同步进度归入「默认(SSH 私钥)」账号,行为不变
- 数据文件:`accounts.json`(GitHub 账号,含 Token)、`settings.json`
(Gitea 用户名 / 自动创建开关)、`repos.json`(同步列表)、`.last-pushed/<账号>/<仓库>`
(每个账号的同步进度)