Repolode
adnanh

adnanh/webhook

Лёгкий Go-сервер, который предоставляет HTTP-эндпоинты для вебхуков и запускает настроенные shell-команды, передавая им данные запроса через аргументы или переменные окружения.

Звёзды
12,207
Форки
882
Открытые issues
128
Последний коммит
2 месяца назад

Что это?

webhook — небольшая программа на Go, которая преобразует входящие HTTP-запросы в запуски shell-команд. Хуки задаются в файле JSON или YAML; у каждого есть ID, который становится путём эндпоинта, например /hooks/redeploy-webhook. Получив запрос, webhook разбирает заголовки, тело запроса и параметры query, проверяет настроенные правила срабатывания и передаёт значения скрипту в виде аргументов командной строки или переменных окружения.

Правила срабатывания позволяют ограничить условия запуска хука: например, требовать секрет, проверять значение в теле запроса или разрешать запросы только с определённых диапазонов IP-адресов. Хуки можно загружать из шаблона, обслуживать по HTTPS, запускать за reverse proxy через TCP-порт или Unix-сокет, а также запускать с помощью systemd socket activation. Поддержка multipart-данных формы ограничена.

webhook намеренно ограничен приёмом запросов и запуском команд; за поведение самого скрипта отвечает пользователь.

Ключевые возможности

  • 01Задаёт хуки в JSON или YAML, каждый из которых доступен по HTTP-эндпоинту.
  • 02Передаёт заголовки, тело запроса и query-параметры командам через аргументы или переменные окружения.
  • 03Поддерживает правила срабатывания, например проверку секрета и списки разрешённых IP-адресов.
  • 04Позволяет обслуживать хуки по HTTPS и работать за reverse proxy через TCP или Unix-сокет.
  • 05Поддерживает systemd socket activation и файлы конфигурации на основе шаблонов Go.

Сценарии использования

  • Запуск скрипта повторного развёртывания при отправке кода в ветку GitHub или Bitbucket.
  • Запуск CI- или сборочных задач через slash-команды Slack или Mattermost.
  • Возможность для интеграции с чатом запускать серверную команду и отвечать её результатом.

Быстрый старт

  1. 1

    Соберите из исходного кода с Go 1.21 или новее

    go build github.com/adnanh/webhook
  2. 2

    Создайте файл hooks.json с описанием хуков

  3. 3

    Запустите webhook в подробном режиме, указав файл с хуками

    /path/to/webhook -hooks hooks.json -verbose

Что важно знать

  • Хуки выполняют shell-команды на вашем сервере. Настройте правила срабатывания и секреты, чтобы предотвратить несанкционированное выполнение.
  • Правила белого списка IP-адресов работают некорректно за обратным прокси.

В подборках

Темы

Частые вопросы

Что такое webhook?
Лёгкий Go-сервер, который предоставляет HTTP-эндпоинты для вебхуков и запускает настроенные shell-команды, передавая им данные запроса через аргументы или переменные окружения. webhook — небольшая программа на Go, которая преобразует входящие HTTP-запросы в запуски shell-команд. Хуки задаются в файле JSON или YAML; у каждого есть ID, который становится путём эндпоинта, например /hooks/redeploy-webhook. Получив запрос, webhook разбирает заголовки, тело запроса и параметры query, проверяет настроенные правила срабатывания и передаёт значения скрипту в виде аргументов командной строки или переменных окружения.
webhook можно использовать бесплатно? Какая у него лицензия?
webhook распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
webhook всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в webhook — 4 сент. 2026 г..
Для чего можно использовать webhook?
Запуск скрипта повторного развёртывания при отправке кода в ветку GitHub или Bitbucket. Запуск CI- или сборочных задач через slash-команды Slack или Mattermost. Возможность для интеграции с чатом запускать серверную команду и отвечать её результатом.
Как установить webhook?
Соберите из исходного кода с Go 1.21 или новее: go build github.com/adnanh/webhook Создайте файл hooks.json с описанием хуков Запустите webhook в подробном режиме, указав файл с хуками: /path/to/webhook -hooks hooks.json -verbose
Где скачать webhook?
Исходный код и инструкции по установке — на GitHub: https://github.com/adnanh/webhook

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Лёгкая агентless-платформа для эксплуатации ИТ-инфраструктуры малого и среднего бизнеса: управление хостами, пакетные команды, веб-SSH, релизы, пайплайны и мониторинг.

11,1 тыс.2,2 тыс.JavaScriptAGPL-3.0Активно поддерживаетсяОбновлён 3 дня назад