docker-templates.yml 6 KB
Newer Older
1
version: "3.5"
2
3
4

networks:
    habnet:
5
        name: habnet
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
        driver: overlay
        attachable: true

configs:
    backup_config_X:
        file: ./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:
    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: "atmoz/sftp"
        volumes:
            - "openhab_userdata:/home/ohadmin/openhab_userdata"
            - "openhab_conf:/home/ohadmin/openhab_conf"
            - "nodered_data:/home/ohadmin/nodered_data"
            - "backup_data:/home/ohadmin/backup_data"
        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/ohadmin/.ssh/id_rsa
              uid: '9001'
              mode: 0400
            - source: sftp_id_pub
              target: /home/ohadmin/.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:
119
                - "traefik.docker.network=habnet"
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
                - "traefik.port=8181"
            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:
                - "traefik.port=1880"
138
                - "traefik.docker.network=habnet"
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
            placement:
                constraints:
                    - node.labels.building == X
    mqtt_X:
        image: "eclipse-mosquitto"
        volumes:
            - "mosquitto_data:/mosquitto/data"
        ports:
        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: "ohadmin"
            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