From c7bfbcc022e8e91cd0a61b8f30096aad04e35654 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Thu, 31 Aug 2023 13:31:16 +0200 Subject: [PATCH] Added more envs --- dbrepo-authentication-service/Dockerfile | 2 +- dbrepo-broker-service/Dockerfile | 3 ++ dbrepo-gateway-service/dbrepo.conf | 20 ++++++------ dbrepo-ui/Dockerfile | 2 ++ dbrepo-ui/config.js | 32 +++++++++--------- dbrepo-ui/layouts/default.vue | 14 ++++---- dbrepo-ui/nuxt.config.js | 5 ++- dbrepo-ui/pages/login.vue | 20 ++++++++++-- dbrepo-ui/static/favicon_alt.ico | Bin 0 -> 15086 bytes dbrepo-ui/static/favicon_alt.png | Bin 0 -> 1794 bytes dbrepo-ui/store/index.js | 10 ++++++ install.sh | 40 +++++++++++++++++++++++ 12 files changed, 112 insertions(+), 36 deletions(-) create mode 100644 dbrepo-ui/static/favicon_alt.ico create mode 100644 dbrepo-ui/static/favicon_alt.png create mode 100644 install.sh diff --git a/dbrepo-authentication-service/Dockerfile b/dbrepo-authentication-service/Dockerfile index 12cc75bde9..21a4e3ac45 100644 --- a/dbrepo-authentication-service/Dockerfile +++ b/dbrepo-authentication-service/Dockerfile @@ -46,7 +46,7 @@ ENV KC_DB_USERNAME=${AUTH_USERNAME} ENV KC_DB_PASSWORD=${AUTH_PASSWORD} ENV KC_HOSTNAME_STRICT_HTTPS=false ENV KC_HOSTNAME_PATH=/api/auth -ENV KC_HOSTNAME_ADMIN_URL=http://localhost/api/auth +ENV KC_HOSTNAME_ADMIN_URL=http://localhost/auth ENV KEYCLOAK_IMPORT=/opt/keycloak/data/import/dbrepo-realm.json ENV KEYCLOAK_ADMIN=fda diff --git a/dbrepo-broker-service/Dockerfile b/dbrepo-broker-service/Dockerfile index 2025bab24e..caef7401ec 100644 --- a/dbrepo-broker-service/Dockerfile +++ b/dbrepo-broker-service/Dockerfile @@ -11,4 +11,7 @@ COPY ./pubkey.pem ./pubkey.pem RUN rabbitmq-plugins enable --offline rabbitmq_prometheus rabbitmq_mqtt rabbitmq_auth_backend_oauth2 rabbitmq_auth_mechanism_ssl +EXPOSE 5672 +EXPOSE 15672 + HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD wget --spider http://localhost:15672/broker/ diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo-gateway-service/dbrepo.conf index c84c22f970..b5f706fced 100644 --- a/dbrepo-gateway-service/dbrepo.conf +++ b/dbrepo-gateway-service/dbrepo.conf @@ -34,16 +34,6 @@ server { listen 80 default_server; server_name _; - location /api/auth { - rewrite /api/auth/(.*) /$1 break; - 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_pass http://authentication; - proxy_read_timeout 90; - } - location /api/broker { rewrite /api/broker/(.*) /api/$1 break; proxy_set_header Host $host; @@ -91,6 +81,16 @@ server { proxy_read_timeout 90; } + location /api/auth { + rewrite /api/auth/(.*) /$1 break; + 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_pass http://authentication; + proxy_read_timeout 90; + } + location /retrieve { rewrite /retrieve/(.*) /$1 break; proxy_set_header Host $host; diff --git a/dbrepo-ui/Dockerfile b/dbrepo-ui/Dockerfile index edc2116850..468f8d5f8c 100644 --- a/dbrepo-ui/Dockerfile +++ b/dbrepo-ui/Dockerfile @@ -42,6 +42,8 @@ EXPOSE 9100 ENV BROKER_USERNAME="fda" ENV BROKER_PASSWORD="fda" +ENV BROKER_LOGIN_URL="/broker/" +ENV KEYCLOAK_LOGIN_URL="/api/auth/" ENV SHARED_FILESYSTEM="/tmp" ENV LOGO="/logo.png" ENV SEARCH_USERNAME="admin" diff --git a/dbrepo-ui/config.js b/dbrepo-ui/config.js index 79d165bd32..1ccca7b563 100644 --- a/dbrepo-ui/config.js +++ b/dbrepo-ui/config.js @@ -1,19 +1,21 @@ const config = {} -config.title = process.env.TITLE || 'Database Repository' -config.icon = process.env.ICON || '/favicon.ico' -config.brokerUsername = process.env.BROKER_USERNAME || 'fda' -config.brokerPassword = process.env.BROKER_PASSWORD || 'fda' -config.sharedFilesystem = process.env.SHARED_FILESYSTEM || '/tmp' -config.version = process.env.VERSION || 'latest' -config.logo = process.env.LOGO || '/logo.png' -config.tokenMax = process.env.TOKEN_MAX || 5 -config.searchUsername = process.env.SEARCH_USERNAME || 'admin' -config.searchPassword = process.env.SEARCH_PASSWORD || 'admin' -config.clientId = process.env.DBREPO_CLIENT_ID || 'dbrepo-client' -config.clientSecret = process.env.DBREPO_CLIENT_SECRET || 'MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG' -config.defaultPublisher = process.env.DEFAULT_PID_PUBLISHER || 'Example University' -config.doiUrl = process.env.DOI_URL || 'https://doi.org' -config.uploadPath = process.env.UPLOAD_PATH || '/tmp/' +config.title = process.env.TITLE || null +config.icon = process.env.ICON || null +config.brokerUsername = process.env.BROKER_USERNAME || null +config.brokerPassword = process.env.BROKER_PASSWORD || null +config.brokerLoginUrl = process.env.BROKER_LOGIN_URL || null +config.keycloakLoginUrl = process.env.KEYCLOAK_LOGIN_URL || null +config.sharedFilesystem = process.env.SHARED_FILESYSTEM || null +config.version = process.env.VERSION || null +config.logo = process.env.LOGO || null +config.tokenMax = process.env.TOKEN_MAX || null +config.searchUsername = process.env.SEARCH_USERNAME || null +config.searchPassword = process.env.SEARCH_PASSWORD || null +config.clientId = process.env.DBREPO_CLIENT_ID || null +config.clientSecret = process.env.DBREPO_CLIENT_SECRET || null +config.defaultPublisher = process.env.DEFAULT_PID_PUBLISHER || null +config.doiUrl = process.env.DOI_URL || null +config.uploadPath = process.env.UPLOAD_PATH || null module.exports = config diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 42b6886014..f8c56d4a3d 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -9,12 +9,8 @@ </div> <v-list-item class="mt-2"> <v-list-item-content> - <v-list-item-subtitle> - {{ version }} - </v-list-item-subtitle> - <v-list-item-title class="text-h6"> - Database Repository - </v-list-item-title> + <v-list-item-subtitle v-text="version" /> + <v-list-item-title class="text-h6" v-text="title" /> </v-list-item-content> </v-list-item> <v-list nav> @@ -182,6 +178,9 @@ export default { version () { return this.$config.version }, + title () { + return this.$config.title + }, canListOntologies () { if (!this.roles) { return false @@ -310,6 +309,8 @@ export default { this.$router.push({ path: '/search', query: { q: this.search } }) }, initEnvironment () { + this.$store.commit('SET_TITLE', this.$config.title) + this.$store.commit('SET_ICON', this.$config.icon) this.$store.commit('SET_CLIENT_ID', this.$config.clientId) this.$store.commit('SET_CLIENT_SECRET', this.$config.clientSecret) this.$store.commit('SET_BROKER_USERNAME', this.$config.brokerUsername) @@ -317,6 +318,7 @@ export default { this.$store.commit('SET_SEARCH_USERNAME', this.$config.searchUsername) this.$store.commit('SET_SEARCH_PASSWORD', this.$config.searchPassword) this.$store.commit('SET_UPLOAD_PATH', this.$config.uploadPath) + console.debug('runtime config', this.$config) } } } diff --git a/dbrepo-ui/nuxt.config.js b/dbrepo-ui/nuxt.config.js index 915fef8e63..16fe0e4cc2 100644 --- a/dbrepo-ui/nuxt.config.js +++ b/dbrepo-ui/nuxt.config.js @@ -1,6 +1,6 @@ import path from 'path' import colors from 'vuetify/es5/util/colors' -import { icon, clientSecret, title, logo, version, defaultPublisher, doiUrl, clientId, uploadPath, brokerUsername, brokerPassword, searchUsername, searchPassword } from './config' +import { icon, clientSecret, title, logo, version, defaultPublisher, doiUrl, clientId, uploadPath, brokerUsername, brokerPassword, searchUsername, searchPassword, brokerLoginUrl, keycloakLoginUrl } from './config' const proxy = {} @@ -98,6 +98,7 @@ export default { proxy, publicRuntimeConfig: { + title, version, logo, clientId, @@ -105,6 +106,8 @@ export default { defaultPublisher, brokerUsername, brokerPassword, + brokerLoginUrl, + keycloakLoginUrl, searchUsername, searchPassword, doiUrl, diff --git a/dbrepo-ui/pages/login.vue b/dbrepo-ui/pages/login.vue index 95c25af898..4ffb24e8e7 100644 --- a/dbrepo-ui/pages/login.vue +++ b/dbrepo-ui/pages/login.vue @@ -51,11 +51,19 @@ Login </v-btn> </v-card-actions> - <v-card-text class="text-right"> - <a href="/api/auth/">Admin Login</a> - </v-card-text> </v-card> </v-form> + <v-toolbar v-if="!token" flat> + <v-spacer /> + <v-toolbar-title> + <v-btn v-if="rabbitMqUrl" color="orange" plain :href="rabbitMqUrl"> + <v-icon left>mdi-rabbit</v-icon> RabbitMQ + </v-btn> + <v-btn v-if="keycloakUrl" color="secondary" plain :href="keycloakUrl"> + <v-icon left>mdi-key</v-icon> Keycloak + </v-btn> + </v-toolbar-title> + </v-toolbar> </div> </template> @@ -82,6 +90,12 @@ export default { }, user () { return this.$store.state.user + }, + keycloakUrl () { + return this.$config.keycloakLoginUrl + }, + rabbitMqUrl () { + return this.$config.brokerLoginUrl } }, mounted () { diff --git a/dbrepo-ui/static/favicon_alt.ico b/dbrepo-ui/static/favicon_alt.ico new file mode 100644 index 0000000000000000000000000000000000000000..f8f591a5acbf4973a3626032997b322386ed2217 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/dbrepo-ui/static/favicon_alt.png b/dbrepo-ui/static/favicon_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..32cfe969126f93df5632cbfb72a14845b840a3c7 GIT binary patch literal 1794 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 literal 0 HcmV?d00001 diff --git a/dbrepo-ui/store/index.js b/dbrepo-ui/store/index.js index 8fad6b2d54..7cfa08e424 100644 --- a/dbrepo-ui/store/index.js +++ b/dbrepo-ui/store/index.js @@ -11,6 +11,8 @@ Vue.use(Vuex) // https://github.com/hua1995116/webchat/blob/7c6544d3defd41cb7cf68306accea97800858bc3/client/src/store/index.js#L293 const store = new Store({ state: { + title: null, + icon: null, token: null, refreshToken: null, roles: [], @@ -30,6 +32,8 @@ const store = new Store({ uploadPath: null }, getters: { + getTitle: state => state.title, + getIcon: state => state.icon, getToken: state => state.token, getRefreshToken: state => state.refreshToken, getRoles: state => state.roles, @@ -49,6 +53,12 @@ const store = new Store({ getUploadPath: state => state.uploadPath }, mutations: { + SET_TITLE (state, title) { + state.title = title + }, + SET_ICON (state, icon) { + state.icon = icon + }, SET_TOKEN (state, token) { state.token = token }, diff --git a/install.sh b/install.sh new file mode 100644 index 0000000000..627a55974e --- /dev/null +++ b/install.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +if [ `whoami` -neq "root" ]; then + echo "This script needs sudo privileges!" + exit 1 +fi + +docker info > /dev/null +if [ $? -ne 0 ]; then + echo "Docker is not installed (or accessible in bash) on your system:" + echo "" + echo " - install docker from https://docs.docker.com/desktop/install/linux-install/" + echo " - make sure the docker executable is in \$PATH" + exit 2 +fi + +echo "Gathering environment ..." +curl -sSL -o .env https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/dev/.env.unix.example +curl -sSL -o docker-compose.yml https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/dev/docker-compose.prod.yml +curl -sSL -o dbrepo.conf https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/dbrepo.conf +curl -sSL -o setup-schema_local.sql https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/dev/dbrepo-metadata-db/setup-schema_local.sql + +echo "Pulling images ..." +docker compose pull + +MAX_MAP_COUNT=$(cat /proc/sys/vm/max_map_count) +if [ "$MAX_MAP_COUNT" -lt 262144 ]; then + echo "Preparing environment ..." + echo "vm.max_map_count=262144" >> /etc/sysctl.conf + sysctl -p +fi + +echo "Starting DBRepo ..." +docker compose up -d + +if [ $? -eq 0 ]; then + echo "Successfully started. You can now inspect the logs with:" + echo "" + echo "docker compose logs -f" +fi \ No newline at end of file -- GitLab