Skip to content

hookdeck/outpost

Open Source Outbound Webhooks and Event Destinations Infrastructure

outpost.hookdeck.com/docs

Outpost 是一个自托管的开源基础设施,使事件生产者能够向其平台添加出站 webhooks 和 Event Destinations,支持 Webhooks、Hookdeck Event Gateway、Amazon EventBridge、AWS SQS、AWS SNS、GCP Pub/Sub、RabbitMQ 和 Kafka 等目标类型。

Outpost 运行时具有最少的依赖(Redis、PostgreSQL 或 Clickhouse,以及支持的消息队列之一),与您现有的 webhooks 实现 100% 向后兼容,并针对高吞吐量、低成本运行进行了优化。

Outpost 由 Hookdeck 构建和维护。它用 Go 编写,并以二进制文件和 Docker 容器的形式在 Apache-2.0 许可下分发。

Outpost architecture

阅读 Outpost Concepts 以了解有关 Outpost 架构和设计的更多信息。

功能特性

有关更多信息,请参阅 Outpost Features

文档

Outpost 文档是使用 Zudoku documentation framework 构建的。

快速入门

确保你安装了 Docker

克隆 Outpost 仓库:

git clone https://github.com/hookdeck/outpost.git

导航到 outpost/examples/docker-compose/:

cd outpost/examples/docker-compose/

从示例创建一个 .env 文件:

cp .env.example .env

更新新 .env 文件中的 $API_KEY 值。

启动 Outpost 依赖项和服务:

docker-compose -f compose.yml -f compose-rabbitmq.yml -f compose-postgres.yml up

检查服务是否正在运行:

curl localhost:3333/api/v1/healthz

等待直到收到 OK% 响应。

使用以下命令创建一个租户,将 $TENANT_ID 替换为唯一的标识符(例如 "your_org_name"),并将 $API_KEY 替换为你设置在 .env 中的值:

提示:可以使用 shell 变量存储租户 ID 和 API 密钥,以便在以下命令中更轻松地使用:

TENANT_ID=your_org_name
API_KEY=your_api_key
URL=your_webhook_url
curl --location --request PUT "localhost:3333/api/v1/$TENANT_ID" \
--header "Authorization: Bearer $API_KEY"

运行通过 localtunnel 暴露的本地服务器,或使用托管服务(例如 Hookdeck Console)来捕获 webhook 事件。

创建一个 webhook 目的地,事件将传递到以下命令。同样,替换 $TENANT_ID$API_KEY。此外,将 $URL 替换为 webhook 目的地的 URL:

curl --location "localhost:3333/api/v1/$TENANT_ID/destinations" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $API_KEY" \
--data '{
  "type": "webhook",
  "topics": ["*"],
  "config": {
    "url": "'"$URL"'"
  }
}'

发布一个事件,记住要替换 $API_KEY$TENANT_ID

curl --location "localhost:3333/api/v1/publish" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $API_KEY" \
--data '{
  "tenant_id": "'"$TENANT_ID"'",
  "topic": "user.created",
  "eligible_for_retry": true,
  "metadata": {
    "meta": "data"
  },
  "data": {
    "user_id": "userid"
  }
}'

检查服务器或 webhook 捕获工具上的日志以获取已传递的事件。

获取租户的 Outpost 门户链接:

curl "localhost:3333/api/v1/$TENANT_ID/portal" \
--header "Authorization: Bearer $API_KEY"

响应将类似于以下内容:

{ "redirect_url": "http://localhost:3333?token=$TOKEN" }

token 值是 API 生成的 JWT。

打开 redirect_url 链接以查看 Outpost 门户。

Dashboard homepage

继续使用 Outpost API 或 Outpost 门户添加和测试更多目的地。

贡献

请参见 CONTRIBUTING

许可证

此存储库包含 Outpost,受 Apache License 2.0 保护,除非另有说明(任何 Outpost 徽标或商标均不受 Apache License 保护,应由 LICENSE 文件明确注明。)