docs(gitea): wzdj 统一到 fnvtk — API 发起/接受迁移脚本与 NAS SSH 兜底说明
Made-with: Cursor
This commit is contained in:
84
玩值开发文档/8、部署/Gitea_NAS_fnvtk迁移_SSH.md
Normal file
84
玩值开发文档/8、部署/Gitea_NAS_fnvtk迁移_SSH.md
Normal file
@@ -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 文档)。
|
||||
@@ -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 + 备份)
|
||||
|
||||
| 远程名 | 地址 | 说明 |
|
||||
|
||||
36
玩值开发文档/8、部署/gitea_transfer_initiate_wzdj.sh
Executable file
36
玩值开发文档/8、部署/gitea_transfer_initiate_wzdj.sh
Executable 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"
|
||||
21
玩值开发文档/8、部署/wzdj_migrate_all_to_fnvtk.sh
Executable file
21
玩值开发文档/8、部署/wzdj_migrate_all_to_fnvtk.sh
Executable 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-yongpxu:git remote remove gitea-yongpxu"
|
||||
Reference in New Issue
Block a user