diff --git a/.github/workflows/build-docker-image.yml b/.github/workflows/build-docker-image.yml
index 49ac138..99b7f00 100644
--- a/.github/workflows/build-docker-image.yml
+++ b/.github/workflows/build-docker-image.yml
@@ -18,11 +18,8 @@ jobs:
packages: write
steps:
- - name: Deploy to BSC GitLab Maven Repository
- run: mvn deploy -s $GITHUB_WORKSPACE/settings.xml
- env:
- MAVEN_USERNAME: gitlab-bsc-maven
- MAVEN_PASSWORD: ${{ secrets.BSC_GITLAB_MAVEN_REPO }}
+ - name: Checkout
+ uses: actions/checkout@v3
- name: Log into the Container registry
uses: docker/login-action@v3
diff --git a/README.md b/README.md
index 6f6d8ba..d1ece0e 100644
--- a/README.md
+++ b/README.md
@@ -6,34 +6,51 @@ The implementation is developed and deployed on the [WildFly 30.0.0](http://wild
###### Beacon v2 Java implementation
The implementation uses [Beacon v2 Java beacon-framework](https://github.com/elixir-europe/java-beacon-v2.api) model classes.
-###### SQL Database
-The Beacon Network Aggregator uses [Jakarta Persistence 3.1](https://jakarta.ee/specifications/persistence/3.1/) for logging.
-The connection is defined in [persistence.xml](https://github.com/elixir-europe/beacon-network-backend/blob/master/src/main/resources/META-INF/persistence.xml).
-Although the Aggregator may be used with any SQL database, it is configured to be used with [PostgreSQL](https://www.postgresql.org/) database.
+## Installation
-###### Docker Image
-This repository is configured to automatically generate docker images on release tags ('vX.Y.Z').
-https://github.com/elixir-europe/beacon-network-backend/pkgs/container/beacon-network-backend
-The image is based on official WildFly image that is extended with PostgreSQL driver and predeployed Beacon Network application.
-There is also a [docker-compose.yaml](https://github.com/elixir-europe/beacon-network-backend/blob/master/docker/docker-compose.yaml) receipe which provides easy deployment.
+### Docker Image (recommended)
+This repository is configured to automatically generate [docker images](https://github.com/elixir-europe/beacon-network-backend/pkgs/container/beacon-network-backend) on release tags ('vX.Y.Z'). The image is based on official WildFly image that is extended with PostgreSQL driver and predeployed Beacon Network application.
-###### Apache Maven build system
+To have an easy deployment, go to the [docker folder](./docker) and run [docker compose](https://docs.docker.com/compose/):
+
+```
+docker-compose up -d
+```
+
+### Manual installation
+
+#### Apache Maven build system
The build process is based on [Apache Maven](https://maven.apache.org/).
Compiling:
```shell
->git clone https://github.com/elixir-europe/beacon-network-backend.git
->cd beacon-network-backend
->mvn install
+git clone https://github.com/elixir-europe/beacon-network-backend.git
+cd beacon-network-backend
+mvn install
```
-This must create `beacon-network-v2-x.x.x.war` (**W**eb application **AR**chive) application in the `/target` directory.
+This must create `beacon-network-v2-x.x.x.war` (**W**eb application **AR**chive) application in the `/target` directory. Alternatively, you can find this file in the Barcelona Supercomputing Center's [maven repository](https://inb.bsc.es/maven/es/bsc/inb/ga4gh/beacon-network-v2/0.0.9/beacon-network-v2-0.0.9.war).
+
+#### WilfFly server
+WildFly is a free opensource JEE server and may be easy downloaded from it's website: http://wildfly.org/.
+Nevertheless, the sever requires some configuration which in a case of docker image is done by the [Dcokerfile](https://github.com/elixir-europe/beacon-network-backend/blob/2d42fa703742de713c238a3c2e2e3e5bc6e2c4c7/docker/Dockerfile#L15) recipe.
+
+The implementation relies on JSON-B 3.0 [Eclipse YassonTM](https://github.com/eclipse-ee4j/yasson) implementation, but requires yet **unreleased 3.0.4** version [yasson-3.0.4-SNAPSHOT.jar](https://jakarta.oss.sonatype.org/content/repositories/snapshots/org/eclipse/yasson/3.0.4-SNAPSHOT/). Once WildFly is updated to the 3.0.4 version of YassonTM this step would be unneccessary.
+
+The Beacon Network logging is implemented using [Jakarta Persistence 3.1](https://jakarta.ee/specifications/persistence/3.1/) and relies on [PostgreSQL](https://www.postgresql.org/) database.
+The server must be pre-configured for the PostgreSQL and the PosgreSQL JDBC driver must be intalled into the WildFly (docker image recipe does this job).
-###### BSC Maven Repository
-In addition to the provided docker images, artifacts are stored on the Barcelona Supercomputing Center's maven repository:
-https://inb.bsc.es/maven/es/bsc/inb/ga4gh/beacon-network-v2/0.0.9/beacon-network-v2-0.0.9.war
+The deployment is as simple:
-###### Configuration
-There are three configuration files in the `/BEACON-INF` directory:
+```shell
+# Copy .war file to wildfly
+cp target/beacon-network-v2-x.x.x.war $WILDFLY_HOME/standalone/deployments/
+# Run the application server
+./$WILDFLY_HOME/bin/standalone.sh
+```
+
+## Configuration
+
+There are three default configuration files in the `/BEACON-INF` directory:
* `configuration.json` - standard beacon configuration file: [beaconConfigurationResponse.json](https://github.com/ga4gh-beacon/beacon-v2/blob/main/framework/json/responses/beaconConfigurationResponse.json)
* `beacon-info.json` - standard beacon information file: [beaconInfoResponse.json](https://github.com/ga4gh-beacon/beacon-v2/blob/main/framework/json/responses/beaconInfoResponse.json)
* `beacon-network.json` - Json Array of backed Beacons' endpoints
@@ -45,11 +62,26 @@ The example of the `beacon-network.json`:
"https://ega-archive.org/test-beacon-apis/cineca"
]
```
-Note that the **W**eb application **AR**chive (WAR) is just a usual ZIP file so one can edit these configurations manually without the need to rebuild the application.
+Note that the **W**eb application **AR**chive (WAR) is just a usual ZIP file so one can edit these configurations manually without the need to rebuild the application. The same with Docker, it is automatically updated with new beacons.
-It is also possible to define external directory for the `beacon-network.json` configuration.
+It is also possible to define external directory for the configuration.
```bash
export BEACON_NETWORK_CONFIG_DIR=/wildfly/BEACON-INF
```
-When the `BEACON_NETWORK_CONFIG_DIR` is set, the aggregator monitors the `$BEACON_NETWORK_CONFIG_DIR/beacon-network.json` to dynamically update the configuration.
+When the `BEACON_NETWORK_CONFIG_DIR` is set, the aggregator monitors the `$BEACON_NETWORK_CONFIG_DIR/beacon-network.json` to dynamically update the configuration.
+It also looks (but not actively monitoring) the `$BEACON_NETWORK_CONFIG_DIR/beacon-info.json` so deployers may change the beacon identifier and other metatada.
+
+### SQL Database
+
+The Beacon Network Aggregator uses [Jakarta Persistence 3.1](https://jakarta.ee/specifications/persistence/3.1/) for logging.
+The connection is defined in [persistence.xml](https://github.com/elixir-europe/beacon-network-backend/blob/master/src/main/resources/META-INF/persistence.xml).
+Although the Aggregator may be used with any SQL database, it is configured to be used with [PostgreSQL](https://www.postgresql.org/) database.
+
+The application provides simple SQL logging which level may be confirured via `BEACON_NETWORK_LOG_LEVEL` environment variable.
+The possible values are "**NONE**", "**METADATA**", "**REQUESTS**", "**RESPONSES**", "**ALL**"
+- "**NONE**" : No logging at all.
+- "**METADATA**" : Only backed beacons' metadata is logged (good for debugging).
+- "**REQUESTS**" : Beacon Network Request quieries are logged. It also logs response codes (but not the data).
+- "**RESPONSES**" : Logs all Requests with Responses as well as possible error messages.
+- "**ALL**" : Maximum logging level. Currently same as "**RESPONSES**"
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 3bf1ccc..061b207 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -17,6 +17,7 @@ COPY ./docker/wildfly/modules/yasson $JBOSS_HOME/modules/system/layers/base/org/
RUN /bin/sh -c 'echo -e "embed-server --std-out=echo\n \
/subsystem=undertow/server=default-server/ajp-listener=ajp:add(socket-binding=ajp, scheme=https, redirect-socket=https, enabled=true)\n \
+/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=proxy-address-forwarding, value=true)\n \
/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=org.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)\n \
/subsystem=datasources/data-source=BeaconNetwork:add(driver-name=postgresql,jndi-name=java:jboss/datasources/BeaconNetwork,connection-url=\${env.BEACON_NETWORK_DB_CONNECTION_URL},user-name=\${env.BEACON_NETWORK_DB_USERNAME},password=\${env.BEACON_NETWORK_DB_PASSWORD})\n \
stop-embedded-server" > $JBOSS_HOME/bin/wildfly-config.cli'