Высокопроизводительный прокси-сервер на 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- Префикс для ключей RedisHORIZON_PREFIX- Префикс для Laravel Horizon (по умолчанию:laravel_horizon:)HORIZON_ENABLED- Включает запись данных в Laravel Horizon (1/true— включено; при отсутствии переменной записи в Horizon не производится)APP_NAME- Имя приложения (используется для формирования префикса Redis)
./go-proxy
./go-proxy /path/to/.env
Создайте файл /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
Прокси принимает 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