The official image is
paradoxalarminterface/pai, available on Docker Hub. Supported architectures: 386, amd64, armv6, armv7, and arm64.Pull the image
Run PAI
Create your config file
Copy the example config and edit it for your setup.Edit
/etc/pai/pai.conf to set your connection type, serial port or IP module address, and any interfaces you want to enable.Run the container
The container reads its configuration from
/etc/pai/pai.conf by default (set via PAI_CONFIG_FILE in the image). Mount your config directory as a volume.- Serial connection
- IP150 module
Pass through your serial device with Adjust
--device and mount the config directory:/dev/ttyUSB0 to match your device path. Common paths include /dev/ttyUSB0 for USB adapters and /dev/ttyS1 for onboard serial ports.Volume mounts
The image declares two volumes you should always mount:| Container path | Purpose |
|---|---|
/etc/pai | Configuration directory. Contains pai.conf. |
/var/log/pai | Log directory. PAI writes paradox.log here when file logging is enabled. |
Environment variables
Every configuration key can be overridden with an environment variable prefixed byPAI_. For example, MQTT_HOST becomes PAI_MQTT_HOST.
Environment variables are applied on top of the config file. If the same key appears in both, the environment variable wins.
Docker Compose
PAI only
docker-compose.yml
PAI with Mosquitto MQTT broker
If you do not have a separate MQTT broker, you can run Mosquitto alongside PAI in the same Compose project.docker-compose.yml
mosquitto as the MQTT host. No port mapping is needed for PAI to reach the broker.
Exposed ports
The image exposes two ports:| Port | Purpose |
|---|---|
18839/tcp | MQTT client bind port (PAI_MQTT_BIND_PORT). PAI binds outgoing MQTT connections to this port when MQTT_BIND_PORT is set. Typically not needed unless your network requires a fixed source port. |
10000/tcp | IP Socket Interface — used when IP_INTERFACE_ENABLE = True to expose a local IP150-compatible endpoint. |
Default entrypoint
The container runspai-service as its default command. This is the PAI service entrypoint installed by pip install .. The process will automatically reconnect to the panel if the connection is lost.