From feb1095de0dfcbff29ce489119ca74a48fa28ef1 Mon Sep 17 00:00:00 2001 From: tgvpn Date: Thu, 21 May 2026 00:50:40 +0300 Subject: [PATCH] Add detailed update instructions to README --- README.md | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 97 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 234e188..6292a65 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ TELEGRAM_ADMIN_ID=123456789 REMNAWAVE_PANEL_NAME=Панель 1 REMNAWAVE_PANEL_URL=https://panel.example.com REMNAWAVE_API_TOKEN=токен_из_панели +REMNAWAVE_SUBSCRIPTION_URL=https://sub.example.com ``` > **Важно:** файл `.env` не попадает в git и не копируется в образ. Compose передаёт переменные в контейнер при старте. @@ -152,21 +153,113 @@ sudo systemctl enable docker sudo systemctl start docker ``` -### Шаг 7. Обновление версии бота +### Шаг 7. Обновление + +См. раздел [Обновление бота](#обновление-бота) ниже. + +--- + +## Обновление бота + +Инструкция для уже работающей установки: подтянуть код из git, пересобрать контейнер и убедиться, что бот запустился. + +### Перед обновлением + +1. Убедитесь, что `.env` сохранён на сервере (он не в git). +2. Посмотрите, не появились ли новые переменные в `.env.example`: + +```bash +cd /opt/tgvpn # или каталог, куда клонировали проект +git fetch origin +git diff HEAD origin/main -- .env.example +``` + +Если в `.env.example` есть новые строки — добавьте их в свой `.env` вручную. + +### Обновление на VPS (Docker) ```bash cd /opt/tgvpn -git pull + +# 1. Скачать изменения +git pull origin main + +# 2. Пересобрать и перезапустить (простой даунтайм ~10–30 сек) docker compose up -d --build -docker compose logs --tail=30 bot + +# 3. Проверить логи +docker compose ps +docker compose logs --tail=50 bot ``` -Старый образ можно удалить (опционально): +В логах должны быть строки вида: `бот @имя_бота запущен` и `администратор ID …`. + +Проверка в Telegram (от аккаунта админа): + +- `/start` — бот отвечает +- `/admin check` — проверка панели Remnawave + +### Обновление на Windows (Docker Desktop) + +```powershell +cd tgvpn +git pull origin main +docker compose up -d --build +docker compose logs --tail=50 bot +``` + +### Обновление без Docker (локально) + +```bash +cd tgvpn +git pull origin main +go build -o bot . +# остановите старый процесс бота, затем: +./bot +``` + +### Если изменили только `.env` + +Пересборка не нужна — достаточно пересоздать контейнер: + +```bash +docker compose up -d --force-recreate +``` + +### Откат на предыдущую версию + +```bash +cd /opt/tgvpn +git log --oneline -5 # найти нужный коммит +git checkout <хеш_коммита> # например: git checkout f360d53 +docker compose up -d --build +``` + +Вернуться на актуальную ветку: + +```bash +git checkout main +git pull origin main +docker compose up -d --build +``` + +### Очистка старых образов Docker (опционально) + +После нескольких обновлений на диске копятся неиспользуемые слои: ```bash docker image prune -f ``` +### Частые проблемы при обновлении + +| Симптом | Решение | +|---------|---------| +| `git pull` конфликтует с локальными правками | `git stash` → `git pull` → `git stash pop` или сбросить локальные изменения: `git checkout -- .` | +| Бот не стартует после pull | `docker compose logs bot` — часто не хватает новой переменной в `.env` | +| Старый код в контейнере | Обязательно `--build`: `docker compose up -d --build` | +| Нет доступа к git | Проверьте SSH/HTTPS-доступ к `git.evilfox.cc` | + --- ## Развёртывание на Windows