> librenms.sql","title":"Backing Up"},{"location":"tutorials/librenms/deploy/","text":"Deploying I wrote a script to deploy libreNMS with the configuration that SCN uses. The repo is here Software requirements Only tested on debian and ubuntu. Not sure what else it works on but it could work on other linux distros Steps Install docker if it is not installed already Install docker compose if it is not installed already Instal unzip if it is not installed already Check out this repo If you want to restore a previous install, provide a sqldump named librenms.sql flat in this checked out repo. There is a helper script called get_database_from_currently_running_server.sh to get the database off of the non dockerized install (needs ssh access to the server) If you want to restore the graphs too, you can provide a file named rrd.zip flat in the checked out repo which is just the rrd folder ziped up. There is a helper script called get_rrd_zip_from_currently_running_server.sh to get the rrd zip from the non dockerized install (needs ssh access to the server) Run ./deploy.sh builds the librenms image builds the database image with/without the backup Starts the service using docker compose . This creates 2 shared volumes in the compose directory The librenms folder is for the librenms docker images to share configuration data including rrd files The db volume is the database unzips the rrd folder in the rrd directory of the shared librenms volume The UI will run on port 8000","title":"Deploying"},{"location":"tutorials/librenms/deploy/#deploying","text":"I wrote a script to deploy libreNMS with the configuration that SCN uses. The repo is here","title":"Deploying"},{"location":"tutorials/librenms/deploy/#software-requirements","text":"Only tested on debian and ubuntu. Not sure what else it works on but it could work on other linux distros","title":"Software requirements"},{"location":"tutorials/librenms/deploy/#steps","text":"Install docker if it is not installed already Install docker compose if it is not installed already Instal unzip if it is not installed already Check out this repo If you want to restore a previous install, provide a sqldump named librenms.sql flat in this checked out repo. There is a helper script called get_database_from_currently_running_server.sh to get the database off of the non dockerized install (needs ssh access to the server) If you want to restore the graphs too, you can provide a file named rrd.zip flat in the checked out repo which is just the rrd folder ziped up. There is a helper script called get_rrd_zip_from_currently_running_server.sh to get the rrd zip from the non dockerized install (needs ssh access to the server) Run ./deploy.sh builds the librenms image builds the database image with/without the backup Starts the service using docker compose . This creates 2 shared volumes in the compose directory The librenms folder is for the librenms docker images to share configuration data including rrd files The db volume is the database unzips the rrd folder in the rrd directory of the shared librenms volume The UI will run on port 8000","title":"Steps"},{"location":"tutorials/librenms/upgrade/","text":"Upgrading Upgrading can be segmented into 2 parts. The container OSses and the service OS Each container runs an OS - The Maria db container is based on ubuntu, so you can just do sudo apt update and sudo apt upgrade when executing bash on the container - The Redis container for some reason only has an ash executable installed on the container. Also it runs on alpine so it can be updated using apk update and apk upgrade - The libreNMS and the libreNMS dispatcher container is instantiaated on the same container which is on alpine, and uses bash. Update as usual for alpine installs. Service I think that libreNMS vends a script called daily.sh (librenms docs here ) that is added to the cron, but cron is not running on docker containers since each container only runs one process. Even if we manually run daily.sh, there are errors. I think that the docs also give a manually manual way to update, by doing a git clone, but since the librenms files were not pulled using git, we cant use this way. I tried using rsync to overwrite the old files with the new files, but there are some issues. The nuclear option can be used, which is remove the containers, build new updated ones, and start that, but this will include a small outage Go to the compose directory and run sudo docker compose down to stop and remove all the containers. We store data (rrd files and the database) in a docker volume inside the compose directory anyway so we should not need to worry about removing containers removing any data Go to the librenms_image directory, change the version of the image to the latest version here run sudo docker build . -t scn-librenms , which should build the new image go to the db_image directory and update the Dockerfile's version to the latest version here run sudo docker build . -t scn_mariadb_librenms go to the compose directory and update the compose.yml file to use the latest redis release here Then you should be able to start the service with a sudo docker compose -f compose/compose.yml up -d The service should come up as it was before. If it does not, you may have to do a ./lnms migrate","title":"Upgrading"},{"location":"tutorials/librenms/upgrade/#upgrading","text":"Upgrading can be segmented into 2 parts. The container OSses and the service","title":"Upgrading"},{"location":"tutorials/librenms/upgrade/#os","text":"Each container runs an OS - The Maria db container is based on ubuntu, so you can just do sudo apt update and sudo apt upgrade when executing bash on the container - The Redis container for some reason only has an ash executable installed on the container. Also it runs on alpine so it can be updated using apk update and apk upgrade - The libreNMS and the libreNMS dispatcher container is instantiaated on the same container which is on alpine, and uses bash. Update as usual for alpine installs.","title":"OS"},{"location":"tutorials/librenms/upgrade/#service","text":"I think that libreNMS vends a script called daily.sh (librenms docs here ) that is added to the cron, but cron is not running on docker containers since each container only runs one process. Even if we manually run daily.sh, there are errors. I think that the docs also give a manually manual way to update, by doing a git clone, but since the librenms files were not pulled using git, we cant use this way. I tried using rsync to overwrite the old files with the new files, but there are some issues. The nuclear option can be used, which is remove the containers, build new updated ones, and start that, but this will include a small outage Go to the compose directory and run sudo docker compose down to stop and remove all the containers. We store data (rrd files and the database) in a docker volume inside the compose directory anyway so we should not need to worry about removing containers removing any data Go to the librenms_image directory, change the version of the image to the latest version here run sudo docker build . -t scn-librenms , which should build the new image go to the db_image directory and update the Dockerfile's version to the latest version here run sudo docker build . -t scn_mariadb_librenms go to the compose directory and update the compose.yml file to use the latest redis release here Then you should be able to start the service with a sudo docker compose -f compose/compose.yml up -d The service should come up as it was before. If it does not, you may have to do a ./lnms migrate","title":"Service"}]}
\ No newline at end of file
diff --git a/tutorials/epc-setup/index.html b/tutorials/epc-setup/index.html
index feb9441..d32b109 100644
--- a/tutorials/epc-setup/index.html
+++ b/tutorials/epc-setup/index.html
@@ -183,9 +183,28 @@ Step 1: Install Open5GS (Note
Install Open5GS following the Open5GS Quickstart documentation based on your operating system and desired implementation (e.g. "bare metal" directly on the operating system vs. Docker).
There are even VoLTE and Dockerized VoLTE implementations of Open5GS.
A similar step-by-step tutorial to this one can be found here.
-In SCN we have run Open5GS successfully using Ubuntu 20.04 and 22.04, on bare metal or in Virtual Machines, installed via the apt
package manager.
-To do this, first install MongoDB as described in the Quickstart guide. Then follow instructions under the "Ubuntu" section to install Open5GS via apt.
+In SCN we have run Open5GS successfully using Ubuntu 20.04 and 22.04, on bare metal or in Virtual Machines, installed via the apt
package manager (see Step "2. Install Open5GS with a Package Manager" of the Quickstart).
+First install MongoDB as described in the Quickstart. Then follow instructions under the "Ubuntu" section to install Open5GS via apt.
Note: If installing over a ssh
connection, we recommend using tmux
or another program in case you get disconnected from the session in the process.
+
+Note that for our LTE setup, the MME and SGWU are the only components whose config files you will really need to change from the defaults.
+MME
+Edit the /etc/open5gs/mme.yaml
file (as root or using sudo
) as follows:
+- Under mme:
-> s1ap:
-> server:
-> address:
, set the IP address you will assign to the network interface (likely an ethernet port) on your EPC computer which will be connecting to the eNB. In this tutorial (to match with the Network Configuration section that follows), we will use 192.168.150.1
.
+- Under both mme:
-> gummei:
and mme:
-> tai:
, you will need to change the plmn_id
(mcc
and mnc
values) to match the PLMN you are using for your network.
+- Note that for the purposes of eNB config later, the Tracking Area Code (or TAC) listed under tai:
-> tac:
will need to match the TAC number configured on the eNB (using the default of 1 is fine).
+Quick explanation: "PLMN" refers to the Public Land Mobile Network, in which every network has to have a unique carrier ID defined by the 3-digit "mobile country code (MCC)" and a 2 or 3-digit "mobile network code (MNC)". Alternately, for iPhone compatibility in the US, SCN uses the CBRS "private LTE" PLMN assigned by Apple as described in this doc.
+
+- Optional: Edit
network_name:
(full and short) and mme_name:
as desired. One of these names will show up on smartphones' lock screens as the "carrier" when the phone is attached to the network.
+
+SGWU
+Edit the /etc/open5gs/sgwu.yaml
file (as root or using sudo
) as follows:
+- Under sgwu:
-> gtpu:
-> server:
-> address:
, set the IP address you will assign to the network interface on your EPC computer which will be connecting to the eNB (this should be the same as the IP address of the MME set above, if the MME and SGWU are running on the same machine). In this tutorial we will use 192.168.150.1
.
+As mentioned in the Quickstart, after changing the config files, you will need to restart the corresponding Open5GS daemons:
+sudo systemctl restart open5gs-mmed
+sudo systemctl restart open5gs-sgwud
+
+However, the MME will likely not start correctly until networking is configured, as described below.
Remember to follow all the network configuration steps in the Open5GS Quickstart documentation. For SCN's Ubuntu machines, this means:
@@ -309,9 +328,9 @@ Step 3: Start and mo
The following command will start only the systemd services required for LTE. However, you do not need to stop or disable the other components of the 5G core for it to run 4G LTE network hardware correctly- the full Open5GS 5G core is backwards compatible with LTE hardware if you configure the LTE components correctly.
sudo systemctl start open5gs-hssd.service open5gs-mmed.service open5gs-sgwud.service open5gs-sgwcd.service open5gs-pcrfd.service open5gs-upfd.service open5gs-smfd.service
-Start the WebUI
+Install and Start the WebUI
The WebUI is another systemd service and runs by default on your local computer at port 9999.
-It requires some more dependencies to install, such as nodejs
(see Step 3. of the Quickstart guide). You can reach it by navigating to http://localhost:9999
in your web browser.
+It requires some more dependencies to install, such as nodejs
(see Step "3. Install the WebUI of Open5GS" in the Quickstart). You can reach it by navigating to http://localhost:9999
in your web browser.
If not already started, start it with the following command:
sudo systemctl start open5gs-webui.service