Link-Bot — Telegram-бот и Mini App для продажи и управления VPN-подписками Remnawave.
Он объединяет личный кабинет пользователя, оплату, управление подписками, поддержку и администрирование в одном интерфейсе.
🤖 Демонстрация: открыть Link-Bot в Telegram
💬 Сообщество: новости, вопросы и обсуждения
| 📦 Подписки и тарифы | 💳 Платежи |
|---|---|
| • Личный кабинет в Telegram Mini App и браузере • Создание и продление подписок Remnawave • Тарифы, триал и выбор внутренних/внешних сквадов • Привязка и перенос подписок между Telegram-аккаунтами |
• YooKassa • Crypto Pay • Telegram Stars • Lava • WATA • Platega • FreeKassa • Heleket • Pally |
| 📣 Продвижение и уведомления | 🛠️ Администрирование |
|---|---|
| • Промокоды • Реферальная система • Рассылки • Уведомления об окончании подписки и ошибках |
• Поддержка с тикетами и FAQ • Режим технических работ • Редактор контента, оформления и функций прямо в админке |
Управляйте системой, интерфейсом, тарифами, интеграциями, рассылками, промокодами и другими функциями прямо из Mini App.
| Компонент | Требование |
|---|---|
| 🖥️ Сервер | VPS с Ubuntu 22.04/24.04 или Debian 12 |
| 🌐 Домен | Домен с A-записью на IP сервера |
| 🔌 Порты | Открытые порты 22, 80 и 443 |
| 🌊 Remnawave | Установленная и доступная панель Remnawave |
| 🤖 Telegram | Бот, созданный через @BotFather |
Создайте у DNS-провайдера запись:
Тип: A
Имя: bot
Значение: IP_ВАШЕГО_VPS
В примерах ниже используется домен bot.example.com. Дождитесь обновления DNS перед первым запуском.
apt update && apt install -y git curl
curl -fsSL https://get.docker.com | sh
systemctl enable --now dockercd /opt
git clone https://github.com/bruhxax/Link-Bot.git
cd Link-Botcp .env.example .env
nano .envМинимально заполните:
TELEGRAM_TOKEN=токен_бота_от_BotFather
ADMIN_TELEGRAM_ID=ваш_telegram_id
REMNAWAVE_URL=https://panel.example.com
REMNAWAVE_TOKEN=токен_remnawave
REMNAWAVE_MODE=remote
POSTGRES_USER=linkbot
POSTGRES_PASSWORD=сложный_пароль
POSTGRES_DB=linkbot
PUBLIC_HOST=bot.example.com
PUBLIC_BASE_URL=https://bot.example.com
REFERRAL_DAYS=0Сгенерировать пароль PostgreSQL:
openssl rand -hex 24Important
Не добавляйте https:// в PUBLIC_HOST.
В PUBLIC_BASE_URL, наоборот, нужен полный HTTPS-адрес.
docker compose up -d --buildCaddy автоматически получит TLS-сертификат. Проверка:
docker compose ps
curl https://bot.example.com/healthcheck- Откройте бота и отправьте
/start. - Откройте Mini App под аккаунтом из
ADMIN_TELEGRAM_ID. - Перейдите в раздел Админка.
- Настройте интеграции, тарифы, триал, сквады, контент и функции.
- В @BotFather выполните
/setdomainи укажитеbot.example.com.
Note
Платёжные ключи, тарифы, триал, промокоды, ссылки, баннеры и оформление задаются через админку. Хранить их в .env не требуется.
Готовые баннеры в репозиторий не включены. Загрузите свои файлы в нужную папку:
assets/telegram/menu/
assets/telegram/verification/
assets/telegram/commerce/
assets/telegram/success/
После загрузки укажите путь в редакторе контента, например:
/assets/telegram/menu/banner.png
Пустое поле означает отправку сообщения без баннера.
Все команды выполняются из /opt/Link-Bot.
📊 Статус контейнеров
docker compose ps📜 Логи бота
docker compose logs -f --tail=200 bot🔐 Логи HTTPS-прокси
docker compose logs -f --tail=200 caddy🔄 Перезапуск бота
docker compose restart bot♻️ Перезапуск всего проекта
docker compose restart⏯️ Остановка и запуск
docker compose stop
docker compose start⬆️ Обновление
git pull --ff-only
docker compose up -d --build --force-recreate --remove-orphansОбновление сохраняет базу данных и настройки из админки. Уже созданные тарифы, оформление и интеграции не сбрасываются на новые значения по умолчанию.
💾 Резервная копия базы
docker compose exec -T db sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' > link-bot-backup.sql📥 Восстановление базы
cat link-bot-backup.sql | docker compose exec -T db sh -c 'psql -U "$POSTGRES_USER" "$POSTGRES_DB"'🗑️ Удаление контейнеров без удаления базы
docker compose down[!CAUTION]
docker compose down -vудаляет базу данных и настройки без возможности восстановления.
| Путь | Назначение |
|---|---|
cmd/ |
Запуск приложения |
db/migrations/ |
Миграции PostgreSQL |
internal/ |
Логика бота, Mini App и интеграций |
translations/ |
Тексты Telegram-бота |
assets/telegram/ |
Пользовательские баннеры |
docker-compose.yaml |
Bot, PostgreSQL и Caddy |
.env.example |
Параметры первого запуска |
| Рекомендация | Описание |
|---|---|
| 🔑 Секреты | Не публикуйте .env, токены и резервные копии |
| 🐘 PostgreSQL | Используйте отдельный сложный пароль |
| 🛡️ SSH | Ограничьте SSH-доступ и используйте ключи вместо пароля |
| 💾 Обновления | Перед обновлением создавайте резервную копию базы |

