diff --git a/玩值开发文档/8、部署/Gitea_NAS_fnvtk迁移_SSH.md b/玩值开发文档/8、部署/Gitea_NAS_fnvtk迁移_SSH.md new file mode 100644 index 0000000..ff2b9e8 --- /dev/null +++ b/玩值开发文档/8、部署/Gitea_NAS_fnvtk迁移_SSH.md @@ -0,0 +1,84 @@ +# 玩值电竞 wzdj → 统一到 Gitea 用户 fnvtk(NAS / 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 文档)。 diff --git a/玩值开发文档/8、部署/Gitea同步说明.md b/玩值开发文档/8、部署/Gitea同步说明.md index 932fed9..7fc3913 100644 --- a/玩值开发文档/8、部署/Gitea同步说明.md +++ b/玩值开发文档/8、部署/Gitea同步说明.md @@ -4,6 +4,15 @@ > **仓库页**: > **本地远程名 `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 + 备份) | 远程名 | 地址 | 说明 | diff --git a/玩值开发文档/8、部署/gitea_transfer_initiate_wzdj.sh b/玩值开发文档/8、部署/gitea_transfer_initiate_wzdj.sh new file mode 100755 index 0000000..653acf2 --- /dev/null +++ b/玩值开发文档/8、部署/gitea_transfer_initiate_wzdj.sh @@ -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" diff --git a/玩值开发文档/8、部署/wzdj_migrate_all_to_fnvtk.sh b/玩值开发文档/8、部署/wzdj_migrate_all_to_fnvtk.sh new file mode 100755 index 0000000..918c074 --- /dev/null +++ b/玩值开发文档/8、部署/wzdj_migrate_all_to_fnvtk.sh @@ -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-yongpxu:git remote remove gitea-yongpxu"