ERPNext auf Hetzner Cloud installieren

Nachdem ich hier von zahlreichen Misserfolgen bei der Installation von ERPNext lesen musste, kommt hiermit eine weitere Anleitung. Es handelt sich um eine halbautomatische Variante, bei der auch die grundlegende Serverkonfiguration enthalten ist. Der automatisierte Teil ist, dass wir das Ansible Playbook von bench nutzen, um MariaDB, NodeJ, Redis etc. zu installieren.

Diese Schritte habe ich genau so durchgeführt und wer es genau so macht, bei dem wird es wahrscheinlich funktionieren. Wir verwenden hier ein Ubuntu 18.04 in der Hetzner Cloud. Wer einen LXC-Container auf einem Raspberry Pi verwendet, Schritte weglässt oder hinzufügt, muss sich leider selbst um seine Fehlermeldungen kümmern.

P.S.: Wem das alles zu viel ist, der erhält unter alyf.de/jetzt-starten innerhalb von wenigen Sekunden eine fertige, kostenlose ERPNext-Instanz.


In Hetzner Cloud Console anmelden.

Projekt öffnen.

Server hinzufügen.

  1. Standort: Nürnberg
  2. Image: Ubuntu 18.04 (oder 20.04)
  3. Typ: Standard, Lokal (NVMe SSD), CX31
  4. Volume: keines
  5. Netzwerk: keines
  6. Zusätzliche Features: Backups
  7. SSH-Key: auswählen oder hinzufügen
  8. Name: wie vorgegeben

IP-Adresse kopieren.

Zugriff via SSH.

> ssh root@123.45.67.89
The authenticity of host '123.45.67.89 (123.45.67.89)' can't be established.
ECDSA key fingerprint is SHA256:KugfJBGSL+HKdsfkjLmnadsf8awjernl.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Software auf den neuesten Stand bringen.

> apt-get update && apt-get upgrade

Grundlegende Pakete installieren (vim und zsh sind Geschmackssache).

> apt-get install curl wget vim git ufw zsh

Admin und Frappe-Benutzer erstellen.

> adduser admin
Adding user `admin' ...
Adding new group `admin' (1000) ...
Adding new user `admin' (1000) with group `admin' ...
Creating home directory `/home/admin' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for admin
Enter the new value, or press ENTER for the default
Full Name []: Admin
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y

> adduser frappe
Adding user `frappe' ...
Adding new group `frappe' (1001) ...
Adding new user `frappe' (1001) with group `frappe' ...
Creating home directory `/home/frappe' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for frappe
Enter the new value, or press ENTER for the default
Full Name []: Frappe
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y

Admin zu sudoers hinzufügern.

> usermod -aG sudo admin

SSH-Keys von root zu Admin kopieren.

> rsync --archive --chown=admin:admin /root/.ssh /home/admin

Python3 und andere Abhängigkeiten installieren.

> apt-get install python3-minimal build-essential python3-setuptools python3-dev python3-pip libffi-dev

Pip-Module installieren.

> python3 -m pip install wheel ansible frappe-bench

Firewall konfigurieren (mehr dazu hier).

> ufw default allow outgoing
> ufw default deny incoming
> ufw allow ssh
> ufw allow http
> ufw allow https

Firewall aktivieren:

> ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

SSH-Zugriff absichern.

> vim /etc/ssh/sshd_config
# Zeile "PermitRootLogin yes" ersetzen durch "PermitRootLogin no"
# Zeile "#PasswordAuthentication yes" ersetzen durch "PasswordAuthentication no"

> service sshd reload

SSH-Session mit strg + d beenden.
Als Admin anmelden (als root sollte nicht mehr möglich sein).

> ssh admin@123.45.67.89

Benchs Ansible Playbook ausführen. Installiert weitere Abhängigkeiten wie MariaDB und NodeJS.

> sudo ansible-playbook -c local /usr/local/lib/python3.8/dist-packages/bench/playbooks/site.yml -vvvv -e "production=true container=false frappe_user=frappe mariadb_version=10.4 mysql_root_password=MEIN_PASSWORT without_bench_setup=true run_travis=false" --become --become-user=frappe

Bitte MEIN_PASSWORT durch ein sicheres Passwort ersetzen!

Zum Frappe-Benutzer wechseln:

> sudo su - frappe

Neue Bench erstellen. Mit dem Parameter --frappe-branch kann die Version spezifiziert werden. Zur Auswahl stehen version-12 (stabile Version), version-13-beta (Vorschau der nächsten Version) und develop (aktuellster Stand der Entwicklung).

> bench init --frappe-branch version-12 frappe-bench

In den Bench-Ordner wechseln. In Zukunft werden alle bench-Befehle in diesem Ordner ausgeführt.

> cd frappe-bench/

Neue Site erstellen.

> bench new-site site1.local
MySQL root password:
Restoring Database file...
11.9KiB 0:00:00 [ 146MiB/s] [=====================================================================>] 100%
Installing frappe...
Updating DocTypes for frappe : [========================================] 100%
Updating country info : [========================================] 100%
Set Administrator password:
Re-enter Administrator password:
*** Scheduler is disabled ***
Current Site set to site1.local

Socketio einrichten.

> bench setup socketio

Per strg + d wieder zum Admin und in den Bench-Ordner wechseln.

> cd /home/frappe/frappe-bench

Den Production Modus aktivieren.

> sudo bench setup production frappe

Nun sollte die Site unter der IP-Adresse des Servers erreichbar sein:

Damit ist zunächst das Frappe-Framework installiert. ERPNext ist lediglich eine zusätzliche App, die wie folgt installiert werden kann.

Zum Frappe-Benutzer und in den Bench-Odner wechseln.

> sudo su - frappe
> cd frappe-bench/

ERPNext herunterladen. Mit dem Parameter --branch kann die Version spezifiziert werden. Zur Auswahl stehen version-12 (stabile Version), version-13-beta (Vorschau der nächsten Version) und develop (aktuellster Stand der Entwicklung). Der ERPNext-branch muss mit dem Frappe-Branch übereinstimmen (es kann bspw. nicht Frappe version-12 zusammen mit ERPNext develop verwendet werden).

> bench get-app --branch version-12 erpnext

ERPNext installieren.

> bench install-app erpnext

Datenbank mit ERPNext neu aufsetzen.

> bench reinstall

Bei etwaigen Fehlern helfen diese Befehle oft weiter:

# Abhängigkeiten der Frappe-Apps installieren
> bench setup requirements

# JavaScript und CSS neu generieren
> bench build

# Konfiguration des Webservers aktualisieren
> bench setup nginx && service nginx reload

# Cache leeren
> bench clear-cache

# Neustarten
> bench restart
1 Like

Andere Anleitungen:

für Ubuntu 18.04 müsste das nicht Python 3.6 entsprechend dieser Anleitung sein?

VG Roman

Bei mir wurde offenbar 3.8 installiert, 3.6 sollte aber auch funktionieren.