Hosting für Node.js ist vor allem im deutschsprachigen Raum noch wenig verbreitet. Hier bietet das amerikanische Cloud-Unternehmen Heroku Abhilfe – und das sogar kostenlos. Dabei bemerkt man stets das Paradigma "Build apps... not infrastructure" und hat trotzdem kaum Einschränkungen. Wir setzen exemplarisch einen kleinen Cronjob auf Basis von PhantomJS um, der täglich eine Webseite scrapt und den Seitentitel per E-Mail versendet.
Dazu registrieren wir uns zunächst kostenlos unter https://signup.heroku.com/:
Nach der obligatorischen E-Mail-Bestätigung vergeben wir ein sicheres Passwort:
Um später kostenlose Add-Ons aus dem Marketplace nutzen zu können, müssen wir zunächst unter https://heroku.com/verify unseren Account durch Eingabe einer Kreditkarte verifizieren (keine Angst, es bleibt alles kostenlos):
Der Rest findet nun ausschließlich auf der Kommandozeile statt. Dazu benötigen wir lokal Node.js/npm, Git sowie Heroku CLI.
Wir loggen uns schließlich (einmalig) lokal bei Heroku auf der Kommandozeile ein:
Wir legen zunächst eine neue App auf Basis eines passenden Buildpacks an. Wir verwenden in unserem Beispiel das offizielle Node.js-Buildpack heroku-buildpack-nodejs.git:
1a01abaf4b9308c5714622396ccc4708
Nun legen wir eine package.json an, um die für unser Vorhaben benötigten Packages PhantomJS, CasperJS, SpookyJS sowie Nodemailer zu installieren:
1a01abaf4b9308c5714622396ccc4708
Die eigentliche Logik findet man in der script.js:
1a01abaf4b9308c5714622396ccc4708
Wir testen zunächst alles lokal:
1a01abaf4b9308c5714622396ccc4708
Das Script extrahiert einen Titel auf einer Webseite und versendet eine E-Mail:
Wir pushen nun alles auf Heroku, was auch den Build-Prozess auslöst:
1a01abaf4b9308c5714622396ccc4708
Will man später Code-Änderungen auf Heroku schieben, pusht man einfach erneut. Wir können nun einerseits per SSH prüfen, ob auf dem Server alles läuft:
1a01abaf4b9308c5714622396ccc4708
Auch hier wird die E-Mail korrekt versandt. Nun müssen wir lediglich den Prozess noch automatisieren:
1a01abaf4b9308c5714622396ccc4708
Wir fügen mit "Add new job" einen neuen Scriptaufruf hinzu:
Als Frequenz wählen wir testweise alle 10 Minuten und speichern ab:
Der Cronjob verrichtet nun zukünftig automatisch seinen Dienst.