Self-Hosted Privacy
Keep your data on your own servers with complete control
Automatisch is a powerful, open-source business automation tool that serves as a self-hosted alternative to Zapier and Make (Integromat). Connect over 200+ services like Twitter, Slack, Google Sheets, Discord, and more to automate your workflows without writing any code.
Unlike cloud-based automation platforms, Automatisch lets you keep all your data on your own servers—essential for businesses handling sensitive information, GDPR compliance, and industries like healthcare and finance where data sovereignty is paramount.
Self-Hosted Privacy
Keep your data on your own servers with complete control
200+ Integrations
Connect popular services like Slack, Twitter, Google, and more
No-Code Builder
Build complex workflows with an intuitive visual editor
Open Source
AGPL-3.0 licensed with an active community
Automatisch provides a comprehensive automation platform:
| Feature | Description |
|---|---|
| Visual Flow Builder | Drag-and-drop interface to create workflows |
| 200+ Apps | Integrations with popular services and APIs |
| Scheduled Runs | Workflows execute at configurable intervals |
| Webhook Triggers | Instant automation based on webhook events |
| Multi-Step Flows | Chain multiple actions in sequence |
| Data Mapping | Transform and map data between services |
| Error Handling | Built-in retry and error management |
| Team Collaboration | Multi-user support for teams |
| Feature | Automatisch | Cloud Alternatives |
|---|---|---|
| Data Location | Your servers | Third-party cloud |
| Pricing | Free (self-hosted) | Per-task billing |
| Privacy | Complete control | Limited visibility |
| Vendor Lock-in | None | High switching costs |
| Customization | Full source access | Limited to features |
| GDPR Compliance | Built-in | Complex setup |
Automatisch runs as a multi-service application:
| Component | Purpose |
|---|---|
| Main Service | Web UI and API server |
| Worker Service | Background job processing |
| PostgreSQL | Primary database |
| Redis | Job queue and caching |
Before deploying Automatisch on Klutch.sh, ensure you have:
Set up your Automatisch deployment repository:
Create a Dockerfile for the main Automatisch service:
FROM ghcr.io/automatisch/automatisch:latest
# Set production environmentENV APP_ENV=productionENV PORT=3000
# Expose the application portEXPOSE 3000
# The entrypoint is already configured in the base imageCreate a separate repository for the worker service with this Dockerfile:
FROM ghcr.io/automatisch/automatisch:latest
# Set production environment and worker modeENV APP_ENV=productionENV WORKER=true
# Workers don't need to expose portsAutomatisch requires several environment variables for proper operation:
| Variable | Description | Required |
|---|---|---|
HOST | HTTP host (your domain) | Yes |
PROTOCOL | http or https | Yes |
PORT | HTTP port (default: 3000) | Yes |
APP_ENV | Environment (production) | Yes |
ENCRYPTION_KEY | Key for encrypting credentials | Yes |
WEBHOOK_SECRET_KEY | Key for verifying webhooks | Yes |
APP_SECRET_KEY | Session authentication key | Yes |
POSTGRES_HOST | PostgreSQL host | Yes |
POSTGRES_PORT | PostgreSQL port (default: 5432) | Yes |
POSTGRES_DATABASE | Database name | Yes |
POSTGRES_USERNAME | Database username | Yes |
POSTGRES_PASSWORD | Database password | Yes |
REDIS_HOST | Redis host | Yes |
REDIS_PORT | Redis port (default: 6379) | Yes |
REDIS_PASSWORD | Redis password (if required) | No |
Generate secure keys for your deployment:
# Generate ENCRYPTION_KEYopenssl rand -base64 36
# Generate WEBHOOK_SECRET_KEYopenssl rand -base64 36
# Generate APP_SECRET_KEYopenssl rand -base64 36| Variable | Description | Default |
|---|---|---|
WEB_APP_URL | Override public URL | Auto-detected |
WEBHOOK_URL | Override webhook URL | Auto-detected |
LOG_LEVEL | Logging level (error, warn, info, debug) | info |
TELEMETRY_ENABLED | Enable usage telemetry | true |
POSTGRES_ENABLE_SSL | Enable PostgreSQL SSL | false |
REDIS_TLS | Enable Redis TLS | false |
For email notifications, configure SMTP:
| Variable | Description |
|---|---|
SMTP_HOST | SMTP server hostname |
SMTP_PORT | SMTP port (default: 587) |
SMTP_SECURE | Enable SSL (true/false) |
SMTP_USER | SMTP username |
SMTP_PASSWORD | SMTP password |
FROM_EMAIL | Sender email address |
For local development and testing:
services: main: image: ghcr.io/automatisch/automatisch:latest ports: - "3000:3000" depends_on: postgres: condition: service_healthy redis: condition: service_started environment: - HOST=localhost - PROTOCOL=http - PORT=3000 - APP_ENV=production - REDIS_HOST=redis - POSTGRES_HOST=postgres - POSTGRES_DATABASE=automatisch - POSTGRES_USERNAME=automatisch_user - POSTGRES_PASSWORD=automatisch_password - ENCRYPTION_KEY=${'{'}ENCRYPTION_KEY{'}'} - WEBHOOK_SECRET_KEY=${'{'}WEBHOOK_SECRET_KEY{'}'} - APP_SECRET_KEY=${'{'}APP_SECRET_KEY{'}'} volumes: - automatisch_storage:/automatisch/storage
worker: image: ghcr.io/automatisch/automatisch:latest depends_on: - postgres - redis environment: - WORKER=true - APP_ENV=production - REDIS_HOST=redis - POSTGRES_HOST=postgres - POSTGRES_DATABASE=automatisch - POSTGRES_USERNAME=automatisch_user - POSTGRES_PASSWORD=automatisch_password - ENCRYPTION_KEY=${'{'}ENCRYPTION_KEY{'}'} - WEBHOOK_SECRET_KEY=${'{'}WEBHOOK_SECRET_KEY{'}'} - APP_SECRET_KEY=${'{'}APP_SECRET_KEY{'}'} volumes: - automatisch_storage:/automatisch/storage
postgres: image: postgres:16-alpine environment: - POSTGRES_DB=automatisch - POSTGRES_USER=automatisch_user - POSTGRES_PASSWORD=automatisch_password volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U automatisch_user -d automatisch"] interval: 5s timeout: 5s retries: 5
redis: image: redis:7-alpine volumes: - redis_data:/data
volumes: automatisch_storage: postgres_data: redis_data:Create a .env.example file:
# Generate these with: openssl rand -base64 36ENCRYPTION_KEY=your-encryption-key-hereWEBHOOK_SECRET_KEY=your-webhook-secret-key-hereAPP_SECRET_KEY=your-app-secret-key-hereAutomatisch requires multiple services. Deploy them in this order:
Create a PostgreSQL app on Klutch.sh
See our PostgreSQL deployment guide for detailed instructions.
Note your database connection details
Create a Redis app on Klutch.sh
See our Redis deployment guide for detailed instructions.
Note your Redis connection details
Push your repository to GitHub
git initgit add .git commit -m "Initial Automatisch configuration"git remote add origin https://github.com/yourusername/automatisch.gitgit push -u origin mainCreate a new app on Klutch.sh
Configure environment variables
| Variable | Value |
|---|---|
HOST | your-app.klutch.sh |
PROTOCOL | https |
PORT | 3000 |
APP_ENV | production |
ENCRYPTION_KEY | Your generated key |
WEBHOOK_SECRET_KEY | Your generated key |
APP_SECRET_KEY | Your generated key |
POSTGRES_HOST | Your PostgreSQL internal hostname |
POSTGRES_PORT | 5432 |
POSTGRES_DATABASE | automatisch |
POSTGRES_USERNAME | Your PostgreSQL username |
POSTGRES_PASSWORD | Your PostgreSQL password |
REDIS_HOST | Your Redis internal hostname |
REDIS_PORT | 6379 |
Configure the internal port
Set up persistent storage
| Mount Path | Size |
|---|---|
/automatisch/storage | 10 GB |
Deploy your application
https://your-app.klutch.shCreate a separate repository for the worker
FROM ghcr.io/automatisch/automatisch:latest
ENV APP_ENV=productionENV WORKER=trueCreate a new app on Klutch.sh
Configure environment variables
WORKER=true to enable worker mode| Variable | Value |
|---|---|
WORKER | true |
APP_ENV | production |
ENCRYPTION_KEY | Same as main service |
WEBHOOK_SECRET_KEY | Same as main service |
APP_SECRET_KEY | Same as main service |
POSTGRES_HOST | Your PostgreSQL internal hostname |
POSTGRES_PORT | 5432 |
POSTGRES_DATABASE | automatisch |
POSTGRES_USERNAME | Your PostgreSQL username |
POSTGRES_PASSWORD | Your PostgreSQL password |
REDIS_HOST | Your Redis internal hostname |
REDIS_PORT | 6379 |
Set up persistent storage
| Mount Path | Size |
|---|---|
/automatisch/storage | 10 GB |
Deploy the worker
After deployment, configure your Automatisch instance:
Access the web interface
https://your-app.klutch.sh| Field | Value |
|---|---|
user@automatisch.io | |
| Password | sample |
Change default credentials immediately
Configure your first integration
Build a simple automation to test your deployment:
Create a new flow
Add a trigger
Add an action
Publish your flow
Automatisch supports 200+ apps including:
| Category | Apps |
|---|---|
| Communication | Slack, Discord, Telegram, Twilio |
| Social Media | Twitter, LinkedIn, Facebook |
| Productivity | Google Sheets, Notion, Airtable |
| CRM | HubSpot, Salesforce, Pipedrive |
| Development | GitHub, GitLab, Jira |
| Gmail, Mailchimp, SendGrid | |
| Storage | Google Drive, Dropbox, OneDrive |
| Payment | Stripe, PayPal, Square |
See the complete list at Automatisch Available Apps.
For instant triggers, configure webhooks:
Create a webhook trigger
Configure the external service
https://your-app.klutch.sh/webhooks/{'{'}flow-id{'}'}For high-volume automation:
| Component | Recommendation |
|---|---|
| Workers | Deploy multiple worker instances |
| PostgreSQL | Use a managed database with backups |
| Redis | Use persistent Redis with adequate memory |
| Storage | Increase volume size for file-heavy workflows |
Deploy additional workers by creating more worker apps with identical environment variables. Workers automatically distribute jobs via Redis.
Change Defaults
Update default credentials immediately after deployment
Use HTTPS
Klutch.sh provides automatic SSL certificates
Strong Keys
Use openssl rand -base64 36 for all secret keys
Database Security
Use strong passwords and enable SSL connections
APP_SECRET_KEY periodically (invalidates sessions)ENCRYPTION_KEY after initial setupCommon issues and solutions:
| Issue | Cause | Solution |
|---|---|---|
| Can’t connect to database | Wrong credentials | Verify PostgreSQL environment variables |
| Flows not executing | Worker not running | Check worker service is deployed and running |
| OAuth redirect fails | Wrong HOST/PROTOCOL | Ensure HOST and PROTOCOL match your URL |
| Webhooks not working | Wrong webhook URL | Verify WEBHOOK_URL or WEB_APP_URL |
| 500 errors | Missing Redis | Verify Redis is running and accessible |
| Credentials broken | Changed ENCRYPTION_KEY | Restore original key or recreate connections |
Monitor your services through the Klutch.sh dashboard:
# Healthy startupinfo: Starting Automatisch...info: Connected to PostgreSQLinfo: Connected to Redisinfo: Server listening on port 3000
# Worker modeinfo: Starting worker...info: Processing jobs from Redis queueRegularly backup your PostgreSQL database:
Always backup:
/automatisch/storage volume (uploaded files)