Skip to content

Repository files navigation

Русский · English

Интерфейс Link-Bot

Link-Bot

Telegram-бот и Mini App для продажи и управления VPN-подписками Remnawave

Попробовать Link-Bot Сообщество Link-Bot

Go 1.25 PostgreSQL 17 Docker Compose

Попробовать бота · Сообщество в Telegram · Remnawave


🧩 Что такое Link-Bot?

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
📣 Продвижение и уведомления 🛠️ Администрирование
• Промокоды
• Реферальная система
• Рассылки с кнопками навигации по Mini App
• Уведомления об окончании подписки, устройствах, отзывах и ошибках
• Поддержка с тикетами и FAQ
• Русский, английский и фарси с RTL и шрифтом Vazir
• Режим технических работ
• Редактор тарифов и пакетов устройств
• Редактор контента, оформления и функций прямо в админке

🛠️ Админ-панель

Управляйте системой, интерфейсом, тарифами, интеграциями, рассылками, промокодами и другими функциями прямо из Mini App.

Админ-панель Link-Bot

📋 Требования

Компонент Требование
🖥️ Сервер VPS с Ubuntu 22.04/24.04 или Debian 12
🌐 Домен Домен с A-записью на IP сервера
🔌 Порты Открытые порты 22, 80 и 443
🌊 Remnawave Установленная и доступная панель Remnawave 2.x или 3.x
🤖 Telegram Бот, созданный через @BotFather

🚀 Быстрая установка

1. Подготовьте домен

Создайте у DNS-провайдера запись:

Тип: A
Имя: bot
Значение: IP_ВАШЕГО_VPS

В примерах ниже используется домен bot.example.com. Дождитесь обновления DNS перед первым запуском.

2. Установите Docker и Git

apt update && apt install -y git curl
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

3. Скачайте Link-Bot

cd /opt
git clone https://github.com/bruhxax/Link-Bot.git
cd Link-Bot

4. Создайте .env

cp .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
CADDY_AUTH_API_TOKEN=
REMNAWAVE_HEADERS=

POSTGRES_USER=linkbot
POSTGRES_PASSWORD=сложный_пароль
POSTGRES_DB=linkbot

PUBLIC_HOST=bot.example.com
PUBLIC_BASE_URL=https://bot.example.com

REFERRAL_DAYS=0

# Общий язык Telegram-бота и Mini App: ru, en или fa
DEFAULT_LANGUAGE=ru
# auto включает Vazir для фарси и Montserrat для остальных языков
DEFAULT_FONT=auto

Если API панели защищён Caddy Security, укажите токен в CADDY_AUTH_API_TOKEN. Бот будет отправлять его в заголовке X-Api-Key. Дополнительные заголовки можно задать через REMNAWAVE_HEADERS в формате Header-One:value;Header-Two:value.

Сгенерировать пароль PostgreSQL:

openssl rand -hex 24

Important

Не добавляйте https:// в PUBLIC_HOST.
В PUBLIC_BASE_URL, наоборот, нужен полный HTTPS-адрес.

5. Запустите бота

docker compose up -d --build

Caddy автоматически получит TLS-сертификат. Проверка:

docker compose ps
curl https://bot.example.com/healthcheck

6. Выполните первый запуск

  1. Откройте бота и отправьте /start.
  2. Откройте Mini App под аккаунтом из ADMIN_TELEGRAM_ID.
  3. Перейдите в раздел Админка.
  4. Настройте интеграции, тарифы, триал, сквады, контент и функции. Язык и шрифт можно повторно выбрать в разделе Админка → Язык и шрифт.
  5. В Mini App @BotFather выберите бота → Login Widget и добавьте в Allowed URLs адреса https://bot.example.com и https://bot.example.com/mini-app/.
  6. В Login Widget → Advanced оставьте стандартный алгоритм подписи RS256.

Браузерная версия использует новый Log In With Telegram (OIDC): Telegram открывается по ссылке, а пользователь подтверждает вход без ручного ввода номера и кода. id_token проверяется на сервере по официальным ключам Telegram; Client Secret в .env не требуется.

Note

Платёжные ключи, тарифы, триал, промокоды, ссылки, баннеры и оформление задаются через админку. Хранить их в .env не требуется.


🪪 Логотип Mini App

Откройте Админка → Контент → Главное меню, нажмите Загрузить файл, выберите PNG, JPG или WebP до 2 МБ и сохраните настройки. Link-Bot сам сохранит изображение в постоянном Docker-томе и подставит рабочий адрес — вручную копировать файл на сервер не нужно.

Для логотипа лучше использовать квадратное изображение от 256×256 px с прозрачным фоном. Внешнюю HTTPS-ссылку всё ещё можно указать в дополнительном поле. Если ссылка перестанет работать, Mini App покажет стандартный логотип вместо пустого места.


🖼️ Собственные баннеры

Готовые баннеры в репозиторий не включены. Загрузите свои файлы в нужную папку:

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
⬆️ Обновление
cd /opt/Link-Bot
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-доступ и используйте ключи вместо пароля
💾 Обновления Перед обновлением создавайте резервную копию базы

💬 Сообщество

Сообщество Link-Bot Попробовать Link-Bot

Вопросы и обсуждения: t.me/REMNALinkBot
Демонстрация бота: t.me/BruhvpnBot

About

Open-source Telegram bot and Mini App for selling and managing Remnawave VPN subscriptions.

Topics

Resources

Stars

22 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages