genieacs

genieacs

Docker app from geiserx's Repository

Overview

Production-ready Docker image for GenieACS, an open-source TR-069 (CWMP) Auto Configuration Server. Manage and provision CPE devices (routers, ONTs, gateways) via TR-069 protocol with a built-in web UI, REST API, and firmware file server. Multi-arch (amd64/arm64), non-root runtime, integrated log rotation.

Includes 4 services managed by supervisord: CWMP (device communication), NBI (REST API), FS (file server), and UI (web dashboard).

Requires MongoDB. Set GENIEACS_MONGODB_CONNECTION_URL to your MongoDB instance.

More info: https://github.com/GeiserX/genieacs-container

genieacs-container

Release CI License Docker Pulls Artifact Hub

genieacs-container is a Docker image and a Helm chart for GenieACS, the open-source TR-069 ACS that manages routers, ONTs and other CPE devices. GenieACS ships no container of its own; this image runs its four services in one container, for amd64 and arm64, with MongoDB beside it on Docker Compose or on Kubernetes. It packages GenieACS 1.2.16 and does not change it.

The GenieACS Devices list with six simulated CPEs: serial number, product class, software version, IP, SSID, last inform and tags

Features

  • One command gives you a working ACS: the CWMP, NBI, file server and web UI services in one image, MongoDB beside it.
  • Current upstream GenieACS (1.2.16), built from source for amd64 and arm64; the tag is the upstream version plus a build number, 1.2.16.6.
  • A simulated CPE one profile away (--profile testing), so you can try the console before any hardware informs.
  • A Helm chart on Artifact Hub: a bundled MongoDB for evaluation, or your own MongoDB through a Kubernetes Secret for production.
  • Ingress or Gateway API HTTPRoute for the console, liveness and readiness probes, an optional PodDisruptionBudget.
  • Logs rotated for you: each service writes its own file under /var/log/genieacs, kept 30 days, compressed.
  • The GenieACS processes run as an unprivileged user; root is used only to start cron.
  • An MCP server (--profile mcp) that lets an AI assistant work your devices through the NBI.

Quick start

# Docker Compose: GenieACS and MongoDB on one host
curl -fsSLO https://raw.githubusercontent.com/GeiserX/genieacs-container/main/docker-compose.yml
echo "GENIEACS_UI_JWT_SECRET=$(openssl rand -hex 32)" >> .env
docker compose up -d

# Kubernetes: the same image through the Helm chart
helm repo add genieacs https://geiserx.github.io/genieacs-container
helm install genieacs genieacs/genieacs --namespace genieacs --create-namespace \
  --set env.GENIEACS_UI_JWT_SECRET=$(openssl rand -hex 32)

Open http://localhost:3000 (on Kubernetes, kubectl -n genieacs port-forward svc/genieacs-http 3000:3000 first): the first visit runs a setup wizard that creates the admin / admin login, and your devices inform to http://<host>:7547/. Neither the compose file nor the chart has a default GENIEACS_UI_JWT_SECRET, and both refuse to start without one; the echo and --set lines above make a random one. On Kubernetes you can keep it in a Secret instead, with uiJwtSecret.existingSecret. docker run, an external MongoDB, Helmfile and the chart values are in Getting started.

Documentation

The documentation lives at geiserx.github.io/genieacs-container, which is also the Helm chart repository URL.

  • Getting started: Docker Compose, docker run, Helm with a bundled, external or Secret-sourced MongoDB, Helmfile
  • Your first device: the ACS URL on a CPE, the simulator, what a device looks like once it informs
  • Configuration: ports, volumes, environment variables, chart values, security
  • Usage: the four services, the simulator and MCP profiles, extension scripts, logs
  • How it works: what is in the image, what the chart creates
  • Troubleshooting: the console does not open, a device never appears, MongoDB, reporting a bug
  • Development: building the image, how releases are made
  • Related projects: the Ansible, MCP, Home Assistant, simulator and ISP tools

Related projects

genieacs-ansible, genieacs-mcp, genieacs-ha, genieacs-services, genieacs-sim-container, and n8n-nodes-genieacs (archived).

License

GPL-3.0-or-later for this repository (the Dockerfile, the chart and the scripts); the GenieACS it packages is AGPL-3.0.

Requirements

MongoDB container or external MongoDB instance

Download Statistics

322,298
Total Downloads
11,464
This Month
7,864
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
drumsergio/genieacs:latest
Last Updated2026-07-01
First Seen2026-04-06

Runtime arguments

Web UI
http://[IP]:[PORT:3000]/
Network
bridge
Privileged
false

Template configuration

Web UI PortPorttcp

GenieACS web dashboard port

Target
3000
Default
3000
CWMP PortPorttcp

TR-069 CWMP port for CPE device communication

Target
7547
Default
7547
NBI PortPorttcp

Northbound Interface (REST API) port

Target
7557
Default
7557
FS PortPorttcp

File server port for firmware and config uploads

Target
7567
Default
7567
ExtensionsPathrw

Custom extension scripts directory

Target
/opt/genieacs/ext
Default
/mnt/user/appdata/genieacs/ext
LogsPathrw

Log files (rotated daily, 30-day retention)

Target
/var/log/genieacs
Default
/mnt/user/appdata/genieacs/log
MongoDB URLVariable

MongoDB connection string (e.g. mongodb://host:27017)

Target
GENIEACS_MONGODB_CONNECTION_URL
Default
mongodb://mongo:27017
JWT SecretVariable

JWT secret for web UI authentication. Change in production!

Target
GENIEACS_UI_JWT_SECRET
Default
changeme