Skip to content

Commit 5e28705

Browse files
authored
Merge pull request #313 from jembi/add-automatic-cert-generation
Add automatic cert generation for interoperability package
2 parents 7cfa3f1 + bf3d04c commit 5e28705

File tree

6 files changed

+108
-17
lines changed

6 files changed

+108
-17
lines changed

.env.traefik.remote

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# General
2+
3+
CLUSTERED_MODE=false
4+
5+
# Log
6+
7+
DEBUG=0
8+
BASHLOG_FILE=0
9+
BASHLOG_FILE_PATH=platform.log
10+
11+
# Data Mapper - Logstash
12+
13+
LOGSTASH_DEV_MOUNT=false
14+
LOGSTASH_PACKAGE_PATH=
15+
16+
# Dashboard Visualiser - JS Report
17+
18+
## !NOTE: MAKE SURE YOU HAVE RUN 'set-permissions.sh' SCRIPT BEFORE AND AFTER RUNNING JS REPORT
19+
JS_REPORT_DEV_MOUNT=false
20+
JS_REPORT_PACKAGE_PATH=
21+
22+
# Message Bus - Kafka
23+
24+
# !NOTE: Topics should comma seperated, optional include partion and repliction values
25+
# e.g. <topic>:<partions>:<replicationFactor> -> test:3:2 (defaults to <topics>:3:1)
26+
# KAFKA_TOPICS=2xx,reprocess,3xx,metrics:3:1
27+
KAFKA_TOPICS=2xx,2xx-async,reprocess,3xx,metrics:3:3,patient,observation
28+
29+
OPENHIM_CORE_MEDIATOR_HOSTNAME=c9a4-41-90-68-240.ngrok-free.app
30+
OPENHIM_MEDIATOR_API_PORT=443/openhimcomms
31+
32+
# Reverse Proxy - Nginx
33+
REVERSE_PROXY_INSTANCES=1
34+
DOMAIN_NAME=c9a4-41-90-68-240.ngrok-free.app
35+
SUBDOMAINS=openhimcomms.<domain>,openhimcore.<domain>,openhimconsole.<domain>,kibana.<domain>,reports.<domain>,santewww.<domain>,santempi.<domain>,superset.<domain>,keycloak.<domain>,grafana.<domain>,minio.<domain>,jempi-web.<domain>,jempi-api.<domain>
36+
STAGING=false
37+
INSECURE=false
38+
39+
# Identity Access Manager - Keycloak
40+
KC_FRONTEND_URL=https://keycloak.c9a4-41-90-68-240.ngrok-free.app
41+
KC_GRAFANA_ROOT_URL=https://grafana.<domain>
42+
KC_JEMPI_ROOT_URL=https://jempi-web.<domain>
43+
KC_SUPERSET_ROOT_URL=https://superset.<domain>
44+
KC_OPENHIM_ROOT_URL=https://c9a4-41-90-68-240.ngrok-free.app
45+
GF_SERVER_DOMAIN=grafana.<domain>
46+
47+
REACT_APP_JEMPI_BASE_API_HOST=https://jempi-api.<domain>
48+
REACT_APP_JEMPI_BASE_API_PORT=443
49+
OPENHIM_CONSOLE_BASE_URL=https://c9a4-41-90-68-240.ngrok-free.app
50+
OPENHIM_API_HOST=https://c9a4-41-90-68-240.ngrok-free.app/openhimcomms
51+
OPENHIM_API_PORT=443/openhimcomms
52+
OPENHIM_HOST_NAME=c9a4-41-90-68-240.ngrok-free.app
53+
CERT_RESOLVER=le

identity-access-manager-keycloak/docker-compose.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ services:
5151
- traefik.http.routers.identity-access-manager-keycloak.service=identity-access-manager-keycloak
5252
- traefik.http.services.identity-access-manager-keycloak.loadbalancer.server.port=8080
5353
- traefik.http.routers.identity-access-manager-keycloak.rule=Host(`${KC_TRAEFIK_SUBDOMAIN}.${DOMAIN_NAME_HOST_TRAEFIK}`)
54+
- traefik.http.routers.identity-access-manager-keycloak.tls=true
55+
- traefik.http.routers.identity-access-manager-keycloak.tls.certresolver=${CERT_RESOLVER}
5456
networks:
5557
reverse-proxy:
5658
public:

interoperability-layer-openhim/docker-compose.yml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,21 @@ services:
5050
- traefik.http.routers.openhimcomms.tls=true
5151
- traefik.http.routers.openhimcomms.entrypoints=websecure
5252
- traefik.http.routers.openhimcomms.rule=Host(`${DOMAIN_NAME_HOST_TRAEFIK}`) && PathPrefix(`/openhimcomms`)
53-
- traefik.http.routers.openhimcomms.middlewares=openhimcomms
54-
- traefik.http.middlewares.openhimcomms.stripprefix.prefixes=/openhimcomms
55-
53+
- traefik.http.middlewares.openhimcomms-stripprefix.stripprefix.prefixes=/openhimcomms
54+
- traefik.http.routers.openhimcomms.middlewares=openhimcomms-stripprefix
55+
- traefik.http.routers.openhimcomms.tls.certresolver=le
5656
- traefik.http.routers.openhimcore.service=openhimcore
5757
- traefik.http.services.openhimcore.loadbalancer.server.port=5000
5858
- traefik.http.services.openhimcore.loadbalancer.server.scheme=https
5959
- traefik.http.routers.openhimcore.tls=true
6060
- traefik.http.routers.openhimcore.entrypoints=websecure
6161
- traefik.http.routers.openhimcore.rule=Host(`${DOMAIN_NAME_HOST_TRAEFIK}`) && PathPrefix(`/openhimcore`)
62-
- traefik.http.routers.openhimcore.middlewares=openhimcore
63-
- traefik.http.middlewares.openhimcore.stripprefix.prefixes=/openhimcore
62+
- traefik.http.middlewares.openhimcore-stripprefix.stripprefix.prefixes=/openhimcore
63+
- traefik.http.routers.openhimcore.middlewares=openhimcore-stripprefix
64+
- traefik.http.routers.openhimcore.tls.certresolver=le
65+
66+
67+
6468

6569
openhim-console:
6670
image: ${OPENHIM_CONSOLE_IMAGE}
@@ -90,7 +94,8 @@ services:
9094
- traefik.http.services.openhim-console.loadbalancer.server.scheme=http
9195
- traefik.http.routers.openhim-console.service=openhim-console
9296
- traefik.http.routers.openhim-console.entrypoints=websecure
93-
- traefik.http.routers.openhim-console.rule=Host(`${OPENHIM_SUBDOMAIN}.${DOMAIN_NAME_HOST_TRAEFIK}`)
97+
- traefik.http.routers.openhim-console.tls=true
98+
- traefik.http.routers.openhim-console.rule=Host(`${DOMAIN_NAME}`)
9499
- traefik.http.services.openhim-console.loadbalancer.server.port=80
95100
placement:
96101
max_replicas_per_node: ${OPENHIM_CONSOLE_MAX_REPLICAS_PER_NODE}

interoperability-layer-openhim/package-metadata.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@
4343
"KC_OPENHIM_CLIENT_SECRET": "tZKfEbWf0Ka5HBNZwFrdSyQH2xT1sNMR",
4444
"KC_OPENHIM_ROOT_URL": "http://localhost:9000",
4545
"KC_API_URL": "http://identity-access-manager-keycloak:8080",
46-
"OPENHIM_SUBDOMAIN": "openhim",
47-
"OPENHIM_CONSOLE_BASE_URL": "localhost:9000",
46+
"OPENHIM_CONSOLE_BASE_URL": "https://localhost:9000",
4847
"OPENHIM_API_HOST": "localhost",
4948
"OPENHIM_API_PORT": "5001"
5049
}

reverse-proxy-traefik/docker-compose.yml

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,54 @@ services:
1919
- --api.insecure=${ENABLE_TRAEFIK_DASHBOARD}
2020
- --entrypoints.web.address=:80
2121
- --entryPoints.websecure.address=:443
22-
- --providers.docker.network=reverse-proxy-traefik_public
22+
#certificate resolver
23+
- --certificatesresolvers.le.acme.email=${ACME_EMAIL?Variable not set}
24+
- --certificatesresolvers.le.acme.storage=/certificates/acme.json
25+
- --certificatesresolvers.le.acme.tlschallenge=true
26+
- --certificatesresolvers.le.acme.caserver=${CA_SERVER}
27+
- --certificatesresolvers.le.acme.dnschallenge.delaybeforecheck=0
28+
2329
volumes:
2430
- /var/run/docker.sock:/var/run/docker.sock
31+
- traefik-public-certificates:/certificates
2532
deploy:
2633
replicas: 1
2734
labels:
28-
#TODO: Are these 2 lines necessary?
29-
- traefik.enable=true
30-
- traefik.http.services.reverse-proxy-traefik.loadbalancer.server.port=80
35+
- traefik.docker.lbswarm=true
36+
- traefik.http.routers.to-https.rule=HostRegexp(`{host:.+}`)
37+
- traefik.http.routers.to-https.entrypoints=http
38+
- traefik.http.routers.to-https.middlewares=to-https
39+
40+
- traefik.http.routers.traefik.rule=Host(`${DOMAIN_NAME}`) && PathPrefix(`/dashboard`)
41+
- traefik.http.routers.traefik.entrypoints=http
42+
- traefik.http.routers.traefik.middlewares=auth
43+
- traefik.http.routers.traefik.service=api@internal
44+
- traefik.http.routers.traefik.tls=true
45+
- traefik.http.routers.traefik.tls.certresolver=${CERT_RESOLVER}
46+
- traefik.http.services.openhim-console.loadbalancer.server.port=8080
47+
48+
- traefik.http.middlewares.to-https.redirectscheme.scheme=https
49+
- traefik.http.middlewares.auth.basicauth.users=${USERNAME}:${PASSWORD}
50+
3151
placement:
3252
max_replicas_per_node: 1
3353
constraints:
3454
- node.role == ${PLACEMENT_ROLE_CONSTRAINTS}
3555
resources:
3656
limits:
37-
cpus: "0.5"
38-
memory: 256M
57+
cpus: "1"
58+
memory: 1G
3959
reservations:
4060
cpus: "0.1"
4161
memory: 64M
4262

63+
volumes:
64+
# Create a volume to store the certificates, there is a constraint to make sure
65+
# Traefik is always deployed to the same Docker node with the same volume containing
66+
# the HTTPS certificates
67+
traefik-public-certificates:
68+
69+
4370
networks:
4471
traefik:
4572
name: reverse-proxy-traefik_public

reverse-proxy-traefik/package-metadata.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,13 @@
1313
"TK_MEMORY_LIMIT": "3G",
1414
"TK_MEMORY_RESERVE": "500M",
1515
"INSECURE_SKIP_VERIFY": "true",
16-
"ENABLE_TRAEFIK_DASHBOARD": "false",
17-
"PLACEMENT_ROLE_CONSTRAINTS": "leader",
18-
"ACME_EMAIL": ""
16+
"ENABLE_TRAEFIK_DASHBOARD": "true",
17+
"PLACEMENT_ROLE_CONSTRAINTS": "manager",
18+
"ACME_EMAIL": "",
19+
"USERNAME": "admin",
20+
"PASSWORD": "test",
21+
"DOMAIN": "platform.cloud.jembi",
22+
"CERT_RESOLVER": "le",
23+
"CA_SERVER": "https://acme-staging-v02.api.letsencrypt.org/directory"
1924
}
2025
}

0 commit comments

Comments
 (0)