Dataverse Docker v5.11.1 – mailrelay, https, lang_ua, branding, users 

Установка

Скачиваем все необходимое:

# cd /home/user &&  git clone https://github.com/IQSS/dataverse-docker dataverse-docker-5.11.1

Скопируем docker-compose-ssl.yml из distros, так как при установке по README получал ошибку solr

# cp ./distros/docker-compose-ssl.yml ./

Редактируем переменные:

# cp .env_sample .env && vi .env
#COMPOSE_FILE=./distros/docker-compose-ssl.yml
COMPOSE_FILE=./docker-compose-ssl.yml
#MAINLANG=ua
# Domain configuration and init folder
hostname=www.dataverse.tst-amo.net.ua
traefikhost=www.dataverse.tst-amo.net.ua
INIT_SCRIPTS_FOLDER=/opt/payara/init.d

# traefik email settings
useremail=dataverseimp@imp.kiev.ua

# DOI parameters
# https://guides.dataverse.org/en/latest/installation/config.html#doi-baseurlstring
doi_authority=10.82100
doi_provider=DataCite
doi_shoulder=DVUA
doi_username=XXXXX
doi_password=XXXXXXXXXX
dataciterestapiurlstring=https\\:\/\/api.test.datacite.org
baseurlstring=https\:\/\/mds.test.datacite.org

# Mail relay
# https://guides.dataverse.org/en/latest/developers/troubleshooting.html
system_email=dataverseimp@imp.kiev.ua
mailhost=mail.imp.kiev.ua
mailuser=dataverseimp
no_reply_email=dataverseimp@imp.kiev.ua
smtp_password=XXXXXXXXXX
smtp_port=587
socket_port=587
starttls=true

Отредактировать 010-mailrelay-set.sh

# vi dataverse-5.11.1/dataverse-docker/init.d/010-mailrelay-set.sh
#!/bin/bash

# Setup mail relay
# https://guides.dataverse.org/en/latest/developers/troubleshooting.html
if [ "${system_email}" ]; then
   curl -X PUT -d ${system_email} http://localhost:8080/api/admin/settings/:SystemEmail
   asadmin --user=${ADMIN_USER} --passwordfile=${PASSWORD_FILE} delete-javamail-resource mail/notifyMailSession
   asadmin --user=${ADMIN_USER} --passwordfile=${PASSWORD_FILE} create-javamail-resource --mailhost ${mailhost} --mailuser ${mailuser} --fromaddress ${no_reply_email} --property mail.smtp.auth=true:mail.smtp.password=${smtp_password}:mail.smtp.port=${smtp_port}:mail.smtp.socketFactory.port=${socket_port}:mail.smtp.socketFactory.fallback=false:mail.smtp.starttls.enable=true mail/notifyMailSession
fi

Отредактировать 01-persistent-id.sh

# vi dataverse-5.11.1/dataverse-docker/init.d/01-persistent-id.sh
#!/bin/bash
echo "Setting up the settings" >> /tmp/status.log
echo "- Allow internal signup" >> /tmp/status.log
SERVER=http://${DATAVERSE_URL}/api
echo $SERVER
curl -X PUT -d yes "$SERVER/admin/settings/:AllowSignUp"
curl -X PUT -d /dataverseuser.xhtml?editMode=CREATE "$SERVER/admin/settings/:SignUpUrl"
curl -X PUT -d CV "$SERVER/admin/settings/:CV"
curl -X PUT -d burrito $SERVER/admin/settings/BuiltinUsers.KEY
curl -X PUT -d localhost-only $SERVER/admin/settings/:BlockedApiPolicy
curl -X PUT -d 'native/http' $SERVER/admin/settings/:UploadMethods
curl -X PUT -d solr:8983 "$SERVER/admin/settings/:SolrHostColonPort"
curl -X PUT -d 10.82100 "$SERVER/admin/settings/:Authority"
curl -X PUT -d doi "$SERVER/admin/settings/:Protocol"
curl -X PUT -d "</p><p>Supported by the National Academy of Sciences of Ukraine</p>" http://localhost:8080/api/admin/settings/:FooterCopyright
echo
# Demo server with FAKE DOIs if doi_authority is empty
#if [ -z "${doi_authority}" ]; then
# curl -X PUT -d doi "$SERVER/admin/settings/:Protocol"
# curl -X PUT -d 10.5072 "$SERVER/admin/settings/:Authority"
# curl -X PUT -d "FK2/" "$SERVER/admin/settings/:Shoulder"
# curl -X PUT -d FAKE "$SERVER/admin/settings/:DoiProvider"
#fi

Отредактировать 03-doi-set.sh

# vi dataverse-5.11.1/dataverse-docker/init.d/03-doi-set.sh
#!/bin/bash

# Setup DOI parameters
# https://guides.dataverse.org/en/latest/installation/config.html#doi-baseurlstring
if [ "${doi_authority}" ]; then
   curl -X PUT -d ${doi_authority} http://localhost:8080/api/admin/settings/:Authority
   curl -X PUT -d ${doi_provider} http://localhost:8080/api/admin/settings/:DoiProvider
   curl -X PUT -d "DVUA/" http://localhost:8080/api/admin/settings/:Shoulder

   asadmin --user=${ADMIN_USER} --passwordfile=${PASSWORD_FILE} create-jvm-options "-Ddoi.username\=${doi_username}"
   asadmin --user=${ADMIN_USER} --passwordfile=${PASSWORD_FILE} create-jvm-options "-Ddoi.password\=${doi_password}"
   asadmin --user=${ADMIN_USER} --passwordfile=${PASSWORD_FILE} create-jvm-options "-Ddoi.dataciterestapiurlstring\=${dataciterestapiurlstring}"
   asadmin --user=${ADMIN_USER} --passwordfile=${PASSWORD_FILE} create-jvm-options "-Ddoi.baseurlstring\=${baseurlstring}"
   #if [ "${doi_shoulder}" ]; then
   #   curl -X PUT -d "${doi_shoulder}/" "$SERVER/admin/settings/:Shoulder"
   #fi
fi

Также пароль от DataCite нужно добавить в:

dataverse-docker/secrets/doi/password
dataverse-docker/secrets/doi_asadmin

Для решения проблемы загрузки логотипов, пишем скрипты, и размещаем их в /init.d/

# cat /home/user/dataverse-docker-5.11.1/init.d/1003-logos.sh
#!/bin/bash
YES | cp -rf /opt/payara/docroot /opt/
# cat /home/user/dataverse-docker-5.11.1/init.d/1005-apt_inst_cron.sh
#!/bin/bash
apt install cron
service cron start
/bin/chmod +x /opt/payara/init.d/1003-logos.sh
/bin/chmod +x /opt/payara/init.d/1006-crontab.sh
# cat /home/user/dataverse-docker-5.11.1/init.d/1006-crontab.sh
#!/bin/bash
crontab -l ; echo "*/1 * * * * /opt/payara/init.d/1003-logos.sh"| crontab -

Пишем скрипт или вводим поочередно команды:

# export traefikhost=www.tst-amo.net.ua
# docker network create traefik
# export useremail=dataverseteam@imp.kiev.ua
# docker-compose up

По умолчанию user/password: dataverseAdmin/admin.

Добавляем Украинскую локализацию

Тестовый режим.

# vi /home/user/dataverse-docker-5.11.1/docroot/01-lang_ua.sh
#!/bin/bash

apt-get update
apt-get install zip
wget https://github.com/GlobalDataverseCommunityConsortium/dataverse-language-packs/archive/refs/heads/develop.zip -O /tmp/languages.zip

cd /tmp
   unzip -d dataverse-language-packs languages.zip
   mkdir /tmp/languages
   for locale in dataverse-language-packs/*; do
       for distrib in $locale;
        do
          for lang in $distrib/*; do
             cp "$lang"/Bu*.properties /tmp/languages
          done
       done
    done

cd /tmp/languages
   #rm ./Bundle_ua.properties
   rm ./Bundle_hu.properties
   cp ./Bundle_ua.properties /tmp/
   #cp ./Bundle_hu.properties /tmp/
   /opt/payara/triggers/lang-properties-convert.py /tmp/Bundle_ua.properties > ./Bundle_ua.properties
   #/opt/payara/triggers/lang-properties-convert.py /tmp/Bundle_hu.properties > ./Bundle_hu.properties
   zip languages.zip *.properties
   mkdir /opt/payara/langproperties

curl http://localhost:8080/api/admin/datasetfield/loadpropertyfiles -X POST --upload-file /tmp/languages/languages.zip -H "Content-Type: application/zip"
sleep 1
# Enable language and cache settings
curl http://localhost:8080/api/admin/settings/:Languages -X PUT -d '[{"locale":"en","title":"English"},{"locale":"ua","title":"Українська"}]'
asadmin --user=${ADMIN_USER} --passwordfile=${PASSWORD_FILE} create-jvm-options '-Ddataverse.lang.directory=/opt/payara/langproperties'

Пользователи

Список пользователей можно посмотреть через Dashboard (появился в версии 5.11), а также можно вывести через API

curl -H "X-Dataverse-key: $API_TOKEN" http://localhost:8080/api/admin/authenticatedUsers

или, если пользователей много

curl -H "X-Dataverse-key: $API_TOKEN" http://localhost:8080/api/admin/list-users

где $API_TOKEN – токен Администратора.