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