diff --git a/.env.example b/.env.example index 17d446b..93719f5 100644 --- a/.env.example +++ b/.env.example @@ -10,10 +10,12 @@ GITEA_OWNER=your_gitea_user_or_org GITEA_OWNER_TYPE=user # Push strategy +# На своём ПК можно оставить true (SSH-ключ уже в Gitea). +# Если скрипт запускается НА СЕРВЕРЕ с Gitea/root — ставьте false и задайте GITEA_USERNAME (ключ на сервере часто отсутствует). PUSH_WITH_SSH=true GITEA_SSH_HOST=git.papatramp.ru GITEA_SSH_PORT=2222 -# Required only for HTTPS push mode +# Обязательно при PUSH_WITH_SSH=false — логин владельца в Gitea (пуш по HTTPS с GITEA_TOKEN как пароль) GITEA_USERNAME=your_gitea_username # Optional behavior diff --git a/README.md b/README.md index 2682636..bbd25c3 100644 --- a/README.md +++ b/README.md @@ -262,6 +262,8 @@ ssh -T git-papatramp - делает `git clone --mirror` + `git push --mirror`; - умеет мигрировать LFS (опционально). +Пуш в Gitea по умолчанию идёт по **SSH**. Если скрипт запускается **на самом сервере Gitea** (или под `root`) и там **нет SSH-ключа**, добавленного в ваш аккаунт Gitea, будет `Permission denied (publickey)`. Тогда используйте пуш по HTTPS: **`export PUSH_WITH_SSH=false`** и **`export GITEA_USERNAME=`** ваш логин в Gitea (пароль — ваш **`GITEA_TOKEN`**). + Пример запуска: ```bash @@ -279,6 +281,7 @@ export GITEA_OWNER_TYPE='user' # или org export PUSH_WITH_SSH='true' export GITEA_SSH_HOST='git.papatramp.ru' export GITEA_SSH_PORT='2222' +# При PUSH_WITH_SSH=false добавьте: export GITEA_USERNAME='ваш_логин_gitea' export MIGRATE_LFS='true' ./scripts/migrate-github-to-gitea.sh diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 28e5af4..8995662 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -259,3 +259,17 @@ dpkg -l | grep -E 'docker.io|docker-ce|containerd|compose' Gitea в Docker обычно слушает только **HTTP :3000**; **:443** пустой, пока не настроен TLS-прокси на хосте. При схеме из [`docs/haproxy-kalinamall.cfg`](haproxy-kalinamall.cfg) на узле Gitea должен слушать кто‑то **HTTPS на 443** (чаще **nginx** с вашим wildcard). Пошаговая установка: **[`docs/gitea-nginx-https.md`](gitea-nginx-https.md)**. + +## 14) Миграция GitHub → Gitea: `Permission denied (publickey)` при push + +Скрипт [`migrate-github-to-gitea.sh`](../scripts/migrate-github-to-gitea.sh) по умолчанию делает **`git push`** в Gitea по **SSH**. На машине должен быть **SSH-ключ**, добавленный в ваш аккаунт Gitea. Если миграцию запускают на **сервере с Gitea** под **root**, своего ключа там обычно нет. + +Сделайте пуш по **HTTPS** с токеном: + +```bash +export PUSH_WITH_SSH=false +export GITEA_USERNAME='ваш_логин_в_Gitea' +# GITEA_TOKEN уже с правами на репозитории +``` + +См. также [.env.example](../.env.example) и раздел про миграцию в [`README.md`](../README.md). diff --git a/scripts/migrate-github-to-gitea.sh b/scripts/migrate-github-to-gitea.sh index 80e45f4..5a8d518 100644 --- a/scripts/migrate-github-to-gitea.sh +++ b/scripts/migrate-github-to-gitea.sh @@ -3,6 +3,9 @@ set -euo pipefail # Массовая миграция репозиториев GitHub -> Gitea. # Переносит всю git-историю через mirror push. Может переносить LFS (опционально). +# +# Пуш в Gitea: PUSH_WITH_SSH=true — нужен SSH-ключ на ЭТОЙ машине (добавлен в Gitea). +# На сервере без ключа — PUSH_WITH_SSH=false и GITEA_USERNAME + GITEA_TOKEN (HTTPS). : "${GITHUB_TOKEN:?Set GITHUB_TOKEN}" : "${GITHUB_OWNER:?Set GITHUB_OWNER (user or org on GitHub)}"