ERPNext auf aktuellem
Ubuntu Server
Produktionsinstallation mit Docker und dem offiziellen Frappe Easy-Install-Verfahren.
Produktionsinstallation mit Docker und dem offiziellen Frappe Easy-Install-Verfahren.
ERPNext besteht aus mehreren Diensten. Die Container-Variante hält diese Komponenten sauber getrennt und reduziert Konflikte mit Systempaketen.
| Bereich | Empfehlung | Warum? |
|---|---|---|
| CPU | mind. 2 vCPU | Genug Reserve für Datenbank und ERPNext-Dienste. |
| RAM | mind. 8 GB | MariaDB und Worker profitieren von ausreichendem Arbeitsspeicher. |
| Speicher | mind. 50 GB SSD | Datenbank, Dateien, Images und Backups benötigen Reserve. |
| Netz | stabile Verbindung | Images, Updates, TLS und Benutzerzugriffe benötigen Internet. |
erp.firma.deDer Site-Name wird von Frappe für das Routing verwendet. Ein falsch aufgelöster DNS-Name führt schnell zu 404- oder Zertifikatsproblemen.
| Typ | Name | Ziel |
|---|---|---|
| A | erp.firma.de | 203.0.113.50 |
| AAAA | erp.firma.de | 2001:db8:100::50 |
getent ahosts erp.firma.de dig +short A erp.firma.de dig +short AAAA erp.firma.de
sudo apt update sudo apt full-upgrade -y
sudo apt install -y python3 wget curl ca-certificates dnsutils
sudo timedatectl set-timezone Europe/Berlin timedatectl
sudo reboot
cat /etc/os-release die Ubuntu-Version kontrollieren.Für eine öffentlich erreichbare ERPNext-Instanz reichen normalerweise SSH sowie HTTP/HTTPS. MariaDB und Redis gehören nicht ins Internet.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp sudo ufw allow 443/tcp
sudo ufw enable sudo ufw status verbose
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
python3 easy-install.py deploy --help
less easy-install.py ansehen.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
frappe_docker-Projekt wird geladen.erp.firma.de wird angelegt und ERPNext darauf installiert.| Datei | Bedeutung |
|---|---|
~/erpnext-prod-compose.yml | Docker-Compose-Konfiguration der ERPNext-Umgebung. |
~/erpnext-prod.env | Umgebungswerte wie ERPNext-Version, Datenbankpasswort und Site-Regel. |
~/erpnext-prod-passwords.txt | Administrator- und MariaDB-root-Passwort. |
~/erpnext-install/easy-install.log | Installationsprotokoll für die Fehlersuche. |
chmod 600 ~/erpnext-prod-passwords.txt cat ~/erpnext-prod-passwords.txt
.env-Datei liefert Werte. Die Passwortdatei enthält die automatisch erzeugten Zugangsdaten.docker compose -p erpnext-prod \ -f ~/erpnext-prod-compose.yml ps
docker compose -p erpnext-prod \ -f ~/erpnext-prod-compose.yml logs --tail=100
docker compose -p erpnext-prod \ -f ~/erpnext-prod-compose.yml exec backend \ bench --site erp.firma.de list-apps
frappe und erpnext erscheinen. Die Container sollten laufen beziehungsweise gesund sein.https://erp.firma.de
| Feld | Wert |
|---|---|
| Benutzername | Administrator |
| Passwort | Wert aus ~/erpnext-prod-passwords.txt |
| Komponente | Aufgabe |
|---|---|
| Traefik | Nimmt Webanfragen an, routet anhand des Hostnamens und stellt HTTPS bereit. |
| Frontend | Liefert Weboberfläche und statische Inhalte aus. |
| Backend | Führt Frappe-/ERPNext-Logik und Bench-Befehle aus. |
| Worker | Verarbeitet Hintergrundjobs wie E-Mail, Importe und längere Aufgaben. |
| MariaDB | Speichert Geschäftsdaten und Konfiguration dauerhaft. |
| Redis | Liefert Cache-, Queue- und Echtzeitfunktionen. |
# 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
docker compose down entfernt laufende Container, nicht aber automatisch persistente Volumes. Optionen wie -v nicht leichtfertig verwenden, weil sie Datenvolumes löschen können.df -h free -h uptime docker system df
Aktuelle Sicherungen und externe Kopie sicherstellen.
cd ~/erpnext-install wget -O easy-install.py https://raw.githubusercontent.com/frappe/bench/develop/easy-install.py
python3 easy-install.py upgrade --project=erpnext-prod
docker compose -p erpnext-prod -f ~/erpnext-prod-compose.yml ps
docker compose -p erpnext-prod \ -f ~/erpnext-prod-compose.yml exec backend \ bench --site erp.firma.de backup --with-files --compress
| Maßnahme | Empfehlung |
|---|---|
| SSH | Schlüssel statt Passwort; Root-Login möglichst deaktivieren. |
| Firewall | Nur notwendige Ports freigeben; MariaDB und Redis nicht öffentlich exponieren. |
| Updates | Ubuntu- und ERPNext-Sicherheitsupdates geplant einspielen. |
| Backups | verschlüsselt/offsite sichern und Restore testen. |
| Konten | persönliche Benutzerkonten und minimale Rollen verwenden. |
| TLS | HTTPS erzwingen; DNS und Zertifikate überwachen. |
| Problem | Prüfung | Typische Ursache |
|---|---|---|
| Seite nicht erreichbar | DNS, UFW, Router/NAT, Containerstatus | Port 80/443 nicht erreichbar oder falsche IP |
| 404 | Site-Name und Host-Header | DNS-/Site-Name passt nicht zur Site-Regel |
| TLS-Fehler | DNS und Erreichbarkeit von 80/443 | Let's Encrypt kann Domain nicht validieren |
| Docker permission denied | Gruppenmitgliedschaft | Benutzer wurde gerade erst zur docker-Gruppe hinzugefügt |
| Container startet neu | Compose-Logs | Konfigurations-, DB- oder Ressourcenproblem |
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
~/erpnext-install/easy-install.log prüfen.sudo apt update && sudo apt full-upgrade -ygetent ahosts erp.firma.deeasy-install.py aus dem Bench-Repository laden.erpnext angeben.docker compose ... ps prüfen.~/erpnext-prod-passwords.txt schützen und lesen.https://erp.firma.deDiese HTML-Seite entspricht inhaltlich der zuvor erstellten Docker-/Easy-Install-PDF und verwendet dieselben Installationsschritte.