Add PostgreSQL, user/squad management, remove private domains from docs

This commit is contained in:
tgvpn
2026-05-21 01:13:23 +03:00
parent d0dc8d5822
commit 5e3229e998
17 changed files with 1171 additions and 58 deletions
+23 -13
View File
@@ -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-репозитория при клонировании.