Telegram-бот и Mini App для продажи VPN-подписок через Remnawave
TGS-bot объединяет личный кабинет, тарифы, оплату, поддержку и управление VPN-сервисом в одном Telegram Mini App.
Всё основное настраивается через встроенную админку — без ручного редактирования конфигурации.
| Для пользователей | Для администратора |
|---|---|
| Личный кабинет и собственная страница подключения | Управление пользователями и перенос подписок |
| Тарифы, промокоды и пробный период | Тарифы, сквады, триал и доступ после окончания |
| 8 платёжных систем | Интеграции и способы оплаты |
| Управление устройствами | Клиенты подключения для разных платформ |
| Поддержка с историей обращений | Тикеты, диагностика и режим аварии |
| Серверы, платежи и реферальная система | Редактор текстов, оформления и рассылок |
| Компонент | Требование |
|---|---|
| Сервер | Ubuntu 22.04/24.04 или Debian 12 |
| Docker | Docker Engine и Docker Compose |
| Домен | A-запись на IP сервера |
| Порты | Открытые 80 и 443 |
| Telegram | Бот от @BotFather |
| Remnawave | URL панели и API-токен |
apt update && apt install -y git curl
curl -fsSL https://get.docker.com | sh
systemctl enable --now dockergit clone git@github.com:bruhxax/TGS-bot.git /opt/tgs-bot
cd /opt/tgs-bot
chmod +x install.sh
./install.shУстановщик запросит:
- токен Telegram-бота;
- HTTPS-адрес Mini App;
- Telegram ID администратора;
- URL и API-токен Remnawave.
После этого он создаст защищённый .env, сгенерирует пароли, запустит PostgreSQL и подключит HTTPS. Если на сервере уже есть nginx или Caddy, установщик предложит использовать его.
Платёжные системы, тарифы, триал, сквады, тексты и оформление настраиваются внутри Mini App: Админ → нужный раздел.
- Отправьте боту
/start. - Откройте Mini App с аккаунта администратора.
- Проверьте Remnawave в разделе Админ → Интеграции.
- Настройте тарифы, триал и способы оплаты.
| Сервис | Адрес |
|---|---|
| Remnawave | https://ваш-домен/api/webhooks/remnawave |
| ЮKassa | https://ваш-домен/api/webhooks/yookassa |
| CryptoBot | https://ваш-домен/api/webhooks/cryptobot |
| LAVA, WATA, Platega, FreeKassa, Heleket, Pally | https://ваш-домен/api/webhooks/payments/название |
Проверка работы: https://ваш-домен/health
Все команды выполняются из каталога проекта:
cd /opt/tgs-bot| Действие | Команда |
|---|---|
| Статус | docker compose ps |
| Логи бота | docker compose logs -f --tail=200 app |
| Перезапуск бота | docker compose restart app |
| Остановить | docker compose stop |
| Запустить | docker compose start |
git pull --ff-only origin main
docker compose up -d --buildНастройки и база данных при обновлении сохраняются.
Резервная копия и восстановление базы
Создать резервную копию:
mkdir -p /opt/tgs-bot/backups
docker compose exec -T db sh -c 'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" -Fc' \
> "/opt/tgs-bot/backups/tgsbot-$(date +%Y%m%d-%H%M%S).dump"Восстановить выбранную копию:
docker compose stop app
docker compose exec -T db sh -c 'pg_restore -U "$POSTGRES_USER" -d "$POSTGRES_DB" --clean --if-exists' \
< /opt/tgs-bot/backups/tgsbot-YYYYMMDD-HHMMSS.dump
docker compose up -d appОстановка и удаление
Удалить контейнеры, сохранив базу:
docker compose downПолностью удалить контейнеры и данные TGS-bot:
docker compose down --volumes --remove-orphans
⚠️ Команда с--volumesнеобратимо удаляет базу данных. Сначала создайте резервную копию.
gofmt -w ./cmd ./internal
go test ./...
go vet ./...Предпросмотр Mini App: /app?preview=1
Проект распространяется по лицензии GNU AGPL v3: его можно устанавливать, изучать и изменять. При распространении изменённой версии или предоставлении её пользователям через сеть необходимо сохранить эту лицензию и предоставить соответствующий исходный код.