### Install Docker with Quick Setup Source: https://free5gc.org/guide/quick-setup?q= Append the '-d' flag to the setup script to include Docker installation. ```bash source quick-setup.sh -i -d ``` -------------------------------- ### Install Golang-lint with Quick Setup Source: https://free5gc.org/guide/quick-setup?q= Append the '-l' flag to the setup script to include Golang-lint installation. ```bash source quick-setup.sh -i -l ``` -------------------------------- ### Install Golang-lint and Docker with Quick Setup Source: https://free5gc.org/guide/quick-setup?q= Append both '-l' and '-d' flags to install both Golang-lint and Docker. ```bash source quick-setup.sh -i -l -d ``` -------------------------------- ### Run free5GC Quick Setup Script Source: https://free5gc.org/guide/quick-setup?q= Execute the setup script using the 'source' command, providing your network interface name. This script installs dependencies, configures the network, and builds free5GC components. ```bash # Example: source quick-setup.sh -i eth0 source quick-setup.sh -i ``` -------------------------------- ### Install and Compile 5G-DPOP Source: https://free5gc.org/blog/20260211/20260211 Clone the repository, run the setup script, generate the vmlinux header, and build the project. ```bash # 1. Clone the project git clone https://github.com/solar224/5G-DPOP.git cd 5G-DPOP # 2. Run environment setup script chmod +x scripts/setup_env.sh ./scripts/setup_env.sh # 3. Generate vmlinux.h and compile sudo bpftool btf dump file /sys/kernel/btf/vmlinux format c > internal/ebpf/bpf/vmlinux.h make all # 4. Install frontend dependencies cd web && npm install && cd .. ``` -------------------------------- ### Install TNGFUE Source: https://free5gc.org/guide/TNGF/tngfue-installation Commands to clone the TNGFUE repository and initiate the automated setup script. ```bash git clone https://github.com/free5gc/tngfue.git cd tngfue ``` ```bash nano prepare.sh ``` ```bash ./prepare.sh ``` -------------------------------- ### Install Go 1.25.5 (New Installation) Source: https://free5gc.org/guide/3-install-free5gc?q= Install Go 1.25.5 if Go is not already installed. Configures environment variables for bash. ```bash wget https://dl.google.com/go/go1.25.5.linux-amd64.tar.gz sudo tar -C /usr/local -zxvf go1.25.5.linux-amd64.tar.gz mkdir -p ~/go/{bin,pkg,src} # The following assume that your shell is bash: echo 'export GOPATH=HOME/go'>> ~/.bashrc echo 'export GOROOT=/usr/local/go'>> ~/.bashrc echo 'export PATH=HOME/go'>> ~/.bashrc echo 'export GOROOT=/usr/local/go'>> ~/.bashrc echo 'export PATH=PATH:GOPATH/bin:GOPATH/bin:GOROOT/bin' >> ~/.bashrc echo 'export GO111MODULE=auto' >> ~/.bashrc source ~/.bashrc ``` -------------------------------- ### Install Go 1.25.5 (Existing Version) Source: https://free5gc.org/guide/3-install-free5gc?q= Remove an existing Go installation and install Go 1.25.5. Assumes Go is in the default location. ```bash sudo rm -rf /usr/local/go wget https://dl.google.com/go/go1.25.5.linux-amd64.tar.gz sudo tar -C /usr/local -zxvf go1.25.5.linux-amd64.tar.gz ``` -------------------------------- ### Start the Webconsole Source: https://free5gc.org/guide/quick-setup Navigate to the webconsole directory and start the web interface. ```bash cd free5gc/webconsole ./bin/webconsole ``` -------------------------------- ### Setup MicroK8s environment Source: https://free5gc.org/blog/20250416/20250416?q= Installs MicroK8s, configures kubectl aliases, and enables essential plugins. ```bash sudo snap install microk8s --classic --channel=1.32 sudo vim ~/.bash_aliases alias kubectl='microk8s kubectl' sudo usermod -a -G microk8s USERmkdir−p /.kubechmod0700 /.kubesu−USERmkdir−p /.kubechmod0700 /.kubesu−USER bash < .kube/config microk8s status --wait-ready microk8s kubectl get nodes microk8s enable dns microk8s enable hostpath-storage EOF ``` -------------------------------- ### Install TNGFUE build prerequisites Source: https://free5gc.org/guide/Troubleshooting Install all necessary development libraries for building TNGFUE. ```bash sudo apt install libssl-dev libdbus-1-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev ``` -------------------------------- ### Start Minikube with Docker and Flannel Source: https://free5gc.org/blog/20230816/main Starts a minikube cluster using the Docker driver, allocating specified resources and configuring Flannel as the CNI plugin for networking. Ensure Docker is installed and the user is in the docker group. ```bash sudo usermod -aG docker $USER && newgrp docker minikube start --driver=docker --cpus=4 --memory=8g --disk-size=20g --cni=flannel ``` -------------------------------- ### Start free5GC Source: https://free5gc.org/guide/5-install-ueransim Navigate to the directory and execute the run script to start the free5GC services. ```bash cd ~/free5gc ./run.sh ``` -------------------------------- ### Start WebConsole Server Source: https://free5gc.org/guide/TNGF/tngfue-installation Commands to compile and start the free5GC web console. ```bash sh cd ~/free5gc/webconsole/ make # If webconsole was not previously compiled ./bin/webconsole ``` -------------------------------- ### Install MicroK8s, kubectl, and helm Source: https://free5gc.org/guide/7-free5gc-helm Commands to install the required Kubernetes tools via snap. ```bash sudo snap install microk8s --classic --channel=1.28/stable ``` ```bash sudo snap install kubectl --classic ``` ```bash sudo snap install helm --classic ``` -------------------------------- ### Install kubectl Source: https://free5gc.org/guide/7-free5gc-helm?q= Installs kubectl using snap for Kubernetes cluster management. ```bash sudo snap install kubectl --classic ``` -------------------------------- ### Install NetAnim Dependencies Source: https://free5gc.org/blog/20251008/20251008 Commands to install Qt required for the NetAnim GUI. ```bash brew install qt ``` -------------------------------- ### Install Control-plane Supporting Packages Source: https://free5gc.org/guide/3-install-free5gc Install basic utilities and check for CPU AVX support. ```bash sudo apt -y update sudo apt -y install wget git ``` ```bash lscpu | grep avx ``` -------------------------------- ### Run the Quick Setup Script Source: https://free5gc.org/guide/quick-setup Execute the setup script using the source command. Replace with your actual network interface name. ```bash # Example: source quick-setup.sh -i eth0 source quick-setup.sh -i ``` ```bash source quick-setup.sh -i -l ``` ```bash source quick-setup.sh -i -d ``` ```bash source quick-setup.sh -i -l -d ``` -------------------------------- ### Server Bootstrap and Configuration Loading Source: https://free5gc.org/blog/20260107/20260107 Go code demonstrating server startup, including loading configuration, initializing a Free5GC client, setting up the router, and running the server. Handles configuration loading errors. ```go cfg, err := config.Load(*configPath) if err != nil { log.Fatalf("failed to load config: %v", err) } client := control.NewFree5GCClient( cfg.Free5GC.BaseURL, cfg.Free5GC.Username, cfg.Free5GC.Password, cfg.Free5GC.Free5GCPath, ) r := api.SetupRouter(client, authCfg) _ = r.Run(cfg.Server.Addr) ``` -------------------------------- ### PacketRusher Configuration Example Source: https://free5gc.org/blog/20240110/20240110?q= Example configuration file for PacketRusher, defining settings for gNodeB, UE, PLMN, SNSSAI, and security parameters. Customize these values to match your 5GC setup. ```yaml gnodeb: controlif: ip: "192.168.56.11" port: 9487 dataif: ip: "192.168.56.11" port: 2152 plmnlist: mcc: "208" mnc: "93" tac: "000001" gnbid: "000008" slicesupportlist: sst: "01" sd: "010203" # optional, can be removed if not used ue: msin: "0000000003" key: "8baf473f2f8fd09487cccbd7097c6862" opc: "8e27b6af0e692e750f32667a3b14605d" amf: "8000" sqn: "000000000023" dnn: "internet" routingindicator: "0000" hplmn: mcc: "208" mnc: "93" snssai: sst: 01 sd: "010203" # optional, can be removed if not used integrity: nia0: false nia1: false nia2: true nia3: false ciphering: mea0: true mea1: false mea2: true mea3: false amfif: ip: "192.168.56.10" port: 38412 logs: level: 4 ``` -------------------------------- ### Build and Run Webconsole Source: https://free5gc.org/blog/20230823/20230823?q= Steps to clone the repository, build the frontend assets, and start the Go backend server. ```shell git clone https://github.com/free5gc/webconsole.git cd frontend yarn install yarn build rm -rf ../public cp -R build ../public cd .. go run server.go ``` -------------------------------- ### Example 2: ULCL AMF Configuration Source: https://free5gc.org/guide/SMF-Config AMF configuration for a ULCL setup using HTTPS for SBI. ```yaml * ngapIpList: * 127.0.0.1 * sbi: * scheme: https * registerIPv4: 127.0.0.18 * bindingIPv4: 127.0.0.18 * port: 8000 ``` -------------------------------- ### Bootstrap MCP Server Source: https://free5gc.org/blog/20260107/20260107?q= Initializes the server by loading configuration, setting up the Free5GC client, and starting the API router. ```go cfg, err := config.Load(*configPath) if err != nil { log.Fatalf("failed to load config: %v", err) } client := control.NewFree5GCClient( cfg.Free5GC.BaseURL, cfg.Free5GC.Username, cfg.Free5GC.Password, cfg.Free5GC.Free5GCPath, ) r := api.SetupRouter(client, authCfg) _ = r.Run(cfg.Server.Addr) ``` -------------------------------- ### Clone Project and Setup Environment Source: https://free5gc.org/blog/20260211/20260211?q= Clone the project repository and run the environment setup script. This step is crucial for preparing the development environment. ```bash # 1. Clone the project git clone https://github.com/solar224/5G-DPOP.git cd 5G-DPOP # 2. Run environment setup script chmod +x scripts/setup_env.sh ./scripts/setup_env.sh ``` -------------------------------- ### Install gtp5g Source: https://free5gc.org/blog/20250416/20250416 Installs the gtp5g module, which is necessary for free5GC functionality. This script updates apt, installs build dependencies, and then compiles and installs gtp5g. ```bash git clone https://github.com/free5gc/gtp5g.git cd gtp5g bash < make clean && make sudo make install cd make dep make ``` -------------------------------- ### Start free5GC WebConsole Source: https://free5gc.org/guide/5-install-ueransim?q= Launches the WebConsole server to manage UE registrations. ```bash cd ~/free5gc/webconsole ./bin/webconsole ``` -------------------------------- ### Install Mainline Kernel Utility Source: https://free5gc.org/blog/20250509/20250509 Installs the mainline utility to easily install newer Linux kernels required for sched_ext. ```bash sudo add-apt-repository ppa:cappelikan/ppa sudo apt update sudo apt install -y mainline ``` -------------------------------- ### Start Web Frontend Source: https://free5gc.org/blog/20260211/20260211?q= Start the web frontend development server. After this, the monitoring dashboard can be accessed via a web browser. ```bash # Terminal 4: Start Web Frontend cd web && npm run dev ``` -------------------------------- ### Install Docker Source: https://free5gc.org/blog/20230816/main Installs Docker CE and its associated plugins on Ubuntu. Ensure you have sudo privileges. This command updates package lists, installs necessary certificates and tools, adds the Docker repository, and then installs the Docker packages. ```bash for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo \ "deb [arch=\"`dpkg --print-architecture`\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` -------------------------------- ### Start 5G-DPOP Services Source: https://free5gc.org/blog/20260211/20260211 Launch the infrastructure, agent, API server, and frontend in the required order. ```bash # Terminal 1: Start infrastructure (Prometheus, Redis) docker compose -f deployments/docker-compose.yaml up -d # Terminal 2: Start Agent (requires root privileges) sudo ./bin/agent -pfcp-iface br-free5gc # Terminal 3: Start API Server ./bin/api-server # Terminal 4: Start Web Frontend cd web && npm run dev ``` -------------------------------- ### Install Helm Source: https://free5gc.org/blog/20230816/main Downloads and executes the Helm installation script for version 3, making it executable. It also includes a command to list installed Helm charts. ```bash curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh helm list -A ``` -------------------------------- ### Install Dependencies and Go Source: https://free5gc.org/blog/20240110/20240110?q= Installs essential build tools and Go version 1.21.3. Ensure your system meets the requirements before running. ```sh sudo apt install build-essential linux-headers-generic make git wget tar linux-modules-extra-$(uname -r) sudo rm -rf /usr/local/go # PacketRusher requires Go 1.20 or newer version, # we choose 1.21.3 as it's the latest patch version at the moment. # Kindly refer to the official Golang changelog should you # seek additional information on new features or bug fixes. wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz -O - | sudo tar -C /usr/local -zxvf - export PATH=PATH:/usr/local/go/bin:"$PATH" source $HOME/.profile ``` -------------------------------- ### Install Helm Source: https://free5gc.org/guide/7-free5gc-helm?q= Installs Helm, a package manager for Kubernetes, using snap. ```bash sudo snap install helm --classic ``` -------------------------------- ### Install free5GC Helm charts Source: https://free5gc.org/blog/20251126/20251126 Install the free5GC and UERANSIM Helm charts. This sets up the core network components and the User Equipment simulator. ```bash # Install free5GC charts cd free5gc-helm/charts helm install -n free5gc free5gc-helm ./free5gc/ # Install UERANSIM chart cd free5gc-helm/charts helm install -n free5gc ueransim ./ueransim/ ``` -------------------------------- ### Start UERANSIM gNB Source: https://free5gc.org/guide/5-install-ueransim?q= In a separate terminal, navigate to the UERANSIM directory, build if necessary, and start the gNB. Ensure the configuration file `free5gc-gnb.yaml` is correctly set up. ```bash cd ~/UERANSIM build/nr-gnb -c config/free5gc-gnb.yaml ``` -------------------------------- ### Install iftop in UPF container Source: https://free5gc.org/blog/20260114/20260114 This bash command installs the iftop tool within a Docker container named 'upf'. It first updates the package list and then installs iftop using apt. ```bash apt update && apt install -y iftop ``` -------------------------------- ### Install iperf3 in UE container Source: https://free5gc.org/blog/20260114/20260114 This bash command installs the iperf3 tool within a Docker container named 'ue'. It first updates the package list and then installs iperf3 using apt. ```bash apt update && apt install -y iperf3 ``` -------------------------------- ### Install Frontend Dependencies Source: https://free5gc.org/blog/20260211/20260211?q= Navigate to the web directory and install frontend dependencies using npm. This prepares the user interface for operation. ```bash # 4. Install frontend dependencies cd web && npm install && cd .. ``` -------------------------------- ### Run UE Instance Source: https://free5gc.org/blog/20250416/20250416 Starts a UE (User Equipment) instance using the UERANSIM executable. Requires a configuration file specifying network parameters. ```bash sudo ./build/nr-ue -c config/free5gc-ue.yaml ``` -------------------------------- ### Install Node.js for WebConsole Source: https://free5gc.org/guide/3-install-free5gc Install Node.js and enable corepack to prepare for WebConsole building. ```bash curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt update sudo apt install -y nodejs corepack enable # setup yarn automatically ``` -------------------------------- ### Start PFCP Server Source: https://free5gc.org/doc/Upf_PFCP/design Initializes the PFCP server and sets up a UDP socket to listen for incoming PFCP messages from the SMF. ```go pfcp.Start() ``` -------------------------------- ### Install User-plane Supporting Packages Source: https://free5gc.org/guide/3-install-free5gc Install necessary development libraries for the user plane. ```bash sudo apt -y update sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev ``` -------------------------------- ### Install Helm Source: https://free5gc.org/blog/20230816/main?q= Downloads and executes the Helm installation script to manage Kubernetes packages. ```bash curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh helm list -A ``` -------------------------------- ### Install Linux PTP from Source Source: https://free5gc.org/blog/20250709/20250709 Commands to clone the Linux PTP repository, compile the source code, and install the binaries. ```bash git clone http://git.code.sf.net/p/linuxptp/code linuxptp cd linuxptp/ make sudo make install ```