Ausrollen (Deployment)

Der Dienst kann entweder als Container lokal im Produktions- oder Entwicklungsmodus gestartet werden.

Der Dienst E-Invoice-EU kann auf eine von mehreren Arten gestartet werden:

  • Run as a (docker) container.
  • Build and run it in production mode.
  • Run it locally in development mode.

Docker-Container

Die Verwendung der containerisierten Version ist die bei weitem einfachste Möglichkeit, den Service E-Invoice-EU zu starten.

docker pull gflohr/e-invoice-eu:latest
docker run --rm -p 3000:3000 --name e-invoice-eu gflohr/e-invoice-eu:latest
nerdctl pull gflohr/e-invoice-eu:latest
nerdctl run --rm -p 3000:3000 --name e-invoice-eu gflohr/e-invoice-eu:latest

Download

Alle anderen Möglichkeiten erfordern eine lokale Kopie des Quelltexts.

Die letzte stabile Version kann von der Download-Seite als ZIP-Archiv oder Tar-Ball heruntergeladen werden. Die Download-Datei kann dann an beliebiger Stelle ausgepackt werden.

Steht das Kommando git zur Verfügung, kann das Repository einfach geclonet werden:

# HTTPS

git clone https://github.com/gflohr/e-invoice-eu.git

# SSH

git clone git@github.com:gflohr/e-invoice-eu.git

Die Version, die man durch das Clonen des Repositories erhält, ist potenziell etwas aktueller.

Ausrollen im Produktions-Modus

Man kann den Server auch bauen und dann an einem beliebigen Ort starten. Nach dem Clonen des Repositories und Wechsel in dessen Wurzelverzeichnis, müssen dazu die folgenden Kommandos in eine Shell eingegeben werden:

npm install
npm run build
yarn install
yarn run build
pnpm install
pnpm run build
bun install
bun run build

Mit Node.js starten

Das folgende Kommando startet die Applikation mit Node.js:

NODE_ENV=production npm run start:prod
NODE_ENV=production yarn run start:prod
NODE_ENV=production pnpm run start:prod
NODE_ENV=production pnpm run start:prod

Die NestJS-Dokumentation für Deployment hält weitere Informationen bereit.

Mit Bun oder Deno starten

Die Applikation lässt sich auch mit bun oder deno starten. In diesem Fall muss allerdings der komplette Pfad zur JavaScript-Datei angegeben werden:

NODE_ENV=production bun apps/server/dist/main.js
NODE_ENV=production deno --allow-env --allow-read --allow-net apps/server/dist/main.js
NODE_ENV=production node apps/server/dist/main.js

Im Entwicklungsmodus starten

Die Applikation kann auch ohne den vorherigen Build-Schritt gestartet werden.

cd apps/server
npm install
npm run start:dev
cd apps/server
yarn install
yarn run start:dev
cd apps/server
pnpm install
pnpm run start:dev
cd apps/server
bun install
bun run start:dev

In diesem Modus wird, wannimmer der Quelltext geändert wurde, alles neu kompiliert und der Server neu gestartet.

Umgebungsvariablen

Der Dienst wird mit Umgebungsvariablen konfiguriert.

You can either pass these environment variables on the commandline or place a file called .env in the directory, where you start the service. This file has lines of the form VARIABLE=VALUE, see the dotenv docs for more information.

Wird der Docker-Container gestartet, muss entweder ein Bind-Mount für die .env-Datei in den Container stattfinden, oder die Umgebungsvariablen müssen mit der Option -e auf der Kommandozeile übergeben werden:

docker run --rm -p 3300:3300 --name e-invoice-eu -e PORT=3300 gflohr/e-invoice-eu:latest
nerdctl run --rm -p 3300:3300 --name e-invoice-eu -e PORT=3300 gflohr/e-invoice-eu:latest

Dies würde den Dienst auf Port 3300 statt auf Port 3000 starten, wobei es allerdings einfacher wäre, einfach den Container-Port 3300 auf den Host-Port 3000 zu mappen.

Die folgenden Umgebungsvariablen werden unterstützt:

NODE_ENV

Um die NestJS-Dokumentation zu zitieren:

Während es technisch keinen Unterschied zwischen Entwicklungs- und Produktionsmodus in Node.js und NestJS gibt, ist es ein gute Proxis, die NODE_ENV Umgebungsvariable auf ”production” zu setzen, wenn die Applikation in einer Produktionsumgebung gestartet wird, weil einige Bibliotheken im Ökosystem ihr Verhalten basierend auf dieser Variablen ändern (z. B. Ein- und Ausschalten von Debugging-Ausgaben, usw.).

Kurz gesagt: Es ist besser, diese Variable auf ”production” zu setzen, wenn die Applikation im Produktionsmodus gestartet wird.

PORT

Set this to a valid port number if you are not happy with the default port of 3000.

Anmerkung: Dies hat zur Zeit keine Auswirkung, wenn die Applikation als Container gestartet wird, siehe https://github.com/gflohr/e-invoice-eu/issues/76.

LIBRE_OFFICE

Pfad zu LibreOffice. E-Invoice-EU verwendet LibreOffice im headless Modus m PDFs aus Tabellendaten zu generieren. Es hängt von der individuellen Art der Benutzung ab, ob dies benötigt wird oder nicht.

Unter macOS ist LibreOffice gewöhnlich hier installiert:

/Applications/LibreOffice.app/Contents/MacOS/soffice

Unter Windows ist der Pfad:

C:\Program Files\LibreOffice\program\soffice.exe

Wird der Ort der ausführbaren LibreOffice-Datei nicht konfiguriert, wird diese in $PATH gesucht.

LIBREOFFICE

Ein Alias für die Umgebungsvariable LIBRE_OFFICE.

Diese Website verwendet Cookies und ähnliche Technologien, um gewisse Funktionalität zu ermöglichen, die Benutzbarkeit zu erhöhen und Inhalt entsprechend ihren Interessen zu liefern. Über die technisch notwendigen Cookies hinaus können abhängig von ihrem Zweck Analyse- und Marketing-Cookies zum Einsatz kommen. Sie können ihre Zustimmung zu den vorher erwähnten Cookies erklären, indem sie auf "Zustimmen und weiter" klicken. Hier können sie Detaileinstellungen vornehmen oder ihre Zustimmung - auch teilweise - mit Wirkung für die Zukunft zurücknehmen. Für weitere Informationen lesen sie bitte unsere Datenschutzerklärung.