# Установка из закрытого GitHub-репозитория (по ключу) Инструкция для размещения проекта в **приватном** репозитории и установки на сервер **по SSH-ключу** или **по токену (PAT)**. --- ## 1. Размещение в закрытом репозитории ### 1.1 Создать приватный репозиторий 1. GitHub → **New repository**. 2. Имя, например: `gotelegram_pro`. 3. Выберите **Private**. 4. Не добавляйте README, .gitignore и лицензию, если пушите существующий проект. ### 1.2 Загрузить код (с локальной машины) ```bash cd "Скрипт mtproxy" git init git remote add origin git@github.com:ВАШ_ЛОГИН/gotelegram_pro.git git add . git commit -m "GoTelegram MTProxy + bot" git branch -M main git push -u origin main ``` Если репо уже есть и вы только добавляете remote: ```bash git remote add origin git@github.com:ВАШ_ЛОГИН/gotelegram_pro.git git push -u origin main ``` ### 1.3 Настроить доступ «по ключу» Доступ к приватному репо с сервера возможен двумя способами. | Способ | Когда использовать | |--------|--------------------| | **SSH-ключ** | На сервере уже настроен `ssh-agent` и ключ добавлен в GitHub (Deploy key или ваш SSH key). | | **Personal Access Token (PAT)** | Удобно для одноразовой установки или CI; токен передаётся в переменной окружения. | --- ## 2. Установка по SSH-ключу ### 2.1 Добавить SSH-ключ в GitHub **На сервере** (или с машины, с которой будете клонировать): ```bash # Сгенерировать ключ (если ещё нет) ssh-keygen -t ed25519 -C "server-gotelegram" -f ~/.ssh/gotelegram_deploy -N "" cat ~/.ssh/gotelegram_deploy.pub ``` - **Личный репо:** GitHub → **Settings → SSH and GPG keys → New SSH key** → вставить содержимое `.pub`. - **Организация:** добавить ключ как **Deploy key** в настройках репозитория (Read-only достаточно). Проверка: ```bash ssh -T git@github.com ``` ### 2.2 Клонировать и установить **Вариант А:** скопируйте `bootstrap_install.sh` на сервер (через scp или вставьте содержимое в файл), затем: ```bash chmod +x bootstrap_install.sh GIT_REPO_SSH="git@github.com:ВАШ_ЛОГИН/gotelegram_pro.git" sudo bash bootstrap_install.sh ``` **Вариант Б:** клонировать репо вручную и запустить установку: ```bash git clone git@github.com:ВАШ_ЛОГИН/gotelegram_pro.git /tmp/gotelegram_pro sudo /tmp/gotelegram_pro/install_gotelegram_bot.sh ``` --- ## 3. Установка по токену (PAT) ### 3.1 Создать Personal Access Token 1. GitHub → **Settings → Developer settings → Personal access tokens**. 2. **Tokens (classic)** → **Generate new token**. 3. Права: минимум **repo** (полный доступ к приватным репо). 4. Скопировать токен (один раз показывается). ### 3.2 Установка одной командой (bootstrap) Скопируйте **bootstrap_install.sh** на сервер (scp или создайте файл и вставьте содержимое из репо). Затем: ```bash # Подставьте свой токен и репо export GITHUB_TOKEN="ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" export GIT_REPO_HTTPS="https://github.com/ВАШ_ЛОГИН/gotelegram_pro.git" sudo -E bash bootstrap_install.sh ``` `-E` сохраняет переменные окружения (в т.ч. `GITHUB_TOKEN`) при sudo. Вариант без экспорта (токен в истории не сохраняйте в продакшене): ```bash GITHUB_TOKEN=ghp_xxx GIT_REPO_HTTPS=https://github.com/USER/gotelegram_pro.git sudo -E bash bootstrap_install.sh ``` ### 3.3 Установка через install_gotelegram_bot.sh Если скрипт **install_gotelegram_bot.sh** уже лежит на сервере (скопирован из репо), но папки **gotelegram-bot** рядом нет, скрипт сам попытается клонировать репо по токену: ```bash export GITHUB_TOKEN="ghp_xxxxxxxxxxxx" export GOTETELEGRAM_BOT_REPO="https://github.com/ВАШ_ЛОГИН/gotelegram_pro" sudo -E ./install_gotelegram_bot.sh ``` Токен в процессе установки **не сохраняется** на диск, только используется для `git clone`. --- ## 4. Безопасность - **SSH:** используйте отдельный ключ (Deploy key) с доступом только к этому репо и при необходимости только на чтение. - **PAT:** не коммитьте токен в репо и не оставляйте в истории shell. Для повторных установок лучше SSH или новый токен. - После установки можно удалить клонированную папку: `rm -rf /tmp/gotelegram_pro*`. --- ## 5. Краткая шпаргалка | Задача | Команда | |--------|--------| | Установка по SSH (репо уже клонирован) | `sudo ./install_gotelegram_bot.sh` | | Установка по SSH (bootstrap) | `GIT_REPO_SSH=git@github.com:USER/REPO.git sudo bash bootstrap_install.sh` | | Установка по токену (bootstrap) | `GITHUB_TOKEN=ghp_xxx GIT_REPO_HTTPS=https://github.com/USER/REPO.git sudo -E bash bootstrap_install.sh` | | Установка по токену (только install-скрипт) | `GITHUB_TOKEN=ghp_xxx sudo -E ./install_gotelegram_bot.sh` | Вместо `USER/REPO` подставьте свой логин и имя репозитория.