Installing Elastix was no problems at all. Just follow the simple steps and it installs. Elastix has a SUPER nice web interface, so I simply went to the address of the new Elastix install from Firefox on another machine and did all the administration from it. The username and password for the web server is a little odd, but can be found on the Elastix web site under their Installation Instructions. (http://www.elastix.org/index.php?option=com_openwiki&Itemid=27&id=installation)
Username: root
Password: palosanto
Side Note: Why palosanto? PALOSANTO SOLUTIONS started the Elastix project a few years ago ;)
Anyways, when you log into the Elastix web interface, you find that there are quite a few options. PBX Configurations, Extensions, Outbound Routes, Trunks, IM, Billing, Email, Reports ........ and the list seems to go on. Elastix has a great number of different options which is why it is so nice to use. However, to set up a single phone and get it making calls, or even setting up multiple phones and having them make calls, is quite easy as I discovered.
I've broken it up into 4 simple steps.
Step 1. Set up the phone.
When you plug the phone in to the network, it SHOULD come up with an IP address. This will come from your DHCP server. Most phones will have a web interface and it's recommended you use it. You CAN set the phone up AT the phone, but it's much easier to use a mouse and keyboard. At this point, I again logged into the phone from a remote machine (the same one I was accessing the Elastix web interface from) The most important part of setting up the phone, is to set it's extension number, the proxy and the password. On the SPA942, you need to go Advanced and then go to Ext 1 to see where these settings are. The screen looks similar to this:

The extension number you can make up yourself. In my case, I used 103. This number goes in the User Id. The proxy becomes the IP address of the Elastix box. Just set the password that the Elastix box will use to register the phone.
The phone is now set up :)
Step 2. Set up the extension and make the phone register.
Go back to the Elastix web interface. Go to PBX Configuration -> Extensions and click on [Add Extension].
Set a display name. It is just the name that will appear on the phone when it registers.
Next, set the extension number. This NEEDS to be the same as the extension number (User Id) you put on the phone. This is how elastix distinguishes between the phones.
You now need to set the field called "secret". This REALLY means password. The password needs to be the same as the password that corresponds to the password on the phone.
Click on Submit to save the changes. You will then get an option just under the tabs, to [Apply the changes]. Click on that. Your phone should now recieve the new information from Elastix and register itself. If you want to be sure, just cycle the power on the phone. On the SPA942, the 4 buttons down the right side of the lcd screen turn green when it's registered with Elastix.
Step 2. Set up the Trunk.
While still in the PBX Configuration, go to Trunks and click on [Add SIP Trunk].
The "Trunk" is the part in VOIP that tell Elastix to pass a call through this connection. This is where you put in all the details of your VOIP provider. In my case, it was Pennytel.
The first step is to give the Trunk an outbound caller id. Put it in the format of ["Caller Name"
I also had to add some dial rules. I wanted all 8 digit phone numbers to be treated as local calls, so I forced the area code in front of the number by adding a dial rule of [07+XXXXXXXX]
I really wanted to see if I could make calls, so I made my first Trunk an Outbound trunk. So all I needed to do next was put in the Outbound Peer Details. Simply delete all the default information in the field and enter in the information provided by your VOIP provider. I'm with Pennytel, so my Peer Details are;
disallow=all
allow=ulaw&alaw
canredirect=no
host=sip.pennytel.com
insecure=very
qualify=yes
secret=your password
type=peer
username=your Pennytel sip number or DID number
Step 3. Set up the Out bound route.
The Outbound Route ties certain phone numbers with trunks. This means you can send different phone calls through different providers.
From the PBX Configuration menu, click on [Outbound Routes]. Add a new outbound route. Firstly, give the outbound route a recognisable name. I set up 2 outbound routes just for laughs. The first one was a "Local" OR and then a "Mobile" OR. I linked both of those OR's to the trunk I created and had to set some phone number rules and then I was away, making phone calls from the newly setup Elastix box.