Gå til innhold

Installere HTML5 Gateway Docker

Import av Docker-imaget

Før du kan opprette en HTML5 Gateway Docker-container, må du importere Docker-imaget. Start derfor et shell der Docker-kommandoene er tilgjengelige for deg, sammen med filen cleanroom-html5-4.6.1-33-v2.tgz. Kjør følgende kommando fra shellet, og tilpass banen til TGZ-filen hvis den ikke ligger i den gjeldende katalogen:

1
docker load --input cleanroom-html5-4.6.1-33-v2.tgz

Kontroller deretter at importen var vellykket med følgende kommando:

1
docker inspect --type=image cleanroom-html5:4.6.1-33-v2

Forventet utdata er som følger. Hvis det ikke er tilfellet, har importen mislyktes:

1
2
3
4
5
6
[
    {
        "Id": "sha256:16ae07f1604409f6b092a8a2944e69b3db458a04dbbab6ffc3f945c253c82cee",
        "RepoTags": [
            "cleanroom-html5:4.6.1-33-v2"
        ],
Fullstendig utdata
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
[
    {
        "Id": "sha256:16ae07f1604409f6b092a8a2944e69b3db458a04dbbab6ffc3f945c253c82cee",
        "RepoTags": [
            "cleanroom-html5:4.6.1-33-v2"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "buildkit.dockerfile.v0",
        "Created": "2025-08-27T11:35:33.014244258+02:00",
        "DockerVersion": "",
        "Author": "",
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 781097647,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/aa079416d669709486e3fd3dfefcff51acb3905ffcca7e6e428630d1a499e669/diff:/var/lib/docker/overlay2/da9f43ee88f5961a157af404be018fc7c3f5185a798b26911e38118d83830de7/diff:/var/lib/docker/overlay2/28efb3982392e95711e849cb90985fd534cd6273f4dec758463f98b41a432e93/diff:/var/lib/docker/overlay2/44a3abed0a932259b79c9e5e273749cc06bd8aca7d3adbfd1753a7b053dcae2f/diff:/var/lib/docker/overlay2/e3dfd4c7c4fe568ef731bd91314e69cc5c807ce717d5f4ea94f0d02cc11e70c5/diff:/var/lib/docker/overlay2/5acf2b56871d2537d95b9981c0498e16723a9eca20827f550366b48d8acf508f/diff:/var/lib/docker/overlay2/c732cd17c6501229b3a12c488d7f4c26f8634329211cac54ff1cf0d53055421f/diff:/var/lib/docker/overlay2/fd61cbda2a5e9a578c5a8eea67b63df3d31642588be3b6f2f7ebe6e10964f745/diff",
                "MergedDir": "/var/lib/docker/overlay2/b9c8170b6a9ed8e7c84a9ba208cd6e4b25e88d1dad42cd72b0e1178da62a46d4/merged",
                "UpperDir": "/var/lib/docker/overlay2/b9c8170b6a9ed8e7c84a9ba208cd6e4b25e88d1dad42cd72b0e1178da62a46d4/diff",
                "WorkDir": "/var/lib/docker/overlay2/b9c8170b6a9ed8e7c84a9ba208cd6e4b25e88d1dad42cd72b0e1178da62a46d4/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:4668f0f488e5ad4494fadff56ad585c514794b3a293e5e8d006410de9da08155",
                "sha256:782f6c5256575fbef0e518a1a1ce9188c457f1a0e9b88b733ed672f6e1be482d",
                "sha256:e09fd3e10e878ef6c812ccde0fa55b66cf4b9b593cf182c2760fec73649968c2",
                "sha256:e51c952c7bd89e0a3188c683d689eed81444d5513c14251f4b21cb9fd056d27d",
                "sha256:233ff67db52988898e3c1b4c2573b86c1c0c50d23f1f4b2365e3fc51abedbf9f",
                "sha256:f832eee42398852cab80a9a45138bf076d63ebbe153263fd8cf66857a0833d02",
                "sha256:f59f79d19c38ae4863b81774ad1d98030370c64e17013eb786da7b727bf2b41b",
                "sha256:0caeed550a29dbb274781e78bbe910fa5ccfdc90119cb4f9e3c815feff5a70b9",
                "sha256:21313651aa44ac0f5dd459a94be172b003b68f81b0db945c24a7ada5c21799e3"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        },
        "Config": {
            "Cmd": null,
            "Entrypoint": [
                "/entrypoint.sh"
            ],
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "DEBIAN_FRONTEND=noninteractive",
                "IMAGE_BUILD_DATE=20250827T112940",
                "IMAGE_BUILD_VERSION=4.6.1-33-v2",
                "IMAGE_IPDIPC=IPC-53702"
            ],
            "ExposedPorts": {
                "8080/tcp": {},
                "8090/tcp": {}
            },
            "Labels": {
                "maintainer": "contact@systancia.com",
                "org.label-schema.build-date": "20250827T112940",
                "org.label-schema.description": "Systancia Cleanroom Gateway",
                "org.label-schema.name": "Systancia Cleanroom 4.6.1-33-v2 HTML5 Server",
                "org.label-schema.url": "http://systancia.com/",
                "org.label-schema.vendor": "Systancia",
                "version": "4.6.1-33-v2"
            },
            "OnBuild": null,
            "User": "root",
            "Volumes": null,
            "WorkingDir": ""
        }
    }
]

Konfigurasjon av containeren

Miljøvariabler

Variabler for utrulling med pairing

Navn Obligatorisk Standardverdi Kommentar
ENV_MEDIATION JA Brukes for tilkobling med pairing.
Angir DNS-navnet eller IP-adressen for tilkobling til webgrensesnittet til en CyberElements Bastion-plattform.
ENV_TOKEN JA Brukes for tilkobling med pairing.
Angir pairing-tokenet som skal brukes for tilkobling til Mediation Controller.
ENV_NO_CHECK_CERT NEI false Brukes for tilkoblinger med pairing.
Deaktiverer kontrollen av web-sertifikatet til Mediation Controller eller ikke; nyttig med CyberElements Bastion når tilgangen skjer via IP-adresse, eller når web-sertifikatet ikke er et sertifikat som er anerkjent av de offentlige standardsertifiseringsinstansene.
Godtatte verdier: true eller false.

Variabler for manuell utrulling

Navn Obligatorisk Standardverdi Kommentar
ENV_GW_CERT_NAME JA Brukes for tilkobling med manuell konfigurasjon.
Navnet på sertifikatfilen for tilkobling til SSL Router.
ENV_GW_CERT_PASSWORD JA Brukes for tilkobling med manuell konfigurasjon.
Passordet til sertifikatfilen for tilkobling til SSL Router.
ENV_SSL_ROUTER_IP JA Brukes for tilkobling med manuell konfigurasjon.
IP-adresse eller DNS-navn til SSL Router som HTML5 Gateway skal koble til.
ENV_SSL_ROUTER_PORT NEI 443 Brukes for tilkobling med manuell konfigurasjon.
Port på SSL Router som HTML5 Gateway skal koble til.

Diverse variabler

Navn Obligatorisk Standardverdi Kommentar
ENV_DISABLE_RSYSLOG NEI false Deaktivering av tjenesten rsyslog.
Godtatte verdier: true eller false.

Volumer

Volum Kommentar
/etc/ipdiva/ Konfigurasjonsvolum for HTML5 Gateway.
Vi anbefaler å montere det på et navngitt volum eller på filsystemet til vertsmaskinen.
/opt/certificates/ Volum som inneholder sertifikatet eller sertifikatene til HTML5 Gateway ved konfigurasjon uten pairing.
/var/log/ Volum som inneholder loggene til HTML5 Gateway.

Porter

Port Kommentar
8080 Lytteport for HTML5-tjenesten.

Utrulling av HTML5 Gateway Docker

Utrulling med pairing

Forutsetninger

Før du ruller ut HTML5 Gateway Docker, må du hente et pairing-token.

Utrullingen som beskrives nedenfor, bruker alle tilgjengelige volumer (bortsett fra /opt/certificates/, som ikke er til nytte i denne sammenhengen) og eksponerer alle porter.
Volumene monteres på filsystemet til vertsmaskinen på plasseringen HTML5_GATEWAY_REP. Inne i denne plasseringen finnes følgende underkataloger:

  • config
  • log

Du kan tilpasse variablene for følgende kommandoer:

Tilpasset verdi Variabel Kommentar
DOCKER_NAME Navnet på Docker-containeren.
HTML5_GATEWAY_REP Plassering i filsystemet der volumene monteres.
ENV_MEDIATION_VALUE Verdien til miljøvariabelen ENV_MEDIATION.
ENV_TOKEN_VALUE Verdien til miljøvariabelen ENV_TOKEN.
ENV_NO_CHECK_CERT_VALUE Verdien til miljøvariabelen ENV_NO_CHECK_CERT.

Opprett katalogstrukturen som kreves for å montere volumene i filsystemet:

1
2
mkdir -p HTML5_GATEWAY_REP/config
mkdir HTML5_GATEWAY_REP/log

Og til slutt starter du en ny container:

1
2
3
4
5
6
7
8
docker run -d --restart unless-stopped --name "DOCKER_NAME" \
-e ENV_MEDIATION="ENV_MEDIATION_VALUE" \
-e ENV_TOKEN="ENV_TOKEN_VALUE" \
-e ENV_NO_CHECK_CERT="ENV_NO_CHECK_CERT_VALUE" \
-v "HTML5_GATEWAY_REP/config/:/etc/ipdiva/:rw" \
-v "HTML5_GATEWAY_REP/log/:/var/log/:rw" \
-p 8080:8080 \
cleanroom-html5:4.6.1-33-v2

Loggene til containeren kan vises med følgende kommando:

1
docker logs -f DOCKER_NAME

Manuell utrulling

Forutsetninger

Før du ruller ut HTML5 Gateway Docker, må du ha sertifikatet som HTML5 Gateway krever.

Utrullingen som beskrives nedenfor, bruker alle tilgjengelige volumer og eksponerer alle porter.
Volumene monteres i filsystemet til vertsmaskinen på plasseringen MANUAL_REP. Inne i denne plasseringen finnes følgende underkataloger:

  • config
  • log
  • certificates

Du kan tilpasse variablene for følgende kommandoer:

Tilpasset verdi Variabel Kommentar
MANUAL_NAME Navnet på Docker-containeren.
MANUAL_REP Plassering i filsystemet der volumene skal monteres.
ENV_GW_CERT_NAME_VALUE Verdien til miljøvariabelen ENV_GW_CERT_NAME.
ENV_GW_CERT_PASSWORD_VALUE Verdien til miljøvariabelen ENV_GW_CERT_PASSWORD.
ENV_SSL_ROUTER_IP_VALUE Verdien til miljøvariabelen ENV_SSL_ROUTER_IP.
ENV_SSL_ROUTER_PORT_VALUE Verdien til miljøvariabelen ENV_SSL_ROUTER_PORT.

Opprett katalogstrukturen som kreves for å montere volumene i filsystemet:

1
2
3
mkdir -p MANUAL_REP/config
mkdir MANUAL_REP/log
mkdir MANUAL_REP/certificates

Legg deretter sertifikatene til HTML5 Gateway og til opptakstjenesten i MANUAL_REP/certificates.

Start til slutt en ny container:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
docker run -d --restart unless-stopped --name "MANUAL_NAME" \
-e ENV_GW_CERT_NAME="ENV_GW_CERT_NAME_VALUE" \
-e ENV_GW_CERT_PASSWORD="ENV_GW_CERT_PASSWORD_VALUE" \
-e ENV_SSL_ROUTER_IP="ENV_SSL_ROUTER_IP_VALUE" \
-e ENV_SSL_ROUTER_PORT="ENV_SSL_ROUTER_PORT_VALUE" \
-v "MANUAL_REP/config/:/etc/ipdiva/:rw" \
-v "MANUAL_REP/log/:/var/log/:rw" \
-v "MANUAL_REP/certificates/:/opt/certificates/:ro" \
-p 8080:8080 \
cleanroom-html5:4.6.1-33-v2

Loggene til containeren kan vises med følgende kommando:

1
docker logs -f MANUAL_NAME

Konfigurasjon av Mediation Controller

For at den nye HTML5 Gateway Docker skal være i drift, må Mediation Controller-serveren fortsatt konfigureres via SSH- eller konsolltilgang med root-rettigheter.

Denne siste innstillingen kreves for at Mediation Controller skal kunne kommunisere med HTML5-tjenesten.
Denne konfigurasjonen varierer imidlertid avhengig av hvor HTML5 Gateway Docker er plassert:

Det overordnede diagrammet er som følger:

flowchart LR
    subgraph DMZ
        direction TB
        HTML5(HTML5 Gateway Docker)
        MED(Mediation Controller)
    end

    subgraph LAN
        GW(Edge Gateway)
    end


    MED -.-> |Tilkobling til HTML5-tjenesten ; TCP 8080| HTML5
    HTML5 --> |TLS Tunnel| MED
    MED ~~~ GW
    GW --> |TLS Tunnel| MED
    GW ~~~ MED

    linkStyle 0 stroke:#d22,color;
Hold "Ctrl" to enable pan & zoom

I denne sammenhengen må informasjonen nedenfor legges til i filen /etc/ipdiva/httpd/commonParameters.extra.conf, eller filen må opprettes.
Innstillingene kan tilpasses:

Tilpasset verdi Variabel Kommentar
HTML5_URL_DMZ URL som ble konfigurert da HTML5 Gateway ble deklarert i administrasjonskonsollet.
HTML5_IP_DMZ DNS-navn eller IP-adresse til Docker-serveren der HTML5 Gateway Docker er aktiv.
HTML5_PORT_DMZ Port som Docker-serveren publiserer for HTML5 Gateway Docker.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<Location /HTML5_URL_DMZ/>
    Order allow,deny
    Allow from all
    ProxyPass http://HTML5_IP_DMZ:HTML5_PORT_DMZ/systanciaHTML5-6.0/ flushpackets=on
    ProxyPassReverse http://HTML5_IP_DMZ:HTML5_PORT_DMZ
</Location>

<Location /HTML5_URL_DMZ/websocket-tunnel>
    Order allow,deny
    Allow from all
    ProxyPass ws://HTML5_IP_DMZ:HTML5_PORT_DMZ/systanciaHTML5-6.0/websocket-tunnel
    ProxyPassReverse ws://HTML5_IP_DMZ:HTML5_PORT_DMZ/systanciaHTML5-6.0/websocket-tunnel
</Location>

Det overordnede diagrammet er som følger:

flowchart LR
    subgraph DMZ
        direction TB
        MED(Mediation Controller)
    end

    subgraph LAN
        HTML5(HTML5 Gateway Docker)
        GW(Edge Gateway)
    end


    MED -.- | Tilkobling til HTML5-tjenesten ; via TLS-tunnelen| GW -.-> |Tilkobling til HTML5-tjenesten ; TCP 8080| HTML5
    HTML5 --> |TLS Tunnel| MED
    GW --> |TLS Tunnel| MED

    linkStyle 0,1 stroke:#d22,color;
Hold "Ctrl" to enable pan & zoom

I denne sammenhengen må informasjonen nedenfor legges til i filen /etc/ipdiva/httpd/commonParameters.extra.conf, eller filen må opprettes.
Innstillingene kan tilpasses:

Tilpasset verdi Variabel Kommentar
HTML5_URL_LAN URL som ble konfigurert da HTML5 Gateway ble deklarert i administrasjonskonsollet.
GW_NAME_LAN Navnet på Edge Gateway som brukes for å koble til HTML5-tjenesten. Den loddrette streken på slutten av linjen må beholdes.
ORGANIZATION_NAME_LAN Navnet på organisasjonen som Edge Gateway kobler seg til.
HTML5_IP_LAN DNS-navn eller IP-adresse til Docker-serveren der HTML5 Gateway Docker er aktiv.
HTML5_PORT_LAN Port som Docker-serveren publiserer for HTML5 Gateway Docker.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<Location /HTML5_URL_LAN/>
    Order allow,deny
    Allow from all
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-IPdiva-Gateway GW_NAME_LAN|
    RequestHeader set X-IPdiva-Orgname ORGANIZATION_NAME_LAN
    RequestHeader set X-IPdiva-Service HTML5_IP_LAN:HTML5_PORT_LAN

    ProxyPass http://127.0.0.1:9016/systanciaHTML5-6.0/ flushpackets=on
</Location>

<Location /HTML5_URL_LAN/websocket-tunnel>
    Order allow,deny
    Allow from all
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-IPdiva-Gateway GW_NAME_LAN|
    RequestHeader set X-IPdiva-Orgname ORGANIZATION_NAME_LAN
    RequestHeader set X-IPdiva-Service HTML5_IP_LAN:HTML5_PORT_LAN

    ProxyPass ws://127.0.0.1:9016/systanciaHTML5-6.0/websocket-tunnel
</Location>

Tips

Denne konfigurasjonen kan også brukes i den følgende situasjonen, der en Edge Gateway Docker og en HTML5 Gateway Docker kjører i samme Docker-nettverk:

flowchart LR
    subgraph DMZ
        direction TB
        MED(Mediation Controller)
    end

    subgraph LAN
        subgraph docker[Docker Server]
            HTML5([HTML5 Gateway Docker])
            GW([Edge Gateway])
        end
    end


    MED -.- | Tilkobling til HTML5-tjenesten ; via TLS-tunnelen| GW -.-> |Tilkobling til HTML5-tjenesten ; TCP 8080 via Docker-nettverket| HTML5
    HTML5 --> |TLS Tunnel| MED
    GW --> |TLS Tunnel| MED

    linkStyle 0,1 stroke:#d22,color;
Hold "Ctrl" to enable pan & zoom
Eksempel

I dette eksempelet ruller vi ut en Edge Gateway og en HTML5 Gateway på samme Docker-server.

Infrastrukturen som brukes i eksempelet, er som følger:

  • Mediation Controller-server
    • Web-IP-adresse: 10.0.10.10
    • Navn på organisasjonen: my-organization-name
    • Token for Edge Gateway: YJ5N-JN05-N5LS-N26H-7JHA-HZ9R-BGJF-MAVH
    • Token for HTML5 Gateway: ATCW-OMVR-0RY4-LW1M-D9G9-H5VF-WPX5-YCXF
    • URL for tilgang til HTML5-tjenesten: HTML5_DOCKER
  • Docker-server
    • Navn på Docker-nettverk: cyberelements-cleanroom-network
    • Edge Gateway
      • Navn: my-edge-gateway-docker
      • Rotplassering i filsystemet: /opt/my-edge-gateway-docker
    • HTML5 Gateway
      • Navn: my-html5-gateway-docker
      • Rotplassering i filsystemet: /opt/my-html5-gateway-docker

Først må du opprette katalogstrukturen for å montere Docker-volumene på Docker-serveren:

1
2
3
4
5
6
mkdir -p /opt/my-edge-gateway-docker/config
mkdir /opt/my-edge-gateway-docker/graphical_archives
mkdir /opt/my-edge-gateway-docker/ssh_archives
mkdir /opt/my-edge-gateway-docker/log
mkdir -p /opt/my-html5-gateway-docker/config
mkdir /opt/my-html5-gateway-docker/log

Opprett deretter et Docker-nettverk av typen bridge, slik at de to containerne kan kommunisere med hverandre:

1
docker network create -d bridge cyberelements-cleanroom-network

Start deretter containeren til Edge Gateway. Merk at eksempelet oppretter en tilkobling med pairing, med tilgang til Mediation Controller via IP-adressen og uten at det legges til noen sertifikatkontroll. I tillegg legges parameteren --network til for å angi at det tidligere opprettede Docker-nettverket skal brukes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
docker run -d --restart unless-stopped --name "my-edge-gateway-docker" \
-e ENV_MEDIATION="10.0.10.10" \
-e ENV_TOKEN="YJ5N-JN05-N5LS-N26H-7JHA-HZ9R-BGJF-MAVH" \
-e ENV_NO_CHECK_CERT="true" \
-v "/opt/my-edge-gateway-docker/config/:/etc/ipdiva/:rw" \
-v "/opt/my-edge-gateway-docker/graphical_archives/:/var/lib/ipdiva/carerecord/archives/:rw" \
-v "/opt/my-edge-gateway-docker/ssh_archives/:/var/ipdiva/care/sshrecord/:rw" \
-v "/opt/my-edge-gateway-docker/log/:/var/log/:rw" \
-p 2222:2222 \
-p 3389:3389 \
-p 8443:8443 \
--network="cyberelements-cleanroom-network" \
cleanroom-gateway:4.6.1-33-v2

Start deretter containeren til HTML5 Gateway. Merk at eksempelet oppretter en tilkobling med pairing, med tilgang til Mediation Controller via IP-adressen og uten at det legges til noen sertifikatkontroll. I tillegg legges parameteren --network til for å angi at det tidligere opprettede Docker-nettverket skal brukes, og siden tilgangen til HTML5-tjenesten går gjennom Docker-nettverket, er det ikke nødvendig å publisere port 8080:

1
2
3
4
5
6
7
8
docker run -d --restart unless-stopped --name "my-html5-gateway-docker" \
-e ENV_MEDIATION="10.0.10.10" \
-e ENV_TOKEN="ATCW-OMVR-0RY4-LW1M-D9G9-H5VF-WPX5-YCXF" \
-e ENV_NO_CHECK_CERT="true" \
-v "/opt/my-html5-gateway-docker/config/:/etc/ipdiva/:rw" \
-v "/opt/my-html5-gateway-docker/log/:/var/log/:rw" \
--network="cyberelements-cleanroom-network" \
cleanroom-html5:4.6.1-33-v2

Til slutt må filen /etc/ipdiva/httpd/commonParameters.extra.conf på Mediation Controller-serveren eller -serverne konfigureres. Følgende del skal legges til:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<Location /HTML5_DOCKER/>
    Order allow,deny
    Allow from all
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-IPdiva-Gateway my-edge-gateway-docker|
    RequestHeader set X-IPdiva-Orgname my-organization-name
    RequestHeader set X-IPdiva-Service my-html5-gateway-docker:8080

    ProxyPass http://127.0.0.1:9016/systanciaHTML5-6.0/ flushpackets=on
</Location>

<Location /HTML5_DOCKER/websocket-tunnel>
    Order allow,deny
    Allow from all
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-IPdiva-Gateway my-edge-gateway-docker|
    RequestHeader set X-IPdiva-Orgname my-organization-name
    RequestHeader set X-IPdiva-Service my-html5-gateway-docker:8080

    ProxyPass ws://127.0.0.1:9016/systanciaHTML5-6.0/websocket-tunnel
</Location>

Før du tar i bruk de nye innstillingene, må du kontrollere at den nye konfigurasjonen ikke gir blokkerende feil for webserveren Apache2.
Kjør følgende kommando for å gjøre det:

1
apache2ctl configtest

Hvis svaret er Syntax OK, kan endringene tas i bruk med kommandoen nedenfor. Ellers må du kontrollere konfigurasjonen av filen /etc/ipdiva/httpd/commonParameters.extra.conf.

1
systemctl reload apache2