Gå til indholdet

Installation af HTML5 Gateway Docker

Import af Docker-imaget

Før du kan oprette en HTML5 Gateway Docker-container, skal du importere Docker-imaget. Åbn dertil en shell, hvor Docker-kommandoerne er tilgængelige for dig, sammen med filen cleanroom-html5-4.6.1-33-v2.tgz. Kør følgende kommando fra shellen, og tilpas stien til TGZ-filen, hvis den ikke ligger i den aktuelle mappe:

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

Kontroller derefter med følgende kommando, at importen lykkedes:

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

Den forventede udgang er som følger. Er det ikke tilfældet, er importen mislykket:

1
2
3
4
5
6
[
    {
        "Id": "sha256:16ae07f1604409f6b092a8a2944e69b3db458a04dbbab6ffc3f945c253c82cee",
        "RepoTags": [
            "cleanroom-html5:4.6.1-33-v2"
        ],
Fuldstændig udskrift
 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": ""
        }
    }
]

Konfiguration af containeren

Miljøvariabler

Variabler til udrulning ved pairing

Navn Obligatorisk Standardværdi Kommentar
ENV_MEDIATION JA Bruges til forbindelse via pairing.
Angiver DNS-navnet eller IP-adressen til forbindelse til webgrænsefladen på en CyberElements Bastion-platform.
ENV_TOKEN JA Bruges til forbindelse ved pairing.
Angivelse af det pairing-token, der skal bruges til forbindelsen til Mediation Controller.
ENV_NO_CHECK_CERT NEJ false Bruges til forbindelser via pairing.
Angiver, om kontrollen af Mediation Controllers webcertifikat skal slås fra eller ikke; nyttigt med CyberElements Bastion, når adgangen sker via IP-adresse, eller når webcertifikatet ikke er et certifikat, der anerkendes af de offentlige standardcertificeringsmyndigheder.
Accepterede værdier: true eller false.

Variabler til manuel udrulning

Navn Obligatorisk Standardværdi Kommentar
ENV_GW_CERT_NAME JA Bruges til forbindelse med manuel konfiguration.
Navn på certifikatfilen til forbindelsen til SSL Router.
ENV_GW_CERT_PASSWORD JA Bruges til forbindelse med manuel konfiguration.
Adgangskode til certifikatfilen til forbindelsen til SSL Router.
ENV_SSL_ROUTER_IP JA Bruges til forbindelse med manuel konfiguration.
IP-adresse eller DNS-navn på den SSL router, som HTML5 Gateway forbinder til.
ENV_SSL_ROUTER_PORT NEJ 443 Bruges til forbindelse med manuel konfiguration.
Port på den SSL router, som HTML5 Gateway forbinder til.

Diverse variabler

Navn Obligatorisk Standardværdi Kommentar
ENV_DISABLE_RSYSLOG NEJ false Deaktivering af tjenesten rsyslog.
Accepterede værdier: true eller false.

Volumes

Volume Kommentar
/etc/ipdiva/ Konfigurationsvolume til HTML5 Gateway.
Vi anbefaler at montere det på et navngivet volume eller på værtsmaskinens filsystem.
/opt/certificates/ Volume, der indeholder certifikatet eller certifikaterne til HTML5 Gateway ved konfiguration uden pairing.
/var/log/ Volume, der indeholder loggene fra HTML5 Gateway.

Porte

Port Kommentar
8080 Lytteport for HTML5-tjenesten.

Udrulning af HTML5 Gateway Docker

Udrulning med pairing

Forudsætninger

Før du udruller HTML5 Gateway Docker, skal du hente et pairing-token.

Den udrulning, der beskrives nedenfor, bruger alle tilgængelige volumes (undtagen /opt/certificates/, som ikke er til nytte i denne sammenhæng) og eksponerer alle porte.
Volumenerne monteres på værtsmaskinens filsystem på placeringen HTML5_GATEWAY_REP. Inde i denne placering findes følgende undermapper:

  • config
  • log

Du kan tilpasse variablerne i følgende kommandoer:

Tilpasset værdi Variabel Kommentar
DOCKER_NAME Navn på Docker-containeren.
HTML5_GATEWAY_REP Placering i filsystemet, hvor volumenerne skal monteres.
ENV_MEDIATION_VALUE Værdien af miljøvariablen ENV_MEDIATION.
ENV_TOKEN_VALUE Værdien af miljøvariablen ENV_TOKEN.
ENV_NO_CHECK_CERT_VALUE Værdien af miljøvariablen ENV_NO_CHECK_CERT.

Opret den mappestruktur i filsystemet, der er nødvendig for at montere volumes:

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

Og start til sidst 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

Containerens logfiler kan ses med følgende kommando:

1
docker logs -f DOCKER_NAME

Manuel udrulning

Forudsætninger

Før du udruller HTML5 Gateway Docker, skal du have det certifikat, der kræves til HTML5 Gateway.

Den udrulning, der beskrives nedenfor, bruger alle tilgængelige volumes og eksponerer alle porte.
Volumes monteres på værtsmaskinens filsystem på placeringen MANUAL_REP. Inde i denne placering findes følgende undermapper:

  • config
  • log
  • certificates

Du kan tilpasse variablerne i følgende kommandoer:

Tilpasset værdi Variabel Kommentar
MANUAL_NAME Navn på Docker-containeren.
MANUAL_REP Placering i filsystemet, hvor volumes skal monteres.
ENV_GW_CERT_NAME_VALUE Værdien af miljøvariablen ENV_GW_CERT_NAME.
ENV_GW_CERT_PASSWORD_VALUE Værdien af miljøvariablen ENV_GW_CERT_PASSWORD.
ENV_SSL_ROUTER_IP_VALUE Værdien af miljøvariablen ENV_SSL_ROUTER_IP.
ENV_SSL_ROUTER_PORT_VALUE Værdien af miljøvariablen ENV_SSL_ROUTER_PORT.

Opret den mappestruktur i filsystemet, der er nødvendig for at montere volumes:

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

Placer derefter certifikaterne til HTML5 Gateway og til optagelsestjenesten i MANUAL_REP/certificates.

Start til sidst 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

Containerens logfiler kan ses med følgende kommando:

1
docker logs -f MANUAL_NAME

Konfiguration af Mediation Controller

For at det nye HTML5 Gateway Docker kan være i drift, skal Mediation Controller-serveren stadig konfigureres via en SSH- eller konsoladgang med root-tilladelser.

Denne sidste indstilling er nødvendig for at give Mediation Controller mulighed for at kommunikere med HTML5-tjenesten.
Denne konfiguration varierer dog afhængigt af placeringen af HTML5 Gateway Docker:

Det samlede diagram ser ud som følger:

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

    subgraph LAN
        GW(Edge Gateway)
    end


    MED -.-> |Forbindelse 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 den forbindelse skal de nedenfor angivne oplysninger tilføjes til filen /etc/ipdiva/httpd/commonParameters.extra.conf, eller filen skal oprettes.
Indstillingerne kan tilpasses:

Tilpasset værdi Variabel Kommentar
HTML5_URL_DMZ URL, der blev konfigureret, da HTML5 Gateway blev erklæret i administrationskonsollen.
HTML5_IP_DMZ DNS-navn eller IP-adresse på den Docker-server, hvor HTML5 Gateway Docker er aktiv.
HTML5_PORT_DMZ Port, som Docker-serveren offentliggør til 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 samlede diagram ser ud som følger:

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

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


    MED -.- | Forbindelse til HTML5-tjenesten ; via TLS-tunnelen| GW -.-> |Forbindelse 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 den forbindelse skal de nedenfor angivne oplysninger tilføjes til filen /etc/ipdiva/httpd/commonParameters.extra.conf, eller filen skal oprettes.
Indstillingerne kan tilpasses:

Tilpasset værdi Variabel Kommentar
HTML5_URL_LAN URL, der blev konfigureret, da HTML5 Gateway blev erklæret i administrationskonsollen.
GW_NAME_LAN Navnet på den Edge Gateway, der bruges til at forbinde til HTML5-tjenesten. Tegnet med den lodrette streg i slutningen af linjen skal bevares.
ORGANIZATION_NAME_LAN Navnet på den organisation, som Edge Gateway forbinder til.
HTML5_IP_LAN DNS-navn eller IP-adresse på den Docker-server, hvor HTML5 Gateway Docker er aktiv.
HTML5_PORT_LAN Port, som Docker-serveren offentliggør til 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>

Tip

Denne konfiguration kan også bruges i følgende situation, hvor en Edge Gateway Docker og en HTML5 Gateway Docker kører i samme Docker-netværk:

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 -.- | Forbindelse til HTML5-tjenesten ; via TLS-tunnelen| GW -.-> |Forbindelse til HTML5-tjenesten ; TCP 8080 via Docker-netværket| HTML5
    HTML5 --> |TLS Tunnel| MED
    GW --> |TLS Tunnel| MED

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

I dette eksempel udruller vi en Edge Gateway og en HTML5 Gateway på samme Docker-server.

Den infrastruktur, der bruges i eksemplet, er som følger:

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

Først skal du på Docker-serveren oprette mappestrukturen til at montere Docker-volumenerne:

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

Opret derefter et Docker-netværk af typen bridge, så de to containere kan kommunikere med hinanden:

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

Start derefter Edge Gateway-containeren. Bemærk, at eksemplet opretter en forbindelse via pairing, med adgang til Mediation Controller via dens IP-adresse og uden certifikatkontrol. Desuden tilføjes parameteren --network for at angive brugen af det tidligere oprettede Docker-netværk:

 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 derefter HTML5 Gateway-containeren. Bemærk, at eksemplet opretter en forbindelse via pairing, med adgang til Mediation Controller via dens IP-adresse og uden certifikatkontrol. Desuden tilføjes parameteren --network for at angive brugen af det tidligere oprettede Docker-netværk, og da adgangen til HTML5-tjenesten går gennem Docker-netværket, er det ikke nødvendigt at offentliggøre 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

Endelig skal filen /etc/ipdiva/httpd/commonParameters.extra.conf på Mediation Controller-serveren eller -serverne konfigureres. Følgende afsnit skal tilføjes:

 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 anvender den nye konfiguration, skal du kontrollere, at den ikke medfører en blokerende fejl for webserveren Apache2.
Kør følgende kommando for at gøre det:

1
apache2ctl configtest

Hvis svaret er Syntax OK, kan ændringerne anvendes med kommandoen nedenfor. Ellers skal du kontrollere konfigurationen af din fil /etc/ipdiva/httpd/commonParameters.extra.conf.

1
systemctl reload apache2