{"id":34977515,"url":"https://github.com/cspray/webhook-target","last_synced_at":"2026-05-22T09:35:20.324Z","repository":{"id":288553965,"uuid":"964068668","full_name":"cspray/webhook-target","owner":"cspray","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-14T15:01:07.000Z","size":474,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-11T00:29:38.840Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cspray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-10T16:33:21.000Z","updated_at":"2025-05-14T14:33:30.000Z","dependencies_parsed_at":"2025-08-12T09:00:51.038Z","dependency_job_id":null,"html_url":"https://github.com/cspray/webhook-target","commit_stats":null,"previous_names":["cspray/webhook-target"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cspray/webhook-target","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cspray%2Fwebhook-target","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cspray%2Fwebhook-target/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cspray%2Fwebhook-target/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cspray%2Fwebhook-target/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cspray","download_url":"https://codeload.github.com/cspray/webhook-target/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cspray%2Fwebhook-target/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28066214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-26T02:00:06.189Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-27T00:29:51.565Z","updated_at":"2025-12-27T00:29:52.224Z","avatar_url":"https://github.com/cspray.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Webhook Target\n\nA self-hosted, containerized application to provide a secure, long-term target for webhooks. The application will \nstore any received webhook in a Postgres database. This tool is designed to allow a developer to easily debug and \ndevelop interactions with a service that sends POST HTTP requests to their application. \n\nPlease review this entire README before using this software.\n\n## Requirements\n\n- [PHP 8.3+](https://php.net) (If necessary to run admin password creation tool)\n- [Composer](https://getcomposer.org/) or [Git](https://git-scm.com/)\n- [Docker](https://www.docker.com/)\n- [Docker Compose](https://docs.docker.com/compose/)\n- [Just](https://just.systems/)\n\n\u003e This guide can be followed without Just, you'll need to review the justfile \n\u003e for the appropriate Docker commands to execute.\n\n## Installation\n\nBased on what software you have installed to satisfy the requirements listed \nabove, execute one of the following commands to install the software.\n\nYou can install using Composer:\n\n```shell\ncomposer require cspray/webhook-target\n```\n\nYou can install using Git:\n\n```shell\ngit clone https://github.com/cspray/webhook-target\n```\n\n## Usage\n\n### Step 1: Prepare Environment\n\nBefore running the application, ensure that the appropriate environment \nvariables have been set. Execute the following command, then adjust the \nresulting `.env` file to be appropriate for your use case.\n\n```shell\ncp .env.dist .env\n```\n\nBelow, we review the default values and steps you can take to adjust those values, \nif necessary.\n\n``\nPROFILES=default,dev,docker,web\n``\n\nThe profiles don't need to be altered unless new services are added after you \ninstall the software. Generally, this shouldn't be required and is the result of \na special use case.\n\n---\n\n```\nDATABASE_SCHEMA=web_app\nDATABASE_HOST=database\nDATABASE_PORT=5432\nDATABASE_USER=postgres\nDATABASE_PASSWORD=password\nDATABASE_CONNECTION_LIMIT=1\n```\n\nThese are default connections for the Postgres database running in Docker\nCompose. If you want to change the database, or harden the provided database, \nyou'll need to alter these values as appropriate.\n\n---\n\n```\nADMIN_USERNAME=admin\nADMIN_PASSWORD=$2y$10$052.1wII5TGndqOfTM3WfuAZf2Y9HG9dk0Yba8eTPyRKf//GIVLHK\n```\n\nWebhook Target provides a single-user login mechanism to view the received\nwebhooks. The credential used for this login should be set for these \nenvironment variables. If you change the default password, which is highly recommended, \nbe sure to provide a value generated with the [`password_hash`](https://php.net/password_hash) \nfunction. You can also use `bin/create-admin-user-password` to generate this value, and then \nmanually set to this environment variable.\n\nThe default password is `password`. Unless you're running this locally, or in an environment\nwhere security is truly not important, it is HIGHLY RECOMMENDED you alter this value.\n\n### Step 2: Update HTTP Server Config\n\nIt might be possible, that you need to adjust the HTTP server config based on your use case. \nAt minimum, you'll probably want to generate a TLS certificate for the site. You can use a \nservice like [Let's Encrypt](https://letsencrypt.org/), and ensure the file is store in the \nlocation specified by this config.\n\nReview the file at `/resources/config/server.php`.\n\n### Step 3: Build the Docker Containers\n\nBuild the app and database Docker Containers.\n\n```shell\njust build\n```\n\n### Step 4: Bring up the Docker Container\n\nBring up the app and database.\n\n```shell\njust up\n```\n\n### Step 5: Run Database Migrations\n\nEnsure the migrations are run. Based on whether you altered the profiles in \nstep 1, you'll need to run the migrations for the correct environment.\n\nIf your profiles include `dev`:\n\n```text\njust migrate-dev-env\n```\n\nIf you swapped to using the `prod` profile:\n\n```text\njust migrate-prod\n```\n\n### Step 6: Configure your Webhook Provider\n\nNext, is to configure your webhook provider and receive some webhooks!\n\nThe path for the webhook should be:\n\n```text\n/webhook/target\n```\n\n### Step 7: Review Received Webhooks\n\nFinally, access the site, log in using credentials configured in step 1, and\nreview the data provided by the webhook.\n\n## What not use PostBin?\n\nYou probably should! [PostBin](https://www.postb.in/) is a fantastic service\nand if their software satisfies your needs, please use them. However, I was facing \na problem that required the following considerations, that prohibited using PostBin:\n\n- Tighter control over access to received webhook data\n- Ability to receive webhooks over a long period of time\n\nIf you don't have these limitations, you probably should use Pastebin. If you \n**do** have them, take a look at using this software!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcspray%2Fwebhook-target","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcspray%2Fwebhook-target","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcspray%2Fwebhook-target/lists"}