genieacs-services¶
genieacs-services holds the systemd units and the Supervisord config that run GenieACS, the open-source TR-069 ACS, on a Linux host without containers. GenieACS's installation guide has you paste four units into an editor one at a time; here they are as files you copy with one command, and the Supervisord config is the one the genieacs-container image runs. Start with Getting started, then Usage.
-
Install GenieACS where the units look for it, copy the units, and check that the four services answer.
-
Start, stop, logs and updates with systemd, and the two ways to run the Supervisord config.
-
The paths and user each file expects, a different install path, and the GenieACS environment file.
-
Symptoms seen on a real install, what causes each, and the fix.
What a working install looks like¶
The README's three commands on a fresh Ubuntu 24.04 host with GenieACS 1.2.16 and MongoDB 8.0:
$ systemctl status genieacs-cwmp genieacs-nbi genieacs-fs genieacs-ui --no-pager --lines=0 | grep -E '●|Active'
● genieacs-cwmp.service - GenieACS CWMP
Active: active (running) since Wed 2026-09-30 20:40:30 CEST; 8s ago
● genieacs-nbi.service - GenieACS NBI
Active: active (running) since Wed 2026-09-30 20:40:30 CEST; 8s ago
● genieacs-fs.service - GenieACS FS
Active: active (running) since Wed 2026-09-30 20:40:30 CEST; 8s ago
● genieacs-ui.service - GenieACS UI
Active: active (running) since Wed 2026-09-30 20:40:30 CEST; 8s ago
$ curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:7557/devices
200
Four active (running) lines and a 200 from the northbound API. Getting started shows the rest of the check.
How it runs¶
flowchart LR
PM[systemd or Supervisord]
CPE[CPE devices]
subgraph SVC [GenieACS, run as the genieacs user]
CWMP[genieacs-cwmp<br/>port 7547]
NBI[genieacs-nbi<br/>port 7557]
FS[genieacs-fs<br/>port 7567]
UI[genieacs-ui<br/>port 3000]
end
DB[(MongoDB)]
PM -->|starts| SVC
CPE -->|TR-069 inform| CWMP
CPE -->|firmware downloads| FS
SVC --> DB
- Each systemd unit runs one GenieACS service as the
genieacsuser, with its settings from/opt/genieacs/genieacs.env. The four are independent; they share only MongoDB. - Each service starts one primary process, which forks one worker per CPU core by default.
- The Supervisord config runs the same four services and restarts any that exits. The systemd units do not restart a crashed service.
- How it works goes through the files line by line and shows how the units differ from GenieACS's own.
What it does not do¶
- It does not install GenieACS, Node.js or MongoDB. Getting started shows the one command that puts GenieACS where the units look.
- The units do not wait for MongoDB. If it is down, the services still show
activewhile their workers die; see Troubleshooting. - It does not rotate logs or set up TLS. GenieACS's installation guide has a logrotate config, and its HTTPS page covers certificates.
- For Docker or Kubernetes, use genieacs-container instead.
Getting help¶
- Something broken: Troubleshooting, then an issue with what its "Reporting a bug" section lists.
- A security problem: the security policy, never a public issue.
- The GenieACS family: genieacs-container (Docker image and Helm chart), genieacs-ansible (Ansible collection), genieacs-mcp (MCP server), genieacs-ha (Home Assistant integration), genieacs-sim-container (the GenieACS simulator in Docker).
License¶
genieacs-services is released under the GPL-3.0-or-later license.