Skip to content

Deploying Svix

Introduction

Svix is an enterprise-grade webhooks service that makes it easy to send webhooks reliably. Instead of building your own webhook infrastructure, Svix provides a complete solution with automatic retries, event types, endpoint management, and a developer portal.

Key highlights of Svix:

  • Reliable Delivery: Automatic retries with exponential backoff
  • Event Types: Define and document your webhook event types
  • Endpoint Management: API and UI for managing webhook endpoints
  • Signature Verification: Cryptographic signatures for webhook authenticity
  • Rate Limiting: Protect endpoints from overwhelming traffic
  • Developer Portal: Self-service portal for webhook consumers
  • Comprehensive Logs: Full visibility into delivery attempts
  • Multi-Tenant: Support multiple applications in a single deployment
  • Open Source: Self-host or use the managed service

This guide walks through deploying Svix on Klutch.sh using Docker.

Why Deploy Svix on Klutch.sh

Deploying Svix on Klutch.sh provides several advantages:

Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Svix without complex orchestration.

Persistent Storage: Attach persistent volumes for your PostgreSQL database.

HTTPS by Default: Secure webhook endpoints with automatic SSL certificates.

GitHub Integration: Connect your configuration repository for automatic redeployments.

Prerequisites

Before deploying Svix on Klutch.sh, ensure you have:

  • A Klutch.sh account
  • A GitHub account with a repository for your Svix configuration
  • Basic familiarity with Docker and containerization concepts
  • A PostgreSQL database instance
  • A Redis instance for queue processing

Deploying Svix on Klutch.sh

    Create Your Repository

    Create a new GitHub repository with a Dockerfile for Svix:

    FROM svix/svix-server:latest
    ENV SVIX_DB_DSN=${DATABASE_URL}
    ENV SVIX_REDIS_DSN=${REDIS_URL}
    ENV SVIX_JWT_SECRET=${JWT_SECRET}
    ENV SVIX_QUEUE_TYPE=redis
    EXPOSE 8071
    VOLUME ["/data"]

    Push to GitHub

    Initialize and push your repository to GitHub with your Dockerfile.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project.

    Create a New App

    Within your project, create a new app and connect your GitHub repository.

    Configure HTTP Traffic

    In the deployment settings:

    • Select HTTP as the traffic type
    • Set the internal port to 8071

    Set Environment Variables

    Configure the following environment variables:

    VariableValue
    DATABASE_URLYour PostgreSQL connection string
    REDIS_URLYour Redis connection string
    JWT_SECRETGenerate with openssl rand -hex 32
    SVIX_QUEUE_TYPEredis

    Deploy Your Application

    Click Deploy to start the build process.

    Access Svix

    Once deployment completes, access the Svix API at your app URL.

Configuration

Creating an Application

Applications represent your customers or tenants:

Terminal window
curl -X POST https://your-svix.klutch.sh/api/v1/app/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "My Application"}'

Defining Event Types

Create event types to document your webhooks:

Terminal window
curl -X POST https://your-svix.klutch.sh/api/v1/event-type/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "user.created",
"description": "Triggered when a new user is created",
"schema": {"type": "object"}
}'

Sending Webhooks

Send webhooks through the Svix API:

Terminal window
curl -X POST https://your-svix.klutch.sh/api/v1/app/{app_id}/msg/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"eventType": "user.created",
"payload": {"userId": "123", "email": "user@example.com"}
}'

Additional Resources

Conclusion

Deploying Svix on Klutch.sh gives you enterprise-grade webhook delivery with automatic builds, persistent storage, and secure HTTPS access. Send webhooks reliably with automatic retries, monitoring, and a comprehensive API.