Sí, debe tener un servidor externo a Facebook. Básicamente lo que ocurre es que le das a facebook la URL de tu aplicación. Cuando alguien intenta verlo desde Facebook (http://app.facebook.com/yourAppName/) reenviará la solicitud, junto con algunas claves especiales para la validación, al servidor de la aplicación. Todo su código está en su servidor de alojamiento, y desde allí puede hacer llamadas de regreso a API/servicios web de Facebook para obtener cualquier dato necesario. Luego puede devolver cualquier marcado UI/HTML/FBML en la respuesta, y Facebook lo mostrará.
También hay muchas bibliotecas preescritas para Facebook, para varios idiomas. Por ejemplo, Facebooker para Ruby.
Hay muchos desarrolladores de Facebook en Stackoverflow (incluyéndome a mí), pero aquí no hay duda de que podemos responder. – Oddthinking
Pruebe estas dos publicaciones de blog, explique cómo alojar una aplicación de Facebook en openshift: https://www.openshift.com/blogs/developing-facebook-applications-on-openshift-getting-set-up https://www.openshift.com/blogs/developing-facebook-applications-on-openshift-launch-your-app –