I've recently have been experimenting with Google Cloud Platform and am quite impressed. Their scheduling latency performance of their shared-core VPS offerings is far superior to the cheap stuff on LowEndBox and LowEndStock (IMO unsuitable for production PBXes) and at least equals that of RentPBX, Linode, DigitalOcean, Rackspace, RamNode, etc.
The platform includes hardware firewall protection, snapshots, ease of creating / moving / destroying servers on demand, as well as many other management features.
In addition to their one-year free trial with $300 credit applicable to most services, many services offer truly free usage (not a trial) within certain limits. For details, see https://cloud.google.com/free/ . These limits are sufficient to run a small PBX indefinitely, except for egress bandwidth priced at $0.12/GB after the first GB/mo. For example, if talking 2000 minutes monthly, once your free year is up you'll be billed ~$0.25/mo.
Here is an easy way to try FreePBX on GCP: I took the instructions at https://wiki.freepbx.org/display/FOP/Installing+FreePBX+14+on+CentOS+7 and assembled them into a script, adding modifications for GCP and automating all interactive steps.
Once you've signed up, go to https://console.cloud.google.com .
Select Compute Engine -> VM instances.
Click Create Instance.
Choose a name, select zone; free options are us-east1 (South Carolina), us-central1 (Iowa) or us-west1 (Oregon).
If you're not sure, check at http://www.gcping.com/ (test takes about 30 seconds to run, actual ping time is ~12 ms less than HTTP time reported).
(Leave default Machine type for faster build -- we will change to a free one later.)
Change Boot disk to CentOS 7, press Select.
Under Firewall, click Allow HTTP traffic. Click Create.
On the VM Instances page, under Connect, click SSH (need to click twice if blocking popups). A console window will open (takes ~30 seconds).
Paste the code below into the console window.
sudo -icurl http://x-sc.com/fpbx14.sh > fpbx14.shchmod +x fpbx14.sh./fpbx14.sh When the script is done (about 20 minutes), "You have successfully installed FreePBX" should appear in green. If a minute goes by with no activity, it has probably stopped on an error.
Open the external IP address in your browser.
Set up admin account as requested, log in, set timezone, etc. Apply Config.
With luck, there will be no errors shown in the System Overview.
Go to Settings -> Asterisk SIP Settings. Click Detect Network Settings. The External Address field should populate. Click Submit then Apply Config.
In the cloud Console tab (not the SSH console window) go to VPC network -> Firewall rules, click Create Firewall Rule.
Give it a name e.g. sip. Under Target tags, type a tag name, e.g. sip.
Under Specified protocols and ports enter "udp:5060; udp:5160; udp:10000-20000" (without the quotes and assuming default FreePBX settings). Under Source IP ranges, enter 0.0.0.0/0 (or a restricted range if desired), then click Save.
Go to VPC network -> External IP addresses. For your instance, change the Type from Ephemeral to Static. Give it a name, e.g. mypbx. Click RESERVE.
Go back to Compute Engine -> VM instances. Select your instance, click EDIT. Under Network tags add sip or whatever tag you chose above. Click Save.
Reboot (needed after network settings changes, also to confirm that automatic startups are working). You can reconnect to SSH server after one minute.
In the FreePBX UI, configure an extension. Set up a VoIP device or app to use it.
Call *43, confirm that the echo test works and latency and quality are ok.
In the FreePBX UI, configure a trunk and an outbound route.
Confirm that you can make a call and that latency and quality are ok.
Restrict access to the FreePBX GUI. For example, remove the http-server tag and add a rule that only grants access to your PC.
Close the SSH console window.
In the Console, stop your instance. Go to Snapshots. Click CREATE SNAPSHOT.
Give your snapshot a suitable name, e.g. as-built. Under Source disk, select your instance's boot disk. Click Create.
Edit your instance, change Machine type to micro (will become free if in qualifying zone), click Save.
Start your instance up again.
In the FreePBX UI, go to Module Admin. Click Check Online, select desired Repositories, install modules as desired.
Configure PBX for your application.
Take another snapshot.
Enjoy.
I'm aware of two problems with this build:
1. It can't send mail (such as voicemail notifications), because Google blocks outgoing ports 25, 465 and 587. My mail provider, Fastmail, has a proxy that avoids this issue. I'll try some of Google's suggested general purpose workarounds and will post an update if successful.
2. It crashes after configuring a Google Voice account. An apparently good motif.conf is created but Asterisk segfaults after reading it. I had the same problem with a FreePBX 13 / Asterisk 13 build. If you just install the FreePBX module without an account (creating dummy motif.conf and xmpp.conf files) and reboot, Asterisk will read those and start running the respective modules. I have no idea what may be wrong and would appreciate it if a GV expert could take a look. Create a snapshot just before attempting to add a GV account.
↧