Skip to main content

Capture Edge on Docker

We recommend to install Capture Edge using Docker and Docker Compose on Linux. If you already have Docker and Docker-compose installed you can start Capture Edge by unzipping the zip file and running the following command in the extracted directory:

docker compose up -d

If you don't have Docker yet, you can extract the zip file and run Install.sh. This will install all required dependencies and start Capture Edge.

Versioning

By default, the latest released version will be used. To stay on a specific version, edit docker-compose.yml and change the latest tag to the desired version for each component. You can use a version in major.minor format, or major.minor.patch, for example 2.2 or 2.1.6. If no patch is defined (the last number), the latest patch of that version will be used.

Configuring Capture Edge with Docker Networking

This section explains how to configure Capture Edge to work correctly within a Docker network. By default, Docker containers use their own internal network and won't be able to connect to services on the host machine (your computer) using localhost or 127.0.0.1.

Database Connections

Capture Edge uses databases like InfluxDB and potentially Redis (if uncommented in docker-compose.yml) to store captured data. Here's how to adjust the configuration for these services:

  • InfluxDB:

    Within the Capture Edge user interface, navigate to Advanced settings > local database > address. Change the address from 127.0.0.1 to influxdb. This tells Capture Edge to connect to the InfluxDB service running in a separate Docker container named influxdb.

  • Redis (if applicable):

    The redis service is currently commented out in the provided docker-compose.yml. If you plan to use Redis, uncomment the entire redis service section. Then, follow similar steps as InfluxDB to update the address within Capture Edge settings, changing it from 127.0.0.1 to redis.

Important Note:

Avoid using 127.0.0.1 for any connections within the Docker network. Instead, use the service names of the relevant containers (e.g., influxdb). This ensures proper communication between Capture Edge components and database services.

docker-compose.yml

# Set the environment variable CAPTURE_DOCKER_TAG to use a different tag than 'latest'.
# Example with sudo: sudo CAPTURE_DOCKER_TAG=develop docker compose up -d

version: '3.4'

services:
cloudmanager:
image: containerstore.capture-vintecc.com/capture-edge/cloudmanager:${CAPTURE_DOCKER_TAG:-latest}
container_name: cloudmanager
ports:
- '5004:5004'
volumes:
- capture_etc:/etc/capture
- capture_ca_certs:/usr/local/share/ca-certificates/
privileged: true
environment:
- IS_RUNNING_IN_DOCKER=true
# - CAPTURE_COMPANY=YourCompany
# - CAPTURE_SERVER_BASE_URL=http://1.2.3.4
depends_on:
- influxdb
networks:
- CaptureNetwork
restart: always

syncer:
image: containerstore.capture-vintecc.com/capture-edge/syncer:${CAPTURE_DOCKER_TAG:-latest}
container_name: syncer
ports:
- '5001:5001'
volumes:
- capture_etc:/etc/capture
- capture_ca_certs:/usr/local/share/ca-certificates/
networks:
- CaptureNetwork
environment:
- IS_RUNNING_IN_DOCKER=true
depends_on:
- cloudmanager
restart: always

collector:
image: containerstore.capture-vintecc.com/capture-edge/collector:${CAPTURE_DOCKER_TAG:-latest}
container_name: collector
ports:
- '5002:5002'
volumes:
- capture_etc:/etc/capture
# devices:
# - /dev/ttyACM0:/dev/ttyACM0
# network_mode: "host"
networks:
- CaptureNetwork
environment:
- IS_RUNNING_IN_DOCKER=true
depends_on:
- cloudmanager
restart: always

analytics:
image: containerstore.capture-vintecc.com/capture-edge/analytics:${CAPTURE_DOCKER_TAG:-latest}
container_name: analytics
ports:
- '5003:5003'
volumes:
- capture_etc:/etc/capture
# network_mode: "host"
networks:
- CaptureNetwork
environment:
- IS_RUNNING_IN_DOCKER=true
depends_on:
- cloudmanager
restart: always

influxdb:
image: "influxdb:1.8.10"
container_name: influxdb
ports:
- "8086:8086"
- "8088:8088"
volumes:
- influxdb_data:/var/lib/influxdb
- influxdb_config:/etc/influxdb/
networks:
- CaptureNetwork
environment:
- IS_RUNNING_IN_DOCKER=true
restart: always

# redis:
# image: redis:6.2-alpine
# container_name: redis
# ports:
# - '6380:6379'
# command: redis-server --loglevel warning
# networks:
# - CaptureNetwork
# restart: always

volumes:
capture_etc:
capture_ca_certs:
influxdb_data:
influxdb_config:
interact-data:
redis-data:

networks:
CaptureNetwork:
driver: bridge