Skip to content

genieacs-services

genieacs-services

Tag GitHub Stars License: GPL-3.0-or-later


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.

  • Getting started


    Install GenieACS where the units look for it, copy the units, and check that the four services answer.

  • Usage


    Start, stop, logs and updates with systemd, and the two ways to run the Supervisord config.

  • Configuration


    The paths and user each file expects, a different install path, and the GenieACS environment file.

  • Troubleshooting


    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 genieacs user, 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 active while 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

License

genieacs-services is released under the GPL-3.0-or-later license.