-
Notifications
You must be signed in to change notification settings - Fork 1
/
docker-compose.yml
172 lines (171 loc) · 4.67 KB
/
docker-compose.yml
1
2
3
4
5
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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
version: '3.7'
services:
mqtt:
image: eclipse-mosquitto
restart: unless-stopped
user: '114:118'
healthcheck:
test: ["CMD", "mosquitto_sub", "-p", "1880", "-t", "$$SYS/#", "-C", "1", "-i", "healthcheck", "-W", "3"]
interval: 30s
timeout: 5s
retries: 5
start_period: 10s
ports:
- 1883:1883
- 8883:8883
volumes:
- ./mqtt/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro
- ./mqtt/log:/mosquitto/log
- ./mqtt/data:/mosquitto/data
- ./ssl/certs:/mosquitto/config/certs:ro
- ./ssl/private/mqtt.singularity.net.key:/mosquitto/config/private/mqtt.singularity.net.key:ro
database:
image: library/postgres:14
restart: unless-stopped
user: '114:118'
volumes:
- /etc/localtime:/etc/localtime:ro
- ./postgres/data:/var/lib/postgresql/data
env_file:
- ./postgres/secrets.env
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER"]
interval: 10s
timeout: 5s
retries: 5
adbd:
image: sorccu/adb:latest
restart: unless-stopped
volumes:
- ./adb:/root/.android
command: /root/.android/startup.sh
zwavejs2mqtt:
image: zwavejs/zwave-js-ui:latest
restart: unless-stopped
tty: true
stop_signal: SIGINT
healthcheck:
test: |
wget --no-verbose --tries=1 --spider localhost:8091/health/zwave --header "Accept: text/plain" || exit 1
interval: 30s
timeout: 5s
retries: 5
environment:
- TZ=America/New_York
env_file:
- ./zwave/secrets.env
devices:
- /dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C0F00963-if00-port0:/dev/zwave
volumes:
- ./zwave/config:/usr/src/app/store
ports:
- 8091:8091
esphome:
image: esphome/esphome
restart: unless-stopped
networks:
default:
macvlan:
ipv4_address: 192.168.0.61
traefik:
volumes:
- ./esphome:/config
labels:
traefik.enable: true
traefik.http.routers.esphome.rule: "Host(`esphome.home.jeffalwilson.com`)"
traefik.http.routers.esphome.middlewares: traefik-forward-auth
traefik.http.routers.esphome.service: esphome
traefik.http.services.esphome.loadbalancer.server.port: 80
command:
dashboard --port 80 /config
matter-server:
image: ghcr.io/home-assistant-libs/python-matter-server:stable
container_name: matter-server
restart: unless-stopped
networks:
default:
macvlan:
ipv4_address: 192.168.0.62
security_opt:
# Needed for Bluetooth via dbus
- apparmor:unconfined
volumes:
- ./matter:/data/
- /run/dbus:/run/dbus:ro
homeassistant:
image: homeassistant/home-assistant:stable
init: true
depends_on:
database:
condition: service_healthy
restart: true
mqtt:
condition: service_healthy
adbd:
condition: service_started
zwavejs2mqtt:
condition: service_healthy
matter-server:
condition: service_started
links:
- mqtt
- mqtt:mqtt.singularity.net
- database
- adbd
- zwavejs2mqtt
- matter-server:matter
restart: unless-stopped
user: '0:118'
networks:
default:
macvlan:
ipv4_address: 192.168.0.60
traefik:
devices:
- /dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C0F00963-if01-port0:/dev/zigbee
volumes:
- /etc/localtime:/etc/localtime:ro
- ./homeassistant:/config
- ./tools:/opt/tools:ro
- ./ssl/certs:/config/certs:ro
- ./.ssh:/config/.ssh:ro
- /run/dbus:/run/dbus:ro
environment:
- PUID=114
- PGID=118
- UMASK=007
- HA_LOG_LEVEL=warning
- TZ=America/New_York
labels:
traefik.enable: true
traefik.http.routers.homeassistant.rule: "Host(`homeassistant.jeffalwilson.com`)"
traefik.http.routers.homeassistant.entrypoints: web,websecure
traefik.http.routers.homeassistant.tls: true
traefik.http.routers.homeassistant.tls.certresolver: production
traefik.http.routers.homeassistant.service: homeassistant
traefik.http.services.homeassistant.loadbalancer.server.port: 8123
entrypoint:
- '/opt/tools/wait-for-it/wait-for-it.sh'
- '-s'
- 'mqtt:1883'
- '--'
- '/opt/tools/wait-for-it/wait-for-it.sh'
- '-s'
- 'database:5432'
- '--'
- '/opt/tools/wait-for-it/wait-for-it.sh'
- '-s'
- 'zwavejs2mqtt:3000'
- '--'
- 'python'
- '-m'
- 'homeassistant'
- '--config'
- '/config'
networks:
traefik:
external: true
name: traefik
macvlan:
external: true
name: HomeNetworkIPv6