bumper/docs/Docker.md
2021-04-19 21:18:29 +02:00

3.5 KiB

Docker Hub

To download the image from Docker Hub you can run the following:

docker pull bmartin5692/bumper

View Bumper on Docker Hub

Build a Docker image

To build the docker image yourself you can run the following: docker build -t bmartin5692/bumper .

This requires Docker 17.09 or newer, but has also been tested with podman.

Docker usage

To run the image in docker some environment settings and port mappings are required:

Ports Required: (-p)

  • 443 - -p 443:443
  • 8007 - -p 8007:8007
  • 8883 - -p 8883:8883
  • 5223 - -p 5223:5223

Environment Settings: (-e)

BUMPER_ANNOUNCE_IP should be used so the actual host IP is reported to bots that checkin.

  • BUMPER_ANNOUNCE_IP - -e "BUMPER_ANNOUNCE_IP=X.X.X.X"

Volume Settings: (-v)

Optionally you can map existing directories for logs, data, and certs.

  • data/logs/certs
  • Data - -v /home/user/bumper/data:/bumper/data

Full Example:

docker run -it -e "BUMPER_ANNOUNCE_IP=X.X.X.X" -p 443:443 -p 8007:8007 -p 8883:8883 -p 5223:5223 -v /home/user/bumper/data:/bumper/data --name bumper bmartin5692/bumper

Docker-compose

Below a docker-compose example with an nginx proxy, which redirects mqtt traffic on port 443 to port 8883 The redirection is required as the app v2+ and robots with a newer firmware are connecting to the mqtt server on port 433.

---
version: "3.6"

networks:
  bumper:
    internal: true
    ipam:
      config:
        - subnet: 172.19.200.0/24

services:
  nginx:
    depends_on:
      - bumper
    image: nginx:alpine
    networks:
      default:
      bumper:
    expose:
      - 443
      - 5223
      - 8007
      - 8883
    restart: unless-stopped
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./nginx/:/etc/nginx:ro # See config file below

  bumper:
    image: bmartin5692/bumper
    restart: unless-stopped
    networks:
      bumper:
        ipv4_address: 172.19.200.10

    environment:
      PUID: 1000
      PGID: 1000
      TZ: Europe/Rome
      BUMPER_ANNOUNCE_IP: XXX # Insert your IP
      BUMPER_LISTEN: 0.0.0.0
      # BUMPER_DEBUG: "true"
      LOG_TO_STDOUT: "true"
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./config:/bumper/data
      - ./certs:/bumper/certs

Nginx configuration

error_log stderr;
pid /var/run/nginx.pid;

events { }

stream {
        map_hash_bucket_size 64;

        map $ssl_preread_server_name $internalport {
                # redirect all requests, which contain "mq" in the SNI -> MQTT
                ~^.*(mq).*\.eco(vacs|user)\.(net|com)$    8883;

                # the rest of eco(user|vacs) requests
                ~^.*\.eco(vacs|user)\.(net|com)$          443;

                # mapping default to MQTT as the bots are connecting directly to the ip without SNI
                default                                   8883;
        }

        server {
                listen 443;
                ssl_preread  on;
                # Ip must match the one configurated above in the docker-compose
                proxy_pass 172.19.200.10:$internalport;
        }

        server {
                listen 5223;
                proxy_pass 172.19.200.10:5223;
        }

        server {
                listen 8007;
                proxy_pass 172.19.200.10:8007;
        }

        server {
                listen 8883;
                proxy_pass 172.19.200.10:8883;
        }
}