diff --git a/docker-custom.yml b/docker-custom.yml new file mode 100644 index 0000000000000000000000000000000000000000..454e815c1defb5ee4407e19d7cc2f38c5025684c --- /dev/null +++ b/docker-custom.yml @@ -0,0 +1,372 @@ +version: "3.3" + +# demo credentials +# user: ohuser +# password: ohpass + +networks: + habnet: + driver: overlay + attachable: true + +configs: + backup_config_b1: + file: ./configs/volumerize/backup_config_b1.json + backup_config_b2: + file: ./configs/volumerize/backup_config_b2.json + backup_config_b3: + file: ./configs/volumerize/backup_config_b3.json + sftp_config: + file: ./custom_configs/ssh/sshd_config + sftp_users: + file: ./custom_configs/ssh/sftp_users.conf + sftp_key_ed: + file: ./custom_configs/ssh/ssh_host_ed25519_key + sftp_id_pub: + file: ./custom_configs/ssh/id_rsa.pub + sftp_id_key: + file: ./custom_configs/ssh/id_rsa + sftp_known_hosts: + file: ./custom_configs/ssh/known_hosts + traefik_config: + file: ./custom_configs/traefik/traefik.toml + traefik_users: + file: ./custom_configs/traefik/traefik_users + nodered_settings: + file: ./custom_configs/nodered/nodered_settings.js + nodered_package: + file: ./custom_configs/nodered/nodered_package.json + mosquitto_passwords: + file: ./custom_configs/mosquitto/mosquitto_passwords + mosquitto_settings: + file: ./custom_configs/mosquitto/mosquitto.conf + influx_init: + file: ./configs/influxdb/init-influxdb.sh + influx_user: + file: ./configs/influxdb/influxdb_user + +volumes: + openhab_addons: + openhab_conf: + openhab_userdata: + nodered_data: + mosquitto_data: + influxdb_data: + unison_data: + backup_data: + backup_cache: + +services: + backup1: + image: blacklabelops/volumerize + volumes: + - "openhab_userdata:/source/openhab_userdata" + - "openhab_conf:/source/openhab_conf" + - "openhab_addons:/source/openhab_addons" + - "nodered_data:/source/nodered_data" + - "influxdb_data:/source/influxdb_data" + - "backup_cache:/volumerize-cache" + - "backup_data:/backup" + configs: + - source: backup_config_b1 + target: /backup_config.json + - source: sftp_id_key + target: /root/.ssh/id_rsa + mode: 0400 + - source: sftp_known_hosts + target: /root/.ssh/known_hosts + mode: 0400 + environment: + - VOLUMERIZE_SOURCE=/source + - VOLUMERIZE_TARGET='multi:///backup_config.json?mode=mirror&onfail=abort' + - VOLUMERIZE_DUPLICITY_OPTIONS=--ssh-options "-oStrictHostKeyChecking=no" + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == b1 + backup2: + image: blacklabelops/volumerize + volumes: + - "/var/run/docker.sock:/var/run/docker.sock" + - "openhab_userdata:/source/openhab_userdata" + - "openhab_conf:/source/openhab_conf" + - "openhab_addons:/source/openhab_addons" + - "backup_cache:/volumerize-cache" + - "backup_data:/backup" + configs: + - source: backup_config_b2 + target: /backup_config.json + - source: sftp_id_key + target: /root/.ssh/id_rsa + mode: 0400 + - source: sftp_known_hosts + target: /root/.ssh/known_hosts + mode: 0400 + environment: + - VOLUMERIZE_SOURCE=/source + - VOLUMERIZE_TARGET='multi:///backup_config.json?mode=mirror&onfail=abort' + - VOLUMERIZE_DUPLICITY_OPTIONS=--ssh-options "-oStrictHostKeyChecking=no" + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == b2 + backup3: + image: blacklabelops/volumerize + volumes: + - "openhab_userdata:/source/openhab_userdata" + - "openhab_conf:/source/openhab_conf" + - "openhab_addons:/source/openhab_addons" + - "backup_cache:/volumerize-cache" + - "backup_data:/backup" + configs: + - source: backup_config_b3 + target: /backup_config.json + - source: sftp_id_key + target: /root/.ssh/id_rsa + mode: 0400 + - source: sftp_known_hosts + target: /root/.ssh/known_hosts + mode: 0400 + environment: + - VOLUMERIZE_SOURCE=/source + - VOLUMERIZE_TARGET='multi:///backup_config.json?mode=mirror&onfail=abort' + - VOLUMERIZE_DUPLICITY_OPTIONS=--ssh-options "-oStrictHostKeyChecking=no" + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == b3 + sftp: + image: "doblix/sftp-unison" + volumes: + - "openhab_userdata:/home/ohuser/openhab_userdata" + - "openhab_conf:/home/ohuser/openhab_conf" + - "nodered_data:/home/ohuser/nodered_data" + - "backup_data:/home/ohuser/backup_data" + - "unison_data:/home/ohuser/.unison" + ports: + - "2222:22" + configs: + - source: sftp_config + target: /etc/ssh/sshd_config + - source: sftp_users + target: /etc/sftp/users.conf + - source: sftp_key_ed + target: /etc/ssh/ssh_host_ed25519_key + mode: 0400 + - source: sftp_id_key + target: /home/ohuser/.ssh/id_rsa + uid: '9001' + mode: 0400 + - source: sftp_id_pub + target: /home/ohuser/.ssh/keys/sync.pub + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == b1 + sftp2: + image: "doblix/sftp-unison" + volumes: + - "openhab_conf:/home/ohuser/openhab_conf" + - "backup_data:/home/ohuser/backup_data" + - "unison_data:/home/ohuser/.unison" + ports: + - "2223:22" + configs: + - source: sftp_users + target: /etc/sftp/users.conf + - source: sftp_key_ed + target: /etc/ssh/ssh_host_ed25519_key + mode: 0400 + - source: sftp_id_key + target: /home/ohuser/.ssh/id_rsa + uid: '9001' + mode: 0400 + - source: sftp_id_pub + target: /home/ohuser/.ssh/keys/sync.pub + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == b2 + sftp3: + image: "doblix/sftp-unison" + volumes: + - "openhab_conf:/home/ohuser/openhab_conf" + - "backup_data:/home/ohuser/backup_data" + - "unison_data:/home/ohuser/.unison" + ports: + - "2224:22" + configs: + - source: sftp_users + target: /etc/sftp/users.conf + - source: sftp_key_ed + target: /etc/ssh/ssh_host_ed25519_key + mode: 0400 + - source: sftp_id_key + target: /home/ohuser/.ssh/id_rsa + uid: '9001' + mode: 0400 + - source: sftp_id_pub + target: /home/ohuser/.ssh/keys/sync.pub + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == b3 + openhab: + image: "openhab/openhab:2.4.0-amd64-debian" + volumes: + - "/etc/localtime:/etc/localtime:ro" + - "/etc/timezone:/etc/timezone:ro" + - "openhab_addons:/openhab/addons" + - "openhab_conf:/openhab/conf" + - "openhab_userdata:/openhab/userdata" + environment: + OPENHAB_HTTP_PORT: "8181" + OPENHAB_HTTPS_PORT: "8443" + networks: + - habnet + deploy: + labels: + - "backup=b1" + - "traefik.docker.network=ohSwarmTest_habnet" + - "traefik.port=8181" + - "traefik.backend=openhab" + - "traefik.frontend.rule=HostRegexp:bau1.{domain:[a-zA-z0-9-]+}" + placement: + constraints: + - node.labels.building == b1 + openhab2: + image: "openhab/openhab:2.4.0-amd64-debian" + volumes: + - "/etc/localtime:/etc/localtime:ro" + - "/etc/timezone:/etc/timezone:ro" + - "openhab_addons:/openhab/addons" + - "openhab_conf:/openhab/conf" + - "openhab_userdata:/openhab/userdata" + environment: + OPENHAB_HTTP_PORT: "8282" + OPENHAB_HTTPS_PORT: "8444" + networks: + - habnet + deploy: + labels: + - "backup=b2" + - "traefik.docker.network=ohSwarmTest_habnet" + - "traefik.port=8282" + - "traefik.backend=openhab2" + - "traefik.frontend.rule=HostRegexp:bau2.{domain:[a-zA-z0-9-]+}" + placement: + constraints: + - node.labels.building == b2 + openhab3: + image: "openhab/openhab:2.4.0-amd64-debian" + volumes: + - "/etc/localtime:/etc/localtime:ro" + - "/etc/timezone:/etc/timezone:ro" + - "openhab_addons:/openhab/addons" + - "openhab_conf:/openhab/conf" + - "openhab_userdata:/openhab/userdata" + environment: + OPENHAB_HTTP_PORT: "8383" + OPENHAB_HTTPS_PORT: "8445" + networks: + - habnet + deploy: + labels: + - "backup=b3" + - "traefik.docker.network=ohSwarmTest_habnet" + - "traefik.port=8383" + - "traefik.backend=openhab3" + - "traefik.frontend.rule=HostRegexp:bau3.{domain:[a-zA-z0-9-]+}" + placement: + constraints: + - node.labels.building == b3 + nodered: + image: "nodered/node-red-docker" + volumes: + - "nodered_data:/data" + networks: + - habnet + configs: + - source: nodered_package + target: /data/package.json + - source: nodered_settings + target: /data/settings.js + deploy: + labels: + - "backup=b1" + - "traefik.port=1880" + - "traefik.backend=nodered" + - "traefik.docker.network=ohSwarmTest_habnet" + - "traefik.frontend.rule=HostRegexp:rules.{domain:[a-zA-z0-9-]+}" + placement: + constraints: + - node.labels.building == b1 + mqtt: + image: "eclipse-mosquitto" + volumes: + - "mosquitto_data:/mosquitto/data" + ports: + - "9001:9001" + - "1883:1883" + configs: + - source: mosquitto_passwords + target: /mosquitto/config/passwd + - source: mosquitto_settings + target: /mosquitto/config/mosquitto.conf + networks: + - habnet + db: + image: "influxdb" + volumes: + - "influxdb_data:/var/lib/influxdb" + configs: + - source: influx_init + target: /init-influxdb.sh + mode: 0555 + - source: influx_user + target: /run/secrets/influx_user + environment: + INFLUXDB_HTTP_AUTH_ENABLED: "true" + INFLUXDB_DB: "openhab" + INFLUXDB_ADMIN_USER: "ohadmin" + INFLUXDB_ADMIN_PASSWORD: "ohadmin" + INFLUXDB_USER: "ohuser" + INFLUXDB_USER_PASSWORD: "ohtest" + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == b1 + proxy: + image: "traefik" + command: --api --docker --docker.swarmMode --logLevel="DEBUG" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock" + ports: + - "8080:8080" + - "80:80" + networks: + - habnet + configs: + - source: traefik_config + target: /etc/traefik/traefik.toml + - source: traefik_users + target: /etc/traefik/traefik_users + deploy: + mode: global + placement: + constraints: + - node.role == manager diff --git a/template_configs/docker-skeleton.yml b/template_configs/docker-skeleton.yml new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/template_configs/docker-stack.yml b/template_configs/docker-stack.yml new file mode 100644 index 0000000000000000000000000000000000000000..573777003ca0dc591d323c19fa61d502fb73f8aa --- /dev/null +++ b/template_configs/docker-stack.yml @@ -0,0 +1,211 @@ +version: "3.3" + +networks: + habnet: + driver: overlay + attachable: true + +configs: + backup_config_X: + file: ./configs/volumerize/backup_config_X.json + sftp_config: + file: ./ssh/sshd_config + sftp_users: + file: ./ssh/sftp_users.conf + sftp_key_ed: + file: ./ssh/ssh_host_ed25519_key + sftp_id_pub: + file: ./ssh/id_rsa.pub + sftp_id_key: + file: ./ssh/id_rsa + sftp_known_hosts: + file: ./ssh/known_hosts + traefik_config: + file: ./traefik/traefik.toml + traefik_users: + file: ./traefik/traefik_users + nodered_settings: + file: ./nodered/nodered_settings.js + nodered_package: + file: ./nodered/nodered_package.json + mosquitto_passwords: + file: ./mosquitto/mosquitto_passwords + mosquitto_settings: + file: ./mosquitto/mosquitto.conf + +volumes: + openhab_addons: + openhab_conf: + openhab_userdata: + nodered_data: + mosquitto_data: + influxdb_data: + unison_data: + backup_data: + backup_cache: + +services: + backup_X: + image: blacklabelops/volumerize + volumes: + - "openhab_userdata:/source/openhab_userdata" + - "openhab_conf:/source/openhab_conf" + - "openhab_addons:/source/openhab_addons" + - "nodered_data:/source/nodered_data" + - "influxdb_data:/source/influxdb_data" + - "backup_cache:/volumerize-cache" + - "backup_data:/backup" + configs: + - source: backup_config_X + target: /backup_config.json + - source: sftp_id_key + target: /root/.ssh/id_rsa + mode: 0400 + - source: sftp_known_hosts + target: /root/.ssh/known_hosts + mode: 0400 + environment: + - VOLUMERIZE_SOURCE=/source + - VOLUMERIZE_TARGET='multi:///backup_config.json?mode=mirror&onfail=abort' + - VOLUMERIZE_DUPLICITY_OPTIONS=--ssh-options "-oStrictHostKeyChecking=no" + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == X + sftp_X: + image: "doblix/sftp-unison" + volumes: + - "openhab_userdata:/home/ohuser/openhab_userdata" + - "openhab_conf:/home/ohuser/openhab_conf" + - "nodered_data:/home/ohuser/nodered_data" + - "backup_data:/home/ohuser/backup_data" + - "unison_data:/home/ohuser/.unison" + ports: + - "2222:22" + configs: + - source: sftp_config + target: /etc/ssh/sshd_config + - source: sftp_users + target: /etc/sftp/users.conf + - source: sftp_key_ed + target: /etc/ssh/ssh_host_ed25519_key + mode: 0400 + - source: sftp_id_key + target: /home/ohuser/.ssh/id_rsa + uid: '9001' + mode: 0400 + - source: sftp_id_pub + target: /home/ohuser/.ssh/keys/sync.pub + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == X + openhab_X: + image: "openhab/openhab:2.4.0-amd64-debian" + volumes: + - "/etc/localtime:/etc/localtime:ro" + - "/etc/timezone:/etc/timezone:ro" + - "openhab_addons:/openhab/addons" + - "openhab_conf:/openhab/conf" + - "openhab_userdata:/openhab/userdata" + environment: + OPENHAB_HTTP_PORT: "8181" + OPENHAB_HTTPS_PORT: "8443" + networks: + - habnet + deploy: + labels: + - "backup=X" + - "traefik.docker.network=ohSwarmTest_habnet" + - "traefik.port=8181" + - "traefik.backend=openhab" + - "traefik.frontend.rule=HostRegexp:X.{domain:[a-zA-z0-9-]+}" + placement: + constraints: + - node.labels.building == X + nodered_X: + image: "nodered/node-red-docker" + volumes: + - "nodered_data:/data" + networks: + - habnet + configs: + - source: nodered_package + target: /data/package.json + - source: nodered_settings + target: /data/settings.js + deploy: + labels: + - "backup=X" + - "traefik.port=1880" + - "traefik.backend=nodered" + - "traefik.docker.network=ohSwarmTest_habnet" + - "traefik.frontend.rule=HostRegexp:rules.{domain:[a-zA-z0-9-]+}" + placement: + constraints: + - node.labels.building == X + mqtt_X: + image: "eclipse-mosquitto" + volumes: + - "mosquitto_data:/mosquitto/data" + ports: + - "9001:9001" + - "1883:1883" + configs: + - source: mosquitto_passwords + target: /mosquitto/config/passwd + - source: mosquitto_settings + target: /mosquitto/config/mosquitto.conf + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == X + db_X: + image: "influxdb" + volumes: + - "influxdb_data:/var/lib/influxdb" + configs: + - source: influx_init + target: /init-influxdb.sh + mode: 0555 + - source: influx_user + target: /run/secrets/influx_user + environment: + INFLUXDB_HTTP_AUTH_ENABLED: "true" + INFLUXDB_DB: "openhab" + INFLUXDB_ADMIN_USER: "ohadmin" + INFLUXDB_ADMIN_PASSWORD: "ohadmin" + INFLUXDB_USER: "ohuser" + INFLUXDB_USER_PASSWORD: "ohtest" + networks: + - habnet + deploy: + placement: + constraints: + - node.labels.building == X + proxy: + image: "traefik" + command: --api --docker --docker.swarmMode --logLevel="DEBUG" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock" + ports: + - "8080:8080" + - "80:80" + networks: + - habnet + configs: + - source: traefik_config + target: /etc/traefik/traefik.toml + - source: traefik_users + target: /etc/traefik/traefik_users + deploy: + mode: global + placement: + constraints: + - node.role == manager diff --git a/template_configs/nodered/nodered_package.json b/template_configs/nodered/nodered_package.json index 264f6232e7b10176d95435d1a663d095fa43c8e0..a5bc86a38a222479bc9a422501a6c5f76bc7e861 100644 --- a/template_configs/nodered/nodered_package.json +++ b/template_configs/nodered/nodered_package.json @@ -3,6 +3,7 @@ "description": "A Node-RED Project", "version": "0.1.0", "dependencies": { - "node-red-contrib-openhab2": "~1.1.3" + "node-red-contrib-openhab2": "~1.1.4", + "node-red-contrib-openhab-v2": "~1.4.0" } }