Μετάβαση στο περιεχόμενο

Εγκατάσταση του στοιχείου HTML5 Gateway Docker

Εισαγωγή της εικόνας Docker

Για να μπορέσετε να δημιουργήσετε ένα κοντέινερ HTML5 Gateway Docker, πρέπει να εισαγάγετε την εικόνα Docker. Για να το κάνετε αυτό, ανοίξτε ένα κέλυφος (shell) από το οποίο έχετε στη διάθεσή σας τις εντολές Docker, καθώς και το αρχείο cleanroom-html5-4.6.1-33-v2.tgz. Από το κέλυφος, εκτελέστε την ακόλουθη εντολή, προσαρμόζοντας τη διαδρομή του αρχείου TGZ εάν δεν βρίσκεται στον τρέχοντα κατάλογο:

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

Στη συνέχεια, ελέγξτε ότι η εισαγωγή ήταν επιτυχής με την ακόλουθη εντολή:

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

Η αναμενόμενη έξοδος είναι η ακόλουθη. Εάν δεν συμβαίνει αυτό, η εισαγωγή απέτυχε:

1
2
3
4
5
6
[
    {
        "Id": "sha256:16ae07f1604409f6b092a8a2944e69b3db458a04dbbab6ffc3f945c253c82cee",
        "RepoTags": [
            "cleanroom-html5:4.6.1-33-v2"
        ],
Πλήρης έξοδος
 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": ""
        }
    }
]

Διαμόρφωση του κοντέινερ

Μεταβλητές περιβάλλοντος

Μεταβλητές για ανάπτυξη μέσω σύζευξης

Όνομα Υποχρεωτικό Προεπιλεγμένη τιμή Σχόλιο
ENV_MEDIATION ΝΑΙ Χρησιμοποιείται για τη σύνδεση μέσω σύζευξης.
Υποδεικνύει το όνομα DNS ή τη διεύθυνση IP για τη σύνδεση στο περιβάλλον web μιας πλατφόρμας CyberElements Bastion.
ENV_TOKEN ΝΑΙ Χρησιμοποιείται για τη σύνδεση μέσω σύζευξης.
Υποδεικνύει το διακριτικό σύζευξης που θα χρησιμοποιηθεί για τη σύνδεση με την υπηρεσία Mediation Controller.
ENV_NO_CHECK_CERT ΟΧΙ false Χρησιμοποιείται για τις συνδέσεις μέσω σύζευξης.
Καθορίζει αν θα απενεργοποιηθεί ή όχι ο έλεγχος του πιστοποιητικού web του στοιχείου Mediation Controller· χρήσιμο με το CyberElements Bastion κατά την πρόσβαση μέσω διεύθυνσης IP ή όταν το πιστοποιητικό web δεν είναι πιστοποιητικό αναγνωρισμένο από τις προεπιλεγμένες δημόσιες αρχές έκδοσης πιστοποιητικών.
Αποδεκτές τιμές: true ή false.

Μεταβλητές για χειροκίνητη ανάπτυξη

Όνομα Υποχρεωτικό Προεπιλεγμένη τιμή Σχόλιο
ENV_GW_CERT_NAME ΝΑΙ Χρησιμοποιείται για τη σύνδεση με χειροκίνητη διαμόρφωση.
Όνομα του αρχείου πιστοποιητικού για τη σύνδεση με το στοιχείο SSL Router.
ENV_GW_CERT_PASSWORD ΝΑΙ Χρησιμοποιείται για τη σύνδεση με χειροκίνητη διαμόρφωση.
Κωδικός πρόσβασης του αρχείου πιστοποιητικού για τη σύνδεση με το στοιχείο SSL Router.
ENV_SSL_ROUTER_IP ΝΑΙ Χρησιμοποιείται για τη σύνδεση με μη αυτόματη διαμόρφωση.
Διεύθυνση IP ή όνομα DNS του δρομολογητή SSL στον οποίο θα συνδεθεί το στοιχείο HTML5 Gateway.
ENV_SSL_ROUTER_PORT ΟΧΙ 443 Χρησιμοποιείται για τη σύνδεση με μη αυτόματη διαμόρφωση.
Θύρα του δρομολογητή SSL στον οποίο θα συνδεθεί το στοιχείο HTML5 Gateway.

Διάφορες μεταβλητές

Όνομα Υποχρεωτικό Προεπιλεγμένη τιμή Σχόλιο
ENV_DISABLE_RSYSLOG ΟΧΙ false Απενεργοποίηση της υπηρεσίας rsyslog.
Αποδεκτές τιμές: true ή false.

Τόμοι

Τόμος Σχόλιο
/etc/ipdiva/ Τόμος διαμόρφωσης του στοιχείου HTML5 Gateway.
Συνιστάται η προσάρτησή του σε επώνυμο τόμο ή στο σύστημα αρχείων του κεντρικού υπολογιστή.
/opt/certificates/ Τόμος που περιέχει το πιστοποιητικό ή τα πιστοποιητικά του στοιχείου HTML5 Gateway κατά τη διαμόρφωση χωρίς σύζευξη.
/var/log/ Τόμος που περιέχει τα αρχεία καταγραφής του στοιχείου HTML5 Gateway.

Θύρες

Θύρα Σχόλιο
8080 Θύρα ακρόασης της υπηρεσίας HTML5.

Ανάπτυξη του στοιχείου HTML5 Gateway Docker

Ανάπτυξη με σύζευξη

Προαπαιτούμενα

Πριν από την ανάπτυξη του στοιχείου HTML5 Gateway Docker, πρέπει να λάβετε ένα διακριτικό σύζευξης.

Η ανάπτυξη που περιγράφεται παρακάτω θα χρησιμοποιεί όλους τους διαθέσιμους τόμους (εκτός από τον /opt/certificates/, ο οποίος δεν είναι χρήσιμος σε αυτή την περίπτωση) και θα εκθέτει όλες τις θύρες.
Οι τόμοι θα προσαρτηθούν στο σύστημα αρχείων του κεντρικού υπολογιστή στη θέση HTML5_GATEWAY_REP. Μέσα σε αυτή τη θέση βρίσκονται οι ακόλουθοι υποκατάλογοι:

  • config
  • log

Μπορείτε να προσαρμόσετε τις μεταβλητές για τις ακόλουθες εντολές:

Προσαρμοσμένη τιμή Μεταβλητή Σχόλιο
DOCKER_NAME Όνομα του κοντέινερ Docker.
HTML5_GATEWAY_REP Θέση στο σύστημα αρχείων όπου θα προσαρτηθούν οι τόμοι.
ENV_MEDIATION_VALUE Τιμή της μεταβλητής περιβάλλοντος ENV_MEDIATION.
ENV_TOKEN_VALUE Τιμή της μεταβλητής περιβάλλοντος ENV_TOKEN.
ENV_NO_CHECK_CERT_VALUE Τιμή της μεταβλητής περιβάλλοντος ENV_NO_CHECK_CERT.

Δημιουργήστε το δέντρο καταλόγων που απαιτείται για την προσάρτηση των τόμων στο σύστημα αρχείων:

1
2
mkdir -p HTML5_GATEWAY_REP/config
mkdir HTML5_GATEWAY_REP/log
1
New-Item -ItemType Directory -Force -Path "HTML5_GATEWAY_REP\config", "HTML5_GATEWAY_REP\log"

Και, τέλος, εκκινήστε ένα νέο κοντέινερ:

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

Τα αρχεία καταγραφής του κοντέινερ μπορούν να προβληθούν με την ακόλουθη εντολή:

1
docker logs -f DOCKER_NAME

Μη αυτόματη ανάπτυξη

Προαπαιτούμενα

Πριν από την ανάπτυξη του στοιχείου HTML5 Gateway Docker, πρέπει να διαθέτετε το πιστοποιητικό που απαιτείται για το στοιχείο HTML5 Gateway.

Κωδικοί πρόσβασης ορατοί με το docker inspect

Οι μεταβλητές περιβάλλοντος ενός κοντέινερ, συμπεριλαμβανομένων των κωδικών πρόσβασης των πιστοποιητικών, παραμένουν αναγνώσιμες από οποιονδήποτε μπορεί να εκτελέσει το docker inspect στον διακομιστή Docker. Επομένως, θα πρέπει να προτιμάται η ανάπτυξη με σύζευξη, η οποία δεν χρησιμοποιεί κωδικό πρόσβασης πιστοποιητικού.

Η ανάπτυξη που περιγράφεται παρακάτω θα χρησιμοποιήσει όλους τους διαθέσιμους τόμους και θα καταστήσει διαθέσιμες όλες τις θύρες.
Οι τόμοι θα προσαρτηθούν στο σύστημα αρχείων του κεντρικού υπολογιστή, στη θέση MANUAL_REP. Μέσα σε αυτή τη θέση βρίσκονται οι ακόλουθοι υποφάκελοι:

  • config
  • log
  • certificates

Μπορείτε να προσαρμόσετε τις μεταβλητές για τις ακόλουθες εντολές:

Προσαρμοσμένη τιμή Μεταβλητή Σχόλιο
MANUAL_NAME Όνομα του κοντέινερ Docker.
MANUAL_REP Θέση στο σύστημα αρχείων όπου προσαρτώνται οι τόμοι.
ENV_GW_CERT_NAME_VALUE Τιμή της μεταβλητής περιβάλλοντος ENV_GW_CERT_NAME.
ENV_SSL_ROUTER_IP_VALUE Τιμή της μεταβλητής περιβάλλοντος ENV_SSL_ROUTER_IP.
ENV_SSL_ROUTER_PORT_VALUE Τιμή της μεταβλητής περιβάλλοντος ENV_SSL_ROUTER_PORT.

Δημιουργήστε το δέντρο καταλόγων που απαιτείται για την προσάρτηση των τόμων στο σύστημα αρχείων:

1
2
3
mkdir -p MANUAL_REP/config
mkdir MANUAL_REP/log
mkdir MANUAL_REP/certificates
1
New-Item -ItemType Directory -Force -Path "MANUAL_REP\config", "MANUAL_REP\log", "MANUAL_REP\certificates"

Στη συνέχεια, τοποθετήστε τα πιστοποιητικά του στοιχείου HTML5 Gateway και της υπηρεσίας εγγραφής στο MANUAL_REP/certificates.

Για να μη διατηρούνται οι κωδικοί πρόσβασης των πιστοποιητικών στο ιστορικό του shell, εισαγάγετέ τους σε μεταβλητές περιβάλλοντος της τρέχουσας περιόδου λειτουργίας (η πληκτρολόγηση δεν εμφανίζεται):

1
2
read -rsp "HTML5 Gateway certificate password: " ENV_GW_CERT_PASSWORD; echo
export ENV_GW_CERT_PASSWORD
1
$env:ENV_GW_CERT_PASSWORD = [Net.NetworkCredential]::new('', (Read-Host -AsSecureString "HTML5 Gateway certificate password")).Password

Τέλος, εκκινήστε ένα νέο κοντέινερ:

 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 \
-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
 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 `
-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

Μόλις εκκινηθεί το κοντέινερ, καταργήστε αυτές τις μεταβλητές από την περίοδο λειτουργίας:

1
unset ENV_GW_CERT_PASSWORD
1
Remove-Item Env:ENV_GW_CERT_PASSWORD

Τα αρχεία καταγραφής του κοντέινερ μπορούν να προβληθούν με την ακόλουθη εντολή:

1
docker logs -f MANUAL_NAME

Διαμόρφωση του στοιχείου Mediation Controller

Για να είναι λειτουργικό το νέο στοιχείο HTML5 Gateway Docker, πρέπει ακόμη να διαμορφωθεί ο διακομιστής Mediation Controller μέσω πρόσβασης SSH ή κονσόλας και με άδειες root.

Αυτή η τελευταία ρύθμιση απαιτείται για να μπορεί το στοιχείο Mediation Controller να επικοινωνεί με την υπηρεσία HTML5.
Ωστόσο, αυτή η διαμόρφωση διαφέρει ανάλογα με τη θέση του στοιχείου HTML5 Gateway Docker:

Το συνολικό διάγραμμα είναι το εξής:

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

    subgraph LAN
        GW(Edge Gateway)
    end


    MED -.-> |Σύνδεση με την υπηρεσία HTML5 ; 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

Σε αυτή την περίπτωση, θα πρέπει να προσθέσετε τις πληροφορίες που δίνονται παρακάτω στο αρχείο /etc/ipdiva/httpd/commonParameters.extra.conf ή να το δημιουργήσετε.
Οι ρυθμίσεις μπορούν να προσαρμοστούν:

Προσαρμοσμένη τιμή Μεταβλητή Σχόλιο
HTML5_URL_DMZ Διεύθυνση URL που διαμορφώθηκε κατά τη δήλωση του στοιχείου HTML5 Gateway στην κονσόλα διαχείρισης.
HTML5_IP_DMZ Όνομα DNS ή διεύθυνση IP του διακομιστή Docker στον οποίο είναι ενεργό το στοιχείο HTML5 Gateway Docker.
HTML5_PORT_DMZ Θύρα που δημοσιεύει ο διακομιστής Docker για το στοιχείο 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>

Το συνολικό διάγραμμα είναι το εξής:

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

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


    MED -.- | Σύνδεση με την υπηρεσία HTML5 ; μέσω σήραγγας TLS| GW -.-> |Σύνδεση με την υπηρεσία HTML5 ; TCP 8080| HTML5
    HTML5 --> |TLS Tunnel| MED
    GW --> |TLS Tunnel| MED

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

Σε αυτή την περίπτωση, θα πρέπει να προσθέσετε τις πληροφορίες που δίνονται παρακάτω στο αρχείο /etc/ipdiva/httpd/commonParameters.extra.conf ή να το δημιουργήσετε.
Οι ρυθμίσεις μπορούν να προσαρμοστούν:

Προσαρμοσμένη τιμή Μεταβλητή Σχόλιο
HTML5_URL_LAN Διεύθυνση URL που διαμορφώθηκε κατά τη δήλωση του στοιχείου HTML5 Gateway στην κονσόλα διαχείρισης.
GW_NAME_LAN Όνομα του στοιχείου Edge Gateway που χρησιμοποιείται για τη σύνδεση με την υπηρεσία HTML5. Ο χαρακτήρας κάθετης γραμμής στο τέλος της γραμμής πρέπει να διατηρηθεί.
ORGANIZATION_NAME_LAN Όνομα του οργανισμού στον οποίο συνδέεται το στοιχείο Edge Gateway.
HTML5_IP_LAN Όνομα DNS ή διεύθυνση IP του διακομιστή Docker στον οποίο είναι ενεργό το στοιχείο HTML5 Gateway Docker.
HTML5_PORT_LAN Θύρα που δημοσιεύει ο διακομιστής Docker για το στοιχείο 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>

Συμβουλή

Αυτή η διαμόρφωση μπορεί επίσης να χρησιμοποιηθεί στην ακόλουθη περίπτωση, όπου ένα στοιχείο Edge Gateway σε Docker και ένα στοιχείο HTML5 Gateway σε Docker εκτελούνται στο ίδιο δίκτυο Docker:

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 -.- | Σύνδεση με την υπηρεσία HTML5 ; μέσω σήραγγας TLS| GW -.-> |Σύνδεση με την υπηρεσία HTML5 ; TCP 8080 μέσω του δικτύου Docker| HTML5
    HTML5 --> |TLS Tunnel| MED
    GW --> |TLS Tunnel| MED

    linkStyle 0,1 stroke:#d22,color;
Hold "Ctrl" to enable pan & zoom
Παράδειγμα

Σε αυτό το παράδειγμα, θα αναπτύξουμε ένα στοιχείο Edge Gateway και ένα στοιχείο HTML5 Gateway στον ίδιο διακομιστή Docker.

Η υποδομή που χρησιμοποιείται για το παράδειγμα είναι η εξής:

  • Διακομιστής Mediation Controller
    • Διεύθυνση IP web: 10.0.10.10
    • Όνομα οργανισμού: my-organization-name
    • Διακριτικό για το στοιχείο Edge Gateway: YJ5N-JN05-N5LS-N26H-7JHA-HZ9R-BGJF-MAVH
    • Διακριτικό για το στοιχείο HTML5 Gateway: ATCW-OMVR-0RY4-LW1M-D9G9-H5VF-WPX5-YCXF
    • Διεύθυνση URL για την πρόσβαση στην υπηρεσία HTML5: HTML5_DOCKER
  • Διακομιστής Docker
    • Όνομα δικτύου Docker: cyberelements-cleanroom-network
    • Edge Gateway
      • Όνομα: my-edge-gateway-docker
      • Ριζική θέση στο σύστημα αρχείων: /opt/my-edge-gateway-docker
    • HTML5 Gateway
      • Όνομα: my-html5-gateway-docker
      • Ριζική θέση στο σύστημα αρχείων: /opt/my-html5-gateway-docker

Αρχικά, στον διακομιστή Docker, πρέπει να δημιουργήσετε τη δομή καταλόγων για την προσάρτηση των τόμων Docker:

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

Στη συνέχεια, δημιουργήστε ένα δίκτυο Docker τύπου bridge, ώστε τα δύο κοντέινερ να μπορούν να επικοινωνούν μεταξύ τους:

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

Έπειτα, εκκινήστε το κοντέινερ του στοιχείου Edge Gateway. Σημειώστε ότι στο παράδειγμα δημιουργείται σύνδεση μέσω σύζευξης, με πρόσβαση στο στοιχείο Mediation Controller μέσω της διεύθυνσης IP του και χωρίς έλεγχο πιστοποιητικού. Επιπλέον, προστίθεται η παράμετρος --network για να καθοριστεί η χρήση του δικτύου Docker που δημιουργήθηκε προηγουμένως:

 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

Έπειτα, εκκινήστε το κοντέινερ του στοιχείου HTML5 Gateway. Σημειώστε ότι στο παράδειγμα δημιουργείται σύνδεση μέσω σύζευξης, με πρόσβαση στο στοιχείο Mediation Controller μέσω της διεύθυνσης IP του και χωρίς έλεγχο πιστοποιητικού. Επιπλέον, προστίθεται η παράμετρος --network για να καθοριστεί η χρήση του δικτύου Docker που δημιουργήθηκε προηγουμένως και, καθώς η πρόσβαση στην υπηρεσία HTML5 θα γίνεται μέσω του δικτύου Docker, η δημοσίευση της θύρας 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

Τέλος, πρέπει να διαμορφωθεί το αρχείο /etc/ipdiva/httpd/commonParameters.extra.conf στον διακομιστή ή στους διακομιστές Mediation Controller. Πρέπει να προστεθεί το ακόλουθο τμήμα:

 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>

Πριν από την εφαρμογή των νέων ρυθμίσεων, πρέπει να ελέγξετε ότι η νέα διαμόρφωση δεν προκαλεί σφάλματα που εμποδίζουν τη λειτουργία του διακομιστή web Apache2.
Για να το κάνετε αυτό, εκτελέστε την ακόλουθη εντολή:

1
apache2ctl configtest

Εάν η απόκριση είναι Syntax OK, οι αλλαγές μπορούν να εφαρμοστούν με την παρακάτω εντολή. Διαφορετικά, ελέγξτε τη διαμόρφωση του αρχείου /etc/ipdiva/httpd/commonParameters.extra.conf.

1
systemctl reload apache2