Skip to content

Commit

Permalink
Merge pull request #1080 from metasfresh/gh1068
Browse files Browse the repository at this point in the history
Adjustments/improvements
  • Loading branch information
metas-Kay authored May 3, 2024
2 parents 872842f + ff8051d commit eb7a47d
Showing 1 changed file with 77 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,68 +26,77 @@ Diese Anleitung beschreibt die Installation der folgenden Dienste gemäß [diese
| HDD | 10 GB | 20 GB |
| OS Empfehlung | Linux Server | Ubuntu 22.04 |

## Installation mit Docker
## Voraussetzungen

### Docker und Docker Compose installieren
Installiere Docker über das offizielle Docker Repository und anschließend das Docker-Compose-Plugin.
1. <a href="https://docs.docker.com/engine/installation/linux/ubuntu/" title="Install Docker Engine on Ubuntu | docs.docker.com" target="\_blank">Docker installieren</a>.
1. <a href="https://docs.docker.com/compose/install/linux/#install-using-the-repository" title="Install using the repository | docs.docker.com" target="\_blank">Docker-Compose-Plugin installieren</a>.

### metasfresh installieren
1. Klone den metasfresh-docker Ordner und wechsle in das neu erstellte Verzeichnis.
## metasfresh installieren (mit Docker)

### Verzeichnis erstellen
1. Klone den `metasfresh-docker` Ordner und wechsle in das neu erstellte Verzeichnis.

```
git clone https://github.com/metasfresh/metasfresh-docker.git
cd metasfresh-docker/
```

1. Im Verzeichnis befinden sich `docker-compose.yml` und `docker-compose_v3.yml`. Ersetze die `docker-compose.yml` mit der `docker-compose_v3.yml`, z.B. durch `cp docker-compose_v3.yml docker-compose.yml`

1. Öffne als nächstes mit einem Editor deiner Wahl (z.B. nano, vi) die `docker-compose.yml` und passe diese so an, wie du es benötigst, oder beispielhaft wie es in den folgenden Punkten beschrieben wird.
>**Hinweis:** Ein Beispiel dafür findest Du [am Ende dieser Anleitung](#beispiel-docker-compose-yml).
1. Lege fest, unter welcher URL das Webinterface aufgerufen werden soll. Die entsprechenden DNS Einträge müssen entweder real existieren, oder es müssen auf den beteiligten Systemen entspreche Hosts Einträge gesetzt werden. Für unser Beispiel benutzen wir: `http://example.com`.

1. Kommentiere `environment` und `http://example.com:8080` ein und ersetzte `example.com:8080` durch die URL und den Port, unter denen der Server vom Browser aus erreichbar sein soll. In unserem Beispiel setzen wir den Wert also auf `WEBAPI_URL=http://example.com:8080`.

>**Wichtig:** Der hier gesetzte `WEBAPI_URL` Wert **darf** keinen Slash am Ende enthalten.
Weiterhin müssen wir den port unter `ports` ` "80:80"`entsprechend anpassen auf `8080:80`, damit der oben gesetzt Port benutzt wird. Den Port 443 kommentieren wir aus.

Die Datei sollte dann wie folgt aussehen:

```
...
webui:
build: webui
links:
- webapi:webapi
ports:
- "8080:80"
# - "443:443"
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
#uncomment and set to URL where metasfresh will be available from browsers
environment:
- WEBAPI_URL=http://example.com:8080
...
```

>**Hinweis:** Ein anderer Port, wie z.B. `:8080`, wird dann benötigt, wenn ein anderer als Port 80 verwendet werden soll. In der Regel würde man noch einen Proxy davorschalten, für den Port 80/443 dann ja bereits reserviert ist. <br> Siehe hierzu auch: [Wie ändere ich die WebUI-Ports für metasfresh-Docker?](Wie_aendere_ich_die_ports_fuer_webui_in_docker)
In dem Verzeichnis befinden sich die beiden Dateien `docker-compose.yml` und `docker-compose_v3.yml`.

1. Ersetze die `docker-compose.yml` mit der `docker-compose_v3.yml`, z.B. durch

```
cp docker-compose_v3.yml docker-compose.yml
```

### Docker-Compose anpassen (DNS und Ports)
1. Öffne als nächstes mit einem Texteditor deiner Wahl (z.B. Nano, vi) die `docker-compose.yml`-Datei und passe diese deinen Anforderungen entsprechend an.<br>**Alternativ** kannst du dich auch an unserem **Beispiel** [am Ende dieser Anleitung](#beispiel-docker-compose-yml) orientieren.
1. Lege fest, unter welcher **URL das Webinterface** aufgerufen werden soll. Die entsprechenden **DNS-Einträge** müssen entweder real existieren oder es müssen auf den beteiligten Systemen entsprechende Einträge in der **Hosts-Datei** gesetzt werden.<br>Für unser Beispiel verwenden wir: `http://example.com`.
1. Kommentiere `environment` und `http://example.com:8080` ein.
1. Ersetzte `example.com:8080` durch die URL und den Port, unter denen der Server vom Browser aus erreichbar sein soll. In unserem Beispiel setzen wir den Wert also auf `WEBAPI_URL=http://example.com:8080`.
>**Wichtig:** Der hier gesetzte `WEBAPI_URL`-Wert darf **keinen Slash** am Ende enthalten.
1. Passe nun den Port unter `ports: "80:80"` entsprechend an auf `8080:80`, damit der oben gesetzte Port benutzt wird.
1. Kommentiere den Port 443 aus.

#### Ergebnis
- Die Datei sollte nun wie folgt aussehen:

```
...
webui:
build: webui
links:
- webapi:webapi
ports:
- "8080:80"
# - "443:443"
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
#uncomment and set to URL where metasfresh will be available from browsers
environment:
- WEBAPI_URL=http://example.com:8080
...
```
>**Hinweis:** Ein anderer Port, wie z.B. `:8080`, wird dann benötigt, wenn Port 80 nicht verwendet werden soll. In der Regel würde man noch einen Proxy davorschalten, für den Port 80/443 dann ja bereits reserviert ist.<br>Siehe hierzu auch: [Wie ändere ich die WebUI-Ports für metasfresh-Docker?](Wie_aendere_ich_die_ports_fuer_webui_in_docker)
| **WICHTIG:** |
| :--- |
| Solltest Du eine RPM-basierende Distribution einsetzen und/oder auf Deinem Host die Datei `/etc/timezone` nicht vorfinden, lösche oder kommentiere die Zeile `- /etc/timezone:/etc/timezone:ro` aus deiner `docker-compose.yml` aus! |
| Solltest Du eine **RPM-basierende Distribution** einsetzen und/oder auf Deinem Host die Datei **`/etc/timezone` nicht vorfinden**, lösche oder kommentiere die Zeile `- /etc/timezone:/etc/timezone:ro` aus deiner `docker-compose.yml` aus! |

### Docker Container erstellen
1. Erstelle die Docker Container.

`docker compose build`
```
docker compose build
```

1. Mit folgenden Befehlen kann Docker gestartet oder ggf. wieder gestoppt werden.

>**Hinweis:** Beim ersten Start wird es sehr wahrscheinlich ein paar Minuten dauern, bis die Datenbank initialisiert ist und die Services verfügbar sind. Bei der erstmaligen Initialisierung können es durchaus 5-10 Minuten sein. Darauf folgende Starts sollten deutlich weniger Zeit benötigen.
1. Mit folgenden Befehlen kann Docker gestartet und ggf. wieder gestoppt werden.
>**Hinweis:** Beim ersten Start wird es sehr wahrscheinlich **ein paar Minuten dauern**, bis die Datenbank initialisiert ist und die Services verfügbar sind. Bei der erstmaligen Initialisierung können es durchaus 5-10 Minuten sein. Darauf folgende Starts sollten deutlich weniger Zeit benötigen.
```
#starten#
Expand All @@ -97,38 +106,41 @@ Die Datei sollte dann wie folgt aussehen:
docker compose down
```


## Zugriff
Nach erfolgreicher Installation kannst Du hierüber auf das WebUI zugreifen:
Nach erfolgreicher Installation kannst Du über folgende URLs auf das metasfresh WebUI zugreifen:

- `http://example.com:8080`

oder

- `http://example.com:PORT` (falls ein anderer Port gesetzt wurde).

## Weitere Konfigurationswerte in der DB setzen
Nun müssen allerdings noch folgende Konfigurationswerte gesetzt werden:
## Wichtig: Weitere Konfigurationswerte in der Datenbank setzen
1. Folgende Konfigurationswerte müssen gesetzt werden:

```
docker exec -u postgres metasfresh-docker-db-1 psql -d metasfresh -c "UPDATE AD_SysConfig SET Value='http://example.com:8080' WHERE Name='webui.frontend.url'"
```
```
docker exec -u postgres metasfresh-docker-db-1 psql -d metasfresh -c "UPDATE AD_SysConfig SET Value='http://example.com:8080' WHERE Name='webui.frontend.url'"
```

```
docker exec -u postgres metasfresh-docker-db-1 psql -d metasfresh -c "UPDATE AD_SysConfig SET Value='http://app:8282/adempiereJasper/ReportServlet' WHERE Name ilike '%de.metas.adempiere.report.jasper.JRServerServlet%';"
```
```
docker exec -u postgres metasfresh-docker-db-1 psql -d metasfresh -c "UPDATE AD_SysConfig SET Value='http://app:8282/adempiereJasper/ReportServlet' WHERE Name ilike '%de.metas.adempiere.report.jasper.JRServerServlet%';"
```

```
docker exec -u postgres metasfresh-docker-db-1 psql -d metasfresh -c "UPDATE AD_SysConfig SET Value='http://app:8282/adempiereJasper/BarcodeServlet' WHERE Name ilike '%de.metas.adempiere.report.barcode.BarcodeServlet%';"
```
```
docker exec -u postgres metasfresh-docker-db-1 psql -d metasfresh -c "UPDATE AD_SysConfig SET Value='http://app:8282/adempiereJasper/BarcodeServlet' WHERE Name ilike '%de.metas.adempiere.report.barcode.BarcodeServlet%';"
```

Daraufhin muss die Instanz noch ein letztes mal neugestartet werden: `docker compose down && docker compose up -d`
1. **Neustart!** Anschließend muss die Instanz noch ein letztes Mal **neugestartet** werden:


## Nächste Schritte
- [Wie führe ich metasfresh-docker mit SSL aus?](Wie_richte_ich_ssl_in_metasfresh_docker_ein)
```
docker compose down && docker compose up -d
```

## <a name="beispiel-docker-compose-yml">Beispiel docker-compose.yml</a>

<details><summary><em>Hier klicken, um das Beispiel anzusehen.</em> 👀</summary>
<br>

```yml
version: '3'
services:
Expand Down Expand Up @@ -268,6 +280,10 @@ services:
max-file: '3'
driver: json-file
```
</details>
## Nächste Schritte
- [Wie führe ich metasfresh-docker mit SSL aus?](Wie_richte_ich_ssl_in_metasfresh_docker_ein)
## Sichtbar machen der Reports zwecks Bearbeitung
Möchte man die Reports, welche im metasfresh App-Docker-Image enthalten sind, editierbar machen, so muss man diese im `docker-compose.yml` zuerst als Volume nach außen legen.
Expand All @@ -290,5 +306,5 @@ Möchte man die Reports, welche im metasfresh App-Docker-Image enthalten sind, e
In diesem <a href="https://forum.metasfresh.org/t/docker-gui-recommendation" title="Docker GUI recommendation | forum.metasfresh.org" target="\_blank">Forumsbeitrag</a> (*auf Englisch*) über dieses Thema werden zwei weit verbreitete Tools empfohlen.
## Feedback
Bei Fragen oder Problemen kannst Du uns gerne in unserem offiziellen Forum um Unterstützung bitten:
Bei Fragen oder Problemen kannst Du uns gerne in unserem offiziellen **Community Forum** um Unterstützung bitten:
- <a href="http://forum.metasfresh.org" title="metasfresh Community Forum | forum.metasfresh.org" target="\_blank">forum.metasfresh.org</a>.

0 comments on commit eb7a47d

Please sign in to comment.