Is it possible to run a provider hosted app from a vm on the same server as Sharepoint? And if so should i do it or is there a better way? Thanks
Yes it is possible to create provider hosted apps in a VM which already has SharePoint installed. If you target the on premise SharePoint, this type of app is called High trust app. A high trust provider-hosted app can establish trust with SharePoint by using digital certificates. For more information see this: http://www.sharepointnadeem.com/2014/02/sharepoint-2013-provider-hosted-app.html
Yes you can create and run a provider hosted on the same machine as the SharePoint installation. This kind of provider hosted app where SharePoint and app will be on premise and you will be calling server-to-server is termed as a high-trust app. There are a few steps you need to carry out in order to get this working eg. setting up trust between the app and sharepoint. Here is a guide to start with.