Domoticz — a lightweight open-source home automation system for monitoring and controlling lights, switches, sensors, meters and more, with a mobile-friendly UI. Deployed as a single host-networked Nomad service.
Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.
Source ↗ Project ↗ ★ 3.8k ⚑ Report an issue
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "domoticz"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The Domoticz container image. Pin a tag in production.
image = "domoticz/domoticz:stable"
# Host port for the Domoticz web UI (HTTP).
port = 8080
# Host port for the Domoticz web UI (HTTPS).
https_port = 8443
# Named volume for the Domoticz database and config (/opt/domoticz/userdata).
data_volume = "domoticz_userdata"
# Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". Pin to the node on your device LAN.
constraints = []
# The task resources.
resources = {
cpu = 500
memory = 512
}
| Name | Type | Default | Description |
|---|---|---|---|
| job_name | string | "domoticz" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "domoticz/domoticz:stable" | The Domoticz container image. Pin a tag in production. |
| port | number | 8080 | Host port for the Domoticz web UI (HTTP). |
| https_port | number | 8443 | Host port for the Domoticz web UI (HTTPS). |
| data_volume | string | "domoticz_userdata" | Named volume for the Domoticz database and config (/opt/domoticz/userdata). |
| constraints | list | [] | Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". Pin to the node on your device LAN. |
| resources | object | {
cpu = 500
memory = 512
} | The task resources. |
No variables match.
This pack stores data in one Docker named volume:
domoticz_userdata
restic
# Run on the node hosting this pack. Point restic at your repo first: # export RESTIC_REPOSITORY="s3:https://<account>.r2.cloudflarestorage.com/<bucket>" # export RESTIC_PASSWORD="<repo-password>" # export AWS_ACCESS_KEY_ID=<key> AWS_SECRET_ACCESS_KEY=<secret> restic backup \ /var/lib/docker/volumes/domoticz_userdata/_data
rclone (sync to S3/R2)
rclone sync /var/lib/docker/volumes/domoticz_userdata/_data backup:<bucket>/domoticz_userdata
Paths assume the default Docker volume location (/var/lib/docker/volumes). Restore by stopping the job, restoring files into the same volume, and re-running the pack.
Domoticz is a lightweight, open-source home automation system. It lets you monitor and control a wide range of devices — lights and switches, temperature/humidity/energy sensors, smart meters, weather stations and more — through a fast, mobile-friendly web UI, with events, scripting (Blockly/Lua/dzVents) and notifications. It runs happily on modest hardware.
This pack runs Domoticz as a single host-networked Nomad service. Host networking lets it reach devices and discovery on your LAN.
nomad-pack run domoticz --registry=nomploy
Open http://<node-ip>:8080.
| Variable | Default | Description |
|---|---|---|
image |
domoticz/domoticz:stable |
Container image (pin a tag in production). |
port |
8080 |
Host port for the web UI (HTTP). |
https_port |
8443 |
Host port for the web UI (HTTPS). |
data_volume |
domoticz_userdata |
Volume for the database/config (/opt/domoticz/userdata). |
resources |
500 MHz / 512 MB | CPU and memory for the task. |
The HTTPS port is moved off the privileged 443 (to 8443 by default) via
EXTRA_CMD_ARG so it doesn't clash with an ingress proxy. To use USB radios
(Z-Wave/Zigbee/RFXCOM), add a devices entry to the Docker task for the
relevant /dev/tty* path and pin the job to that node.