Konfiguration des Servers#

Die Konfiguration des Servers erfolgt entweder in einer .yaml Konfigurationsdatei in einem lokalen Verzeichnis, oder über Environment-Variablen, die vor dem Server Start gesetzt werden.

Die Konfigurationsdatei wird an folgenden Stellen gesucht:

  • ./config.yaml
  • ./config/config.yaml
  • /etc/live/config.yaml
  • /etcd/live.cfg
  • $HOME/.live/config.yaml

Parameter und Standardwerte#

database:

  # Im Standard wird sqlite verwendet
  driver: sqlite                          # ENV: DATABASE_DRIVER
  path: ./data/live.db                    # ENV: DATABASE_PATH

  # # Alternativ kann mit Postgres gearbeitet werden:
  # driver: postgres
  # host: db.example.local
  # port: 5432
  # user: live
  # password: secret
  # name: live
  # sslmode: require
  
server:

  # Der Port, auf dem der Server laeuft
  # Default ist 8080
  port: 8080                              # ENV: SERVER_PORT

  # Die interne URL des Servers. Wird beim Testen und Debuggen
  # z.B. für CORS Zugriffe verwendet
  internalUrl: http://localhost:8080      # ENV: SERVER_INTERNAL_URL

  # Die externe URL wird für CORS und zum Erstellen von Links verwendet
  externalUrl: https://mein.server.de     # ENV: SERVER_EXTERNAL_URL

  # OptionaleCORS Settings, damit ggf. ein 
  # Client auch auf einen anderen Server zugreifen kann
  cors:
    - https://alternativer.server.de

system:
  # Wenn keine Lizenz angegeben ist, 
  # dann läuft der Server im Demo-Modus
  license: "ABCD-1234-..."                # ENV: SYSTEM_LICENSE

  # Wenn eine neue Datenbank eingerichtet wird, wird ein initiales Admin Token vergeben
  # Dieses Token ist nur einmal gültig und wird auf StdOut ausgegeben, beim initialen Start
  # Sie können dieses initiale Token auch übergeben, z.B. um in einer Pipeline den Seeding-Prozess
  # zu automatisieren. Wenn Sie dieses Token nicht setzen, wird eine GUID generiert.
  initialAdminToken: 4569                 # ENV: SYSTEM_INITIAL_ADMIN_TOKEN

  # Das initiale Admin Token kann auch mehrfach verwendet werden.
  # Default ist false, dann ist es ein OTP (One-Time-Password / Einmaltoken)
  initialAdminTokenMultiUse: true         # ENV: SYSTEM_INITIAL_ADMIN_TOKEN_MULTI_USE

log:
  # Log Level kann trace | debug | warn | info | error sein
  # info ist default
  level: info                             # ENV: LOG_LEVEL
  # Im Falle von Containern einfach leerlassen,
  # dann wird wie üblich auf stdout geschrieben
  file: /var/log/live/app.log             # ENV: LOG_FILE

audit:
  # Eine optionale Datei für das Audit Log, also wer hat wann
  # fachlich was geändert
  file: /var/log/live/audit.log           # ENV: AUDIT_FILE

res:
  # Der resource path, der die optionale OEM Dateien enthalten
  # kann. Ressourcen werden - wenn vorhanden - erst in diesem
  # Verzeichnis gesucht, bevor sie im Server-Verzeichnis gesucht werden
  # Default ist <nicht gesetzt>
  path: ./resources                       # ENV: RES_PATH

Betrieb hinter einem Reverse Proxy#

Hier die Beispiel-Konfiguration des nginx proxys unserer URL https://app.inkasso.live:

server {
    server_name app.inkasso.live;

    # To allow special characters in headers
    ignore_invalid_headers off;

    # Allow any size file to be uploaded.
    # Set to a value such as 1000m; to restrict file size to a specific value
    client_max_body_size 0;

    error_log /var/log/nginx/app.inkasso.live-error.log error;
    access_log /var/log/nginx/app.inkasso.live-access.log combined;

    if ( $is_bot ) { return 410; }
    location /robots.txt { return 200 "User-agent: *\nDisallow: /"; }

    location / { 
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_connect_timeout   10s;
        proxy_send_timeout      600s;
        proxy_read_timeout      600s;
        proxy_buffering         on;
        proxy_pass http://192.168.10.80:8912;        
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/autodiscover.42i.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/autodiscover.42i.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = app.inkasso.live) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name app.inkasso.live;
    listen 80;
    return 404; # managed by Certbot
}