MongoDB is required by database-backed components such as HSS/PCRF and PCF/UDR, but it does not need to be installed locally when an external MongoDB server is used. Move the MongoDB package relationship from Depends to Recommends for the affected Debian packages, so the default installation still pulls MongoDB in while allowing users to opt out with --no-install-recommends. Update the documentation to clarify which components use MongoDB and explain that the MongoDB installation step can be skipped when using an external database.
2.8 KiB
| title | head_inline |
|---|---|
| Alpine | <style> .blue { color: blue; } </style> |
This guide is based on Alpine 3.13 Distribution. {: .blue}
Getting MongoDB
Tip: MongoDB is used as the database for PCF/UDR and PCRF/HSS. {: .notice--info}
Note: If you use an external MongoDB server, you can skip this section. {: .notice--warning}
Install MongoDB with package manager.
$ sudo apk update
$ sudo apk add mongodb
Run MongoDB server.
$ mkdir -p ./data/db
$ mongod --dbpath ./data/db
Setting up TUN device (No persistent after rebooting)
Create the TUN device. Interface name will be ogstun.
$ sudo apk add iproute2
$ sudo ip tuntap add name ogstun mode tun
$ ip link show
You are now ready to set the IP address on TUN device.
$ sudo ip addr add 10.45.0.1/16 dev ogstun
$ sudo ip addr add 2001:db8:cafe::1/48 dev ogstun
Make sure it is set up properly.
$ sudo ip link set ogstun up
$ ip link show
Tip: The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/main/misc/netconf.sh) makes it easy to configure the TUN device as follows:
$ sudo ./misc/netconf.sh
{: .notice--info}
Building Open5GS
Install the depedencies for building the source code.
$ sudo apk add alpine-sdk bison flex git cmake meson bash sudo linux-headers bsd-compat-headers yaml-dev lksctp-tools-dev gnutls-dev libgcrypt-dev libidn-dev mongo-c-driver-dev libmicrohttpd-dev curl-dev nghttp2-dev talloc-dev
Git clone.
$ git clone https://github.com/{{ site.github_username }}/open5gs
To compile with meson:
$ cd open5gs
$ meson build --prefix=`pwd`/install
$ ninja -C build
Check whether the compilation is correct.
$ ./build/tests/attach/attach ## EPC Only
$ ./build/tests/registration/registration ## 5G Core Only
Run all test programs as below.
$ cd build
$ meson test -v
Tip: You can also check the result of ninja -C build test with a tool that captures packets. If you are running wireshark, select the loopback interface and set FILTER to s1ap || gtpv2 || pfcp || diameter || gtp || ngap || http2.data.data || http2.headers. You can see the virtually created packets. [testattach.pcapng]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testattach.pcapng)/[testregistration.pcapng]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testregistration.pcapng)
{: .notice--info}
You need to perform the installation process.
$ cd build
$ ninja install
$ cd ../
Building WebUI of Open5GS
Node.js is required to build WebUI of Open5GS
$ sudo apk add nodejs
Install the dependencies to run WebUI
$ cd webui
$ npm ci
The WebUI runs as an npm script.
$ npm run dev