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.kindshould bemodemmanagerand 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 = truesms_source.kind = "modemmanager"sms_source.modem_object_path = "auto"
You should replace:
forwarding.device_namenotifications.autman_push.api_urlnotifications.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.