docker-templates.yml 6.92 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
        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
dobli's avatar
dobli committed
36
37
38
39
    postgres_user:
        file: ./postgres/user
    postgres_passwd:
        file: ./postgres/passwd
dobli's avatar
dobli committed
40
41
42
43
    landing_logo:
        file: ./pb-framr/logo.svg
    landing_pages:
        file: ./pb-framr/pages.json
44
45
46
47
48
49
50
51

volumes:
    openhab_addons:
    openhab_conf:
    openhab_userdata:
    nodered_data:
    mosquitto_data:
    influxdb_data:
dobli's avatar
dobli committed
52
    postgres_data:
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
119
120
121
122
123
124
125
126
127
    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:
128
                - "traefik.docker.network=habnet"
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
                - "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"
147
                - "traefik.docker.network=habnet"
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
            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
dobli's avatar
dobli committed
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
    postgres_X:
        image: "postgres"
        volumes:
            - "postgres_data:/var/lib/postgresql/data/pgdata"
        configs:
            - source: postgres_user
              target: /run/secrets/postgres_user
            - source: postgres_passwd
              target: /run/secrets/postgres_passwd
        environment:
            PGDATA: "/var/lib/postgresql/data/pgdata"
            POSTGRES_USER_FILE: "/run/secrets/postgres_user"
            POSTGRES_PASSWORD_FILE: "/run/secrets/postgres_passwd"
            POSTGRES_DB: "openhab"
        networks:
            - habnet
        deploy:
            placement:
                constraints:
                    - node.labels.building == X
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
    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