diff --git a/.env b/.env new file mode 100644 index 0000000..4b8bba0 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +DIR=/home/simon/docker/data diff --git a/docker-compose.yml b/docker-compose.yml index 67870f8..343934a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,38 @@ version: '3' services: + grafana: + image: grafana/grafana:latest + container_name: grafana + volumes: + # Data persistency + # sudo mkdir -p /srv/docker/grafana/data; chown 472:472 /srv/docker/grafana/data + - "${DIR}/grafana:/var/lib/grafana" + labels: + - "traefik.enable=true" + - "traefik.http.routers.grafana.rule=Host(`grafana.localhost`)" + - "traefik.http.routers.grafana.entrypoints=web" + - "traefik.http.services.grafana-service.loadbalancer.server.port=3000" + + + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: always + environment: + - USER_UID=1000 + - USER_GID=1000 + volumes: + - ${DIR}/gitea:/data + ports: + - "2221:22" + labels: + - "traefik.enable=true" + - "traefik.http.routers.gitea.rule=Host(`gitea.localhost`)" + - "traefik.http.routers.gitea.entrypoints=web" + - "traefik.http.services.gitea-service.loadbalancer.server.port=3000" + + whoami: # A container that exposes an API to show its IP address image: containous/whoami @@ -9,21 +41,70 @@ services: - "traefik.http.routers.whoami.rule=Host(`whoami.localhost`)" - "traefik.http.routers.whoami.entrypoints=web" + mqtt: + image: eclipse-mosquitto + container_name: mqtt + ports: + - "1885:1883" + - "9001:9001" + volumes: + - "${DIR}/mosquitto/config:/mosquitto/config" + - ${DIR}/mosquitto/data:/mosquitto/data + - ${DIR}/mosquitto/log:/mosquitto/log + labels: + - "traefik.http.routers.mqtt.rule=Host(`mqtt.localhost`)" + - "traefik.http.routers.mqtt.entrypoints=mqtt" + - "traefik.http.services.mqtt-service.loadbalancer.server.port=9001" + - "traefik.enable=true" + + node-red: + image: nodered/node-red:latest + container_name: "node-red" + environment: + - TZ=Europe/Stockholm + ports: + - "1881:1880" + #devices: + #- /dev/ttyAMA0 + restart: unless-stopped + volumes: + - ${DIR}/nodered:/data + labels: + - "traefik.http.routers.node-red.rule=Host(`node.localhost`)" + - "traefik.http.routers.node-red.entrypoints=web" + - "traefik.http.services.node-red-service.loadbalancer.server.port=1880" + - "traefik.enable=true" + + domoticz: + image: linuxserver/domoticz + container_name: domoticz + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Stockholm + #- WEBROOT=domoticz #optional + volumes: + - ${DIR}/domoticz:/config + ports: + - 8081:8080 + #devices: + #- path to device:path to device + restart: unless-stopped + labels: + - "traefik.http.routers.domo.rule=Host(`domo.localhost`)" + - "traefik.http.routers.domo.entrypoints=web" + - "traefik.http.services.domo-service.loadbalancer.server.port=8080" + - "traefik.enable=true" + reverse-proxy: # The official v2.0 Traefik docker image image: traefik:v2.0 container_name: "traefik" - command: - - "--log.level=DEBUG" - - "--api.insecure=true" - - "--providers.docker=true" - - "--providers.docker.exposedbydefault=false" - - "--entrypoints.web.address=:80" ports: # The HTTP port - "80:80" - #- "8080:8080" + - "8080:8080" volumes: # So that Traefik can listen to the Docker events - /var/run/docker.sock:/var/run/docker.sock @@ -32,5 +113,5 @@ services: labels: - "traefik.http.routers.traefik.rule=Host(`tr.localhost`)" - "traefik.http.routers.traefik.entrypoints=web" - - "traefik.http.services.service1.loadbalancer.server.port=8080" + - "traefik.http.services.traefik-service.loadbalancer.server.port=8080" - "traefik.enable=true" diff --git a/traefik.yml b/traefik.yml index eebb463..5668d6b 100644 --- a/traefik.yml +++ b/traefik.yml @@ -21,3 +21,5 @@ providers: entryPoints: web: address: ":80" + mqtt: + address: ":9001"