vrr-infoscreen - Infoscreen for Public Transit Departures
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 finalrewind.org. 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.
Dependencies
- perl ≥ 5.20
- carton or cpanminus
- build-essential (gcc/clang, make)
- libdb (Berkeley Database Libraries)
- libgd (GD Graphics Library)
- libxml2
- zlib
Installation
After installing the dependencies, clone the repository using git, e.g.
git clone https://git.finalrewind.org/vrr-fakedisplay
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
or
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
./Build manifest
sudo ./Build install
Running
You are now ready to start the web service. If you used carton, it boils down to
carton exec hypnotoad index.pl
Otherwise, you need to make the perl dependencies available by setting the PERL5LIB environment variable:
PERL5LIB=local/lib/perl5 local/bin/hypnotoad index.pl
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.
Setup
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
index.pl daemon -m production (quick&dirty, does not respect all variables)
or hypnotad (recommended). A systemd unit example is provided in
examples/vrr-infoscreen.service
.