Gå till innehållet

Installation av HTML5 Gateway Docker

Importera Docker-avbilden

Innan du kan skapa en HTML5 Gateway Docker-container måste du importera Docker-avbildningen. Öppna för detta en shell där du har tillgång till Docker-kommandona samt till filen cleanroom-html5-4.6.1-33-v2.tgz. Kör följande kommando från shellen och justera sökvägen till TGZ-filen om den inte finns i den aktuella katalogen:

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

Kontrollera därefter med följande kommando att importen lyckades:

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

Den förväntade utdatan är följande. Om så inte är fallet har importen misslyckats:

1
2
3
4
5
6
[
    {
        "Id": "sha256:16ae07f1604409f6b092a8a2944e69b3db458a04dbbab6ffc3f945c253c82cee",
        "RepoTags": [
            "cleanroom-html5:4.6.1-33-v2"
        ],
Fullständig utskrift
 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 av containern

Miljövariabler

Variabler för utrullning genom pairing

Namn Obligatorisk Standardvärde Kommentar
ENV_MEDIATION JA Används för anslutning genom pairing.
Anger DNS-namnet eller IP-adressen för anslutning till webbgränssnittet för en CyberElements Bastion-plattform.
ENV_TOKEN JA Används för anslutning genom pairing.
Anger den pairing-token som ska användas för anslutningen till Mediation Controller.
ENV_NO_CHECK_CERT NEJ false Används för anslutningar genom pairing.
Inaktiverar kontrollen av webbcertifikatet för Mediation Controller eller inte; användbart med CyberElements Bastion när åtkomsten sker via IP-adress eller när webbcertifikatet inte är ett certifikat som erkänns av de offentliga standardcertifikatutfärdarna.
Godtagna värden: true eller false.

Variabler för manuell utrullning

Namn Obligatorisk Standardvärde Kommentar
ENV_GW_CERT_NAME JA Används för anslutning med manuell konfiguration.
Namn på certifikatfilen för anslutningen till SSL Router.
ENV_GW_CERT_PASSWORD JA Används för anslutning med manuell konfiguration.
Lösenord för certifikatfilen för anslutningen till SSL Router.
ENV_SSL_ROUTER_IP JA Används för anslutning med manuell konfiguration.
IP-adress eller DNS-namn för den SSL router som HTML5 Gateway ansluter till.
ENV_SSL_ROUTER_PORT NEJ 443 Används för anslutning med manuell konfiguration.
Port för den SSL router som HTML5 Gateway ansluter till.

Övriga variabler

Namn Obligatorisk Standardvärde Kommentar
ENV_DISABLE_RSYSLOG NEJ false Inaktivering av tjänsten rsyslog.
Tillåtna värden: true eller false.

Volymer

Volym Kommentar
/etc/ipdiva/ Konfigurationsvolym för HTML5 Gateway.
Vi rekommenderar att den monteras på en namngiven volym eller på värdmaskinens filsystem.
/opt/certificates/ Volym som innehåller certifikatet eller certifikaten för HTML5 Gateway vid en konfiguration utan pairing.
/var/log/ Volym som innehåller loggarna för HTML5 Gateway.

Portar

Port Kommentar
8080 Lyssningsport för HTML5-tjänsten.

Utrullning av HTML5 Gateway Docker

Utrullning med pairing

Förutsättningar

Innan du rullar ut HTML5 Gateway Docker måste du hämta en pairing token.

Den utrullning som beskrivs nedan använder alla tillgängliga volymer (utom /opt/certificates/, som inte är till någon nytta i detta sammanhang) och exponerar alla portar.
Volymerna monteras på värdmaskinens filsystem på platsen HTML5_GATEWAY_REP. Inuti denna plats finns följande underkataloger:

  • config
  • log

Du kan anpassa variablerna i följande kommandon:

Anpassat värde Variabel Kommentar
DOCKER_NAME Namn på Docker-containern.
HTML5_GATEWAY_REP Plats i filsystemet där volymerna ska monteras.
ENV_MEDIATION_VALUE Värdet för miljövariabeln ENV_MEDIATION.
ENV_TOKEN_VALUE Värdet för miljövariabeln ENV_TOKEN.
ENV_NO_CHECK_CERT_VALUE Värdet för miljövariabeln ENV_NO_CHECK_CERT.

Skapa den katalogstruktur i filsystemet som krävs för att montera volymerna:

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

Och starta slutligen 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

Containerns loggar kan visas med följande kommando:

1
docker logs -f DOCKER_NAME

Manuell utrullning

Förutsättningar

Innan du rullar ut HTML5 Gateway Docker måste du ha det certifikat som krävs för HTML5 Gateway.

Den utrullning som beskrivs nedan använder alla tillgängliga volymer och exponerar alla portar.
Volymerna monteras på värdmaskinens filsystem på platsen MANUAL_REP. Inuti denna plats finns följande underkataloger:

  • config
  • log
  • certificates

Du kan anpassa variablerna i följande kommandon:

Anpassat värde Variabel Kommentar
MANUAL_NAME Namn på Docker-containern.
MANUAL_REP Plats i filsystemet där volymerna ska monteras.
ENV_GW_CERT_NAME_VALUE Värdet för miljövariabeln ENV_GW_CERT_NAME.
ENV_GW_CERT_PASSWORD_VALUE Värdet för miljövariabeln ENV_GW_CERT_PASSWORD.
ENV_SSL_ROUTER_IP_VALUE Värdet för miljövariabeln ENV_SSL_ROUTER_IP.
ENV_SSL_ROUTER_PORT_VALUE Värdet för miljövariabeln ENV_SSL_ROUTER_PORT.

Skapa den katalogstruktur i filsystemet som krävs för att montera volymerna:

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

Placera därefter certifikaten för HTML5 Gateway och för inspelningstjänsten i MANUAL_REP/certificates.

Starta slutligen 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

Containerns loggar kan visas med följande kommando:

1
docker logs -f MANUAL_NAME

Konfiguration av Mediation Controller

För att den nya HTML5 Gateway Docker ska vara i drift återstår det att konfigurera Mediation Controller-servern via SSH- eller konsolåtkomst med root-behörigheter.

Denna sista inställning krävs för att Mediation Controller ska kunna kommunicera med HTML5-tjänsten.
Denna konfiguration varierar dock beroende på var HTML5 Gateway Docker är placerad:

Det övergripande schemat ser ut så här:

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

    subgraph LAN
        GW(Edge Gateway)
    end


    MED -.-> |Anslutning till HTML5-tjänsten ; 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 detta sammanhang måste informationen nedan läggas till i filen /etc/ipdiva/httpd/commonParameters.extra.conf, eller så måste denna fil skapas.
Inställningarna kan anpassas:

Anpassat värde Variabel Kommentar
HTML5_URL_DMZ URL som konfigurerades när HTML5 Gateway deklarerades i administrationskonsolen.
HTML5_IP_DMZ DNS-namn eller IP-adress för den Docker-server där HTML5 Gateway Docker är aktiv.
HTML5_PORT_DMZ Port som Docker-servern publicerar för 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 övergripande schemat ser ut så här:

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

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


    MED -.- | Anslutning till HTML5-tjänsten ; via TLS-tunneln| GW -.-> |Anslutning till HTML5-tjänsten ; TCP 8080| HTML5
    HTML5 --> |TLS Tunnel| MED
    GW --> |TLS Tunnel| MED

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

I detta sammanhang måste informationen nedan läggas till i filen /etc/ipdiva/httpd/commonParameters.extra.conf, eller så måste denna fil skapas.
Inställningarna kan anpassas:

Anpassat värde Variabel Kommentar
HTML5_URL_LAN URL som konfigurerades när HTML5 Gateway deklarerades i administrationskonsolen.
GW_NAME_LAN Namnet på den Edge Gateway som används för att ansluta till HTML5-tjänsten. Lodstrecket i slutet av raden måste behållas.
ORGANIZATION_NAME_LAN Namnet på den organisation som Edge Gateway ansluter till.
HTML5_IP_LAN DNS-namn eller IP-adress för den Docker-server där HTML5 Gateway Docker är aktiv.
HTML5_PORT_LAN Port som Docker-servern publicerar för 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

Denna konfiguration kan också användas i följande situation, där en Edge Gateway Docker och en HTML5 Gateway Docker körs i samma Docker-nätverk:

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 -.- | Anslutning till HTML5-tjänsten ; via TLS-tunneln| GW -.-> |Anslutning till HTML5-tjänsten ; TCP 8080 via Docker-nätverket| HTML5
    HTML5 --> |TLS Tunnel| MED
    GW --> |TLS Tunnel| MED

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

I detta exempel rullar vi ut en Edge Gateway och en HTML5 Gateway på samma Docker-server.

Den infrastruktur som används i exemplet är följande:

  • Mediation Controller-server
    • Webb-IP-adress: 10.0.10.10
    • Namn på organisationen: my-organization-name
    • Token för Edge Gateway: YJ5N-JN05-N5LS-N26H-7JHA-HZ9R-BGJF-MAVH
    • Token för HTML5 Gateway: ATCW-OMVR-0RY4-LW1M-D9G9-H5VF-WPX5-YCXF
    • URL för åtkomst till HTML5-tjänsten: HTML5_DOCKER
  • Docker-server
    • Namn på Docker-nätverket: cyberelements-cleanroom-network
    • Edge Gateway
      • Namn: my-edge-gateway-docker
      • Rotplats i filsystemet: /opt/my-edge-gateway-docker
    • HTML5 Gateway
      • Namn: my-html5-gateway-docker
      • Rotplats i filsystemet: /opt/my-html5-gateway-docker

Först måste du på Docker-servern skapa den katalogstruktur som Docker-volymerna ska monteras i:

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

Skapa därefter ett Docker-nätverk av typen bridge så att de två containrarna kan kommunicera med varandra:

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

Starta sedan containern för Edge Gateway. Observera att exemplet upprättar en anslutning genom pairing, med åtkomst till Mediation Controller via dess IP-adress och utan att någon certifikatkontroll läggs till. Dessutom läggs parametern --network till för att ange att det tidigare skapade Docker-nätverket ska användas:

 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

Starta sedan containern för HTML5 Gateway. Observera att exemplet upprättar en anslutning genom pairing, med åtkomst till Mediation Controller via dess IP-adress och utan att någon certifikatkontroll läggs till. Dessutom läggs parametern --network till för att ange att det tidigare skapade Docker-nätverket ska användas, och eftersom åtkomsten till HTML5-tjänsten går via Docker-nätverket behöver port 8080 inte publiceras:

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

Till sist måste filen /etc/ipdiva/httpd/commonParameters.extra.conf på Mediation Controller-servern eller -servrarna konfigureras. Följande avsnitt ska läggas till:

 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>

Innan du tillämpar de nya inställningarna måste du kontrollera att den nya konfigurationen inte orsakar något blockerande fel för webbservern Apache2.
Kör följande kommando för att göra det:

1
apache2ctl configtest

Om svaret är Syntax OK kan ändringarna tillämpas med kommandot nedan. Kontrollera annars konfigurationen i din fil /etc/ipdiva/httpd/commonParameters.extra.conf.

1
systemctl reload apache2