We provide services that at times of the day are time sensitive. I'm talking minutes and even seconds to get in contact with someone before we can't help them any more for the day.

I want to set up voip system to place calls between our 40 or so users and us thru our high-speed private network. I also want to users to be able to chat with us. Both systems can be independent solutions and require different hardware but an integrated solution would be nice.

I can't put thousands of dollars into the solution since I will probably have to buy either 50 ip phones o ATA's and that alone will be a huge expense. Softphones can't be used because I picture I see users forgetting to fire them up, closing them or having their computers in mute and not hearing the phone ring.

I have to be able to run the solutions completely isolated from the internet at first. So this means I can't use a solution based on a hosted service. I have to host this in-house. At a later point we could allow some users to connect from their laptops from remote locations (home, hotel, etc).

Either way I would set up a vm for each or a single one for both. I just don't want to have to spend a lot of time setting them up as I'm juggling too many tasks and proyects to set up hundreds of parameters to get something like basic asterix to run.

Do you guys having an opinion on these or other solutions I should give a try? Any warnings or advice?

This sounds like a case where an Elastix PBX would do the trick. The distro is completely free to run for as many extensions as you want and will work with IP phones or ATA adapters (I.e. FXS gateways). It runs great as a VM as is not resource intensive. I run an Elastix VM with about 70 extensions with 1 vCPU and 1 GB RAM, and it isn't breaking a sweat.

If I could I would be happy to work with a cloud-based solution. However there are a couple of things going against that:

1) internet service is about 98% reliable here, there's a couple of hours of downtime each month and the only way around it would be to spend money on a secondary ISP just for this. The rest of our operations don't require internet access

2) exposing our private network to a connection to a cloud based solution would require me to do a lot of paperwork and explanation to our financial regulatory agencies. They don't like our stuff connected to the internet. It's a sucky thing in this field. I have several networks here that don't talk to each other at all or not much.

Soft phones work pretty good. I've used the x-line soft phones from counter path. These are the free versions of the bria line which work great. You can configure the x-lite phones to start up on login. Even if the user has the speakers on mute there is a visual popup that shows them they have a caller and who it is. Understand that soft phones will make about 20% of the people happy. The others will want to have a physical phone in their hand. Yealink and Snom VoIP phones are pretty good. They have a few models that are less than $120 USD each.

This sounds like a case where an Elastix PBX would do the trick. The distro is completely free to run for as many extensions as you want and will work with IP phones or ATA adapters (I.e. FXS gateways). It runs great as a VM as is not resource intensive. I run an Elastix VM with about 70 extensions with 1 vCPU and 1 GB RAM, and it isn't breaking a sweat.

Even though Elastix includes Openfire, I'd recommend running Openfirw on a separate VM and use Spark as your IM client. There are plugins for OpenFire that you can use to create a queue for support.

There is a fine line here. If money is a factor and you have 50 or less uses, the built in openfire server will work well. I know Scott doesn't like to run in this configuration, but it does work. The OP also said that he didn't have a lot of time to test different setups. This kit is already built and integrated. The person presence is already built in so you don't have to integrate Asterisk and Openfire after the fact. If the OP has more than 40-50 users then I would say yes isolate the two and work on integration post deployment. But again that is my opinion, for small deployments there isn't really a reason not to use the other parts of the Elastix kit.

I really like the Yealink phone models. We use the SIP-T32G, SIP-T38G, and SIP-T46G. I feel like the SIP-T32G will be good enough for the average user, but the other two models are more suitable for receptionist / executive admin employees (phones have EHS capabilities).

You can spend a little less and get phones without the gigabit pass through port if you are going to have one Ethernet jack for phones and one for computers, but it sounds like that may not be the case based on your post.

I have not used asterisk, but I have heard good things. Also It is opensource, so if you deploy it in-house your only cost would be the hardware. If you have not worked PC based PBX before the learning curve may be big for you.

FWIW: Elastix is a distribution that contains Asterisk as its core PBX plus additional tools integrated into a package. Almost no one deploys Asterisk core, it is way to complicated for most people to manage via configuration files. Distributions like Elastix, PBX In A Flash, FreePBX, even AsteriskNOW (more or less) are easier to manage than asterisk core.

OpenFire is by far the best IM solution. Spark is a great client for it but any XMPP client works, no need to be tied to one. Pidgin is very popular too.

Instead of those three PBXs, look at Elastix. If you aren't a PBX engineer, it has more support, is easier to use, is more mature and has far more market momentum than those while sharing the components with FreePBX and PIAF.

I have not used asterisk, but I have heard good things. Also It is opensource, so if you deploy it in-house your only cost would be the hardware. If you have not worked PC based PBX before the learning curve may be big for you.

Asterisk is like Linux... it's the "kernel" and not really meant to be used on its own. FreePBX, Elastix and PIAF are all "distros" built on Asterisk but are ready to use. Just as you don't get Linux on its own, you get Red Hat, Suse or Ubuntu instead, you don't get Asterisk but get Elastix or PIAF and start from there.

Never mind. I see that Elastix includes OpenFire! I will use spark or spark web or some other xmpp client. I do like that spark has some integration with openfire that other clients don't.

Another important question:

Can I run my scenario with 10GB of HD?

I saw one install document with 20GB on it. Not sure what is stored that takes up so much space besides voicemail and debug logs. I don't plan to have voicemail as i makes no use on time sensitive calls.

Never mind. I see that Elastix includes OpenFire! I will use spark or spark web or some other xmpp client. I do like that spark has some integration with openfire that other clients don't.

Not really, Spark is their own client but it communicates purely through XMPP. It's completely standards based so while Spark is great, it doesn't buy you integration. It does offer all the same features, of course.

I love Spark and Pidgin. I hate SparkWeb. SparkWeb is a really quirky attempt at a web-based interface for OpenFire and honestly it sucks, big time. Avoid it. No benefits over other options. If you need web based, there are way better (and hosted, and free) options.

Real world numbers, this is from one of our oldest, heaviest used production Elastix systems (we run many) -

Disk usage: 3.4GB

Swap: .6GB

Total usage: 4GB

That includes logs, swap, voicemail, etc.

And if you really want to go nuts with space savings measures (probably not needed), set each extension to send voicemails by e-mail and then delete the voicemail from the server. Where I work we do voicemail to e-mail exclusively.