Appwrite Webhook Proxy
A simple HTTP server behaving as proxy between webhooks and Appwrite Functions, allowing for instance Stripe payments integration into Appwrite.
Maintained by core team member, tho
Usage
-
Make sure to have Appwrite function that can print
APPWRITE_FUNCTION_DATA
for you, so you can see it working. You can useappwrite-function.tar.gz
from this repo as example function. Make sure to useNodeJS
runtime, and set command tonode index.js
. -
Add webhook proxy container to Appwrite's docker stack. Locate
docker-compose.yml
file inside yourappwrite
folder, and add following section:
version: '3'
services:
appwrite-webhook-proxy:
image: meldiron/appwrite-webhook-proxy:v0.0.2
container_name: appwrite-webhook-proxy
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.constraint-label-stack=appwrite"
- "traefik.docker.network=appwrite"
- "traefik.http.services.appwrite_webhook_proxy.loadbalancer.server.port=80"
# http
- traefik.http.routers.appwrite_webhook_proxy_http.entrypoints=appwrite_web
- traefik.http.routers.appwrite_webhook_proxy_http.rule=PathPrefix(`/v1/webhook-proxy`)
- traefik.http.routers.appwrite_webhook_proxy_http.service=appwrite_webhook_proxy
# https
- traefik.http.routers.appwrite_webhook_proxy_https.entrypoints=appwrite_websecure
- traefik.http.routers.appwrite_webhook_proxy_https.rule=PathPrefix(`/v1/webhook-proxy`)
- traefik.http.routers.appwrite_webhook_proxy_https.service=appwrite_webhook_proxy
- traefik.http.routers.appwrite_webhook_proxy_https.tls=true
- traefik.http.routers.appwrite_webhook_proxy_https.tls.certresolver=dns
networks:
- appwrite
depends_on:
- appwrite
environment:
- WEBHOOK_PROXY_APPWRITE_ENDPOINT
- WEBHOOK_PROXY_APPWRITE_PROJECT_ID
- WEBHOOK_PROXY_APPWRITE_API_KEY
- WEBHOOK_PROXY_APPWRITE_FUNCTION_ID
# ...
# ...
- Add webhook proxy configuration into Appwrite's stack. Locate hidden
.env
file inside yourappwrite
folder, and add following variables:
WEBHOOK_PROXY_APPWRITE_ENDPOINT=http://localhost/v1
WEBHOOK_PROXY_APPWRITE_PROJECT_ID=stripeTest
WEBHOOK_PROXY_APPWRITE_API_KEY=cb61e6bc3...abafcbb02
WEBHOOK_PROXY_APPWRITE_FUNCTION_ID=onStripeWebhook
Make sure to replace values with your credentials and information
- Restart Appwrite stack using
docker-compose up -d
That's it! You can now visit http://localhost/v1/webhook-proxy
(replace localhost with domain of Appwrite instance), and it will execute your function. You can see headers, endpoint, body, and pretty much all request information in the execution log, if you used our function tag from step 0.
Contribution
Setup:
docker run --rm --interactive --tty \
--volume $PWD:/app \
composer update --ignore-platform-reqs --optimize-autoloader --no-plugins --no-scripts --prefer-dist
Run local version:
docker-compose up --build --force-recreate
Use command above to also restart script after doing any changes.
Release version
docker login
docker build -t meldiron/appwrite-webhook-proxy:v0.0.2 .
docker push meldiron/appwrite-webhook-proxy:v0.0.2
Make sure to change version number with releasing new version