148 lines
No EOL
3.5 KiB
Markdown
148 lines
No EOL
3.5 KiB
Markdown
# Docker Hub
|
|
|
|
To download the image from Docker Hub you can run the following:
|
|
|
|
`docker pull bmartin5692/bumper`
|
|
|
|
[View Bumper on Docker Hub](https://hub.docker.com/r/bmartin5692/bumper)
|
|
|
|
# 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.
|
|
|
|
```yaml
|
|
---
|
|
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;
|
|
}
|
|
}
|
|
|
|
``` |