[GH-ISSUE #691] Proposal: Add GenieACS (TR-069 ACS) sample with MongoDB #21583

Open
opened 2026-08-16 09:25:30 -05:00 by GiteaMirror · 4 comments
Owner

Originally created by @GeiserX on GitHub (Mar 8, 2026).
Original GitHub issue: https://github.com/docker/awesome-compose/issues/691

Proposal: GenieACS / MongoDB Compose Sample

What is GenieACS?

GenieACS is an open-source Auto Configuration Server (ACS) for the TR-069 protocol (CWMP). It is widely used by ISPs, network administrators, and homelabbers to manage CPE devices (routers, ONTs, gateways) remotely — performing firmware upgrades, configuration changes, diagnostics, and monitoring at scale.

Why add it to Awesome Compose?

  • Popular and actively used: GenieACS is the most popular open-source TR-069 ACS, with 1.4k+ GitHub stars
  • Multi-service architecture: A natural fit for Docker Compose — it consists of multiple cooperating services (CWMP server, NBI API, file server, web UI) plus a MongoDB backend
  • Underserved in examples: Despite being widely deployed via Docker, there is no canonical Compose sample for GenieACS in this collection
  • Networking/IoT category: Fills a gap in the repository — there are currently no samples related to network device management or TR-069

Proposed structure

genieacs-mongodb/
├── compose.yaml
└── README.md

Services

Service Image Port Description
genieacs drumsergio/genieacs 7547, 7557, 7567, 3000 GenieACS (CWMP, NBI, FS, UI)
mongo mongo:8 27017 (internal) MongoDB database

Reference

An existing production-ready Docker Compose deployment is maintained at GeiserX/genieacs-docker. The awesome-compose sample would be a simplified, self-contained version following this repository's conventions.

I am happy to submit the PR once the proposal is reviewed. Let me know if you have any feedback on the scope or structure.

Originally created by @GeiserX on GitHub (Mar 8, 2026). Original GitHub issue: https://github.com/docker/awesome-compose/issues/691 ## Proposal: GenieACS / MongoDB Compose Sample ### What is GenieACS? [GenieACS](https://genieacs.com/) is an open-source Auto Configuration Server (ACS) for the TR-069 protocol (CWMP). It is widely used by ISPs, network administrators, and homelabbers to manage CPE devices (routers, ONTs, gateways) remotely — performing firmware upgrades, configuration changes, diagnostics, and monitoring at scale. ### Why add it to Awesome Compose? - **Popular and actively used**: GenieACS is the most popular open-source TR-069 ACS, with 1.4k+ GitHub stars - **Multi-service architecture**: A natural fit for Docker Compose — it consists of multiple cooperating services (CWMP server, NBI API, file server, web UI) plus a MongoDB backend - **Underserved in examples**: Despite being widely deployed via Docker, there is no canonical Compose sample for GenieACS in this collection - **Networking/IoT category**: Fills a gap in the repository — there are currently no samples related to network device management or TR-069 ### Proposed structure ``` genieacs-mongodb/ ├── compose.yaml └── README.md ``` ### Services | Service | Image | Port | Description | |---------|-------|------|-------------| | `genieacs` | `drumsergio/genieacs` | 7547, 7557, 7567, 3000 | GenieACS (CWMP, NBI, FS, UI) | | `mongo` | `mongo:8` | 27017 (internal) | MongoDB database | ### Reference An existing production-ready Docker Compose deployment is maintained at [GeiserX/genieacs-docker](https://github.com/GeiserX/genieacs-docker). The awesome-compose sample would be a simplified, self-contained version following this repository's conventions. I am happy to submit the PR once the proposal is reviewed. Let me know if you have any feedback on the scope or structure.
Author
Owner

@vaguul commented on GitHub (Jun 1, 2026):

Not a maintainer, but based on this repo's CONTRIBUTING.md and existing samples, I think the scope would probably land better if it is kept as a local/dev sample rather than a production-ready deployment.

A good PR shape would likely be:

  • genieacs-mongodb/compose.yaml
  • genieacs-mongodb/README.md
  • one entry in the root README.md

I would also avoid exposing MongoDB on the host unless the sample really needs it. Most examples here keep the database as an internal service and document only the app/UI ports users need to open. The README should probably call out that users must replace any sample credentials before real use, matching the repo's "not production ready" note.

<!-- gh-comment-id:4588624242 --> @vaguul commented on GitHub (Jun 1, 2026): Not a maintainer, but based on this repo's CONTRIBUTING.md and existing samples, I think the scope would probably land better if it is kept as a local/dev sample rather than a production-ready deployment. A good PR shape would likely be: - `genieacs-mongodb/compose.yaml` - `genieacs-mongodb/README.md` - one entry in the root `README.md` I would also avoid exposing MongoDB on the host unless the sample really needs it. Most examples here keep the database as an internal service and document only the app/UI ports users need to open. The README should probably call out that users must replace any sample credentials before real use, matching the repo's "not production ready" note.
Author
Owner

@GeiserX commented on GitHub (Jun 1, 2026):

Thanks for the input, @vaguul — that all lines up with the repo's conventions, so I've scoped the sample accordingly:

  • Local/dev sample, not production-ready — it'll go under the "Basic setups (not production ready)" list, structured as genieacs-mongodb/compose.yaml + genieacs-mongodb/README.md + one root README.md entry.
  • MongoDB stays internal — expose: 27017 only, reachable just from the Compose network; the host publishes only the GenieACS ports (7547/7557/7567/3000).
  • Credentials warning — the README calls out that GENIEACS_UI_JWT_SECRET is a sample value that must be replaced, and that Mongo auth should be enabled, before any real use.

I've tested the stack locally (compose validates, Mongo comes up healthy, UI returns HTTP 200, Mongo not published on the host). Happy to open the PR whenever a maintainer is OK with the scope.

<!-- gh-comment-id:4592877063 --> @GeiserX commented on GitHub (Jun 1, 2026): Thanks for the input, @vaguul — that all lines up with the repo's conventions, so I've scoped the sample accordingly: - **Local/dev sample, not production-ready** — it'll go under the "Basic setups (not production ready)" list, structured as `genieacs-mongodb/compose.yaml` + `genieacs-mongodb/README.md` + one root `README.md` entry. - **MongoDB stays internal** — `expose: 27017` only, reachable just from the Compose network; the host publishes only the GenieACS ports (7547/7557/7567/3000). - **Credentials warning** — the README calls out that `GENIEACS_UI_JWT_SECRET` is a sample value that must be replaced, and that Mongo auth should be enabled, before any real use. I've tested the stack locally (compose validates, Mongo comes up healthy, UI returns HTTP 200, Mongo not published on the host). Happy to open the PR whenever a maintainer is OK with the scope.
Author
Owner

@vaguul commented on GitHub (Jun 1, 2026):

That scope sounds right to me. Keeping Mongo internal and putting it under the basic/local examples should make the maintainer review much easier.

If you open the PR, I would include the exact validation you listed in the PR body:

  • docker compose config passes
  • Mongo healthcheck becomes healthy
  • UI returns HTTP 200
  • Mongo is not published on the host

That gives reviewers a quick safety checklist without having to infer the networking intent from the compose file.

<!-- gh-comment-id:4595592898 --> @vaguul commented on GitHub (Jun 1, 2026): That scope sounds right to me. Keeping Mongo internal and putting it under the basic/local examples should make the maintainer review much easier. If you open the PR, I would include the exact validation you listed in the PR body: - `docker compose config` passes - Mongo healthcheck becomes healthy - UI returns HTTP 200 - Mongo is not published on the host That gives reviewers a quick safety checklist without having to infer the networking intent from the compose file.
Author
Owner

@GeiserX commented on GitHub (Jun 1, 2026):

Thanks @vaguul — that's exactly how I scoped it. PR is up at docker/awesome-compose#755, and I included the full validation checklist in the body as you suggested:

  • docker compose config passes
  • Mongo healthcheck becomes healthy
  • UI returns HTTP 200
  • Mongo is not published on the host (internal 27017/tcp only)

DCO check is green and it's mergeable. Appreciate the guidance on shaping this for an easier maintainer review.

<!-- gh-comment-id:4596981249 --> @GeiserX commented on GitHub (Jun 1, 2026): Thanks @vaguul — that's exactly how I scoped it. PR is up at docker/awesome-compose#755, and I included the full validation checklist in the body as you suggested: - `docker compose config` passes - Mongo healthcheck becomes healthy - UI returns HTTP 200 - Mongo is not published on the host (internal `27017/tcp` only) DCO check is green and it's mergeable. Appreciate the guidance on shaping this for an easier maintainer review.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/awesome-compose#21583