ERPNEXT AUF UBUNTU SERVER
Docker / Easy Install
Installationsanleitung

ERPNext auf aktuellem
Ubuntu Server

Produktionsinstallation mit Docker und dem offiziellen Frappe Easy-Install-Verfahren.

Stand 16.09.2026 Ubuntu 26.04.1 LTS ERPNext v16 Docker / Compose
BrowserHTTPS · Port 443
TraefikTLS · Routing · Let's Encrypt
FrontendWeb · Assets
BackendFrappe · ERPNext
MariaDBERP-Daten
RedisCache · Queue
ZIEL DIESES SKRIPTS
Du installierst ERPNext als produktionsnahe Docker-Umgebung auf Ubuntu Server, richtest DNS und Firewall korrekt ein, prüfst die Container und kennst anschließend Update-, Backup- und Diagnosebefehle.
WARUM DOCKER?
Für neue Produktionsumgebungen ist die containerisierte Installation der von Frappe bevorzugte Weg. Die Abhängigkeiten werden dadurch sauber gekapselt und reproduzierbar bereitgestellt.

Warum wir Docker verwenden

ERPNext besteht aus mehreren Diensten. Die Container-Variante hält diese Komponenten sauber getrennt und reduziert Konflikte mit Systempaketen.

TraefikReverse Proxy · TLS
Frontendstatische Inhalte
BackendFrappe · ERPNext
WorkerHintergrundjobs
MariaDBDatenbank
RedisCache · Queue
  • Docker Compose startet die Umgebung reproduzierbar.
  • ERPNext und Frappe laufen in offiziellen Container-Images.
  • MariaDB speichert die ERP-Daten dauerhaft.
  • Redis übernimmt Cache- und Queue-Aufgaben.
  • Traefik übernimmt Routing und TLS.
  • Ein Backup-Dienst kann regelmäßig Sicherungen erzeugen.
MERKSATZ
Ubuntu ist der Host. Docker ist die Laufzeitumgebung. ERPNext selbst läuft zusammen mit seinen Abhängigkeiten in mehreren Containern.

Versionen, Hardware und Zugang

BereichEmpfehlungWarum?
CPUmind. 2 vCPUGenug Reserve für Datenbank und ERPNext-Dienste.
RAMmind. 8 GBMariaDB und Worker profitieren von ausreichendem Arbeitsspeicher.
Speichermind. 50 GB SSDDatenbank, Dateien, Images und Backups benötigen Reserve.
Netzstabile VerbindungImages, Updates, TLS und Benutzerzugriffe benötigen Internet.

Du brauchst außerdem

  • einen Benutzer mit sudo-Rechten
  • eine Domain oder Subdomain, z. B. erp.firma.de
  • eine erreichbare öffentliche IPv4- oder IPv6-Adresse
  • eine gültige E-Mail-Adresse für Let's Encrypt
  • offene TCP-Ports 80 und 443; SSH muss erreichbar bleiben
PRAXIS-HINWEIS
Bei einem Server hinter einem privaten Router müssen 80/TCP und 443/TCP per Portweiterleitung auf den Ubuntu-Server zeigen. Bei CGNAT ist klassisches eingehendes IPv4-Portforwarding häufig nicht möglich.

Bevor du installierst: der Name muss stimmen

Der Site-Name wird von Frappe für das Routing verwendet. Ein falsch aufgelöster DNS-Name führt schnell zu 404- oder Zertifikatsproblemen.

InternetDNS
RouterNAT / Portfreigabe
Ubuntu26.04.1 LTS
ERPNextHTTPS
TypNameZiel
Aerp.firma.de203.0.113.50
AAAAerp.firma.de2001:db8:100::50
getent ahosts erp.firma.de
dig +short A erp.firma.de
dig +short AAAA erp.firma.de
ACHTUNG
Keinen AAAA-Record anlegen, wenn IPv6 am Server oder in der Firewall noch nicht korrekt funktioniert. Browser können sonst IPv6 bevorzugen.

Server aktualisieren und Basiswerkzeuge installieren

1
Paketlisten aktualisieren
sudo apt update
sudo apt full-upgrade -y
2
Werkzeuge installieren
sudo apt install -y python3 wget curl ca-certificates dnsutils
3
Zeitzone setzen
sudo timedatectl set-timezone Europe/Berlin
timedatectl
4
Optional neu starten
sudo reboot
PRÜFUNG
Nach dem Neustart mit cat /etc/os-release die Ubuntu-Version kontrollieren.

Nur die benötigten Ports freigeben

Für eine öffentlich erreichbare ERPNext-Instanz reichen normalerweise SSH sowie HTTP/HTTPS. MariaDB und Redis gehören nicht ins Internet.

1
SSH zuerst erlauben
sudo ufw allow OpenSSH
2
Webzugriffe erlauben
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
3
Firewall aktivieren
sudo ufw enable
sudo ufw status verbose
NICHT FREIGEBEN
MariaDB 3306 sowie Redis-Ports müssen für diese All-in-One-Installation nicht öffentlich geöffnet werden.

Offizielles Installationsskript herunterladen

Das Bench-Projekt stellt ein Easy-Install-Skript bereit, das mit dem offiziellen frappe_docker-Projekt arbeitet.

mkdir -p ~/erpnext-install
cd ~/erpnext-install

wget https://raw.githubusercontent.com/frappe/bench/develop/easy-install.py
ls -lh easy-install.py

Optional: Hilfe anzeigen

python3 easy-install.py deploy --help
SICHERHEITSPRINZIP
Installationsskripte aus dem Internet nicht blind ausführen. Vorher z. B. mit less easy-install.py ansehen.

ERPNext installieren

E-Mail-Adresse und Site-Name durch deine Werte ersetzen. Als Projektname verwenden wir erpnext-prod.

cd ~/erpnext-install

python3 easy-install.py deploy \
  --project=erpnext-prod \
  --email=admin@firma.de \
  --sitename=erp.firma.de \
  --app=erpnext

Was passiert jetzt?

  • Falls Docker fehlt, versucht das Skript Docker zu installieren.
  • Das offizielle frappe_docker-Projekt wird geladen.
  • Eine Compose-Konfiguration für MariaDB, Redis, ERPNext, HTTPS und Backups wird erzeugt.
  • Zufällige Passwörter für MariaDB root und ERPNext-Administrator werden generiert.
  • Die Site erp.firma.de wird angelegt und ERPNext darauf installiert.

Die erzeugten Dateien verstehen

DateiBedeutung
~/erpnext-prod-compose.ymlDocker-Compose-Konfiguration der ERPNext-Umgebung.
~/erpnext-prod.envUmgebungswerte wie ERPNext-Version, Datenbankpasswort und Site-Regel.
~/erpnext-prod-passwords.txtAdministrator- und MariaDB-root-Passwort.
~/erpnext-install/easy-install.logInstallationsprotokoll für die Fehlersuche.
chmod 600 ~/erpnext-prod-passwords.txt
cat ~/erpnext-prod-passwords.txt
MERKSATZ
Die Compose-Datei beschreibt die Container. Die .env-Datei liefert Werte. Die Passwortdatei enthält die automatisch erzeugten Zugangsdaten.

Sind alle Container gestartet?

docker compose -p erpnext-prod \
  -f ~/erpnext-prod-compose.yml ps

Logs der gesamten Umgebung

docker compose -p erpnext-prod \
  -f ~/erpnext-prod-compose.yml logs --tail=100

ERPNext-App in der Site prüfen

docker compose -p erpnext-prod \
  -f ~/erpnext-prod-compose.yml exec backend \
  bench --site erp.firma.de list-apps
ERWARTUNG
In der App-Liste sollten mindestens frappe und erpnext erscheinen. Die Container sollten laufen beziehungsweise gesund sein.

ERPNext im Browser öffnen

https://erp.firma.de
FeldWert
BenutzernameAdministrator
PasswortWert aus ~/erpnext-prod-passwords.txt

Danach folgt der Einrichtungsassistent

  • Sprache und Region
  • Unternehmen, Währung und Geschäftsjahr
  • Branche und Stammdaten
  • Benutzer und Rollen

Was läuft eigentlich im Hintergrund?

KomponenteAufgabe
TraefikNimmt Webanfragen an, routet anhand des Hostnamens und stellt HTTPS bereit.
FrontendLiefert Weboberfläche und statische Inhalte aus.
BackendFührt Frappe-/ERPNext-Logik und Bench-Befehle aus.
WorkerVerarbeitet Hintergrundjobs wie E-Mail, Importe und längere Aufgaben.
MariaDBSpeichert Geschäftsdaten und Konfiguration dauerhaft.
RedisLiefert Cache-, Queue- und Echtzeitfunktionen.
FISI-BEZUG
DNS führt zum Host, die Firewall lässt 443 durch, Traefik terminiert TLS, die Anwendung verarbeitet die Anfrage und MariaDB liefert die Daten.

Starten, stoppen und neu starten

# Status
docker compose -p erpnext-prod -f ~/erpnext-prod-compose.yml ps

# neu starten
docker compose -p erpnext-prod -f ~/erpnext-prod-compose.yml restart

# stoppen
docker compose -p erpnext-prod -f ~/erpnext-prod-compose.yml down

# wieder starten
docker compose -p erpnext-prod -f ~/erpnext-prod-compose.yml up -d
ACHTUNG
docker compose down entfernt laufende Container, nicht aber automatisch persistente Volumes. Optionen wie -v nicht leichtfertig verwenden, weil sie Datenvolumes löschen können.

Systemzustand

df -h
free -h
uptime
docker system df

ERPNext sauber aktualisieren

1
Backup prüfen

Aktuelle Sicherungen und externe Kopie sicherstellen.

2
Installer aktualisieren
cd ~/erpnext-install
wget -O easy-install.py https://raw.githubusercontent.com/frappe/bench/develop/easy-install.py
3
Projekt aktualisieren
python3 easy-install.py upgrade --project=erpnext-prod
4
Status kontrollieren
docker compose -p erpnext-prod -f ~/erpnext-prod-compose.yml ps

Datenbank und Dateien sichern

docker compose -p erpnext-prod \
  -f ~/erpnext-prod-compose.yml exec backend \
  bench --site erp.firma.de backup --with-files --compress

Zu einem vollständigen Backup gehören

  • Datenbankdump
  • öffentliche Dateien
  • private Dateien
  • Site-Konfiguration beziehungsweise notwendige Schlüssel
3-2-1-GEDANKE
Produktive ERP-Daten zusätzlich außerhalb des Servers speichern und Wiederherstellungen regelmäßig testen.

Produktionsserver härten

MaßnahmeEmpfehlung
SSHSchlüssel statt Passwort; Root-Login möglichst deaktivieren.
FirewallNur notwendige Ports freigeben; MariaDB und Redis nicht öffentlich exponieren.
UpdatesUbuntu- und ERPNext-Sicherheitsupdates geplant einspielen.
Backupsverschlüsselt/offsite sichern und Restore testen.
Kontenpersönliche Benutzerkonten und minimale Rollen verwenden.
TLSHTTPS erzwingen; DNS und Zertifikate überwachen.
WICHTIG
NAT ersetzt keine Firewall. HTTPS ersetzt keine saubere Benutzer- und Rechteverwaltung. Sicherheit entsteht aus mehreren Schichten.

Typische Probleme systematisch prüfen

ProblemPrüfungTypische Ursache
Seite nicht erreichbarDNS, UFW, Router/NAT, ContainerstatusPort 80/443 nicht erreichbar oder falsche IP
404Site-Name und Host-HeaderDNS-/Site-Name passt nicht zur Site-Regel
TLS-FehlerDNS und Erreichbarkeit von 80/443Let's Encrypt kann Domain nicht validieren
Docker permission deniedGruppenmitgliedschaftBenutzer wurde gerade erst zur docker-Gruppe hinzugefügt
Container startet neuCompose-LogsKonfigurations-, DB- oder Ressourcenproblem

Die drei wichtigsten Diagnosebefehle

getent ahosts erp.firma.de

docker compose -p erpnext-prod \
  -f ~/erpnext-prod-compose.yml ps

docker compose -p erpnext-prod \
  -f ~/erpnext-prod-compose.yml logs --tail=200
EASY-INSTALL-LOG
Wenn der Installer selbst scheitert, ~/erpnext-install/easy-install.log prüfen.

Die Installation auf einen Blick

1
Ubuntu aktualisieren: sudo apt update && sudo apt full-upgrade -y
2
Werkzeuge: Python 3, wget, curl, CA-Zertifikate und dnsutils installieren.
3
DNS prüfen: getent ahosts erp.firma.de
4
Firewall: SSH, 80/TCP und 443/TCP freigeben.
5
Installer: easy-install.py aus dem Bench-Repository laden.
6
Deploy: Projekt, E-Mail, Site-Name und erpnext angeben.
7
Status: Compose-Projekt mit docker compose ... ps prüfen.
8
Passwort: ~/erpnext-prod-passwords.txt schützen und lesen.
9
Browser: https://erp.firma.de

Grundlage der Anleitung

Diese HTML-Seite entspricht inhaltlich der zuvor erstellten Docker-/Easy-Install-PDF und verwendet dieselben Installationsschritte.

LERNZIEL
Du kannst ERPNext auf einem aktuellen Ubuntu Server per Docker/Easy Install bereitstellen, DNS und Firewall einordnen, Container prüfen sowie Updates, Backups und Fehlersuche durchführen.