- Docker and Docker Compose v2 installed
- Management Console account for UMH Core
This repo is already the full stack. For the official UMH setup guide, see docs.umh.app.
- Configure environment
cp .env.example .envEdit .env and set:
AUTH_TOKEN- from Management ConsolePOSTGRES_PASSWORD- database superuser password (historian)HISTORIAN_WRITER_PASSWORD- writer password (historian)HISTORIAN_READER_PASSWORD- reader password (historian)GF_ADMIN_PASSWORD- Grafana admin password (historian)
Set credentials once before first deployment; the database init scripts apply them on first boot.
- Start the full stack (one command)
docker compose up -d- Verify services
docker compose psUMH Core reads /data/config.yaml and hot-reloads valid changes. For managed
instances, prefer the Management Console Config File editor (with Local
File Sync) to push YAML changes. Direct local edits only affect this host
unless synced via the console. This stack does not preconfigure data flows;
create bridges and historian flows in the Management Console.
| Service | URL | Default Credentials |
|---|---|---|
| NGINX (webhooks) | http://localhost:80 | - |
| NGINX (HTTPS) | https://localhost:443 | - |
| Grafana | http://localhost:3000 | admin / changeme |
| Node-RED | http://localhost:1880 | - |
| Portainer | http://localhost:9000 | Create on first visit |
| MQTT | tcp://localhost:1883 | No auth (dev mode) |
| PgBouncer | tcp://localhost:5432 | Uses POSTGRES_* + historian users |
| MCP (Postgres) | http://localhost:3003 | - |
Node-RED is configured with Projects + Multiplayer enabled in configs/nodered/settings.js.
Note: Node-RED displays a warning on startup about mounting a volume to
/data. This warning can be safely ignored - the stack uses a named volume (nodered-data) which correctly persists all flows, configurations, and installed nodes across container restarts and upgrades.
For LAN access, replace localhost with the host IP (see docs/networking.md).
# Start all services
docker compose up -d
# View logs
docker compose logs -f
# View specific service logs
docker compose logs -f umh
# Check service status
docker compose ps
# Stop all services
docker compose down
# Stop and remove volumes (WARNING: deletes data)
docker compose down -v
# Restart a specific service
docker compose restart grafana
# Pull latest images
docker compose pullUpdate the image tag in docker-compose.yaml and restart:
# Edit docker-compose.yaml → umh service → image tag
docker compose pull umh && docker compose up -dData is preserved in named Docker volumes.
- Networking — Port mappings, DNS, access patterns
- Troubleshooting — Common issues and fixes
- Deployment Lessons — Production-tested tips
- Historian — TimescaleDB setup and backup