Rack proxy server for development
This is an (almost) complete rewrite of Prax
in Crystal, a Ruby-inspired language that compiles
down to LLVM. This version should avoid problems with version managers, since Prax
is now a binary application that don't rely on Ruby anymore (except for Rack and
Please refer to the wiki for more information:
~/.prax/myapp) if any;
If your distribution uses
systemd-resolved, just use the
.test —be prepared to fight against systemd if you want to use
another TLD, or consider switching to a systemd free Linux.
Prax proposes 2 solutions to resolve
Prax supports http://xip.io/ domains, so you can use
for example. This is useful when using an external device like a smartphone,
tablet or another computer to test your websites on.
.localhost domains are not your cup of tea, no problem! Prax
will route requests from any TLD to the applications in your
directory, as long as the domain resolves to localhost.
For instance, if you wished to visit
myapp.dev instead of
could create dnsmasq configuration to resolve
.dev domains to localhost, too:
$ sudo tee /etc/dnsmasq.d/dev <<EOF local=/dev/ address=/dev/127.0.0.1 address=/dev/::1 EOF $ sudo service dnsmasq restart
The port redirections are iptables rules, that are installed and removed using
an initd script. The script redirects the port :80 and :443 on 127.0.0.1 and for
ethX devices found on your machine, to allow incoming
traffic, so you can use http://xip.io to test on external devices, as mentioned
You can install or remove the redirections with:
$ prax iptables [start|stop|restart|status]
Distribution packages should configure an init service to always install the iptables rules on machine startup or before starting prax (warning: this requires root privileges).
Prax is distributed under the CeCILL 2.1 license. Please see LICENSE for details.
Prax wouldn't exist without Pow!! by Sam Stephenson and Basecamp. Prax is nothing more but a reimplementation (in another language) with Linux compatibility in mind.
host:porthost file (and
[ipv6]:portfor IPv6 addresses.
.testTLD by default instead of Google-owned
.devdomain that requires HTTPS to be configured.
PRAX_TIMEOUT) configuration option to wait longer or shorter than 60 seconds for applications to start.
.envfiles has been removed. Use the
.praxrcshell file in your project to set environment variables instead.
.praxrcshell files in projects (eg: to configure variables, version managers, ...)