docs(gitea): wzdj 统一到 fnvtk — API 发起/接受迁移脚本与 NAS SSH 兜底说明

Made-with: Cursor
This commit is contained in:
卡若
2026-04-14 16:46:05 +08:00
parent 5f7c416624
commit c094e4bfbd
4 changed files with 150 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
# 玩值电竞 wzdj → 统一到 Gitea 用户 fnvtkNAS / SSH 兜底)
> **目标**:仓库只在 **`http://192.168.1.201:3000/fnvtk/wzdj`**,不再依赖其它账号上的副本。
> **优先**Mac 上 **HTTP API 转移**(无需动 NAS 磁盘上的 bare 目录,数据库由 Gitea 自洽)。
> **兜底**:本机无法存钥匙串 / API 失败时,用 **SSH 登录 Gitea 所在 NAS** 做运维操作激活用户、Docker、看日志
---
## 一、推荐API 两步行(本机终端)
1. **发起转移**(以 `yongpxu` 身份把 `yongpxu/wzdj` 转给 `fnvtk`
```bash
cd /path/to/玩值电竞App
export YONGPXU_PASSWORD='你的yongpxu密码'
bash 玩值开发文档/8、部署/gitea_transfer_initiate_wzdj.sh
```
2. **接受转移**(以 `fnvtk` 身份确认接收)
```bash
export FNVTK_PASSWORD='你的fnvtk密码'
bash 玩值开发文档/8、部署/gitea_accept_transfer.sh
```
3. **本地只推 fnvtk**
```bash
git remote set-url gitea "http://fnvtk@192.168.1.201:3000/fnvtk/wzdj.git"
git push -u gitea main
```
4. **(可选)** 在 Gitea 网页删除或归档空的 **`yongpxu/wzdj`**,并删除本机远程:
`git remote remove gitea-yongpxu`
若第 1 步返回「用户未激活」等错误,先做 **第二节** 再重试。
---
## 二、SSH 上 NAS 常见运维(兜底)
> 将下面 `NAS_USER`、`NAS_HOST` 换成你实际 SSH与 kr 宝塔/群晖一致;**不要把密码写进仓库**)。
```bash
export NAS_SSH="NAS_USER@NAS_HOST" # 例admin@192.168.1.201
ssh "$NAS_SSH"
```
### 2.1 确认 Gitea 是否 Docker
```bash
sudo docker ps --format '{{.Names}}' | grep -i gitea || true
```
若容器名例如 **`gitea`**
```bash
sudo docker exec gitea gitea admin user list | grep -E 'fnvtk|yongpxu' || true
```
### 2.2 激活用户 fnvtk历史上「未激活」会导致转移 500
```bash
sudo docker exec gitea gitea admin user activate --username fnvtk
```
(子命令以容器内 `gitea admin user --help` 为准;不同 Gitea 版本略有差异。)
### 2.3 看 Gitea 日志(转移 / 推送 500 时)
```bash
sudo docker logs --tail 200 gitea
```
---
## 三、不推荐:直接改 NAS 上 bare 路径
卡若体系文档里虽有类似 **`/volume1/git/github/fnvtk/{仓库}.git`** 的说明,**仅作位置参考**。
**不要**在未停机、未备份 Gitea 数据库的情况下,手工 `mv` 仓库目录改 owner易导致 Web 与数据库不一致。统一以 **Web「转移」或上述 API** 为准。
---
## 四、仍失败时
-**Gitea 站点管理员**账号在网页:**仓库 → 设置 → 转移仓库所有权 → fnvtk**
- 或在管理员账号下使用 **Admin API** 指派仓库归属(需查阅当前 Gitea 版本的 Admin 文档)。

View File

@@ -4,6 +4,15 @@
> **仓库页**<http://192.168.1.201:3000/fnvtk/wzdj>
> **本地远程名 `gitea`**`http://fnvtk@192.168.1.201:3000/fnvtk/wzdj.git`
## 〇、从其它账号迁到 fnvtk必统一到一处
若历史上存在 **`yongpxu/wzdj`** 等副本,请**迁到 `fnvtk/wzdj`** 后只保留一处:
- **一键API推荐**:见 **`玩值开发文档/8、部署/Gitea_NAS_fnvtk迁移_SSH.md`** 第一节;或在本机已设置密码环境变量后执行:
`bash 玩值开发文档/8、部署/wzdj_migrate_all_to_fnvtk.sh`
- **发起 / 接受拆步**`gitea_transfer_initiate_wzdj.sh``gitea_accept_transfer.sh`
- **HTTP 不可用时**:用 **SSH 上 NAS** 激活 `fnvtk`、看 Docker 日志,仍建议最终走 **网页转移** 或 API**勿**手工 mv bare 仓库。详见 **`Gitea_NAS_fnvtk迁移_SSH.md`**。
## 一、双远程(默认 fnvtk + 备份)
| 远程名 | 地址 | 说明 |

View File

@@ -0,0 +1,36 @@
#!/usr/bin/env bash
# 以「仓库所有者 yongpxu」身份发起转移yongpxu/wzdj → fnvtk/wzdj随后在本机执行 gitea_accept_transfer.sh
# 认证(二选一):
# export YONGPXU_PASSWORD='…'
# 或在钥匙串中为 192.168.1.201:3000 保存用户 yongpxu 的密码(本脚本会尝试 security 读取)
#
# 用法bash 玩值开发文档/8、部署/gitea_transfer_initiate_wzdj.sh
set -euo pipefail
GITEA_HTTP="${GITEA_HTTP:-http://192.168.1.201:3000}"
OWNER="${OWNER:-yongpxu}"
REPO="${REPO:-wzdj}"
NEW_OWNER="${NEW_OWNER:-fnvtk}"
if [[ -z "${YONGPXU_PASSWORD:-}" ]]; then
YONGPXU_PASSWORD=$(security find-internet-password -s 192.168.1.201 -a yongpxu -w 2>/dev/null || true)
fi
if [[ -z "${YONGPXU_PASSWORD:-}" ]]; then
echo "[gitea_transfer_initiate_wzdj] 请 export YONGPXU_PASSWORD=…,或为 192.168.1.201 配置钥匙串用户 yongpxu" >&2
exit 1
fi
set +e
OUT=$(curl -sS -w "\n%{http_code}" -u "yongpxu:${YONGPXU_PASSWORD}" -X POST \
"${GITEA_HTTP}/api/v1/repos/${OWNER}/${REPO}/transfer" \
-H "Content-Type: application/json" \
-d "{\"new_owner\":\"${NEW_OWNER}\"}")
set -e
CODE=$(echo "$OUT" | tail -n1)
BODY=$(echo "$OUT" | sed '$d')
echo "$BODY"
if [[ "$CODE" != "202" && "$CODE" != "200" && "$CODE" != "201" && "$CODE" != "204" ]]; then
echo "[gitea_transfer_initiate_wzdj] HTTP $CODE(若已是待接收/已转移,可忽略并直接执行 gitea_accept_transfer.sh" >&2
exit 2
fi
echo "[gitea_transfer_initiate_wzdj] 已发起转移。下一步bash 玩值开发文档/8、部署/gitea_accept_transfer.sh"

View File

@@ -0,0 +1,21 @@
#!/usr/bin/env bash
# 玩值电竞 App将 Gitea 仓库统一到 fnvtk/wzdj发起转移 → 接受转移 → 本地只推 gitea
# 需在同一终端已 export
# YONGPXU_PASSWORD # yongpxu 账号
# FNVTK_PASSWORD # fnvtk 账号(若钥匙串已有 fnvtk@192.168.1.201 可不设)
#
# 用法:在项目根目录
# export YONGPXU_PASSWORD='…' FNVTK_PASSWORD='…'
# bash 玩值开发文档/8、部署/wzdj_migrate_all_to_fnvtk.sh
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$ROOT"
bash "${ROOT}/玩值开发文档/8、部署/gitea_transfer_initiate_wzdj.sh"
bash "${ROOT}/玩值开发文档/8、部署/gitea_accept_transfer.sh"
git remote set-url gitea "http://fnvtk@192.168.1.201:3000/fnvtk/wzdj.git"
git push -u gitea main
echo "[wzdj_migrate_all_to_fnvtk] 完成。请在 Gitea 上确认仅保留 fnvtk/wzdj并可删除远程 gitea-yongpxugit remote remove gitea-yongpxu"