ERPNext Einstieg ins self-hosting - Operative Exellence

Moin ERPNext Gemeinde. Ich beschäftige mich jetzt den zweiten Tag mit ERPNext (auf der Suche nach einem geeigneten und erweiterbaren ERP System) und empfinde den Einstieg doch noch ein wenig holprig.

Kurz zu meinem/unseren Hintergrund. Als DevOps Consultants, überwigend im Enterprise Umfeld, schöpfen wir aus einem doch sehr umfangreichen Portfolio an sowohl Entwickler als auch Sysadmin Knowhow. Unser Kerngeschäft besteht aus dem Aufbau von LandingZones, Cloud Migrationen und Automatisierung von Prozessen. Gerade im Bereich wiederkehrender administrativer Aufgaben setzen wir auf separation of cocerns, least privileges und einen hohen Automatisierungsgrad. Und genau da komme ich gleich zu den Themen, die mir gerade bei ERPNext das Leben schwer machen.

Wir haben uns bereits Odoo intensiv angeschaut, sowohl was die Erweiterbarkeit angeht (die bei Odoo meiner Meinung nach sehr gut gegeben ist), als auch was den Betrieb und die Updatefähigkeit angeht.

Was mir bei Odoo besonders misfällt ist die stellenweise schlecht implementierte und hart gecoded Mandatenfähigkeit und die Notwendigkeit, zu umfangreiche Berechtigungen auf das DBMS (min. CREATEDB) gewähren zu müssen (oder auf dreckige Workarounds zurück greifen zu müssen). Auch das Domain<->DB Mapping, die Backups und Updates sind ein grauen (ich möchte in diesem Kontext jetzt nicht weiter auf die Details eingehen, gebe bei Interesse aber gerne tiefere Einblicke). Zugegeben, haben wir uns bisher nur mit der Community Edition rumgeschlagen, ich kann also nicht mit Bestimmtheit sagen, ob es in den Enterprise Addons noch genauso aussieht, dem Odoo Addon Konzept folgend, vermute ich aber, dass ich mit der Enterprise eher zusätzliche Software Funktionen bekomme, sich aber am Kern nicht weiter etwas ändert.

Was erwarte ich in erster Linie von einer ERP Software:

  • ein ausgefeiltes backend Framework mit ORM (es darf auch auf Basis etablierter Tools wie zB. Django implementiert sein)
  • ein ebenso ausgefeiltes und etabliertes frontendframework
  • Kommunikation zwischen backend und frontend gerne auf basis von REST
  • Usermanagement auf Basis gängiger Standards (OAuth, OpenID, LDAP)
  • Konfigurations über API Calls (auch hier gerne wieder REST)
  • Extension und Decorator Patterns für das schaffen von Erweiterungen, ohne Änderungen am Core vornehmen zu müssen (Update Fähigkeit)
  • Database Migrations (Erweiterung der DB durch Extensions und Decorators, Migration bei Version upgrades)
  • Backup und recovery jobs (gerne über cli commands)

Bisher tue ich mich mit dem Einstieg noch ein wenig schwer. Die Frappe Doku (zumindest alles was ich bisher gefunden habe), lässt eine einfache Schritt für Schritt Anleitung zur Installation vermissen.
Ich bin vielmehr angehalten, über bench eine gesamte Entwicklungsumgebung einzurichten. Und auch bei ERPNext fehlt mir (wie schon bei Odoo) eine Möglichkeit, Datenbanken von Hand anzulegen und die entsprechenden Credentials einfach nur zu übergeben. Bas bench “new-site” command erwartet immer einen Root User Access auf die Datenbank. Es scheint mir ein wenig zu viel Magick in die Bench Kommandos (und damit in eine Blackbox) geflossen zu sein, um eine unheimlich komfortable Entwicklungs Umgebung zu bieten, mir fehlt es aber Gradlinigkeit und Granularität für einen produktiven Betrieb.

Wie halten es die anderen Mitglieder in dier hiesigen Community mit dem Betrieb ihrer ERPNext Instanzen? Wie sichert Ihr im besonderen Euren Systeme ab, wenn diese am public Internet hängen? Immerhin reden wir hier ja nicht bloß über eine Wordpress Website, sondern auch von Datenschutz relevaten Unternehmensdaten.

Ich würde mich über entsprechendes Input und auch über Links zu mir vielleicht bisher entgangenen Dokus freuen.

2 Likes

Deine Erwartungen sollten im Großen und Ganzen von ERPNext erfüllt werden.

Ja, der Einstieg ist bekanntlich hart. Aber Durchhaltevermögen zahlt sich aus :wink:

bench new-site benötigt temporär Zugriff auf einen privilegierten Benutzer, da es eine Datenbank und einen (weniger privilegierten) Benutzer für deine neue Instanz erstellen möchte. Falls du das nicht willst, könnte das Argument --no-setup-db helfen. Es gibt auch weitere Argumente, um bereits vorhanden Zugangsdaten zu übergeben (siehe bench new-site --help).

1 Like

@rmeyer vielen Dank für Deinen Input.

Hier ist tatsächlich die Doku unvollständig. Das Argument “–no-setup-db” wird in der Doku nicht genannt.
https://frappeframework.com/docs/user/en/bench/reference/new-site
Aber wie Du bereits erwähntest, hilft ein “–help” weiter.

Allerdings komme ich damit noch immer nicht voran.

Ich habe die Initialisierung durchlaufen

bench init test-bench

und gestartet

cd test-bench/
bench start

anschließend eine neue app erstellt

bench new-app library_management

Die Datenbank und den User (alles “erpnext”) habe ich manuell angelegt. Dieser hat auch volle Berechtigungen um seine Datenbank.

Folgende beide Commands führen leider noch immernicht zum Erfolg:

bench new-site erpnext.lokal --db-type mariadb --db-name erpnext --db-user erpnext --db-password erpnext --db-host localhost --db-port 3306 --db-root-username erpnext --db-root-password erpnext

stirbt mit

pymysql.err.OperationalError: (1227, ‘Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation’)

und

bench new-site erpnext.lokal --db-type mariadb --db-name erpnext --db-user erpnext --db-password erpnext --db-host localhost --db-port 3306 --db-root-username erpnext --db-root-password erpnext --no-setup-db

stirbt mit

pymysql.err.OperationalError: (1101, “BLOB, TEXT, GEOMETRY or JSON column ‘content’ can’t have a default value”)

Was mache ich falsch?

Hallo,

wenn sie Self-Hosting betreiben wollen, dann empfiehlt sich das offizielle Projekt von frappe (frappe_docker). Hier wird beschrieben, wie man eine dockerized Entwicklungsumgebung aufzieht, sowie eigene docker-images für das spätere Deployment baut, welche man dann auf der Zielumgebung deployen kann. Gerade dieser Ansatz ist als DevOps-Consultant extrem interessant, da so immer ein sauberer Deployment-Pfad, welcher Github-Repo zentriert ist, gegeben ist.

Ich selbst habe eine eigene Cloud in Betrieb, wo ich diesen Ansatz umgesetzt habe.
Bis da aber alles lief, da war es einiges an Arbeit, weil man sich doch mit sehr vielen Detailbereichen auseinandersetzen muss.

Logischerweise werden alle Instanzen hinter einem Reverse-Proxy betrieben. Zusätzlich kann man das Ganze natürlich mit einer Firewall absichern.

Was die anderen, von ihnen genannten Anforderungen anbetrifft, so sollten diese von ERPNext und dem Frappe-Framework inzwischen abgedeckt werden. Das Projekt hat die letzten 10 Jahre riesige Schritte ins Erwachsen-Sein gemacht.

2 Likes

Vielleicht hilft das hier weiter: