Set up and deploy Neos and Flow projects at Mittwald

I’ve started a “Shared hosting Cookbook” discussion on However as I currently don’t know if I find the time to put this in the official documentation or if it’s even a topic that should be covered there I’ve decided to share this here also.

First of all I’ll describe my environment:
There are three different servers in the setup.

  • a test-server where the current develop branch is deployed. This is just used to test my latest developments by me and my colleague.
  • a staging-server where the latest release branch is deployed. This is used to do final tests by ourselves as we are in this case our “customers”. So if both of us have tested everything that needs to be tested manually it’s deployed to the live server.
  • a live server where we’re deploying the latest master branch

The following is what I’m doing to deploy my Surf-projects to Mittwald. The main project where I’m using this really extensively is Passcreator.
In general one thing that is not so easy currently is using Symlinks at Mittwald. The resource publishing doesn’t work without problems the default way.
The resource publishing only worked for me if I use following settings.
They are deployed together with the Settings.yaml via Surf.

Below you find my example Surf Deployment configuration that I’m using for Mittwald.
One Package that was really helpful is Famelo.SharedHosting by mneuhaus because it does all necessary patches of flow.bat and flow e.g.
If you want to have a more detailed look — here’s the github-Repository:

I’m also using rsync as transferMethod because composer caused some problems and I found it a lot easier to do everything locally and copy the whole thing to the server via rsync afterwards. That way it’s also easier to add new nodes in Surf because you have to care less about the target server configuration.
At least that’s what I found out — if anyone thinks different I’d be happy to discuss it.

If you think there’s anything missing or could be done better I’d be happy to hear your suggestions.