Skip to content
This repository has been archived by the owner on Nov 11, 2023. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

vrr-infoscreen - Infoscreen for Public Transit Departures

vrr-infoscreen homepage

vrr-infoscreen (formerly vrr-fakedisplay) shows departures at a public transit stop, serving both as infoscreen / webapp and LED departure monitor look-alike.

It supports most german local transit networks and also some austrian ones.

There's a public vrr-infoscreen service on You can also host your own instance via carton/cpanminus or Docker, see the Setup notes below.

Legacy Warning. As of 2017, vrr-infoscreen is not under active development anymore. Maintenance and bugfixes may not occur in a timely manner.


  • perl ≥ 5.20
  • carton or cpanminus
  • build-essential (gcc/clang, make)
  • libdb (Berkeley Database Libraries)
  • libgd (GD Graphics Library)
  • libxml2
  • zlib


After installing the dependencies, clone the repository using git, e.g.

git clone

Make sure that all files (including .git, which is used to determine the software version) are readable by your www user, and follow the steps in the next sections.

Perl Dependencies

vrr-infoscreen depends on a set of Perl modules which are documented in cpanfile. After installing the dependencies mentioned above, you can use carton or cpanminus to install Perl depenencies locally.

In the project root directory (where cpanfile resides), run either

carton install


cpanm -n --installdeps .

Next, you need to build App::VRR::Fakedisplay, which is required for the LED frontend and shipped with vrr-fakedisplay.

export PERL5LIB=local/lib/perl5
perl Build.PL
./Build manifest
sudo ./Build install


You are now ready to start the web service. If you used carton, it boils down to

carton exec hypnotoad

Otherwise, you need to make the perl dependencies available by setting the PERL5LIB environment variable:

PERL5LIB=local/lib/perl5 local/bin/hypnotoad

Note that you should provide imprint and privacy policy pages. Depending on traffic volume, you may also want to increase the amount of worker processes. See the Setup notes below.

Installation with Docker

A vrr-infoscreen image is available on Docker Hub. You can install and run it as follows:

docker pull derfnull/vrr-fakedisplay:latest
docker run --rm -p 8000:8091 -v "$(pwd)/templates:/app/ext-templates:ro" vrr-fakedisplay:latest

This will make the web service available on port 8000. Note that you should provide imprint and privacy policy pages, see the Setup notes below.

Use docker run -e VRRFAKEDISPLAY_WORKERS=4 ... and similar to pass environment variables to the vrr-infoscreen service.


vrr-infoscreen is configured via environment variables:

Variable Default Description
VRRFAKEDISPLAY_LISTEN http://*:8091 IP and Port for web service
VRRFAKEDISPLAY_STATS None File in which the total count of (non-cached) backend API requests is written
VRRFAKEDISPLAY_CACHE /tmp/vrr-fakedisplay Cache directory
VRRFAKEDISPLAY_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 pass requests for vrr-infoscreen to the appropriate port.

You can 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). A systemd unit example is provided in examples/vrr-infoscreen.service.