boxx [v0.3.2]

docs

quick start

The installer puts boxx in /usr/local/bin. On Linux it also installs Docker if it's missing, enables it at boot and adds you to the docker group.

$ curl https://get.boxxup.com | sh
$ boxx install <image> --host <hostname>  # deploy your first app
$ boxx  # open the TUI
$ boxx upgrade  # upgrade boxx to the latest release

the contract

An image works with boxx if it is a Docker image (public or private registry), listens for HTTP on port 80 and exposes GET /up returning 2xx. Anything written under /storage persists. When a database is requested, the app reads its connection from DATABASE_URL.

hostnames

Every app has one primary hostname and any number of extra ones. Point each hostname's DNS at the server first. A hostname can belong to only one app.

$ boxx host ls <app>
$ boxx host add <app> www.example.com --redirect
$ boxx host add <app> '*.example.com'  # one label, cert on first visit
$ boxx host primary <app> www.example.com
$ boxx host rm <app> app.example.net

env

env push opens your $EDITOR on the app's variables, saves them and redeploys. boxx keeps the previous set, so you can roll back. DATABASE_URL is injected for you.

$ boxx env show <app>
$ boxx env push <app> --file .env  # review, save, redeploy
$ boxx env rollback <app>

doctor and logs

boxx doctor checks the host: Docker, ports 80 and 443, your editor, the state directory and duplicate hostnames.

$ boxx doctor
$ boxx logs <app>
$ boxx ls