Skip to content
Snippets Groups Projects
Commit bd634dbc authored by Martin Weise's avatar Martin Weise
Browse files

Merge branch 'dev' into 'master'

Need assets path

See merge request !400
parents fc96c675 ec3a0e07
No related branches found
No related tags found
1 merge request!400Need assets path
Showing
with 2366 additions and 1934 deletions
......@@ -6,7 +6,7 @@ volumes:
search-db-data:
identity-service-data:
metric-db-data:
dashboard-service-data:
dashboard-ui-data:
services:
dbrepo-metadata-db:
......@@ -42,8 +42,10 @@ services:
ports:
- "3307:3306"
environment:
MARIADB_ROOT_PASSWORD: "${DATA_DB_PASSWORD:-dbrepo}"
MARIADB_GALERA_MARIABACKUP_PASSWORD: "${DATA_DB_BACKUP_PASSWORD:-dbrepobackup}"
MARIADB_PASSWORD: "${READONLY_PASSWORD:-user}"
MARIADB_ROOT_PASSWORD: "${DATA_DB_PASSWORD:-dbrepo}"
MARIADB_USER: "${READONLY_USERNAME:-user}"
healthcheck:
test: mysqladmin ping --user=root --password="${DATA_DB_PASSWORD:-dbrepo}" --silent
interval: 10s
......@@ -115,7 +117,7 @@ services:
init: true
restart: "no"
container_name: dbrepo-auth-service-init
image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.3
image: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.8.0
environment:
AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin}
AUTH_SERVICE_ADMIN_PASSWORD: ${AUTH_SERVICE_ADMIN_PASSWORD:-admin}
......@@ -123,10 +125,13 @@ services:
METADATA_DB: "${METADATA_DB:-dbrepo}"
METADATA_DB_PASSWORD: "${METADATA_DB_PASSWORD:-dbrepo}"
METADATA_USERNAME: "root"
READONLY_USERNAME: "${READONLY_USERNAME:-user}"
SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}"
depends_on:
dbrepo-auth-service:
condition: service_healthy
dbrepo-gateway-service:
condition: service_healthy
dbrepo-metadata-db:
condition: service_healthy
logging:
......@@ -136,7 +141,7 @@ services:
restart: "no"
container_name: dbrepo-metadata-service
hostname: metadata-service
image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.3
image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.8.0
environment:
ADMIN_EMAIL: "${ADMIN_EMAIL:-noreply@localhost}"
ANALYSE_SERVICE_ENDPOINT: "${ANALYSE_SERVICE_ENDPOINT:-http://analyse-service:8080}"
......@@ -149,12 +154,13 @@ services:
BROKER_EXCHANGE_NAME: ${BROKER_EXCHANGE_NAME:-dbrepo}
BROKER_QUEUE_NAME: ${BROKER_QUEUE_NAME:-dbrepo}
BROKER_HOST: "${BROKER_ENDPOINT:-broker-service}"
BROKER_PASSWORD: ${BROKER_PASSWORD:-admin}
BROKER_PASSWORD: ${SYSTEM_PASSWORD:-admin}
BROKER_PORT: ${BROKER_PORT:-5672}
BROKER_SERVICE_ENDPOINT: ${BROKER_SERVICE_ENDPOINT:-http://broker-service:15672}
BROKER_USERNAME: ${BROKER_USERNAME:-admin}
BROKER_USERNAME: ${SYSTEM_USERNAME:-admin}
BROKER_VIRTUALHOST: "${BROKER_VIRTUALHOST:-dbrepo}"
CROSSREF_ENDPOINT: "${CROSSREF_ENDPOINT:-http://data.crossref.org}"
DASHBOARD_SERVICE_ENDPOINT: "${DASHBOARD_SERVICE_ENDPOINT:-http://dashboard-service:8080}"
DATA_SERVICE_ENDPOINT: ${DATA_SERVICE_ENDPOINT:-http://data-service:8080}
DELETED_RECORD: "${DELETED_RECORD:-persistent}"
GRANULARITY: "${GRANULARITY:-YYYY-MM-DDThh:mm:ssZ}"
......@@ -188,6 +194,10 @@ services:
condition: service_healthy
dbrepo-data-service:
condition: service_healthy
dbrepo-dashboard-service:
condition: service_healthy
dbrepo-search-service:
condition: service_healthy
dbrepo-metadata-db:
condition: service_healthy
logging:
......@@ -197,7 +207,7 @@ services:
restart: "no"
container_name: dbrepo-analyse-service
hostname: analyse-service
image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.7.3
image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.8.0
environment:
AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client}
AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}
......@@ -250,23 +260,16 @@ services:
restart: "no"
container_name: dbrepo-search-db
hostname: search-db
image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.7.3
image: docker.io/bitnami/opensearch:2.10.0
ports:
- "9200:9200"
healthcheck:
test: curl -sSL localhost:9200/_plugins/_security/health | jq .status | grep UP
test: curl -sSL 127.0.0.1:9200
interval: 10s
timeout: 5s
retries: 12
environment:
ES_JAVA_OPTS: "-Xms4g -Xmx4g"
logger.level: "WARN"
deploy:
resources:
limits:
memory: 4G
ports:
- "9200:9200"
volumes:
- search-db-data:/usr/share/elasticsearch/data
- search-db-data:/bitnami/opensearch/data
logging:
driver: json-file
......@@ -274,7 +277,7 @@ services:
restart: "no"
container_name: dbrepo-search-service
hostname: search-service
image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.7.3
image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.8.0
environment:
AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client}
AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT_SECRET:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}
......@@ -284,8 +287,6 @@ services:
METADATA_SERVICE_ENDPOINT: ${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}
OPENSEARCH_HOST: ${OPENSEARCH_HOST:-search-db}
OPENSEARCH_PORT: ${OPENSEARCH_PORT:-9200}
OPENSEARCH_USERNAME: ${SEARCH_DB_USERNAME:-admin}
OPENSEARCH_PASSWORD: ${SEARCH_DB_PASSWORD:-admin}
SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}"
SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}"
healthcheck:
......@@ -293,12 +294,14 @@ services:
interval: 10s
timeout: 5s
retries: 12
logging:
driver: json-file
dbrepo-ui:
restart: "no"
container_name: dbrepo-ui
hostname: ui
image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.7.3
image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.8.0
environment:
NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}"
NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}"
......@@ -315,7 +318,7 @@ services:
dbrepo-search-service:
condition: service_healthy
healthcheck:
test: curl -fsSL http://127.0.0.1:3000 && curl -fsSL http://127.0.0.1:3000/health
test: curl -fsSL 127.0.0.1:3000 && curl -fsSL 127.0.0.1:3000/health
interval: 10s
timeout: 5s
retries: 12
......@@ -333,6 +336,11 @@ services:
- "80:8080"
volumes:
- ./config/dbrepo.conf:/etc/nginx/conf.d/default.conf
healthcheck:
test: lsof -i TCP:80 || exit 1
interval: 10s
timeout: 5s
retries: 12
depends_on:
dbrepo-analyse-service:
condition: service_healthy
......@@ -357,8 +365,8 @@ services:
environment:
LDAP_ADMIN_USERNAME: "${IDENTITY_SERVICE_ADMIN_USERNAME:-admin}"
LDAP_ADMIN_PASSWORD: "${IDENTITY_SERVICE_ADMIN_PASSWORD:-admin}"
LDAP_USERS: "${SYSTEM_USERNAME:-admin}"
LDAP_PASSWORDS: "${SYSTEM_PASSWORD:-admin}"
LDAP_USERS: "${SYSTEM_USERNAME:-admin},${READONLY_USERNAME:-user}"
LDAP_PASSWORDS: "${SYSTEM_PASSWORD:-admin},${READONLY_PASSWORD:-user}"
LDAP_GROUP: "${ADMIN_GROUP:-system}"
LDAP_ROOT: "${IDENTITY_SERVICE_ROOT:-dc=dbrepo,dc=at}"
LDAP_ADMIN_DN: "${IDENTITY_SERVICE_ADMIN_DN:-cn=admin,dc=dbrepo,dc=at}"
......@@ -375,14 +383,12 @@ services:
init: true
container_name: dbrepo-search-service-init
hostname: search-service-init
image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.7.3
image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.8.0
environment:
LOG_LEVEL: ${LOG_LEVEL:-info}
METADATA_SERVICE_ENDPOINT: ${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}
OPENSEARCH_HOST: ${OPENSEARCH_HOST:-search-db}
OPENSEARCH_PORT: ${OPENSEARCH_PORT:-9200}
OPENSEARCH_USERNAME: ${SEARCH_DB_USERNAME:-admin}
OPENSEARCH_PASSWORD: ${SEARCH_DB_PASSWORD:-admin}
SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}"
SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}"
depends_on:
......@@ -393,6 +399,26 @@ services:
logging:
driver: json-file
dbrepo-dashboard-service-init:
restart: "no"
init: true
container_name: dbrepo-dashboard-service-init
hostname: search-dashboard-init
image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service-init:1.8.0
environment:
LOG_LEVEL: ${LOG_LEVEL:-info}
DASHBOARD_UI_ENDPOINT: "${DASHBOARD_UI_ENDPOINT:-http://dashboard-ui:3000}"
METADATA_SERVICE_ENDPOINT: ${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}
SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}"
SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}"
depends_on:
dbrepo-dashboard-ui:
condition: service_healthy
dbrepo-metadata-service:
condition: service_healthy
logging:
driver: json-file
dbrepo-storage-service:
restart: "no"
container_name: dbrepo-storage-service
......@@ -428,38 +454,12 @@ services:
logging:
driver: json-file
dbrepo-dashboard-service:
restart: "no"
container_name: dbrepo-dashboard-service
hostname: dashboard-service
image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.7.3
ports:
- "3000:3000"
volumes:
- dashboard-service-data:/opt/bitnami/grafana/data
environment:
GF_SERVER_DOMAIN: "dashboard-service"
GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION: "true"
LDAP_ADMIN_USERNAME: "${IDENTITY_SERVICE_ADMIN_USERNAME:-admin}"
LDAP_ADMIN_PASSWORD: "${IDENTITY_SERVICE_ADMIN_PASSWORD:-admin}"
LDAP_ROOT: "${IDENTITY_SERVICE_ROOT:-dc=dbrepo,dc=at}"
healthcheck:
test: curl -fsSL --head http://127.0.0.1:3000
interval: 10s
timeout: 5s
retries: 12
depends_on:
dbrepo-metric-db:
condition: service_started
logging:
driver: json-file
dbrepo-storage-service-init:
restart: "no"
init: true
container_name: dbrepo-storage-service-init
hostname: storage-service-init
image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.7.3
image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.8.0
environment:
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-seaweedfsadmin}
S3_BUCKET: "${S3_BUCKET:-dbrepo}"
......@@ -475,7 +475,7 @@ services:
restart: "no"
container_name: dbrepo-data-service
hostname: data-service
image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.7.3
image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.8.0
environment:
AUTH_SERVICE_ADMIN: "${AUTH_SERVICE_ADMIN:-admin}"
AUTH_SERVICE_ADMIN_PASSWORD: "${AUTH_SERVICE_ADMIN_PASSWORD:-admin}"
......@@ -499,15 +499,12 @@ services:
GRANT_DEFAULT_WRITE: "${GRANT_DEFAULT_WRITE:-SELECT, CREATE, CREATE VIEW, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, INDEX, TRIGGER, INSERT, UPDATE, DELETE}"
JWT_PUBKEY: "${JWT_PUBKEY:-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB}"
LOG_LEVEL: ${LOG_LEVEL:-info}
MIN_CONCURRENT_CONSUMERS: ${MIN_CONCURRENT_CONSUMERS:-1}
MAX_CONCURRENT_CONSUMERS: ${MAX_CONCURRENT_CONSUMERS:-5}
QUEUE_NAME: ${QUEUE_NAME:-dbrepo}
REQUEUE_REJECTED: ${REQUEUE_REJECTED:-false}
ROUTING_KEY: "${ROUTING_KEY:-dbrepo.#}"
S3_ACCESS_KEY_ID: "${S3_ACCESS_KEY_ID:-seaweedfsadmin}"
S3_BUCKET: "${S3_BUCKET:-dbrepo}"
S3_ENDPOINT: "${S3_ENDPOINT:-http://storage-service:9000}"
S3_IMPORT_BUCKET: "${S3_IMPORT_BUCKET:-dbrepo-upload}"
S3_SECRET_ACCESS_KEY: "${S3_SECRET_ACCESS_KEY:-seaweedfsadmin}"
SPARK_USER: "${COMPUTE_SERVICE_USERNAME:-spark}"
SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}"
......@@ -522,3 +519,59 @@ services:
condition: service_healthy
logging:
driver: json-file
dbrepo-dashboard-ui:
restart: "no"
container_name: dbrepo-dashboard-ui
hostname: dashboard-ui
image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-ui:1.8.0
ports:
- "3000:3000"
volumes:
- dashboard-ui-data:/opt/bitnami/grafana/data
environment:
BASE_URL: "${BASE_URL:-http://localhost}"
GF_INSTALL_PLUGINS: "yesoreyeram-infinity-datasource"
GF_SERVER_DOMAIN: "dashboard-service"
GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION: "true"
LDAP_ADMIN_USERNAME: "${IDENTITY_SERVICE_ADMIN_USERNAME:-admin}"
LDAP_ADMIN_PASSWORD: "${IDENTITY_SERVICE_ADMIN_PASSWORD:-admin}"
LDAP_ROOT: "${IDENTITY_SERVICE_ROOT:-dc=dbrepo,dc=at}"
healthcheck:
test: curl -fsSL --head 127.0.0.1:3000
interval: 10s
timeout: 5s
retries: 12
depends_on:
dbrepo-metric-db:
condition: service_started
extra_hosts:
- "localhost:host-gateway"
logging:
driver: json-file
dbrepo-dashboard-service:
restart: "no"
container_name: dbrepo-dashboard-service
hostname: dashboard-service
image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.8.0
ports:
- "4070:8080"
environment:
AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin}
AUTH_SERVICE_ADMIN_PASSWORD: ${AUTH_SERVICE_ADMIN_PASSWORD:-admin}
AUTH_SERVICE_ENDPOINT: ${AUTH_SERVICE_ENDPOINT:-http://auth-service:8080}
BASE_URL: "${BASE_URL:-http://localhost}"
DASHBOARD_UI_ENDPOINT: "${DASHBOARD_UI_ENDPOINT:-http://dashboard-ui:3000}"
SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}"
SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}"
healthcheck:
test: curl -fsSL --head 127.0.0.1:8080/health
interval: 10s
timeout: 5s
retries: 12
depends_on:
dbrepo-metric-db:
condition: service_started
logging:
driver: json-file
......@@ -24,16 +24,29 @@
},
"type": "object"
},
"ApiError": {
"properties": {
"code": {
"example": "error.dashboard.create",
"type": "string"
},
"message": {
"example": "Message",
"type": "string"
},
"status": {
"example": "BAD_REQUEST",
"type": "string"
}
},
"type": "object"
},
"ColumnAnalysisDto": {
"properties": {
"d": {
"example": 4,
"type": "integer"
},
"dfid": {
"example": null,
"type": "integer"
},
"enums": {
"example": null,
"properties": {
......@@ -62,19 +75,6 @@
},
"type": "object"
},
"ErrorDto": {
"properties": {
"message": {
"example": "Message",
"type": "string"
},
"success": {
"example": false,
"type": "boolean"
}
},
"type": "object"
},
"KeysDto": {
"properties": {
"keys": {
......@@ -111,7 +111,7 @@
},
"externalDocs": {
"description": "Sourcecode Documentation",
"url": "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.5/"
"url": "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.8/"
},
"info": {
"contact": {
......@@ -124,7 +124,7 @@
"url": "https://www.apache.org/licenses/LICENSE-2.0"
},
"title": "Database Repository Analyse Service API",
"version": "1.5"
"version": "1.8.0"
},
"openapi": "3.0.0",
"paths": {
......@@ -322,7 +322,7 @@
"servers": [
{
"description": "Generated server url",
"url": "http://localhost:5000"
"url": "http://localhost"
},
{
"description": "Sandbox",
......
"<!doctype html> <html lang=en> <title>500 Internal Server Error</title> <h1>Internal Server Error</h1> <p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>"
This diff is collapsed.
This diff is collapsed.
{
"components": {
"schemas": {
"ApiError": {
"properties": {
"code": {
"example": "error.dashboard.create",
"type": "string"
},
"message": {
"example": "Message",
"type": "string"
},
"status": {
"example": "BAD_REQUEST",
"type": "string"
}
},
"type": "object"
},
"IndexDto": {
"properties": {
"results": {
......@@ -98,7 +115,7 @@
},
"externalDocs": {
"description": "Sourcecode Documentation",
"url": "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.5/"
"url": "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/"
},
"info": {
"contact": {
......@@ -111,7 +128,7 @@
"url": "https://www.apache.org/licenses/LICENSE-2.0"
},
"title": "Database Repository Search Service API",
"version": "1.5"
"version": "1.8.0"
},
"openapi": "3.0.0",
"paths": {
......
......@@ -11,7 +11,7 @@ components:
type: http
externalDocs:
description: Project Website
url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/
url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.8/
info:
contact:
email: andreas.rauber@tuwien.ac.at
......@@ -24,7 +24,7 @@ info:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
title: DBRepo REST API
version: 1.7.3
version: 1.8.0
openapi: 3.1.0
servers:
- description: Test Instance
......
This diff is collapsed.
#!/bin/bash
declare -A services
services[4000]=search
services[5000]=analyse
services[4050]=analyse
services[4060]=search
services[4070]=dashboard
services[9093]=data
services[9099]=metadata
# requires https://github.com/mikefarah/yq/ -> v4.44.3
function retrieve () {
if [[ "$2" == analyse ]] || [[ "$2" == search ]]; then
if [[ "$2" == analyse ]] || [[ "$2" == search ]] || [[ "$2" == dashboard ]]; then
echo "... retrieve json api from localhost:$1"
curl -sSL "http://localhost:$1/api-$2.json" | yq -o=json - > "./.docs/.openapi/api-$2.yaml"
else
......
......@@ -61,9 +61,6 @@ The consumer takes care of writing it to the correct table in the [Data Service]
## Limitations
* No support for MQTT in the [Metadata Service](../system-services-metadata)
and [Data Service](../system-services-data) because of MQTT's missing permission system.
!!! question "Do you miss functionality? Do these limitations affect you?"
We strongly encourage you to help us implement it as we are welcoming contributors to open-source software and get
......
---
author: Martin Weise
---
## tl;dr
!!! debug "Debug Information"
Image: [`docker.io/bitnami/grafana:10.4.9-debian-12-r0`](https://hub.docker.com/r/bitnami/grafana)
* Ports: 3000/tcp
* UI: `http://<hostname>/dashboard`
* Management UI: `http://<hostname>:3000` (see [Management](#management))
* Prometheus: `http://<hostname>/dashboard/metrics`
To directly access in Kubernetes (for e.g. debugging), forward the svc port to your local machine:
```shell
kubectl [-n namespace] port-forward svc/dashboard-service 3000:3000
```
## Overview
The Dashboard Service is visualizing the status of DBRepo with charts. The default dashboard provisioner located in
`/etc/grafana/provisioning/dashboards/provider.yaml` checks for new `JSON` dashboard files in `/app/dashboards` every 10
seconds and makes the available in the Dashboard Service.
## Management
The Dashboard Service can be accessed with admin users (see [Identity Service](../../api/identity-service)). In this
case, access the UI via the port `3000` directly to avoid UI Redirects.
!!! bug "UI Redirects"
It is a known bug [#460](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues/460)
that when being logged-in, the UI randomly redirects when being accessed from the Gateway Service, we therefore
recommend to access port `3000` directly: `http://<hostname>:3000`. Anonmyous users are not affected.
## Limitations
* Unintended redirects when being logged-in (see above).
!!! question "Do you miss functionality? Do these limitations affect you?"
We strongly encourage you to help us implement it as we are welcoming contributors to open-source software and get
in [contact](../../contact) with us, we happily answer requests for collaboration with attached CV and your programming
experience!
## Security
(none)
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment