Skip to content

hybridgram/go-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Proxy for Telegram Webhooks

Высокопроизводительный прокси-сервер на Go для обработки Telegram webhook'ов и интеграции с Laravel Horizon через Redis.

🚀 Возможности

  • Быстрая обработка webhook'ов от Telegram
  • Интеграция с Laravel Horizon через Redis
  • Поддержка секретного токена для безопасности
  • Гибкая конфигурация через переменные окружения
  • Низкое потребление ресурсов

⚙️ Конфигурация

Создайте файл .env в директории с программой:

Параметры конфигурации

  • REDIS_HOST - Хост Redis сервера (по умолчанию: 127.0.0.1)
  • REDIS_PORT - Порт Redis сервера (по умолчанию: 6379)
  • REDIS_DB - Номер базы данных Redis (по умолчанию: 0)
  • REDIS_PASSWORD - Пароль для Redis (опционально, если указан null, то пароль не используется)
  • SECRET_TOKEN - Секретный токен для проверки webhook'ов (опционально, но рекомендуется)
  • LISTEN_PORT - Порт для прослушивания (по умолчанию: 8080)
  • REDIS_PREFIX - Префикс для ключей Redis
  • HORIZON_PREFIX - Префикс для Laravel Horizon (по умолчанию: laravel_horizon:)
  • HORIZON_ENABLED - Включает запись данных в Laravel Horizon (1/true — включено; при отсутствии переменной записи в Horizon не производится)
  • APP_NAME - Имя приложения (используется для формирования префикса Redis)

🏃 Использование

Базовый запуск

./go-proxy

С указанием пути к .env файлу

./go-proxy /path/to/.env

Как systemd сервис (Linux)

Создайте файл /etc/systemd/system/go-proxy.service:

[Unit]
Description=Go Proxy for Telegram Webhooks
After=network.target redis.service

[Service]
Type=simple
User=your-user
WorkingDirectory=/path/to/go-proxy
ExecStart=/path/to/go-proxy
Restart=always
RestartSec=5
EnvironmentFile=/path/to/.env

[Install]
WantedBy=multi-user.target

Затем:

sudo systemctl daemon-reload
sudo systemctl enable go-proxy
sudo systemctl start go-proxy

📡 API

Прокси принимает POST запросы на эндпоинт:

POST /telegram/bot/webhook/{bot_id}

Где {bot_id} - ID вашего Telegram бота.

Если указан SECRET_TOKEN, запрос должен содержать заголовок:

X-Telegram-Bot-Api-Secret-Token: your-secret-token-here

🔧 Требования

  • Go 1.25+ (для сборки из исходников)
  • Redis сервер
  • Laravel Horizon (для обработки задач) можно и просто queue:work, но сейчас будут создаваться лишние ключи

📝 Лицензия

См. файл LICENSE

About

Go proxy for telegram webhook

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages