Skip to content

C-Gate IoT Hub Installation

System Requirements

  • Container runtime environment (e.g. Docker, Kubernetes, OpenShift, Podman, ...)
  • 8 GB RAM
  • 128 GB hard disk space
  • 64-bit processor (4 cores recommended)
  • Internet connection (during installation and update)

Warning

If more than 25 controllers are connected, the requirements may be greater.

Step-by-Step Guide

Info

If you are already familiar with Containers you can skip this section. See Manual installation. If you are not using a container runtime environment yet, the following instructions will guide you through the necessary steps for a basic container runtime environment with C-Gate.

Linux Recommended

We recommend Linux for production deployments. Windows is also supported but not as well established and stable as on Linux.

Linux

  1. Install Docker for your Linux distribution.

    Warning

    Take care not to install Docker multiple times (e.g. via both apt-get and snap).

  2. Execute the following commands to install and start C-Gate:

    sudo mkdir -p /opt/cloos/cgate
    cd /opt/cloos/cgate/
    sudo curl -L https://c-gate.cloos.de/docs/static/docker-compose.yml -o docker-compose.yml
    sudo docker login docker.cloos.de
    # Enter the access data you received from CLOOS here.
    sudo docker compose up -d
    # C-Gate will now start in the background.
    # After 1-2 minutes you will be able to access C-Gate with your browser.
    

Windows

  1. Install Rancher Desktop and start it.

    Rancher Desktop settings

    The following Rancher Desktop settings are required for C-Gate to be accessable from other hosts

    • During setup, select Install for all users of the machine (Administration priviledges required)
    • Use dockerd (moby) as the container engine: Preferences -> Container Engine -> Select 'dockerd (moby)'
    • Disable Kubernetes: Preferences -> Kubernetes -> Uncheck 'Enable Kubernetes'
  2. Open a PowerShell window and execute the following commands to install and start C-Gate:

    New-Item -ItemType Directory -Force -Path "$env:LOCALAPPDATA\programs\cgate"
    Set-Location "$env:LOCALAPPDATA\programs\cgate"
    Invoke-WebRequest -Uri "https://c-gate.cloos.de/docs/static/docker-compose.yml" -OutFile "docker-compose.yml"
    docker login docker.cloos.de
    # Enter the access data you received from CLOOS here.
    docker compose up -d
    # C-Gate will now start in the background.
    # After 1-2 minutes you will be able to access C-Gate with your browser.
    

After the Installation

The next steps and further information can be found on the C-Gate web interface.

  • Access C-Gate locally after installation at: http://localhost
  • Access from another computer at: http://<server-ip> (replace <server-ip> with the IP address of your server or PC)

Manual installation

The C-Gate IoT Hub container is provided in the Docker Registry by CLOOS. You will receive the necessary access data when you purchase a C-Gate IoT Hub.

Registry and Image URL

docker.cloos.de/cgate

Example — Test environment with Docker
docker run -d --name cgate -v cgate-data:/data -p 80:8080 -p 4840:4840 -p 5679:5679 --memory=6g --ulimit nofile=64000:64000 docker.cloos.de/cgate
Example — Productive environment with Docker Compose
services:
  cgate:
    container_name: cgate
    image: docker.cloos.de/cgate:latest
    restart: always
    ports:
    - "80:8080"
    - "8080:8080"
    - "4840:4840"
    - "5000:5000/tcp"
    - "5000:5000/udp"
    - "5005:5005"
    - "5010:5010"
    - "5679:5679"
    environment:
    - APP_MAX_DATA_SIZE_GB=64
    volumes:
    - data:/data
    ulimits:
      nofile:
        soft: 64000
        hard: 64000
    deploy:
      resources:
        limits:
          memory: 6G
    logging:
      driver: "json-file"
      options:
          max-size: "100m"
volumes:
  data:

Volumes

C-Gate stores all configurations and data in the directory /data. A volume should be used for this directory to persist the data.

Exposed Ports

Port Protocol Purpose
4840 TCP OPC UA Server
5000 TCP Robot communication up to V6
5000 UDP Robot communication up to V6
5005 TCP Robot communication up to V6
5010 TCP Robot communication up to V6
5679 TCP IoT Connector RPC
8080 TCP Web Interface

Environment Variables

Variable Description Default
APP_ADMIN_PASSWORD Forces a password for the admin user Empty
APP_MAX_DATA_SIZE Sets the maximum size of total data stored by C-Gate in GB 32

Offline installation

C-Gate can be installed without an active internet connection.

Requirements

Download the following files and copy them to the offline system

On Linux either you have to install a recent distribution that has includes docker on the install medium or install docker manually afterwards. This guide by Cyberwatch is a good starting point for the manual docker installation.

Linux

  1. Prepare the target directory on the offline system:

    sudo mkdir -p /opt/cloos/cgate
    
  2. Copy to the downloaded docker-compose file and docker image to /opt/cloos/cgate

  3. Install and run the image

    cd /opt/cloos/cgate/
    sudo docker load -i c-gate-iot-hub.image
    sudo docker compose up -d
    

Windows

  1. Install Rancher Desktop. During setup, select dockerd (moby) as the container engine.

  2. Prepare the target directory on the offline system:

    New-Item -ItemType Directory -Force -Path "$env:LOCALAPPDATA\programs\cgate"
    
  3. Copy the downloaded docker-compose and image files to the C-Gate program folder %LOCALAPPDATA%\programs\cgate

  4. Install and run the image

    Set-Location "$env:LOCALAPPDATA\programs\cgate"
    docker load -i c-gate-iot-hub.image
    docker compose up -d
    

Firewall Settings

For a visual overview of the network topology, refer to the Technical Structure section.

The following inboundconnections must be permitted in the firewall configuration:

Connector to Hub

Protocol/Port Purpose
TCP/80 Webinterface / REST-API
TCP/443 Secure Webinterface / REST-API
TCP/5679 gRPC Connector Communication

Customer Network to Hub

Protocol/Port Purpose
TCP/80 REST-API
TCP/443 Secure REST-API
TCP/4840 OPC UA Server (Optional)