Hi, I have played with Heroku deploy first. You can from now try yourself the one-click deploy button for Heroku on this branch
Thus with a free Heroku account you should be able to run a YaCy peer in senior mode (don't forget the only manual step : filling MAVEN_CUSTOM_OPTS environment variable with -Dyacy.staticIP=your_app_name.herokuapp.com, as explained in the open deploy page).
- I transformed main Readme file from mediawiki syntax to markdown as it is far easier and better documented to add button links in Markdown
- YaCy Jetty server http port has to be bound to the PORT arbitrarily chosen by Heroku, but external public port has to be set to 80, as your_app_name.herokuapp.com is the only way to reach an Heroku container from external machines. A small hack to serverSwitch.java do the job on the branch for now. But in yacy.init file there is a property named "bindPort", which looks like currently unused. It could be convenient to use it and to be able to define both a local bindPort and a public port in /Configbasic.html. What do you think about it?
- I am now faced with a big limitation of YaCy deployment in Heroku : files (Solr index, settings, logs...) are correctly written to container file system, but they are discarded each time the container (Heroku call it a "dyno") is restarted. This is an Heroku feature and this happens about once a day. So deploying in Heroku becomes quite handy for testing purpose, or for YaCy first try, but it is not very useful for long term use. Is it the same for loklak on Heroku or what is the storage solution? To overcome this limitation, it is documented that we should rely on cloud storage such as Amazon S3, but this would involve much refactoring, especially to keep compatibility with local file system storage for non-cloud peers. An intermediate solution could be to use Websolr Add-on
to store solr index, but this is quite expensive (lowest price : 20 dollars a month for only 20000 documents!)...