Files

4.0 KiB

Deployment Guide

This document covers the Python refactor deployment layout for Debian/systemd and OpenWRT/procd.

Runtime assumptions

  • Python 3.11+ is available on the target machine.
  • The project is deployed as source code under /opt/dbussmsforward.
  • Runtime config lives at /etc/dbussmsforward/appsettings.json.
  • For real modem integration, sms_source.kind should be modemmanager and the host must expose the system D-Bus socket.

Recommended target layout:

/opt/dbussmsforward/
  src/
  wwwroot/
  pyproject.toml
  README.md
/etc/dbussmsforward/
  appsettings.json

A starter production-like config is provided at deploy/common/appsettings.deploy.json.


Debian / systemd

Install dependencies

sudo apt update
sudo apt install -y python3 python3-venv python3-pip dbus modemmanager
sudo systemctl enable --now dbus ModemManager

Copy project files

sudo mkdir -p /opt/dbussmsforward /etc/dbussmsforward
sudo cp -R src wwwroot pyproject.toml README.md /opt/dbussmsforward/
sudo cp deploy/common/appsettings.deploy.json /etc/dbussmsforward/appsettings.json
sudo cp deploy/debian/dbussmsforward.service /etc/systemd/system/dbussmsforward.service

Start service

sudo systemctl daemon-reload
sudo systemctl enable --now dbussmsforward
sudo systemctl status dbussmsforward

Logs

journalctl -u dbussmsforward -f

One-shot installer

sudo sh deploy/debian/install.sh

The installer now runs env-check --format json before enabling the service. If the check fails, installation stops and writes a machine-readable report to:

/etc/dbussmsforward/install-env-check.json

OpenWRT / procd

Install dependencies

opkg update
opkg install python3 python3-light dbus modemmanager
/etc/init.d/dbus enable && /etc/init.d/dbus start
/etc/init.d/modemmanager enable && /etc/init.d/modemmanager start

Depending on firmware, you may need extra Python packages or to bundle a venv/site-packages tree yourself.

Copy project files

mkdir -p /opt/dbussmsforward /etc/dbussmsforward
cp -R src wwwroot pyproject.toml README.md /opt/dbussmsforward/
cp deploy/common/appsettings.deploy.json /etc/dbussmsforward/appsettings.json
cp deploy/openwrt/dbussmsforward.init /etc/init.d/dbussmsforward
chmod +x /etc/init.d/dbussmsforward

Start service

/etc/init.d/dbussmsforward enable
/etc/init.d/dbussmsforward start
/etc/init.d/dbussmsforward status

Logs

logread -e dbussmsforward

One-shot installer

sh deploy/openwrt/install.sh

The installer now runs env-check --format json before enabling the init script. If the check fails, installation stops and writes a machine-readable report to:

/etc/dbussmsforward/install-env-check.json

Config notes

The deploy template defaults to:

  • forwarding.enabled_channels = ["autman_push"]
  • notifications.autman_push.enabled = true
  • sms_source.kind = "modemmanager"
  • sms_source.modem_object_path = "auto"

You should replace:

  • forwarding.device_name
  • notifications.autman_push.api_url
  • notifications.autman_push.access_token

If you want a safer smoke test before connecting to ModemManager, switch to:

"notifications": { "console": { "enabled": true } },
"sms_source": {
  "kind": "file",
  "path": "tests/fixtures/messages.json"
}

Verification checklist

Before enabling the service permanently:

PYTHONPATH=src python3 -m dbussmsforward.cli validate-config --config deploy/common/appsettings.deploy.json
PYTHONPATH=src python3 -m dbussmsforward.cli env-check --config deploy/common/appsettings.deploy.json --format json

The JSON output contains a results array plus a summary object, making it suitable for CI, installers, and deployment health probes.

For a local foreground smoke test:

PYTHONPATH=src python3 -m dbussmsforward.cli run --config /etc/dbussmsforward/appsettings.json --iterations 1

For actual daemon/service mode, the service files use --iterations 0, which means keep polling forever.