Show train departures, as seen on the displays on most main stations
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

db-fakedisplay - Infoscreen for DB departures


  • perl >= 5.10
  • Cache::File (part of the Cache module)
  • Mojolicious
  • Mojolicious::Plugin::BrowserDetect
  • Travel::Status::DE::DBWagenreihung >= 0.00
  • Travel::Status::DE::DeutscheBahn >= 2.03
  • Travel::Status::DE::IRIS >= 1.21


db-fakedisplay respects the following environment variables:

Variable Default Description
DBFAKEDISPLAY_LISTEN http://*:8092 IP and Port for web service
DBFAKEDISPLAY_STATS None File in which the total count of backend API requests (excluding those answered from cache) is written
DBFAKEDISPLAY_HAFAS_CACHE /tmp/dbf-hafas Directory for HAFAS cache
DBFAKEDISPLAY_IRIS_CACHE /tmp/dbf-iris-mian Directory for IRIS schedule cache
DBFAKEDISPLAY_IRISRT_CACHE /tmp/dbf-iris-realtime Directory for IRIS realtime cache
DBFAKEDISPLAY_WORKERS 2 Number of concurrent worker processes

Set these as needed, create templates/imprint.html.ep (imprint) and templates/privacy.html.ep (privacy policy), and configure your web server to reverse proxy requests for db-fakedisplay to the appropriate port.

You can then run the app using a Mojo::Server of your choice, e.g. perl daemon -m production (quick&dirty, does not respect all variables) or hypnotad (recommended).

All code in this repository may be used under the terms of the BSD-2-Clause (db-fakedisplay, see COPYING) and MIT (jquery, jqueryui, and marquee libraries; see the respective files) licenses. Attribution is appreciated.

System requirements

Resource requirements depend on usage. For a few requests per second, about 50MB (150k inodes) cache and one or two CPU cores should be sufficient. db-fakedisplay typically needs 50MB RAM per worker process, though calculating with 100MB per worker is recommended to have an appropriate safety margin.