deandegil/genieacs

By deandegil

β€’Updated 6 months ago

Production-ready GenieACS (TR-069 ACS) Docker image with Kubernetes support

Image
Networking
Content management system
Monitoring & observability
0

1.3K

deandegil/genieacs repository overview

⁠GenieACS Docker

Production-ready Docker containers and deployment tools for GenieACS - an open-source implementation of TR-069 ACS (Auto Configuration Server).


β πŸš€ Quick Start

⁠Docker Run
docker run -d \
  --name genieacs \
  -p 7547:7547 \
  -p 7557:7557 \
  -p 7567:7567 \
  -p 3000:3000 \
  -e GENIEACS_MONGODB_CONNECTION_URL=mongodb://your-mongo-host/genieacs \
  -e GENIEACS_UI_JWT_SECRET=changeme \
  deandegil/genieacs:latest
⁠Docker Compose
# Clone repository
git clone https://github.com/deandegil/genieacs-docker.git
cd genieacs-docker

# Start services
docker compose up -d

# Access UI
# http://localhost:3000
⁠Portainer
  1. Go to Stacks β†’ Add Stack
  2. Paste the docker-compose.yml from repository
  3. Deploy the stack
  4. Access UI at http://server-ip:3000⁠

⁠✨ Features

  • 🐳 Production-ready Docker images for GenieACS v1.2.13.2
  • ☸️ Official Helm chart for Kubernetes deployments
  • πŸ”„ Multi-stage builds for optimized image size
  • πŸ”’ Security best practices (non-root user, security contexts)
  • πŸ“Š Health checks and monitoring support
  • πŸ“¦ Multi-architecture support (amd64, arm64)
  • πŸ› οΈ Easy configuration via environment variables
  • πŸ“ˆ Scalable with load balancing support

β πŸ“‹ Ports

PortServiceDescription
7547CWMPTR-069 ACS port for device communication
7557NBINorthbound Interface API
7567FSFile Server for firmware/configuration
3000UIWeb-based user interface

β πŸ”§ Environment Variables

VariableDescriptionRequiredDefault
GENIEACS_MONGODB_CONNECTION_URLMongoDB connection stringβœ… Yes-
GENIEACS_UI_JWT_SECRETJWT secret for UI authenticationβœ… Yeschangeme
GENIEACS_EXT_DIRExtension scripts directory❌ No/opt/genieacs/ext
GENIEACS_CWMP_ACCESS_LOG_FILECWMP access log path❌ No/var/log/genieacs/genieacs-cwmp-access.log
GENIEACS_NBI_ACCESS_LOG_FILENBI access log path❌ No/var/log/genieacs/genieacs-nbi-access.log
GENIEACS_FS_ACCESS_LOG_FILEFS access log path❌ No/var/log/genieacs/genieacs-fs-access.log
GENIEACS_UI_ACCESS_LOG_FILEUI access log path❌ No/var/log/genieacs/genieacs-ui-access.log
GENIEACS_DEBUG_FILEDebug log path❌ No/var/log/genieacs/genieacs-debug.yaml

β πŸ“¦ Tags

  • latest - Most recent stable version
  • 1.2.13.2 - Specific GenieACS version
  • 1.2.13.x - Version specific tags (when available)

β πŸ—„οΈ Volumes

  • /opt/genieacs/ext - Extension scripts directory
  • /var/log/genieacs - Log files directory

⁠🐳 Docker Compose Example

Complete docker-compose.yml with MongoDB:

version: '3.8'

services:
  genieacs:
    image: deandegil/genieacs:latest
    container_name: genieacs
    depends_on:
      mongo:
        condition: service_healthy
    ports:
      - "7547:7547"  # CWMP
      - "7557:7557"  # NBI
      - "7567:7567"  # FS
      - "3000:3000"  # UI
    environment:
      GENIEACS_MONGODB_CONNECTION_URL: mongodb://mongo/genieacs
      GENIEACS_UI_JWT_SECRET: changeme
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "wget", "--spider", "--quiet", "http://localhost:3000"]
      interval: 30s
      timeout: 10s
      retries: 3

  mongo:
    image: mongo:8.0
    container_name: mongo
    restart: unless-stopped
    volumes:
      - mongo-data:/data/db
    healthcheck:
      test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  mongo-data:

β πŸ” Security Considerations

  • βœ… Container runs as non-root user (genieacs)
  • βœ… Security contexts configured for Kubernetes
  • ⚠️ IMPORTANT: Change GENIEACS_UI_JWT_SECRET in production
  • ⚠️ IMPORTANT: Enable MongoDB authentication for production
  • πŸ”’ Use reverse proxy (Nginx/Traefik) for HTTPS in production

β πŸ“š Documentation


β πŸ› οΈ Kubernetes/Helm Deployment

⁠Using Official Helm Chart
# Add chart repository
helm repo add genieacs https://deandegil.github.io/genieacs-docker
helm repo update

# Install GenieACS
helm install genieacs genieacs/genieacs \
  --namespace genieacs \
  --create-namespace \
  --set mongodb.enabled=true \
  --set env.GENIEACS_UI_JWT_SECRET=your-secret-here
⁠Using Helmfile

See repository for complete Helmfile example with MongoDB integration.


β πŸ› Troubleshooting

⁠Container not starting?
# Check logs
docker logs genieacs

# Check container status
docker inspect genieacs
⁠MongoDB connection error?
  • Verify MongoDB is running and accessible
  • Check connection string format
  • Ensure authentication credentials are correct
⁠Web UI not responding?
# Test UI endpoint
curl http://localhost:3000

# Check UI logs specifically
docker compose logs genieacs | grep "genieacs-ui"

β πŸ”„ Updates & Versioning

  • Regular updates with latest GenieACS releases
  • Security patches applied promptly
  • Backward compatibility maintained where possible

β πŸ“ License

Licensed under the same license as GenieACS. See repository for details.


β πŸ’¬ Support


β πŸ‘€ Maintainer

Dean Degil - GitHub⁠


β πŸ™ Contributing

Contributions are welcome! Please see repository for contribution guidelines.


Last Updated: January 26, 2026

Tag summary

Content type

Image

Digest

sha256:ea6e8c97c…

Size

193.4 MB

Last updated

6 months ago

docker pull deandegil/genieacs