1717# - migrate: Run database migrations
1818# - import-tags: Import node tags from JSON file
1919#
20- # Data Directory Structure:
21- # ./data/
20+ # Data Directory (DATA_HOME):
21+ # The DATA_HOME environment variable controls where all service data is stored.
22+ # Default: ./data (local) or /data (in containers)
23+ #
24+ # Structure:
25+ # ${DATA_HOME}/
2226# ├── collector/
27+ # │ ├── meshcore.db # SQLite database
2328# │ └── tags.json # Node tags for import
2429# └── web/
2530# └── members.json # Network members list
@@ -175,17 +180,16 @@ services:
175180 mqtt:
176181 condition: service_healthy
177182 volumes:
178- - meshcore_data:/data
179- # Mount collector data directory for tags.json (optional)
180- - ${COLLECTOR_DATA_PATH:-./data/collector}:/app/collector-data:ro
183+ # Mount data directory (contains collector/meshcore.db and collector/tags.json)
184+ - ${DATA_HOME:-./data}:/data
181185 environment:
182186 - LOG_LEVEL=${LOG_LEVEL:-INFO}
183187 - MQTT_HOST=${MQTT_HOST:-mqtt}
184188 - MQTT_PORT=${MQTT_PORT:-1883}
185189 - MQTT_USERNAME=${MQTT_USERNAME:-}
186190 - MQTT_PASSWORD=${MQTT_PASSWORD:-}
187191 - MQTT_PREFIX=${MQTT_PREFIX:-meshcore}
188- - DATABASE_URL=sqlite://// data/meshcore.db
192+ - DATA_HOME=/ data
189193 # Webhook configuration
190194 - WEBHOOK_ADVERTISEMENT_URL=${WEBHOOK_ADVERTISEMENT_URL:-}
191195 - WEBHOOK_ADVERTISEMENT_SECRET=${WEBHOOK_ADVERTISEMENT_SECRET:-}
@@ -227,15 +231,16 @@ services:
227231 ports:
228232 - "${API_PORT:-8000}:8000"
229233 volumes:
230- - meshcore_data:/data
234+ # Mount data directory (uses collector/meshcore.db)
235+ - ${DATA_HOME:-./data}:/data
231236 environment:
232237 - LOG_LEVEL=${LOG_LEVEL:-INFO}
233238 - MQTT_HOST=${MQTT_HOST:-mqtt}
234239 - MQTT_PORT=${MQTT_PORT:-1883}
235240 - MQTT_USERNAME=${MQTT_USERNAME:-}
236241 - MQTT_PASSWORD=${MQTT_PASSWORD:-}
237242 - MQTT_PREFIX=${MQTT_PREFIX:-meshcore}
238- - DATABASE_URL=sqlite://// data/meshcore.db
243+ - DATA_HOME=/ data
239244 - API_HOST=0.0.0.0
240245 - API_PORT=8000
241246 - API_READ_KEY=${API_READ_KEY:-}
@@ -266,23 +271,23 @@ services:
266271 condition: service_healthy
267272 ports:
268273 - "${WEB_PORT:-8080}:8080"
274+ volumes:
275+ # Mount data directory (uses web/members.json)
276+ - ${DATA_HOME:-./data}:/data
269277 environment:
270278 - LOG_LEVEL=${LOG_LEVEL:-INFO}
271279 - API_BASE_URL=http://api:8000
272280 - API_KEY=${API_READ_KEY:-}
273281 - WEB_HOST=0.0.0.0
274282 - WEB_PORT=8080
283+ - DATA_HOME=/data
275284 - NETWORK_NAME=${NETWORK_NAME:-MeshCore Network}
276285 - NETWORK_CITY=${NETWORK_CITY:-}
277286 - NETWORK_COUNTRY=${NETWORK_COUNTRY:-}
278287 - NETWORK_LOCATION=${NETWORK_LOCATION:-}
279288 - NETWORK_RADIO_CONFIG=${NETWORK_RADIO_CONFIG:-}
280289 - NETWORK_CONTACT_EMAIL=${NETWORK_CONTACT_EMAIL:-}
281290 - NETWORK_CONTACT_DISCORD=${NETWORK_CONTACT_DISCORD:-}
282- - MEMBERS_FILE=${MEMBERS_FILE:-/app/web-data/members.json}
283- volumes:
284- # Mount web data directory for members.json (optional)
285- - ${WEB_DATA_PATH:-./data/web}:/app/web-data:ro
286291 command: ["web"]
287292 healthcheck:
288293 test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8080/health')"]
@@ -302,9 +307,10 @@ services:
302307 profiles:
303308 - migrate
304309 volumes:
305- - meshcore_data:/data
310+ # Mount data directory (uses collector/meshcore.db)
311+ - ${DATA_HOME:-./data}:/data
306312 environment:
307- - DATABASE_URL=sqlite://// data/meshcore.db
313+ - DATA_HOME=/ data
308314 command: ["db", "upgrade"]
309315
310316 # ==========================================================================
@@ -318,12 +324,13 @@ services:
318324 profiles:
319325 - import-tags
320326 volumes:
321- - meshcore_data:/ data
322- - ${COLLECTOR_DATA_PATH :-./data/collector }:/app/collector- data:ro
327+ # Mount data directory (uses collector/tags.json and collector/meshcore.db)
328+ - ${DATA_HOME :-./data}:/data
323329 environment:
324- - DATABASE_URL=sqlite://// data/meshcore.db
330+ - DATA_HOME=/ data
325331 - LOG_LEVEL=${LOG_LEVEL:-INFO}
326- command: ["collector", "import-tags", "/app/collector-data/tags.json"]
332+ # Uses default tags file: /data/collector/tags.json
333+ command: ["collector", "import-tags"]
327334
328335# ==========================================================================
329336# Volumes
@@ -333,5 +340,3 @@ volumes:
333340 name: meshcore_mosquitto_data
334341 mosquitto_log:
335342 name: meshcore_mosquitto_log
336- meshcore_data:
337- name: meshcore_data
0 commit comments