NAME

Traveller – a web application to generate sector and subsector maps for the Traveller RPG

SYNOPSIS

traveller daemon -m production -l http://*:8080

traveller routes -v

traveller get /uwp/subsector/mgt/123 | w3m -T text/html

DESCRIPTION

This package contains a web application to generate sector and subsector maps for the Traveller RPG. The rules are either based on Classic Traveller (CT), Classic Traveller with the Merchant Prince Trade System (MPTS), or Mongoose Traveller (1st edition).

To start it as a web server in production mode, listening for all hostnames on port 8080:

traveller daemon -m production -l http://*:8080

To run it in development mode and reload it whenever you change a file:

morbo $(which traveller)

INSTALLATION

Using cpan:

cpan App::traveller

Manual install:

perl Makefile.PL
make
make install

Dependencies

Perl libraries you need to install if you install it manually:

Deployment

If you want to know more, see Mojolicious::Guides::Tutorial, Mojolicious::Guides::Cookbook, Mojo::Server::Hypnotoad, and so on.

One way to do it, for https://campaignwiki.org/traveller:

First, the request is received by the Apache webserver which must hand it to the backend, which is running on some arbitrary other port:

<VirtualHost *:443>
    ServerName campaignwiki.org
	# lost of stuff here
	
	# the location of your certificates may vary
    SSLEngine on
    SSLCertificateFile      /var/lib/dehydrated/certs/campaignwiki.org/cert.pem
    SSLCertificateKeyFile   /var/lib/dehydrated/certs/campaignwiki.org/privkey.pem
    SSLCertificateChainFile /var/lib/dehydrated/certs/campaignwiki.org/chain.pem
    SSLVerifyClient None

	# this is the important part
    ProxyPreserveHost On
    RequestHeader set X-Forwarded-Proto "https"
    ProxyPass /traveller          http://localhost:4011/traveller
</VirtualHost>

The tricky part is having the application mounted on /traveller. There’s a separate wrapper script which does that, and configures hypnotoad to serve the application on the right port.

#! /usr/bin/env perl

use Mojolicious::Lite;

app->config(hypnotoad => {
  # this is the port mentioned in the Apache config above
  listen => ['http://localhost:4011'],
  # the PID file must be stored in some directory
  pid_file => '/home/alex/farm/traveller2.pid',
  # you probably don’t need four workers
  workers => 1});

plugin Mount => {'/traveller' => '/home/alex/src/traveller/script/traveller'};

app->start;

The plugin Mount is a new dependency:

LICENSE

GNU Affero General Public License