Fully automated deployment of a 5G network using Open5GS (core network) and UERANSIM (gNB + UE simulator), orchestrated with Docker Compose.
No manual configuration file editing required — entrypoints handle IP assignment and service startup automatically.
- Docker
- Docker Compose
- Python 3
- Node.js + npm (for the Web UI only)
python3 deployment/generate_docker_compose.py <num_ue>Replace <num_ue> with the number of UEs you want to simulate.
sudo docker-compose up --build --force-recreate -dsudo docker-compose --profile ran up --build -dRedirect container logs to files for easy inspection:
docker logs deployment_gnb_1 &> log_gnb.txt
docker logs deployment_ue_1 &> log_ue.txtLook for:
NG Setup procedure is successfulin the gNB logPDU Session establishment is successfulin the UE log
The Open5GS Web UI lets you manage subscribers (add/edit/delete UEs).
cd deployment/webui
npm install
npm run build
npm startThen open http://127.0.0.1:9999 in Firefox (Chrome may not work) and log in with admin / 1423.
The deployment supports splitting the UPF into a separate container — useful for edge computing scenarios where you want user-plane traffic processed close to the UE rather than routed through the full core.
All core functions run in the main core container; the UPF runs in its own independent container. The gNB and UEs connect to the same core.
deployment/
├── Dockerfile.open5gs # 5G core network functions
├── Dockerfile.gnb # gNB (UERANSIM)
├── Dockerfile.ue # UE simulator (UERANSIM)
├── Dockerfile.ueransim # Base UERANSIM image
├── Dockerfile.webui # Open5GS Web UI
├── docker-compose.yml # Generated by generate_docker_compose.py
├── generate_docker_compose.py
├── entrypoint-core.sh
├── entrypoint-gnb.sh
├── entrypoint-ue.sh
├── mongo-init.js
└── webui/ # Open5GS subscriber management UI