Hibiscus Server mit Docker laufen - kleine Scripte - HOW TO

 
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 3
Dabei seit: 03 / 2021
Betreff:

Hibiscus Server mit Docker laufen - kleine Scripte - HOW TO

 · 
Gepostet: 12.12.2023 - 10:42 Uhr  ·  #1
Hallo,

für alle, die versuchen den Hibiscus Server mit einer MySQL DB im Docker Composer einzustellen, teile ich meine jetzige Konfiguration mit Euch.

Ich habe die Skripe auf meiner Synology laufen im internen Netz.

Dockerfile für den Bau des Servers, basiert auf diesem Repository: https://github.com/miracle2k/d…cus-server

Code
FROM ubuntu:20.04

RUN apt-get update && apt-get -y upgrade
RUN apt-get -y install default-jre
RUN apt-get -y install postgresql-client
RUN apt-get -y install mysql-server

RUN apt-get -y install wget unzip 
RUN wget http://www.willuhn.de/products/hibiscus-server/releases/hibiscus-server-2.10.15.zip
RUN unzip hibiscus-server-2.10.15.zip -d / && rm hibiscus-server-2.10.15.zip

ADD wrap.sh /wrap
RUN ["chmod", "+x", "/wrap"]
ENTRYPOINT ["/wrap"]

EXPOSE 8080


Die Image baue ich mit auf:
Code
docker build -t hibiscus_server --network=host .

(--network=host, weil mein Container im NAS sonst kein Internet bekommt und die apt-get nicht durchkommen.)

Die wrap.sh Datei sieht bei mir so aus:

Code
#!/bin/bash

set -e


cat > /etc/hosts <<EOF
127.0.0.1 hostname localhost #hier anpassen, wenn interner DNS einen hostname hat, der dem container nicht bekannt ist.
EOF


# See for instructions:
# http://www.willuhn.de/products/hibiscus-server/install.php

dbconfig=/hibiscus-server/cfg/de.willuhn.jameica.hbci.rmi.HBCIDBService.properties

case "$DB_DRIVER" in

# Be sure to escape a ':' in DB_ADDR
mysql)
    echo "Configuring MySQL db connection to $DB_ADDR"
    cat > $dbconfig <<EOF
database.driver=de.willuhn.jameica.hbci.server.DBSupportMySqlImpl
database.driver.mysql.jdbcurl=jdbc\:mysql\://${DB_ADDR/:/\\:}/${DB_NAME}?useUnicode\=Yes&characterEncoding\=ISO8859_1
database.driver.mysql.username=${DB_USERNAME}
database.driver.mysql.password=${DB_PASSWORD}
EOF
    ;;

postgres)
    echo "Configuring PostgreSQL db connection to $DB_ADDR"
    cat > $dbconfig <<EOF
database.driver=de.willuhn.jameica.hbci.server.DBSupportPostgreSQLImpl
database.driver.postgresql.jdbcurl=jdbc\:postgresql\://${DB_ADDR/:/\\:}/${DB_NAME}
database.driver.postgresql.username=${DB_USERNAME}
database.driver.postgresql.password=${DB_PASSWORD}
EOF
    ;;

*)
    echo "Configuring local embedded database"
    # We'll delete the mysql config for now to use the embedded db
    rm $dbconfig
    ;;

esac


# Write HTTP settings
ssl_val=false
if [ "$USE_SSL" != "" ]; then
    ssl_val=true
fi
cat > /hibiscus-server/cfg/de.willuhn.jameica.webadmin.Plugin.properties <<EOF
listener.http.address=0.0.0.0
listener.http.port=${PORT-8080}
listener.http.auth=true
listener.http.ssl=${ssl_val}
EOF


function initdb() {
    IFS=':' read -ra ADDR <<< "$DB_ADDR"
    DB_HOST=${ADDR[0]}
    DB_PORT=${ADDR[1]}

    case "$DB_DRIVER" in
        postgres)
            cmd="psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME  < /hibiscus-server/plugins/hibiscus/sql/postgresql-create.sql"
            echo $cmd
            eval PGPASSWORD=$DB_PASSWORD $cmd
            ;;

        mysql)
            cmd="mysql --user=$DB_USERNAME -p$DB_PASSWORD -h $DB_HOST hibiscus < /hibiscus-server/plugins/hibiscus/sql/mysql-create.sql"
            echo $cmd
            eval $cmd
            ;;
        *)
            echo "Don't know how to initialize database for driver $DB_DRIVER"
            ;;
    esac
}

if [ "$*" == "initdb" ]; then
        initdb
        exit
fi

# Write configuration file based on desired database driver
${@-/hibiscus-server/jameicaserver.sh -p $PASSWORD -f /srv/hibiscus}


Mein docker-compose.yaml sieht mit MySQL folgendermaßen aus:

Code
version: '3.1'

services:
  hibiscus-server:
    image: hibiscus_server
    #command: initdb # beim ersten Durchlauf mit MySQL muss einmal mit initdb die Datenbanktabellen angelegt werden.
    ports:
      - "8080:8080"
    environment:
      PASSWORD: foo
      DB_DRIVER: mysql
      DB_ADDR: db
      DB_NAME: hibiscus
      DB_USERNAME: hibiscus
      DB_PASSWORD: hibiscus
      USE_SSL: false
    depends_on: 
      - db
  db:
    container_name: hibiscus_db
    image: mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: hibiscus
      MYSQL_USER: hibiscus
      MYSQL_PASSWORD: hibiscus
    volumes:
      - db_data:/var/lib/mysql
    # optional:
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -u root -prootpass | grep 'mysqld is alive' || exit 1"]

volumes:
  db_data: 


Ich hoffe es hilft jmd in der Zukunft weiter. Wenn jmd fragen hat, bitte posten.
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 3
Dabei seit: 02 / 2024
Betreff:

Re: Hibiscus Server mit Docker laufen - kleine Scripte - HOW TO

 · 
Gepostet: 31.05.2024 - 14:55 Uhr  ·  #2
Hallo sinithparanga, hat mir sehr geholfen! Vielen Dank!
Neuling
Avatar
Geschlecht: keine Angabe
Beiträge: 1
Dabei seit: 11 / 2024
Betreff:

Re: Hibiscus Server mit Docker laufen - kleine Scripte - HOW TO

 · 
Gepostet: 11.11.2024 - 22:42 Uhr  ·  #3
Um den Bankzugang sowie die sensor-Daten persistent zu halten, einfach noch ein Volume für hibiscus-server anlegen und nach /srv/hibiscus mappen.

Die fertige docker-compose.yml sieht dann wie folgt aus:

Code

services:
  hibiscus-server:
    image: hibiscus_server
    #command: initdb # beim ersten Durchlauf mit MySQL muss einmal mit initdb die Datenbanktabellen angelegt werden.
    ports:
      - "8080:8080"
    environment:
      PASSWORD: foo
      DB_DRIVER: mysql
      DB_ADDR: db
      DB_NAME: hibiscus
      DB_USERNAME: hibiscus
      DB_PASSWORD: hibiscus
      USE_SSL: false
    volumes:
      - hibiscus_data:/srv/hibiscus
    depends_on: 
      - db
  db:
    container_name: hibiscus_db
    image: mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: hibiscus
      MYSQL_USER: hibiscus
      MYSQL_PASSWORD: hibiscus
    volumes:
      - db_data:/var/lib/mysql
    # optional:
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -u root -prootpass | grep 'mysqld is alive' || exit 1"]

volumes:
  db_data: 
  hibiscus_data:
Gewählte Zitate für Mehrfachzitierung:   0