Setup Telephony Server

So I have been wanting to setup some kind of VoIP to real phone (PSTN) server in my house. Mainly so I can call locally (United States) while I'm traveling abroad for free~ So I've managed to break down this project into three sub-projects.

(PSTN) http://en.wikipedia.org/wiki/Public_switched_telephone_network

 

1) I need a SIP client for android. A free app is preferred.

(SIP) http://en.wikipedia.org/wiki/Session_Initiation_Protocol

 

2) Software running on a home server. Likely some kind of integrated Linux or BSD distro I can run in a virtual machine. This would route calls, take voice mails, etc...

Options:

http://www.freepbx.org/

http://www.opensips.org/

http://www.freeswitch.org/

http://www.asterisk.org/ (I believe Wendell talked about this one in the pfSense video... not sure...)

 

3) A free method of connecting my server to real phones (PSTN). A so called ITSP.

(ITSP) http://en.wikipedia.org/wiki/Internet_telephony_service_provider

I found this list of free ITSPs: http://directory.didww.com/ Not sure if any are legit. Anyone used one?

 

The problem is, I have no idea where to begin... Does anyone have recommendations for which three pieces among all possible combinations I should try to splice together? I have a moderate Linux background, so I should be able to read up once someone points me in a direction.

 

If Wendell wants to weigh in on what he uses in the office, that would be cool~

 

I used Talkatone + Google Voice for this purpose before the "incident", which worked epically~

(http://arstechnica.com/gadgets/2014/04/reminder-third-party-google-voice-apps-shut-down-in-20-days/)

Now I am using GrooVe IP Lite, powered by RingTo, for this purpose. It works... technically speaking... But with up to three second end-to-end delays in my experience, it feels like talking with someone on the moon (Relativity, look it up!).

(https://play.google.com/store/apps/details?id=com.snrblabs.grooveip&hl=en)

 

With all these headaches, I decided to hack together my own custom thing. Cool part about doing my own thing is hopefully in the future I can expand it to do other things like:

Texting

Controlling random thing via text or calls (turn on lights, start rice cooker, relay IRC logs, whatever~)

 

This project would also make a cool DIY video~ *cough* Wendell *cough* Qain *cough*