« Previous - Version 29/69 (diff) - Next » - Current version
ex1st, 09/17/2013 04:58 pm

Server Documentation

Ostel.co is primarily composed of a a Session Initiation Protocol (SIP) service as the signaling communications protocol for voice and Ruby on Rails to manage accounts. End-to-end encryption is enabled via ZRTP (composed of Z and Real-time Transport Protocol), which is a cryptographic key-agreement protocol to negotiate the keys for encryption between two end points. Ostel conforms to the Open Secure Telephony Network (OSTN) standards that we have been evolving.

The core component of Ostel is a server application called Kamailio. The reference used to build ostel.co was originally written by Daniel-Constantin Mierla <miconda [at] gmail.com> at Asipto. The secondary components are a simple Ruby on Rails production application stack. There are also supporting utilities for process supervision and resource monitoring.

The full stack of software to create a service like ostel.co is large and requires a server system with a static IP address and a Fully Qualified Domain Name (FQDN). If you are familiar with a Ruby on Rails production stack, the process for the web front end should be straight forward. If you have worked with a SIP server like Asterisk, the process will be different, though understandable.

There is a project on Github to automate the full stack with Chef. Please check it out and contribute if you wish. The cookbook is under development. The Ruby on Rails application source code is hosted in another repository and is also under active development.

The Components

  • Debian GNU/Linux -- The best Linux distribution!
  • A VPS or dedicated hosting provider or a Raspberry Pi that respects your freedom! You cannot run Kamailio from behind a home network with NAT if you want to call anyone outside your home
  • Kamailio -- A modular SIP router, user registration server, and NAT traversal utility...and so much more (that is not needed for ostel)
  • rtpproxy -- a small utility to proxy encrypted audio and video streams. Works with Kamailio to solve NAT traversal
  • Freeswitch -- A SIP softswitch. Provides testing services like an echo test. Can also provide automated call services like voicemail.
  • PostgreSQL -- The World's Most Advanced Open Source Database. Stores user account data and domain alias information
  • nginx -- A small, fast HTTP(S) server. Functions as a reverse proxy for the app server and for HTTPS decryption
  • Unicorn -- A fast Ruby application server
  • Ruby on Rails -- A popular framework for building web applications
  • Devise -- A modular user authentication framework for Ruby on Rails
  • runit -- A system for process supervision. Keeps programs running, forever. Supervises Unicorn
  • Monit -- A system for process supervision. Keeps programs running, when they are incompatible with runit. Supervises Kamailio
  • Munin -- A system for collecting resource statistics and plotting them in time-series graphs

System Requirements


  1. Install packages
  2. Configure server
  3. Create database
  4. Start server
  5. Configure monit

Federation & Interoperability

#This is one of our goals and we will soon add instructions on how to inter-operate (if you'd like to) with other OSTN servers such as Ostel.co.

Join the Community

  1. If you do run your own server, please let us know! We'll keep the information private, but do like to know that these instructions are helpful. Also if you have any confusion or suggestions, do reach out to us at <support [at] guardianproject.info>

Also available in: PDF HTML TXT