Add PostgreSQL, user/squad management, remove private domains from docs
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# tgvpn
|
||||
|
||||
**Версия:** [0.20.0](CHANGELOG.md) · [Релизы](https://git.evilfox.cc/test/tgvpn/releases)
|
||||
**Версия:** [0.20.0](CHANGELOG.md)
|
||||
|
||||
Telegram-бот на Go (базовое приветствие; далее — VPN-функции).
|
||||
|
||||
@@ -10,6 +10,7 @@ Telegram-бот на Go (базовое приветствие; далее — V
|
||||
|-----------|---------|
|
||||
| Docker | 24+ |
|
||||
| Docker Compose | v2 (`docker compose`) |
|
||||
| PostgreSQL | 16+ (в compose включён) |
|
||||
| Токен бота | [@BotFather](https://t.me/BotFather) |
|
||||
| Сеть | Исходящий HTTPS к `api.telegram.org` (порт 443) |
|
||||
|
||||
@@ -22,7 +23,7 @@ Telegram-бот на Go (базовое приветствие; далее — V
|
||||
### 1. Клонирование
|
||||
|
||||
```bash
|
||||
git clone https://git.evilfox.cc/test/tgvpn.git
|
||||
git clone <URL-вашего-репозитория>
|
||||
cd tgvpn
|
||||
```
|
||||
|
||||
@@ -39,9 +40,9 @@ BOT_TOKEN=ваш_токен_от_BotFather
|
||||
BOT_DEBUG=false
|
||||
TELEGRAM_ADMIN_ID=123456789
|
||||
REMNAWAVE_PANEL_NAME=Панель 1
|
||||
REMNAWAVE_PANEL_URL=https://j5.evilfox.win
|
||||
REMNAWAVE_PANEL_URL=https://panel.example.com
|
||||
REMNAWAVE_API_TOKEN=токен_из_панели
|
||||
REMNAWAVE_SUBSCRIPTION_URL=https://sub5.evilfox.win
|
||||
REMNAWAVE_SUBSCRIPTION_URL=https://sub.example.com
|
||||
```
|
||||
|
||||
> **Важно:** файл `.env` не попадает в git и не копируется в образ. Compose передаёт переменные в контейнер при старте.
|
||||
@@ -115,7 +116,7 @@ docker compose version
|
||||
sudo mkdir -p /opt/tgvpn
|
||||
sudo chown $USER:$USER /opt/tgvpn
|
||||
cd /opt/tgvpn
|
||||
git clone https://git.evilfox.cc/test/tgvpn.git .
|
||||
git clone <URL-вашего-репозитория> .
|
||||
```
|
||||
|
||||
### Шаг 4. Настройка `.env`
|
||||
@@ -260,7 +261,7 @@ 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` |
|
||||
| Нет доступа к git | Проверьте SSH/HTTPS-доступ к вашему git-серверу |
|
||||
|
||||
---
|
||||
|
||||
@@ -272,7 +273,7 @@ docker image prune -f
|
||||
2. В PowerShell:
|
||||
|
||||
```powershell
|
||||
git clone https://git.evilfox.cc/test/tgvpn.git
|
||||
git clone <URL-вашего-репозитория>
|
||||
cd tgvpn
|
||||
Copy-Item .env.example .env
|
||||
# отредактируйте .env — вставьте BOT_TOKEN
|
||||
@@ -310,6 +311,10 @@ go build -o bot .
|
||||
| `REMNAWAVE_API_TOKEN` | да | Токен из **Remnawave Settings → API Tokens**, заголовок `Authorization: Bearer` |
|
||||
| `CADDY_AUTH_API_TOKEN` | нет | `X-Api-Key`, если включён Caddy with security (как в оф. `.env` subscription-page) |
|
||||
| `REMNAWAVE_SUBSCRIPTION_URL` | нет | Опционально: домен Subscription Page (`sub.*`), отдельная проверка |
|
||||
| `DATABASE_URL` | да | PostgreSQL, в compose: `postgres://tgvpn:tgvpn@db:5432/tgvpn?sslmode=disable` |
|
||||
| `DEFAULT_USER_DAYS` | нет | Срок подписки по умолчанию (30) |
|
||||
| `DEFAULT_EXTERNAL_SQUAD_UUID` | нет | External squad по умолчанию при быстром создании |
|
||||
| `DEFAULT_INTERNAL_SQUAD_UUIDS` | нет | Internal squads через запятую |
|
||||
| `BOT_DEBUG` | нет | `true` — подробные логи Telegram API (только для отладки) |
|
||||
|
||||
### Админ-меню в боте
|
||||
@@ -319,7 +324,11 @@ go build -o bot .
|
||||
- `/admin` — админ-меню (панель 1, Remnawave)
|
||||
- `/admin check` — полная проверка: веб панели, API (статистика, users, nodes), подписка (settings + API), страница подписки
|
||||
- `/admin config` — конфиг панели в боте
|
||||
- Кнопки снизу (после `/start`): «Проверить панель», «Конфиг панели»
|
||||
- `/admin user` — мастер создания пользователя в Remnawave + назначение сквадов
|
||||
- `/admin user <логин> [дней]` — быстрое создание (сквады из `DEFAULT_*` в `.env`)
|
||||
- `/admin squads` — список internal/external squads
|
||||
- `/admin assign <логин>` — назначить сквады существующему пользователю
|
||||
- Кнопки: «Создать пользователя», «Сквады», «Проверить панель», «Конфиг»
|
||||
|
||||
---
|
||||
|
||||
@@ -410,9 +419,9 @@ docker compose logs bot # ошибки сети, токена
|
||||
|
||||
Частая причина: в `REMNAWAVE_PANEL_URL` указан домен **страницы подписки** (`sub.example.com`), а не **админ-панели** (`panel.example.com`).
|
||||
|
||||
1. Укажите URL **панели** (не sub): `REMNAWAVE_PANEL_URL=https://j5.evilfox.win`
|
||||
1. Укажите URL **панели** (не sub): `REMNAWAVE_PANEL_URL=https://panel.example.com`
|
||||
2. Токен API: `REMNAWAVE_API_TOKEN=...` (Settings → API Tokens)
|
||||
3. Страницу подписки — опционально: `REMNAWAVE_SUBSCRIPTION_URL=https://sub5.evilfox.win`
|
||||
3. Страницу подписки — опционально: `REMNAWAVE_SUBSCRIPTION_URL=https://sub.example.com`
|
||||
4. Проверьте на сервере: `docker compose ps` (Remnawave Panel запущен), логи reverse proxy
|
||||
|
||||
### Контейнер постоянно перезапускается
|
||||
@@ -438,9 +447,10 @@ sudo usermod -aG docker $USER
|
||||
tgvpn/
|
||||
├── main.go
|
||||
├── internal/
|
||||
│ ├── bot/ # обработчики Telegram, админ-меню
|
||||
│ ├── bot/ # Telegram, админ-меню, создание пользователей
|
||||
│ ├── config/ # переменные окружения
|
||||
│ └── remnawave/ # клиент API панели
|
||||
│ ├── db/ # PostgreSQL, миграции, мастер админа
|
||||
│ └── remnawave/ # API панели (users, squads)
|
||||
├── Dockerfile # multi-stage сборка
|
||||
├── docker-compose.yml # оркестрация
|
||||
├── .env.example # шаблон переменных
|
||||
@@ -454,4 +464,4 @@ tgvpn/
|
||||
|
||||
## Репозиторий
|
||||
|
||||
https://git.evilfox.cc/test/tgvpn.git
|
||||
Укажите URL вашего приватного git-репозитория при клонировании.
|
||||
|
||||
Reference in New Issue
Block a user