
ElectricSQL selbst hosten - der einfache Weg
Yulei ChenElectricSQL ist eine Open-Source-Sync-Engine, die shape-basierte Teile deiner Postgres-Daten per HTTP an Clients streamt. Perfekt für Local-First-Apps, Realtime-Dashboards und alles, wo du eine reaktive Sicht auf eine Postgres-Tabelle brauchst, ohne eine eigene Change-Data-Capture-Pipeline zu bauen. Den Managed-Dienst gibt es auch, aber die meisten Teams wollen die volle Kontrolle über ihre Daten und neben der eigenen DB hosten.
Sliplane ist eine Managed-Container-Plattform, die Self-Hosting schmerzlos macht. Mit One-Click-Deployment läuft dein ElectricSQL-Sync-Service in wenigen Minuten, keine Reverse-Proxy-Config, kein Server-Stress, kein Kubernetes.
Voraussetzungen
Vor dem Deploy brauchst du einen Sliplane-Account (kostenlose Trial verfügbar).
Außerdem brauchst du eine Postgres-Datenbank mit aktivierter logischer Replikation (wal_level = logical). ElectricSQL bringt selbst kein Postgres mit, sondern zeigt auf deine bestehende DB. Falls du noch keine hast, schau dir unseren Guide 5 cheap ways to host Postgres an oder starte eine mit dem Sliplane Postgres-Preset und aktivier dort die logische Replikation.
Quick Start
Sliplane bietet One-Click-Deployment mit Presets.
- Klick auf den Deploy-Button oben
- Wähl ein Projekt
- Wähl einen Server. Wenn du dich gerade erst angemeldet hast, bekommst du einen 48-Stunden-Trial-Server
- Klick auf Deploy!
Sobald der Service läuft, trag deine DATABASE_URL in den Service-Einstellungen ein und redeploy. Fertig.
Über das Preset
Der One-Click-Deploy oben nutzt Sliplanes ElectricSQL-Preset. Das Preset ist für ein stabiles, minimales Default-Setup gedacht:
- Offizielles
electricsql/electricImage - Spezifischer Version-Tag für Stabilität (check Docker Hub für neuere Versionen, wenn du updaten willst)
- Persistenter Storage gemountet auf
/app/persistent, damit der Shape-State Restarts übersteht - HTTP-Service mit Healthcheck auf
/v1/health - Secret-geschützter Sync-Endpoint über ein zufällig generiertes
ELECTRIC_SECRET - Usage-Reporting standardmäßig deaktiviert
Das Preset deployt kein Postgres für dich. Du musst eine DATABASE_URL auf eine Postgres-Instanz mit aktivierter logischer Replikation setzen. Das entspricht dem offiziellen Coolify-Template und dem ElectricSQL Deployment Guide.
Nächste Schritte
Sobald ElectricSQL auf Sliplane läuft, erreichst du es über die Domain, die Sliplane dir gibt (z.B. electricsql-xxxx.sliplane.app). Ruf /v1/health auf, um zu prüfen, dass alles läuft.
ElectricSQL auf dein Postgres zeigen
Öffne den Service auf Sliplane, geh auf den Envs-Tab und setz DATABASE_URL auf deinen Postgres-Connection-String. Das sieht dann so aus:
postgresql://user:password@your-db-host:5432/yourdb?sslmode=require
Dein Postgres muss wal_level = logical gesetzt haben (die meisten Managed-Postgres-Anbieter unterstützen das per Flag oder Parameter). ElectricSQL nutzt logische Replikation, um Änderungen zu streamen, ohne das startet der Service nicht. Der Electric Deployment Guide hat Provider-spezifische Hinweise.
Nach der Änderung von DATABASE_URL musst du den Service neu deployen.
Shape-Requests authentifizieren
Das Preset generiert ein zufälliges ELECTRIC_SECRET für dich. Um eine Shape abzurufen, muss dein Backend oder Proxy dieses Secret an die Requests anhängen:
GET https://electricsql-xxxx.sliplane.app/v1/shape?table=items&secret=<ELECTRIC_SECRET>
Gib das Secret nie direkt an Clients raus. Das empfohlene Pattern ist, ElectricSQL hinter deiner eigenen API laufen zu lassen und das Secret serverseitig einzufügen. Details in den Electric Security Docs.
Wichtige Environment-Variablen
| Variable | Was sie macht |
|---|---|
DATABASE_URL | Postgres-Connection-String (Pflicht) |
ELECTRIC_SECRET | Shared Secret, das bei allen Shape-Requests mitgeschickt werden muss |
ELECTRIC_STORAGE_DIR | Wo der Shape-State auf Disk liegt (Preset: /app/persistent) |
ELECTRIC_USAGE_REPORTING | false deaktiviert anonyme Usage-Telemetrie |
ElectricSQL hat noch weitere Tuning-Optionen (Connection-Pool-Größe, Log-Level, Cache-Größen). Details in der Config-Referenz, falls du etwas feinjustieren willst.
Logging
Standardmäßig gehen Docker-Container-Logs nach STDOUT, das klappt out of the box mit Sliplanes eingebautem Log-Viewer. Tipps zum Lesen von Docker-Logs findest du in unserem Post how to use Docker logs.
Troubleshooting
Wenn der Service nicht startet, check die Logs auf die üblichen Verdächtigen:
wal_levelnicht auflogical: Fix das auf deiner Postgres-Instanz und starte sie neu.- Permissions: Der Postgres-User in
DATABASE_URLbrauchtREPLICATION-Rechte. - SSL-Mismatch: Managed-Postgres-Anbieter wollen meistens
sslmode=require.
Kostenvergleich
Du kannst ElectricSQL natürlich auch bei anderen Providern hosten. Hier der Preisvergleich für einen kleinen Sync-Service:
| Provider | vCPU Cores | RAM | Disk | Geschätzte monatliche Kosten | Hinweise |
|---|---|---|---|---|---|
| Sliplane | 2 | 2 GB | 40 GB | €9 | Abrechnung pro Server |
| Render | 1 | 2 GB | 40 GB | ~$35-$45 | VM Small |
| Fly.io | 2 | 2 GB | 40 GB | ~$20-$25 | VM + Volume |
| Railway | 2 | 2 GB | 40 GB | ~$15-$66 | Nutzungsbasiert |
FAQ
Muss ich Postgres separat deployen?
Ja. ElectricSQL ist eine Sync-Engine, keine Datenbank. Du zeigst auf eine bestehende Postgres-Instanz mit aktivierter logischer Replikation. Postgres kannst du auch auf Sliplane hosten, mit dem Postgres-Preset, oder jeden anderen Managed-Anbieter nehmen. Ideen dazu in 5 cheap ways to host Postgres.
Wie aktivier ich logische Replikation auf meinem Postgres?
Setz wal_level = logical in der postgresql.conf (oder über die Parameter-Gruppe deines Providers) und starte neu. Der Postgres-User in DATABASE_URL braucht außerdem die REPLICATION-Role. Mehr Hintergrund zur Postgres-Konfiguration gibt's in unserem Post best practices for Postgres in Docker.
Wie aktualisiere ich ElectricSQL?
Änder den Image-Tag in deinen Service-Einstellungen und redeploy. Prüf Docker Hub für die neueste stabile Version.
Gibt es Alternativen zu ElectricSQL?
Ja, je nachdem was du wirklich brauchst. Für Change Data Capture in großem Maßstab ist Debezium die klassische Option. Für Local-First-Replikation schau dir PowerSync oder Zero an. Wenn du nur einen Realtime-Channel über Postgres-Änderungen willst, funktioniert Supabase Realtime gut.
Kann ich das laufen lassen, ohne es public zu machen?
Ja. Stell den Service auf Sliplane auf privat und erlaub nur Zugriff von deinem eigenen Backend (über Sliplanes internes Netzwerk). So verlässt das ELECTRIC_SECRET nie deine Infrastruktur.