Git Product home page Git Product logo

colte's Introduction

CoLTE

CoLTE is the Community LTE Project. It is designed to be an all-in-one turnkey solution that sets up a small-scale locally-run LTE network. CoLTE consists of several main elements working together:

  1. An all-in-one software EPC, powered by our [fork] (https://github.com/uw-ictd/openair-cn.git) of OpenAirInterface (OAI).
  2. Network monitoring software, powered by haulage, to keep track of how many bytes each user uses and bill appropriately.
  3. A Web GUI that lets users check the status of their account, top up, transfer/resell credit, and buy data packages.
  4. Local Web and DNS serving/caching via Nginx and BIND.

Installation

Basic System Requirements:

Currently we support and test Debian 9 (stretch) and Ubuntu 18.04 (bionic).

Quickstart: Debian Packages!

Starting with Release 0.9.2, we've switched over to using .deb packages for Ubuntu 18.04 (bionic) and Debian 9 (stretch). We strongly recommend using these packages. To add our apt repository and clone them, use the following commands:

echo "deb http://colte.cs.washington.edu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/colte.list
sudo wget -O /etc/apt/trusted.gpg.d/colte.gpg http://colte.cs.washington.edu/keyring.gpg
sudo apt-get update
sudo apt-get -y install colte

The colte package is a meta-package consisting of colte-epc, haulage, colte-webgui, and colte-conf. colte-epc consists of four packages: colte-hss, colte-mme, colte-spgw, and colte-db. These packages come with a default database configuration that lets you start and play around with every component. After installation, the admin tool will be automatically listening on http://localhost:7998, the user webgui will be automatically listening on http://localhost:7999, and the other components can be started with sudo {oai_hss | mme | spgw} or sudo systemctl start {oai_hss | mme | spgw | colte-webgui}.

Building Packages From Source:

The top-level Makefile allows you to build the metapackages colte and colte-webservices as well as the software packages colte-conf and colte-webgui. You can edit the source of these packages (and learn more about them) in their respective directories. Once you manually build packages, they will be in /BUILD, and you can install them with sudo dpkg-deb -i package.deb. Other packages are built via Makefiles in the other repositories mentioned above.

Configuration

All config files can be found in /usr/local/etc/colte/. Global configurations (that span multiple services) can be found in config.yml. After you edit any of the global options, you must run colteconf update to reconfigure all components. colteconf prompt provides an interactive configuration utility to help, but you can also edit config.yml directly. Note that you must run colteconf at least once after installing CoLTE, because there is no way for us to guess some of the options (e.g. upstream and downstream interfaces).

Your machine will need two network connections: one to the Internet (the upstream WAN) and another to the eNodeB (the downstream LAN). These can actually be the same interface, it doesn't matter. Both of these connections must be already configured with IP addresses (doesn't matter if Static or Dynamic) and must be up. Note that if the LAN interface is down, you won't be able to start the MME, and if the WAN interface is down, you won't be able to start the SPGW.

Set wan_iface to your upstream (Internet) interface, enb_iface to the downstream LAN interface, and enb_iface_addr to the downstream interface's address/subnet. Don't worry about matching lte_subnet to any value in particular, because this subnet is created and assigned to the virtual gtp0 interface once the SPGW brings it up. Finally, network_name lets you give your network a specific name for serving DNS entries (e.g. if it's set to "seattle" then connected phones can access the webgui under "http://network.seattle".

Running CoLTE

EPC:

The EPC has three separate components: the hss, mme, and spgw. You should start them in that order. Once installed, you can run each component in a terminal window with the following command:

sudo {oai_hss|mme|spgw}

With each new connected component, you should see them log some startup messages, connect to the other components, and then go quiet, except for the MME, which prints out a status update every ten seconds.

We also provide systemd integration. You can start any of these operations as a service, and read the output in journalctl, with the following commands:

sudo systemctl start colte-{hss|mme|spgw}
sudo journalctl -f -u colte-{hss|mme|spgw} --output cat

WebAdmin:

The WebAdmin is a tool for CoLTE network administrators to change account balances, enable or disable specific users, topup accounts, and transfer money from one user to another. It is started automatically after installation. You can start/stop it with:

sudo systemctl {start|stop} colte-webadmin

For more details, consult /webadmin/README

WebGUI:

The WebGUI is a tool for CoLTE users to top up, buy data packages, and send money to other users. It is started automatically after installation. You can start/stop it with:

sudo systemctl {start|stop} colte-webgui

For more details, consult /webgui/README

Log Files

Any service run with systemd will have its log in journalctl; all other logfiles can be found in /var/log/colte.

Known Issues

  • It appears that libssl is broken on Ubuntu 18.04 as of 14 June 2019. This is out of our hands and we anticipate a fix very soon. See https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/1832919
  • The WebAdmin tool does not work out-of-the-box with Debian 9. This is because pagination requires Node 8.0 or higher, whereas Debian 9 currently ships with Node 4.x. We did not want to force-update anyone's install, but you can update your system with the following command: curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - ; sudo apt-get install nodejs. This issue will be fixed with Debian 10, which launches 6 July 2019.
  • Right now, the webservices are only hosted as high-number ports. In the interest of not dominating your system we do not currently integrate with any apps that serve DNS or HTTP (e.g. bind or nginx). We plan to offer support for this as a separate package soon.

Exposed Webservices and Ports

There are a bunch of different Web-based services exposed on this machine. Here's an authoritative list of the different services that are exposed, and what port they're assigned to by default.

  1. CoLTE Admin: http://localhost:7998/
  2. User Webgui: http://localhost:7999/
  3. Emergency Homepage: http://localhost:9080/
  4. Emergency Rocketchat: http://localhost:9081/
  5. Emergency Wikipedia: http://localhost:9082/
  6. Emergency Registration: http://localhost:9083/
  7. Emergency OpenStreetMaps: http://localhost:9084/
  8. OSM Tileserver: http://localhost:9085/
  9. Local Mediaserver: http://localhost:9086/

colte's People

Contributors

dependabot[bot] avatar hansencs avatar kheimerl avatar matt9j avatar pathiratk avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.