Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RELEASE #132

Merged
merged 12 commits into from
Apr 23, 2024
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ COPY --from=build-stage /app/build/ /usr/share/nginx/html
#COPY DEFAULT CERTS
COPY --from=build-stage /etc/ssl/private/ /etc/nginx/ssl/live/host

COPY conf/openimis.conf /conf/openimis.conf
COPY ./conf /conf
COPY script/entrypoint.sh /script/entrypoint.sh
RUN chmod a+x /script/entrypoint.sh
WORKDIR /script
Expand Down
38 changes: 11 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,19 @@
# openIMIS Frontend Reference Implementation : Windows Docker
# openIMIS frontend assembly

This repository holds the configuration files for the openIMIS Frontend Reference Implementation:
## running

- Legacy web application
- Modular front end
this repository builds:

Please look for the direction on the openIMIS Wiki: https://openimis.atlassian.net/wiki/spaces/OP/pages/963182705/MO1.1+Install+the+modular+openIMIS+using+Docker
- a docker image `ghcr.io/openimis/openimis-fe` that can be use in a docker compose
- a minified js application that can be served by any webserver (see release)

Note: the modular frontend is part of the release ZIP of the legacy webapp, if the modular frontend need to be changed then new modular frontend static files need to be placed in /inetroot/www/openIMIS/front
the build content is defined by the openimis.json file

Note 2: The docker file can be change to build first the frontend by uncommenting the "downloader" related lines.

This repo branches, tags,... are maintained by openIMIS official delivery team who use it to build the official openIMIS Docker images containing the official modules (versions) list.

In case of troubles, please consult/contact our service desk via our [ticketing site](https://openimis.atlassian.net/servicedesk/customer).

# openIMIS Frontend Reference Implementation : Linux

This repository holds the configuration files for the openIMIS Frontend Reference Implementation.
It serves 2 distinct use cases:

- developers who want to implement new modules or modify existing frontend modules of openIMIS
- distributors who want to assemble modules into a Docker image for delivery

Note: please, refer to [openIMIS Frontend localisation](i18n.md) to provide translations and bind user's language to a locale for data format (dates, numbers,...)

This repo branches, tags,... are maintained by openIMIS official delivery team who use it to build the official openIMIS Docker images containing the official modules (versions) list.

In case of troubles, please consult/contact our service desk via our [ticketing site](https://openimis.atlassian.net/servicedesk/customer).

[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
more information for:

- [docker Windows](/docs/WINDOWS_DOCKER.md)
- [docker Linux](/docs/LINUX_DOCKER.md)
- [reverse proxy toward other openIMIS services](/docs/reverse_proxy.md)

## Developers setup

Expand Down
21 changes: 21 additions & 0 deletions conf/locations/backend.loc
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

location /${REACT_APP_API_URL}/ {

proxy_pass http://${backend};
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-Host $server_name;
proxy_set_header X-Forwarded-Proto https;
}
location = /check_user/ {
internal;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://${backend}/${REACT_APP_API_URL}/core/users/current_user/;
}


3 changes: 3 additions & 0 deletions conf/locations/certbot.loc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
10 changes: 10 additions & 0 deletions conf/locations/frontend.loc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@


location / {
return 302 https://$host/${PUBLIC_URL}/;
}

location /${PUBLIC_URL} {
try_files $uri $uri/ /${PUBLIC_URL}/index.html;
#error_page 404 $scheme://$host/front/;
}
14 changes: 14 additions & 0 deletions conf/locations/lightning.loc
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

location /lightning/ {

rewrite /lightning/(.*) /$1 break;
proxy_pass http://${lightning};
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 https;
proxy_set_header X-Forwarded-Host $server_name;


}

13 changes: 13 additions & 0 deletions conf/locations/opensearch.loc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

location /opensearch/ {
auth_request /check_user/;
proxy_pass http://${opensearch};
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 https;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header Authorization "Basic ${OPENSEARCH_BASIC_TOKEN}";

}

14 changes: 14 additions & 0 deletions conf/locations/restapi.loc.bk
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@


location /${ROOT_MOBILEAPI}/ {

#this rewrite rule is required to remove "ROOT_MOBILEAPI" because implicite rule (/ at the end of the url) donc work with variable
rewrite /${ROOT_MOBILEAPI}/(.*) /$1 break;
proxy_pass http://${restapi};
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 https;
proxy_set_header X-Forwarded-Host $server_name;

}
56 changes: 13 additions & 43 deletions conf/openimis.conf
Original file line number Diff line number Diff line change
@@ -1,50 +1,20 @@

server {
resolver 127.0.0.11 valid=30s;
set $dockerbackend "backend:8000";
set $dockerrestapi "restapi:80";
resolver 127.0.0.11 valid=30s;

client_max_body_size ${DATA_UPLOAD_MAX_MEMORY_SIZE};
listen 443 ssl;
listen 80;
server_name ${NEW_OPENIMIS_HOST};

ssl_certificate /etc/letsencrypt/live/${NEW_OPENIMIS_HOST}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${NEW_OPENIMIS_HOST}/privkey.pem;
root /usr/share/nginx/html;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location /.well-known {
root /var/www/html;
}
client_max_body_size ${DATA_UPLOAD_MAX_MEMORY_SIZE};
listen 443 ssl;
listen 80;
server_name ${NEW_OPENIMIS_HOST};

location / {
return 302 https://$host/${PUBLIC_URL}/${REDIRECT_TAIL};
}
ssl_certificate /etc/letsencrypt/live/${NEW_OPENIMIS_HOST}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${NEW_OPENIMIS_HOST}/privkey.pem;
root /usr/share/nginx/html;

location /${PUBLIC_URL} {
try_files $uri $uri/ /${PUBLIC_URL}/index.html;
#error_page 404 $scheme://$host/front/;
}
location /.well-known {
root /var/www/html;
}
###INCLUDE_PLACEHOLDER###

location /${REACT_APP_API_URL}/ {
proxy_pass http://${dockerbackend};
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-Host $server_name;
proxy_set_header X-Forwarded-Proto https;
}

location /${ROOT_MOBILEAPI}/ {
#this rewrite rule is required to remove "ROOT_MOBILEAPI" because implicite rule (/ at the end of the url) donc work with variable
rewrite /${ROOT_MOBILEAPI}/(.*) /$1 break;
proxy_pass http://${dockerrestapi};
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 https;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
4 changes: 4 additions & 0 deletions conf/variables/var.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
set $backend "backend:8000";
set $opensearch "opensearch-dashboards:5601";
set $lightning "lightning:4000";
set $frontend "lightning:4000";
15 changes: 15 additions & 0 deletions docs/LINUX_DOCKER.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# openIMIS Frontend Reference Implementation : Linux

This repository holds the configuration files for the openIMIS Frontend Reference Implementation.
It serves 2 distinct use cases:

- developers who want to implement new modules or modify existing frontend modules of openIMIS
- distributors who want to assemble modules into a Docker image for delivery

Note: please, refer to [openIMIS Frontend localisation](i18n.md) to provide translations and bind user's language to a locale for data format (dates, numbers,...)

This repo branches, tags,... are maintained by openIMIS official delivery team who use it to build the official openIMIS Docker images containing the official modules (versions) list.

In case of troubles, please consult/contact our service desk via our [ticketing site](https://openimis.atlassian.net/servicedesk/customer).

[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
16 changes: 16 additions & 0 deletions docs/WINDOWS_DOCKER.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# openIMIS Frontend Reference Implementation : Windows Docker

This repository holds the configuration files for the openIMIS Frontend Reference Implementation:

- Legacy web application
- Modular front end

Please look for the direction on the openIMIS Wiki: https://openimis.atlassian.net/wiki/spaces/OP/pages/963182705/MO1.1+Install+the+modular+openIMIS+using+Docker

Note: the modular frontend is part of the release ZIP of the legacy webapp, if the modular frontend need to be changed then new modular frontend static files need to be placed in /inetroot/www/openIMIS/front

Note 2: The docker file can be change to build first the frontend by uncommenting the "downloader" related lines.

This repo branches, tags,... are maintained by openIMIS official delivery team who use it to build the official openIMIS Docker images containing the official modules (versions) list.

In case of troubles, please consult/contact our service desk via our [ticketing site](https://openimis.atlassian.net/servicedesk/customer).
16 changes: 16 additions & 0 deletions docs/reverse_proxy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# reverse proxy

openIMIS serves different service base on URI, the default are:

- /api/: backend
- /front/: frontend
- /lightning/: lightning
- /opensearch/: opensearch
- /restapi/: C# restAPI (discontinued)


to allow user to easily change the revers proxy the conf/locations folder contains a file per service,

changing the file extension or removing the file will remove the reverse proxy configuration

file update can be made, but one must be careful when using variable because at the container start, all ENV system variable will be substituted by their value (see entrypoints.sh to see how it is done)
1 change: 1 addition & 0 deletions openimis.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"modules": [
{
"name": "CoreModule",

"npm": "@openimis/fe-core@git+https://github.com/openimis/openimis-fe-core_js.git#release/24.04"
},
{
Expand Down
Loading