Appsmith mit Docker installieren: Open-Source Low-Code für Admin-Panels und Dashboards
Appsmith ist ein Open-Source-Low-Code-Framework für Admin-Panels und Dashboards. Die Anleitung zeigt die Docker-Compose-Installation mit festem Release-Tag, Verschlüsselungs-Keys, Backup per appsmithctl und Verifizieren nach jedem Schritt.
Werbung Mit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Interne Admin-Panels, CRUD-Oberflächen (Anlegen, Lesen, Ändern, Löschen von Datensätzen) und Dashboards braucht jedes Unternehmen, die Individualentwicklung ist aber teuer. Appsmith ist ein quelloffenes Low-Code-Framework: Sie verbinden eine Datenquelle (PostgreSQL, MySQL, MongoDB, REST-API und viele weitere), ziehen Widgets per Drag-and-Drop auf eine Leinwand und erhalten eine interne Anwendung. Die Community Edition (Apache 2.0) ist kostenlos und läuft komplett auf Ihrem Server.
Voraussetzungen
- Docker Engine 20.10.7+ und Docker Compose v2 (Plugin) auf dem Host installiert; falls noch nicht geschehen, hilft die Anleitung Docker und Docker Compose auf Linux installieren.
- Mindestens 2 CPU-Kerne und 8 GB RAM auf dem Host (x86-64 oder ARM64); Appsmith bündelt MongoDB, Redis und PostgreSQL im Container, der Hersteller nennt 8 GB für diese All-in-One-Variante.
- Mindestens 10 GB freier Speicher (Image rund 1,1 GB als Download und rund 3,6 GB entpackt, dazu Datenwachstum und mindestens 2 GB für Backups).
- Freier Port 80 (und optional 443): Läuft bereits ein Webserver, muss der externe Port geändert werden (z. B.
8080:80). - Internetverbindung für den initialen Image-Pull; ausgehende HTTPS-Verbindungen zu
cs.appsmith.commüssen laut Hersteller in der Firewall freigegeben sein. opensslauf dem Host für die Erzeugung sicherer Zufallswerte.
Schritt 1: Projektordner anlegen
Alle Dateien kommen in ein dediziertes Verzeichnis. Appsmith legt darin beim ersten Start automatisch den Unterordner stacks/ an, der sämtliche persistenten Daten enthält.
$ sudo mkdir -p /opt/appsmith
$ cd /opt/appsmithWer ohne root arbeitet, kann stattdessen ~/appsmith verwenden, das Prinzip ist identisch.
ls -la /opt/appsmith zeigt ein leeres Verzeichnis mit korrektem Eigentümer. Fehler hier weisen auf fehlende Sudo-Rechte hin.
Schritt 2: Secrets erzeugen und .env anlegen
Die beiden Verschlüsselungsvariablen APPSMITH_ENCRYPTION_PASSWORD und APPSMITH_ENCRYPTION_SALT müssen vor dem ersten Start gesetzt sein. Einmal gesetzt, dürfen sie nie mehr geändert werden: Eine nachträgliche Änderung macht alle gespeicherten Datasource-Zugangsdaten unlesbar. Erzeugen Sie beide Werte mit openssl:
$ openssl rand -base64 32 # Ausgabe als APPSMITH_ENCRYPTION_PASSWORD verwenden
$ openssl rand -base64 32 # Ausgabe als APPSMITH_ENCRYPTION_SALT verwendenTragen Sie die erzeugten Werte in die .env-Datei ein:
# /opt/appsmith/.env
# PFLICHT: Verschlüsselungs-Keys, NIEMALS nach erstem Start ändern!
APPSMITH_ENCRYPTION_PASSWORD=IHR_ERSTER_ZUFALLSWERT
APPSMITH_ENCRYPTION_SALT=IHR_ZWEITER_ZUFALLSWERT
# EMPFOHLEN: Basis-URL (kein abschließender Schrägstrich)
# Aktiviert Origin-Header-Validierung; wichtig für Passwort-Reset-E-Mails
# APPSMITH_BASE_URL=https://appsmith.example.com
# EMPFOHLEN: Instanz-Administrator (kommagetrennt)
# APPSMITH_ADMIN_EMAILS=admin@example.com
# OPTIONAL: Registrierung nach Einrichtung sperren
# APPSMITH_SIGNUP_DISABLED=true
# OPTIONAL: Externes MongoDB (empfohlen für Produktion, spart ~2 GB RAM)
# APPSMITH_DB_URL=mongodb://mongouser:mongopw@mongo:27017/appsmith
# OPTIONAL: Externes Redis
# APPSMITH_REDIS_URL=redis://redis:6379Die Datei darf für andere Nutzer nicht lesbar sein:
$ chmod 600 /opt/appsmith/.envcat /opt/appsmith/.env zeigt beide Encryption-Variablen mit echten Werten (keine Platzhalter). ls -la .env zeigt Berechtigungen -rw-------.
Schritt 3: compose.yaml erstellen
Die Compose-Datei folgt der Herstellervorlage; die Secrets kommen aus der .env-Datei im gleichen Verzeichnis. Der Hersteller empfiehlt, das Image auf ein Release-Tag festzulegen, damit ein Neuerstellen des Containers kein ungewolltes Upgrade auslöst.
services:
appsmith:
image: index.docker.io/appsmith/appsmith-ce:v2.5.1
container_name: appsmith
ports:
- "80:80"
- "443:443"
volumes:
- ./stacks:/appsmith-stacks
env_file:
- .env
restart: unless-stoppedFür die kommerzielle Edition mit kostenlosem Plan und der Option auf bezahlte Features ersetzen Sie das Image durch appsmith/appsmith-ee mit demselben Tag. Der Community-Funktionsumfang ist identisch, das Image ist mit ~1,7 GB etwas größer. Für eine Übersicht der wichtigsten Parameter:
| Parameter | Wert | Hinweis |
|---|---|---|
| Image (CE) | appsmith/appsmith-ce:v2.5.1 | Apache 2.0 |
| Image (EE Free) | appsmith/appsmith-ee:v2.5.1 | Free-Plan, vom Hersteller empfohlen |
| Port HTTP | 80:80 | Pflicht; alternativ 8080:80 bei Konflikt |
| Port HTTPS | 443:443 | Optional, nur mit SSL-Konfiguration |
| Volume | ./stacks:/appsmith-stacks | Alle Daten, kritisch für Backup |
| Min. RAM | 8 GB | MongoDB + Redis + PostgreSQL intern |
| Image-Größe | ~1,1 GB (CE, Download) | ~1,7 GB (EE, Download) |
docker compose config im Verzeichnis /opt/appsmith gibt die zusammengeführte Konfiguration ohne Fehler aus. Erscheint eine Fehlermeldung wie „yaml: line X: mapping values are not allowed“, ist die Einrückung in der compose.yaml falsch.
Schritt 4: Container starten und Erst-Start abwarten
Starten Sie Appsmith im Hintergrund und verfolgen Sie die Logs:
$ docker compose up -d
$ docker compose logs -f appsmithDer erste Start dauert je nach Hardware einige Minuten: MongoDB wird initialisiert, Schemata werden migriert, Assets werden vorbereitet. Mit bereits geladenem Image ist Appsmith nach gut einer Minute bereit. Solange das Backend noch startet, antwortet die Startseite bereits, die API unter http://localhost/api/v1/health liefert aber 502; das ist kein Fehler. Warten Sie, bis im Log diese Zeile erscheint:
Started ServerApplication in ...Mit Strg+C verlassen Sie die Log-Ansicht, ohne den Container zu stoppen.
$ docker compose ps --format 'table {{.Name}}\t{{.Image}}\t{{.Status}}'Erwartete Ausgabe (Spalte STATUS zeigt Up und healthy):
NAME IMAGE STATUS
appsmith index.docker.io/appsmith/appsmith-ce:v2.5.1 Up 31 seconds (healthy)Dann HTTP-Erreichbarkeit prüfen:
$ curl -I http://localhostErwartete Antwort: HTTP/1.1 200 OK oder HTTP/1.1 302 Found. Ein 000-Fehlercode bedeutet, der Container ist noch nicht bereit, etwas länger warten.
Schritt 5: Erst-Einrichtung im Browser
Öffnen Sie http://localhost (oder http://<server-ip> bei Remote-Host) im Browser. Beim allerersten Aufruf startet ein Setup-Assistent:
- Admin-Konto anlegen: E-Mail-Adresse und Passwort für den ersten Administrator eingeben. Ist
APPSMITH_ADMIN_EMAILSin der.envgesetzt, erhalten die dort genannten Konten Instanz-Admin-Rechte. - Plan wählen: Bei
appsmith-eestarten Sie mit dem kostenlosen Plan oder aktivieren einen Lizenzschlüssel. - Erste App erkunden: Appsmith bietet Starter-Templates für typische CRUD-Apps und Dashboards, eine gute Orientierung für den Einstieg.
Nach dem Login erscheint die Hauptoberfläche mit dem App-Builder. Dort verbinden Sie Datenquellen (PostgreSQL, MySQL, MongoDB, REST-API, Google Sheets u. v. m.) und bauen die erste interne App per Drag-and-Drop.
Der Browser zeigt die Appsmith-Anmeldeseite oder direkt den Setup-Assistenten. Eine Fehlerseite mit „This site can't be reached“ bedeutet, der Container ist noch nicht fertig. Log erneut prüfen: docker compose logs appsmith | tail -50.
Schritt 6: Reverse Proxy und HTTPS einrichten (optional)
Für den Produktivbetrieb gehört ein Reverse Proxy mit gültigem Zertifikat vor Appsmith. Ändern Sie dazu den externen Port in der compose.yaml auf einen freien Port (z. B. 127.0.0.1:8080:80, wenn der Proxy auf demselben Host läuft), entfernen Sie die Zeile 443:443 und setzen Sie APPSMITH_BASE_URL in der .env auf Ihre öffentliche URL.
Für die Proxy-Einrichtung eignen sich die Anleitungen Traefik als Docker-Reverse-Proxy mit automatischem HTTPS oder Nginx Proxy Manager; beide funktionieren ohne Anpassung am Appsmith-Container. Seit v2.5.1 begrenzt Appsmith Selbstregistrierungen über das Anmeldeformular laut Release Notes auf 20 je Client-IP in 24 Stunden. Der Proxy muss deshalb den Header X-Forwarded-For setzen, sonst teilen sich alle Registrierungen das Kontingent der Proxy-Adresse. Einladungen und die Ersteinrichtung zählen nicht mit. Appsmith weist den 21. Versuch von derselben Adresse mit der Meldung „Too many sign-up attempts from your network. Please try again after some time.“ ab.
Nach jeder Änderung an der compose.yaml (z. B. Port oder Umgebungsvariablen) Container neu erstellen:
$ docker compose up -dÄnderungen in stacks/configuration/docker.env (die Appsmith nach dem ersten Start anlegt) erfordern nur einen Neustart:
$ docker compose restart appsmithSeit v2.5.1 liest Appsmith die docker.env als reine Daten. Tragen Sie dort nur ausgeschriebene Werte ein: Ein Shell-Ausdruck wie ${CLIENT_LOG_LEVEL:-error} stoppt den Start, der Container startet dann immer wieder neu (siehe Troubleshooting). JVM-Optionen wie APPSMITH_JAVA_ARGS gehören in die .env, danach docker compose up -d. In der docker.env ignoriert Appsmith sie mit der Meldung „Ignoring APPSMITH_JAVA_ARGS in docker.env: JVM options must be configured through the container environment (Docker Compose or Helm).“ Die Option -Xmx1536m greift erst nach dem Umzug in die .env.
docker compose ps zeigt den Container wieder als Up. Ein Aufruf der konfigurierten URL liefert die Appsmith-Oberfläche über HTTPS.
Schritt 7: Updates und Backup
Für ein Update tragen Sie das neue Release-Tag in die compose.yaml ein und erstellen vorher ein Backup (siehe unten). Installationen vor v1.96 müssen laut Hersteller zuerst auf eine Checkpoint-Version (v1.96 bis v1.99) aktualisiert werden, bevor ein Wechsel auf 2.x möglich ist. Vor dem Update auf v2.5.1 prüfen Sie eigene Einträge in stacks/configuration/docker.env (siehe Schritt 6); die von Appsmith erzeugten Werte und Einstellungen aus der Admin-Oberfläche brauchen laut Release Notes keine Änderung.
$ cd /opt/appsmith# image: ...appsmith-ce:NEUES_TAG in compose.yaml eintragen$ docker compose pull
$ docker compose up -dDer Container wird mit dem neuen Image neu erstellt; alle Daten in ./stacks bleiben erhalten. Das Update von v2.4.3 auf v2.5.1 läuft mit diesen Befehlen durch; Workspaces, Apps, Anmeldung und eine bestehende Sitzung bleiben erhalten. Nach dem Update alte Images entfernen:
$ docker image prune -fFür das Backup nutzen Sie das mitgelieferte Werkzeug appsmithctl. Es sichert Datenbank, docker.env und Git-Daten konsistent im laufenden Betrieb und legt das Archiv unter ./stacks/data/backup ab:
$ cd /opt/appsmith
$ docker compose exec appsmith appsmithctl backupIn einem Terminal fragt das Werkzeug nach einem Passwort, mit dem es das Archiv verschlüsselt (Endung .tar.gz.enc); ohne dieses Passwort ist keine Wiederherstellung möglich. Ohne Terminal, etwa in einem Cronjob, legt appsmithctl ein unverschlüsseltes Archiv (.tar.gz) ab und erinnert nur daran, APPSMITH_ENCRYPTION_SALT und APPSMITH_ENCRYPTION_PASSWORD selbst zu sichern. Ein einfaches tar auf ./stacks ist nur bei gestopptem Container konsistent, weil die eingebettete MongoDB sonst mitten im Schreiben gesichert wird.
Unbedingt auch die .env-Datei mit den Encryption-Keys separat sichern, ohne diese sind Backup-Daten wertlos. Für eine Backup-Strategie mit Offsite-Kopie siehe 3-2-1-Backup-Strategie umsetzen.
Für die Wiederherstellung legen Sie das Archiv in ./stacks/data/backup der laufenden Instanz ab und starten den Restore. Ohne Rückfragen geht das mit dem Backup-Passwort als Umgebungsvariable (Dateiname aus ls -lh ./stacks/data/backup/):
$ cd /opt/appsmith
$ docker compose exec -T -e APPSMITH_BACKUP_ARCHIVE_PASSWORD='IHR_BACKUP_PASSWORT' appsmith appsmithctl restore --non-interactive --backup-file=appsmith-backup-2026-10-22T16-36-53.027Z.tar.gz.encDer Restore ersetzt den gesamten Datenbestand. Nach dem Löschen von ./stacks und einer Neuinstallation mit derselben .env kommen der alte Administrator, sein Workspace und seine App zurück; das Konto aus der Neuinstallation existiert danach nicht mehr. Mit falschem Passwort bricht der Restore ab: „Failed to decrypt the backup archive using APPSMITH_BACKUP_ARCHIVE_PASSWORD: the password is wrong or the archive is unreadable.“
ls -lh /opt/appsmith/stacks/data/backup/ zeigt ein aktuelles Backup-Archiv. Nach docker compose up -d zeigt docker compose ps den Container als Up. docker compose logs appsmith | tail -20 darf keine BeanCreationException oder MongoDB connection failed-Meldungen enthalten.
Troubleshooting / Typische Fehler
- Container startet, aber Browser zeigt 502 Bad Gateway
Appsmith ist noch nicht vollständig initialisiert. Der erste Start dauert bis zu 5 Minuten. Log mit
docker compose logs -f appsmithbeobachten und warten, bis „Started ServerApplication“ erscheint.- BeanCreationException beim Start / Datasource-Credentials unlesbar
Ursache:
APPSMITH_ENCRYPTION_PASSWORDoderAPPSMITH_ENCRYPTION_SALTwurden nach dem ersten Start geändert. Lösung: Die alten Werte wiederherstellen oder Neuinstallation (./stackslöschen,.envmit neuen Werten anlegen).- failed to bind host port 0.0.0.0:80/tcp: address already in use
Ein anderer Dienst belegt Port 80. Lösung: Externen Port in der compose.yaml ändern:
"8080:80".- Container startet und stoppt immer wieder (OOM)
Zu wenig RAM. Diagnose:
docker compose logs appsmith | grep -i 'killed\|oom\|out of memory'. Lösung: Mehr RAM bereitstellen oder externes MongoDB viaAPPSMITH_DB_URLeinbinden.- Berechtigungsfehler auf Linux (MongoDB kann nicht schreiben)
Das
./stacks-Verzeichnis hat falsche Eigentümer. Lösung:sudo chown -R 1000:1000 /opt/appsmith/stacksund Container neu starten.- Passwort-Reset-E-Mails enthalten falsche Links
APPSMITH_BASE_URList nicht gesetzt. Den vollständigen URL in der.enveintragen und Container neu erstellen.- no space left on device nach Updates
Alte Docker-Images belegen Speicher. Bereinigen mit
docker image prune(entfernt nur Images ohne Tag, die kein Container nutzt); alte Backups unter./stacks/data/backupprüfen.- Container startet nach dem Update auf v2.5.1 immer wieder neu
docker compose pszeigtRestarting (1), das Log meldet „Unable to load environment configuration: line 23 (APPSMITH_CLIENT_LOG_LEVEL): shell expression requires migration to a resolved literal; single-quote intentional literal expressions.“ Ursache: Instacks/configuration/docker.envsteht ein Shell-Ausdruck (zum Beispiel${CLIENT_LOG_LEVEL:-error}). Lösung: Wert ausschreiben (APPSMITH_CLIENT_LOG_LEVEL=error) unddocker compose restart appsmithausführen.
Häufige Fragen
Brauche ich eine separate Datenbank als eigenen Container?
Nein, für den Einstieg nicht. Appsmith bündelt MongoDB, Redis und PostgreSQL im selben Container; alle Daten landen im ./stacks-Volume. Bei hoher Last lässt sich eine externe MongoDB über APPSMITH_DB_URL einbinden. Das senkt den Speicherbedarf des Containers und ermöglicht eigene Datenbankbackups, ist für KMU aber kein Pflichtschritt.
Was ist der Unterschied zwischen appsmith-ce und appsmith-ee?
appsmith-ce ist die vollständige Open-Source-Community-Edition (Apache 2.0). appsmith-ee ist die Enterprise-Edition mit einem dauerhaft kostenlosen Plan, der identischen Funktionsumfang bietet, plus der Möglichkeit, bezahlte Enterprise-Features (Audit-Logs, SSO, benutzerdefiniertes Branding) per Lizenzschlüssel zu aktivieren. Die Appsmith-Dokumentation empfiehlt appsmith-ee, weil der Wechsel auf bezahlte Features später ohne Datenmigration möglich ist.
Kann ich einen bestimmten Versions-Tag statt „release“ verwenden?
Ja, diese Anleitung nutzt bereits das feste Tag v2.5.1. Das Tag release baut der Hersteller laufend neu: Das Image trägt dort zeitweise eine Snapshot-Version wie v2.5.2-SNAPSHOT, während latest auf v2.5.1 zeigt. Wer release nutzt, bekommt beim Neuerstellen ungeplante Upgrades auf noch nicht veröffentlichte Stände. Alle Tags finden Sie auf der Appsmith-Releases-Seite auf GitHub. Nach einem Versions-Wechsel immer docker compose up -d ausführen, damit der Container neu erstellt wird.
Wie erkenne ich, dass Appsmith nach dem Start wirklich bereit ist?
Zuverlässigstes Signal: docker compose logs -f appsmith beobachten und auf die Zeile „Started ServerApplication“ warten. Ein HTTP-200 oder -302 von curl -I http://localhost bestätigt die Bereitschaft anschließend auch von außen.
Wie sichere ich die Installation vollständig?
Mit docker compose exec appsmith appsmithctl backup (siehe Schritt 7); das Archiv kopieren Sie anschließend auf ein externes Ziel. Alternativ sichern Sie ./stacks per tar bei gestopptem Container. Dazu unbedingt die .env-Datei mit den Encryption-Keys separat sichern, ohne diese sind die Backup-Daten unbrauchbar.
Kann ich Appsmith hinter Traefik oder Nginx Proxy Manager betreiben?
Ja. Den externen Port auf einen freien Port ändern (z. B. "127.0.0.1:8080:80"), den Proxy auf diesen Port leiten und APPSMITH_BASE_URL auf die öffentliche HTTPS-URL setzen. Damit funktionieren Passwort-Reset-E-Mails und Origin-Header-Validierung korrekt. Als ähnlich aufgebautes Low-Code-Beispiel hinter einem Proxy ist auch die Anleitung ToolJet mit Docker installieren lesenswert.
Fazit
Appsmith eignet sich für Teams, die interne Admin-Panels und Dashboards ohne eigene Frontend-Entwicklung bauen wollen. Der Single-Container-Ansatz mit eingebetteten Diensten macht den Einstieg einfach; für Produktion ist der Umstieg auf externes MongoDB empfehlenswert. Die zwei unveränderlichen Encryption-Keys sind der kritische Punkt: Setzen Sie sie vor dem ersten Start und bewahren Sie sie getrennt vom Backup sicher auf.
Weiterführende Anleitungen und Quellen
- Docker und Docker Compose auf Linux installieren: die Self-Hosting-Grundlage
- Traefik als Docker-Reverse-Proxy mit automatischem HTTPS einrichten
- 3-2-1-Backup-Strategie umsetzen: Anleitung mit Restic, USB-Disk und S3-Cloud
- ToolJet mit Docker installieren: Open-Source Low-Code-Alternative
- NocoDB auf dem Synology NAS installieren: Airtable-Alternative auf eigener Datenbank
Offizielle Quellen: Appsmith Docker-Installationsanleitung · Appsmith Environment Variables Referenz · Appsmith CE auf Docker Hub · Appsmith Release Notes v2.5.1


